diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..20673cd
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,67 @@
+name: Сборка
+
+on:
+ push:
+ branches: [trunk]
+ tags: ['v*']
+ pull_request:
+
+jobs:
+ windows:
+ runs-on: windows-latest
+ permissions:
+ contents: write # для публикации релиза по тегу
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: jurplel/install-qt-action@v4
+ with:
+ version: '6.10.0'
+ arch: win64_msvc2022_64
+ cache: true
+
+ - uses: ilammy/msvc-dev-cmd@v1
+
+ - name: Сборка
+ run: |
+ qmake fuzzy_clock.pro "CONFIG+=release"
+ nmake release
+
+ - name: Развёртывание
+ run: |
+ New-Item -ItemType Directory deploy | Out-Null
+ Copy-Item release\fuzzy_clock.exe, fuzzy.conf, style.css deploy\
+ windeployqt --release --no-translations deploy\fuzzy_clock.exe
+
+ - name: Упаковка в CAB
+ run: |
+ # makecab сохраняет поддиректории (platforms\, styles\ и т.д.) только через DDF-файл
+ $root = (Resolve-Path deploy).Path
+ $ddf = @(
+ '.OPTION EXPLICIT'
+ '.Set CabinetNameTemplate=fuzzy_clock-win64.cab'
+ '.Set DiskDirectoryTemplate=.'
+ '.Set CompressionType=LZX'
+ '.Set MaxDiskSize=0'
+ '.Set UniqueFiles=OFF'
+ '.Set Cabinet=ON'
+ '.Set Compress=ON'
+ )
+ Get-ChildItem $root -Recurse -File | ForEach-Object {
+ $ddf += '"{0}" "{1}"' -f $_.FullName, $_.FullName.Substring($root.Length + 1)
+ }
+ $ddf | Set-Content fuzzy_clock.ddf -Encoding ascii
+ makecab.exe -F fuzzy_clock.ddf
+ if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: fuzzy_clock-win64
+ path: fuzzy_clock-win64.cab
+
+ - name: Релиз
+ if: startsWith(github.ref, 'refs/tags/v')
+ uses: softprops/action-gh-release@v2
+ with:
+ name: fuzzy clock ${{ github.ref_name }}
+ files: fuzzy_clock-win64.cab
diff --git a/fuzzy_clock_window.cpp b/fuzzy_clock_window.cpp
index 8dfae74..80171df 100644
--- a/fuzzy_clock_window.cpp
+++ b/fuzzy_clock_window.cpp
@@ -133,6 +133,6 @@ void fuzzyClockWindow::createActions()
void fuzzyClockWindow::about()
{
QMessageBox::about(this, tr("О \"Неточных\" часах..."),
- tr("\"Неточные\" часы v3.1.3,
(ремейк версии 2.1 "
+ tr("\"Неточные\" часы v3.1.4,
(ремейк версии 2.1 "
"от 12.01.2004)
rasa"));
}
diff --git a/readme.md b/readme.md
index b21c5b9..07897f5 100644
--- a/readme.md
+++ b/readme.md
@@ -1,58 +1,25 @@
# Неточные часы (fuzzy clock)
-Небольшое окно без рамки поверх остальных окон, показывающее время словами с точностью до пяти минут: «Без четверти два», «Половина третьего», «Ровно час». Точное время выводится во всплывающей подсказке.
+Часы с точностью до пяти минут: «Без четверти два», «Половина третьего», «Ровно час». Точное время выводится во всплывающей подсказке.
Ремейк версии 2.1 от 12.01.2004 на Qt 6.
-
+
-## Управление
-
-- окно перетаскивается левой кнопкой мыши;
-- правая кнопка открывает меню: «About», «About Qt», «Exit»;
-- положение окна сохраняется в реестре, в ключе `HKEY_CURRENT_USER\SOFTWARE\rasa\FuzzyClock`.
## Сборка
Требуется Windows, Qt 6 (модуль `widgets`) и MSVC.
-Сборка из командной строки разработчика Visual Studio:
+Сборка либо в в Qt Creator либо из командной строки msvs:
```bat
qmake fuzzy_clock.pro
nmake
```
-Также проект можно открыть в Qt Creator.
-
Для запуска на другой машине необходимо скопировать библиотеки Qt в директорию с exe:
```bat
windeployqt fuzzy_clock.exe
-```
-
-## Двоичные файлы
-
-Собранные файлы в репозитории не хранятся, они публикуются в [GitHub Releases](https://github.com/roosslan/fuzzy_clock/releases). В релизе v3.1.3 лежит только архив библиотек Qt прежней версии, без `fuzzy_clock.exe`.
-
-## Файлы рядом с exe
-
-Файлы `fuzzy.conf` и `style.css` ищутся в директории, где находится `fuzzy_clock.exe`.
-
-- `style.css` — оформление окна в синтаксисе Qt Style Sheets: `#fuzzyClockWindow` — окно, `#timeLabel` — текст.
-- `fuzzy.conf` — фразы, из которых собирается время.
-
-### Формат fuzzy.conf
-
-INI-файл, секция `[oldstyle]`, списки внутри значения разделяются `\\`:
-
-| Ключ | Содержимое |
-|---|---|
-| `minutes` | фразы; `%0` заменяется часом в именительном падеже, `%1` — в родительном |
-| `minuteRefer` | 60 чисел через пробел: для каждой минуты — номер фразы из `minutes` (с нуля) |
-| `nominativeHours` | 12 названий часов в именительном падеже: «час», «два», … «двенадцать» |
-| `genitiveHours` | 12 названий часов в родительном падеже: «первого», «второго», … «двенадцатого» |
-
-Для фраз с `%1` («Пять минут %1») подставляется следующий час, для фраз с `%0` («Без пяти %0») — тоже следующий, кроме минут 0–2 («Ровно %0»), где используется текущий.
-
-При ошибке в файле (неверное количество элементов, номер фразы вне списка) вместо времени выводится «Ошибка в fuzzy.conf».
+```
\ No newline at end of file
diff --git a/resource.rc b/resource.rc
index 4c40160..095b7ef 100644
--- a/resource.rc
+++ b/resource.rc
@@ -3,8 +3,8 @@
IDI_ICON1 ICON DISCARDABLE "app.ico"
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,1,3,2004
- PRODUCTVERSION 3,1,3,2004
+ FILEVERSION 3,1,4,2004
+ PRODUCTVERSION 3,1,4,2004
FILEFLAGS 0x0L
FILEFLAGSMASK 0x3fL
FILEOS 0x00040004L
@@ -17,12 +17,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "rasa"
VALUE "FileDescription", "Fuzzy Clock"
- VALUE "FileVersion", "3.1.3.2004"
+ VALUE "FileVersion", "3.1.4.2004"
VALUE "LegalCopyright", "Copyright (C) rasa 2004 - 2026"
VALUE "InternalName", "fuzzy_clock"
VALUE "OriginalFilename", "fuzzy_clock.exe"
VALUE "ProductName", "Fuzzy Clock"
- VALUE "ProductVersion", "3.1.3.2004"
+ VALUE "ProductVersion", "3.1.4.2004"
END
END
BLOCK "VarFileInfo"