-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4e77528
commit a37d04d
Showing
21 changed files
with
1,464 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<html charset='utf-8'> | ||
<head> | ||
<title>Проект Grammar must joy: общие сведения | GrammarMustJoy</title> | ||
</head> | ||
|
||
<body> | ||
|
||
<h1 id="grammar-must-joy--">Проект Grammar must joy: общие сведения</h1> | ||
<p><strong>ƒ</strong> RD AAOW FDL; 6.07.2024; 0:02</p> | ||
|
||
<p>Существует огромное количество групп и сообществ, коллекционирующих юмор во всех его формах. Но вряд ли многие | ||
из них могут похвастаться грамотностью текстов и подписей. И речь не о случаях, когда именно её отсутствие есть | ||
основа для шутки. Это может быть даже не их вина – при огромном количестве скриншотов вместо обычных постов | ||
этого в принципе сложно добиться.</p> | ||
<p>Что ж, попробуем это исправить. Долгое время мы собирали понравившиеся записи, преобразуя их в приятную глазу | ||
форму и выкладывая на своей стене. Просто так, чтобы отвлечься от текучки. Теперь огромный, образовавшийся почти | ||
за семь лет запас доступен на этом канале вместе с новыми отечественными и зарубежными текстами.</p> | ||
<p>Казалось бы, зачем это нужно? И всё-таки результат того сто́ит. Контент от этих манипуляций становится только | ||
лучше. Но при этом возвращаются возможность текстового поиска по знакомым словам и скорость загрузки на особо | ||
медленных девайсах. К тому же, благодаря долгому отбору в коллекции остались лишь самые «стойкие» экспонаты.</p> | ||
<p>Вещание сообщества уже давно ведётся в Telegram, используя менее удобную платформу ВК в качестве | ||
зеркала. Контент тот же, но, благодаря возможностям мессенджера во многих записях исправлены старые ошибки | ||
и огрехи форматирования.</p> | ||
<p>Кроме того, мы создали приложение-клиент для этого сообщества. Его главная особенность – способность извлекать | ||
записи в случайном порядке из всего архива сообщества, исключая повторения, а также быстро и просто ими делиться. | ||
Оно исключает необходимость ручного пролистывания новостной ленты.</p> | ||
<p><em><strong>Итак, добро пожаловать в Grammar must joy!</strong></em></p> | ||
<hr /> | ||
<p>Пара моментов:</p> | ||
<ol> | ||
<li>Да, контент не всегда будет (читайте: почти никогда не будет) оригинальным. И если он вдруг окажется на пути | ||
чьего-нибудь копирайта, мы просим извещать нас об этом. Такой контент нам... будет изыматься из ленты.</li> | ||
<li>Записи могут быть разными. Конечно, без шока, браззерс и прочей неразрешёнки. Но всё-таки <code>18+</code>!</li> | ||
<li>Если мы всё же где-то допускаем ошибки (что вероятно), просим также нам об этом сообщать. При таком названии группы | ||
не хочется ударять в грязь лицом.</li> | ||
<li>Мы следуем <a href="https://adslbarxatov.github.io/SCP/ru">Политике социальных сообществ</a>. Поэтому рекламы в обозримом | ||
будущем здесь не будет. Да и комментарии тут ни к чему. Но советы, пожелания и конструктивная критика приветствуются | ||
(в комментариях <a href="https://t.me/rd_aaow_fdl">головного сообщества</a>).</li> | ||
</ol> | ||
<p>Очень надеемся, что Вам понравится юмор, который почти не подчёркивается Word’ом!</p> | ||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
_Changes for v 1.0_: | ||
- Initial release as a stand-alone application | ||
_Changes for v 1.0.5_: | ||
- Добавлено отключение подписей текстов при копировании из приложения; | ||
- Исправлены некорректные вызовы некоторых разделов справки и поддержки; | ||
- Начальный релиз в качестве самостоятельного приложения |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,9 @@ | ||
Grammar must joy: changes log | ||
|
||
Version 1.0.5: | ||
• Добавлено отключение подписей текстов при копировании из приложения; | ||
• Исправлены некорректные вызовы некоторых разделов справки и поддержки | ||
|
||
Version 1.0: | ||
• A stand-alone app (from uNot) has been made; | ||
• Publication on GitHub | ||
• Реализовано самостоятельное приложение на основе функционала uNot; | ||
• Приложение опубликовано на GitHub |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,231 @@ | ||
using System; | ||
using System.ComponentModel; | ||
using System.Drawing; | ||
using System.Windows.Forms; | ||
|
||
namespace RD_AAOW | ||
{ | ||
/// <summary> | ||
/// Класс описывает главную форму приложения | ||
/// </summary> | ||
public partial class GrammarMustJoyForm: Form | ||
{ | ||
// Переменные | ||
private NotifyIcon ni = new NotifyIcon (); | ||
private bool allowExit = false; | ||
private bool hideWindow; | ||
|
||
/// <summary> | ||
/// Конструктор. Настраивает главную форму приложения | ||
/// </summary> | ||
public GrammarMustJoyForm (bool HideWindow) | ||
{ | ||
// Инициализация | ||
InitializeComponent (); | ||
|
||
this.Text = ProgramDescription.AssemblyVisibleName; | ||
this.CancelButton = BClose; | ||
MainText.Font = new Font ("Calibri", 13); | ||
if (!RDGenerics.AppHasAccessRights (false, false)) | ||
this.Text += RDLocale.GetDefaultText (RDLDefaultTexts.Message_LimitedFunctionality); | ||
hideWindow = HideWindow; | ||
|
||
// Принудительные параметры | ||
if (!RDLocale.IsCurrentLanguageRuRu) | ||
RDLocale.CurrentLanguage = RDLanguages.ru_ru; | ||
|
||
if (GMJ.EnablePostSubscription) | ||
GMJ.EnablePostSubscription = false; | ||
|
||
/*ReloadNotificationsList (); | ||
if TGT | ||
GetGMJ.Visible = false; | ||
else | ||
GetGMJ.Visible = RDLocale.IsCurrentLanguageRuRu; | ||
endif*/ | ||
|
||
// Получение настроек | ||
RDGenerics.LoadWindowDimensions (this); | ||
ReadMode.Checked = RDGenerics.GetSettings (readPar, false); | ||
/*callWindowOnUrgents = RDGenerics.GetSettings (callWindowOnUrgentsPar, false); | ||
*/ | ||
try | ||
{ | ||
FontSizeField.Value = RDGenerics.GetSettings (fontSizePar, 130) / 10.0m; | ||
} | ||
catch { } | ||
|
||
// Настройка иконки в трее | ||
ni.Icon = Properties.GrammarMustJoy.GMJNotifier16; | ||
ni.Text = ProgramDescription.AssemblyVisibleName; | ||
ni.Visible = true; | ||
|
||
ni.ContextMenu = new ContextMenu (); | ||
|
||
/*ni.ContextMenu.MenuItems.Add (new MenuItem (RDLocale.GetText ("MainMenuOption02"), ShowSettings)); | ||
ni.ContextMenu.MenuItems[0].Enabled = RDGenerics.AppHasAccessRights (false, true);*/ | ||
|
||
ni.ContextMenu.MenuItems.Add (new MenuItem ( | ||
RDLocale.GetDefaultText (RDLDefaultTexts.Control_AppAbout), AboutService)); | ||
ni.ContextMenu.MenuItems.Add (new MenuItem ( | ||
RDLocale.GetDefaultText (RDLDefaultTexts.Button_Exit), CloseService)); | ||
|
||
ni.MouseDown += ShowHideFullText; | ||
ni.ContextMenu.MenuItems[1].DefaultItem = true; | ||
} | ||
|
||
private void GrammarMustJoyForm_Shown (object sender, EventArgs e) | ||
{ | ||
// Скрытие окна настроек | ||
GrammarMustJoyForm_Resize (null, null); | ||
if (hideWindow) | ||
this.Hide (); | ||
|
||
/*// Запуск | ||
MainTimer.Interval = (int)ProgramDescription.MasterFrameLength * 4; | ||
MainTimer.Enabled = true;*/ | ||
} | ||
|
||
// Завершение работы службы | ||
private void CloseService (object sender, EventArgs e) | ||
{ | ||
allowExit = true; | ||
this.Close (); | ||
} | ||
|
||
private void GrammarMustJoyForm_FormClosing (object sender, FormClosingEventArgs e) | ||
{ | ||
// Остановка службы | ||
if (allowExit) | ||
{ | ||
// Остановка | ||
ni.Visible = false; | ||
/*MainTimer.Enabled = false; | ||
// Освобождение ресурсов | ||
ns.Dispose ();*/ | ||
} | ||
|
||
// Скрытие окна просмотра | ||
else | ||
{ | ||
this.Hide (); | ||
e.Cancel = true; | ||
} | ||
} | ||
|
||
// О приложении | ||
private void AboutService (object sender, EventArgs e) | ||
{ | ||
RDGenerics.ShowAbout (false); | ||
} | ||
|
||
// Отображение / скрытие полного списка оповещений | ||
private void ShowHideFullText (object sender, MouseEventArgs e) | ||
{ | ||
// Работа только с левой кнопкой мыши | ||
if (e.Button != MouseButtons.Left) | ||
return; | ||
|
||
/*// Отмена состояния сообщений | ||
ns.HasUrgentNotifications = false;*/ | ||
|
||
// Обработка состояния | ||
if (this.Visible) | ||
{ | ||
this.Close (); | ||
} | ||
else | ||
{ | ||
this.Show (); | ||
this.TopMost = true; | ||
this.TopMost = false; | ||
MainText.ScrollToCaret (); | ||
} | ||
} | ||
|
||
// Закрытие окна просмотра | ||
private void BClose_Click (object sender, EventArgs e) | ||
{ | ||
/*// Отмена состояния сообщений | ||
ns.HasUrgentNotifications = false;*/ | ||
|
||
this.Close (); | ||
} | ||
|
||
// Переход в режим чтения и обратно | ||
private void ReadMode_CheckedChanged (object sender, EventArgs e) | ||
{ | ||
// Изменение состояния | ||
if (ReadMode.Checked) | ||
{ | ||
MainText.ForeColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.LightGrey); | ||
MainText.BackColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.DefaultText); | ||
} | ||
else | ||
{ | ||
MainText.ForeColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.DefaultText); | ||
MainText.BackColor = RDGenerics.GetInterfaceColor (RDInterfaceColors.LightGrey); | ||
} | ||
|
||
// Запоминание | ||
RDGenerics.SetSettings (readPar, ReadMode.Checked); | ||
} | ||
private const string readPar = "Read"; | ||
|
||
// Изменение размера формы | ||
private void GrammarMustJoyForm_Resize (object sender, EventArgs e) | ||
{ | ||
MainText.Width = this.Width - 38; | ||
MainText.Height = this.Height - 87; | ||
|
||
ButtonsPanel.Top = MainText.Top + MainText.Height - 1; | ||
} | ||
|
||
// Сохранение размера формы | ||
private void GrammarMustJoyForm_ResizeEnd (object sender, EventArgs e) | ||
{ | ||
RDGenerics.SaveWindowDimensions (this); | ||
} | ||
|
||
// Запрос сообщения от GMJ | ||
private void GetGMJExecutor (object sender, DoWorkEventArgs e) | ||
{ | ||
e.Result = GMJ.GetRandomGMJ (); | ||
} | ||
|
||
private void GetGMJ_Click (object sender, EventArgs e) | ||
{ | ||
// Запрос записи | ||
RDGenerics.RunWork (GetGMJExecutor, null, "Запрос случайной записи...", | ||
RDRunWorkFlags.CaptionInTheMiddle); | ||
string s = RDGenerics.WorkResultAsString; | ||
string item; | ||
|
||
if (s != "") | ||
item = s; | ||
else | ||
item = "GMJ не отвечает на запрос. Проверьте интернет-соединение"; | ||
|
||
// Отображение | ||
// Добавление в главное окно | ||
if ((MainText.Text.Length + item.Length > ProgramDescription.MasterLogMaxLength) && | ||
(MainText.Text.Length > item.Length)) // Бывает и так | ||
MainText.Text = MainText.Text.Substring (item.Length, MainText.Text.Length - item.Length); | ||
if (MainText.Text.Length > 0) | ||
MainText.AppendText (RDLocale.RNRN + RDLocale.RN); | ||
|
||
// Добавление и форматирование | ||
MainText.AppendText (item.Replace (NotificationsSet.MainLogItemSplitter.ToString (), RDLocale.RN)); | ||
MainText.AppendText (RDLocale.RN); | ||
} | ||
|
||
// Изменение размера шрифта | ||
private void FontSizeField_ValueChanged (object sender, EventArgs e) | ||
{ | ||
MainText.Font = new Font (MainText.Font.FontFamily, (float)FontSizeField.Value); | ||
RDGenerics.SetSettings (fontSizePar, (uint)(FontSizeField.Value * 10.0m)); | ||
} | ||
private const string fontSizePar = "FontSize"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
using System; | ||
using System.Windows.Forms; | ||
|
||
namespace RD_AAOW | ||
{ | ||
/// <summary> | ||
/// Класс описывает точку входа приложения | ||
/// </summary> | ||
public static class UniNotifierProgram | ||
{ | ||
/// <summary> | ||
/// Главная точка входа для приложения | ||
/// </summary> | ||
[STAThread] | ||
public static void Main (string[] args) | ||
{ | ||
// Инициализация | ||
Application.EnableVisualStyles (); | ||
Application.SetCompatibleTextRenderingDefault (false); | ||
|
||
// Язык интерфейса и контроль XPUN | ||
if (!RDLocale.IsXPUNClassAcceptable) | ||
return; | ||
|
||
// Проверка запуска единственной копии | ||
if (!RDGenerics.IsAppInstanceUnique (true)) | ||
return; | ||
|
||
// Контроль прав | ||
if (!RDGenerics.AppHasAccessRights (true, false)) | ||
return; | ||
|
||
// Отображение справки и запроса на принятие Политики | ||
if (!RDGenerics.AcceptEULA ()) | ||
return; | ||
RDGenerics.ShowAbout (true); | ||
|
||
// Запуск | ||
Application.Run (new GrammarMustJoyForm ((args.Length > 0) && (args[0] == "-h"))); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" | ||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" | ||
x:Class="RD_AAOW.AboutPage"> | ||
|
||
<ScrollView> | ||
<StackLayout> | ||
<Label x:Name="AboutLabel" /> | ||
|
||
<BoxView VerticalOptions="Center" HorizontalOptions="Center" HeightRequest="1" | ||
WidthRequest="200" Color="#505050" Margin="6" /> | ||
|
||
<Button x:Name="ManualsButton" HorizontalOptions="Center" /> | ||
<Button x:Name="HelpButton" HorizontalOptions="Center" /> | ||
|
||
<BoxView VerticalOptions="Center" HorizontalOptions="Center" HeightRequest="1" | ||
WidthRequest="200" Color="#606060" Margin="9" /> | ||
|
||
<Label /> | ||
<Label x:Name="GenericSettingsLabel" /> | ||
<Label x:Name="RestartTipLabel" /> | ||
|
||
<StackLayout Orientation="Horizontal"> | ||
<Label x:Name="FontSizeLabel" VerticalOptions="Center" /> | ||
|
||
<Button x:Name="FontSizeInc" VerticalOptions="Center" /> | ||
<Label x:Name="FontSizeField" VerticalOptions="Center" /> | ||
<Button x:Name="FontSizeDec" VerticalOptions="Center" /> | ||
</StackLayout> | ||
|
||
<BoxView VerticalOptions="Center" HorizontalOptions="Center" HeightRequest="1" | ||
WidthRequest="200" Color="#505050" Margin="9" /> | ||
|
||
<Label /> | ||
<Label x:Name="HelpHeaderLabel" /> | ||
<Label x:Name="HelpTextLabel" /> | ||
|
||
<Label /> | ||
|
||
</StackLayout> | ||
</ScrollView> | ||
</ContentPage> | ||
|
Oops, something went wrong.