Skip to content

Commit

Permalink
Assembly v 1.0.5 (8.07.24)
Browse files Browse the repository at this point in the history
  • Loading branch information
adslbarxatov committed Jul 8, 2024
1 parent 4e77528 commit a37d04d
Show file tree
Hide file tree
Showing 21 changed files with 1,464 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/Release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
# Константы, используемые далее по тексту
env:
PROJ: ${{ github.event.repository.name }}
TAG: '1.0'
TAG: '1.0.5'

steps:
# Проверка состава репозитория (без анализа, как может показаться)
Expand Down
Binary file modified .release/GrammarMustJoy.apk
Binary file not shown.
Binary file added .release/GrammarMustJoy.exe
Binary file not shown.
43 changes: 43 additions & 0 deletions .release/GrammarMustJoy_ru_ru.html
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>
6 changes: 4 additions & 2 deletions .release/Release.md
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_:
- Добавлено отключение подписей текстов при копировании из приложения;
- Исправлены некорректные вызовы некоторых разделов справки и поддержки;
- Начальный релиз в качестве самостоятельного приложения
8 changes: 6 additions & 2 deletions Changes.log
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
231 changes: 231 additions & 0 deletions src/GrammarMustJoyForm.cs
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";
}
}
42 changes: 42 additions & 0 deletions src/GrammarMustJoyProgram.cs
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")));
}
}
}
43 changes: 43 additions & 0 deletions src/android/AboutPage.xaml
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>

Loading

0 comments on commit a37d04d

Please sign in to comment.