File: frigcal-products/unzipped/README-3.0.txt
=========================================================================
FRIGCAL 3.0 MODS, OCT-30-2024 (INITIAL 3.0 RELEASE)
=========================================================================
This is a plain-text document best viewed with monospace font
and no line wrapping. It summarizes Frigcal 3.0 enhancements,
removals, repairs, and platform support/usage.
=========================================================================
1. ENHANCEMENTS
=========================================================================
Emojis work where supported
---------------------------
Non-BMP Unicode characters, including emojis, are now supported
for display, input, and copy/paste. This works as well as the
underlying Tk 8.6.13 GUI library allows; emojis aren't yet
colored on Windows, for instance, but render reasonably. Emojis
don't yet work on Android but may soon; see "PLATFORMS" ahead.
Limited dark mode support
-------------------------
There is some support for dark mode where available, though colors
of most UI components are still explicitly configured per your config
settings in "frigcal_configs.py". At present, dark mode is ignored on
Windows and Android and applies only to a handful of widgets on macOS.
Find calendar-search GUI
------------------------
A new month-windows Find button and popup dialogs in the main GUI
provides simple search for text in calendar fields. This works
like the former (and still included) "searchcals.py" command-line
script but is all GUI, much faster, and more convenient, and adds
search of the calendar-name field. Colors and fonts of Find dialogs
use configs of the event dialog (matches are colored per dark-mode).
Find dialogs persist after searches but apply to and are closed
with the month window from which they are opened (main or clone).
Copy added to event-edit dialog
-------------------------------
The event-edit dialog gained a "Copy" button, which copies the event
being viewed for later right-click pastes but does not close the
dialog. Together with the dialog's "Delete" this is a convenience
which duplicates the functionality of the event-rightclick copy/cut
dialog (which can be difficult to open on most Android devices).
Help is now "Help" and online
-----------------------------
The User Guide is now accessed with a "Help" button (replacing the
former cryptic "?") and always opens the online, not local, copy of
the guide to support future doc changes. No local copy is shipped.
Three dialog-color configs
--------------------------
Dialogs now support three color settings instead of two: background
color of the entire dialog background; background color of input
fields nested within the dialog; and foreground color of text in
input fields. See "frigcal_configs_base.py" notes for more info.
Day numbers now colorized
-------------------------
A new config, "daysfg", can set the color of day numbers at the
top of day tiles in month windows (e.g., to white for dark themes).
See "frigal_configs_base.py" for more info. This doesn't affect
empty tiles, which are always completely black and unchangeable.
Word-wrapped descriptions
-------------------------
Text wrapping in the event dialog's multiline description field
now uses word wrapping (breaking on words) instead of the former
naive character wrapping. This better supports narrower dialogs
on Android: your text will automatically wrap at word breaks as
you type without Enter/Return presses and will resize itself to
the event dialog's window size as needed.
Month names abbreviated on Android
----------------------------------
To conserve display space, month names at the top of month windows
are now shown as three-letter abbreviations on Android only. Also
for smaller Android screens, controls space is reduced in general,
and the new "buttonNarrowingFactor" conserves more space per ahead.
Android patches integrated
--------------------------
All the changes required for use on Android have been added to the
common and portable source-code package. This means Android users
now simply run the source-code package directly without having to
fetch any patched files. See "PLATFORMS" ahead for more info.
Buttons narrowing config
------------------------
Control buttons may be rendered narrower than defaults with a
new config, "buttonNarrowingFactor", documented with presets
in "frigcal_configs_base.py". While presets work well on each
platform, this can be used to make buttons wider or narrower
(e.g., on larger or smaller Android displays).
Terms-of-use doc
----------------
There is now a formal terms-of-use file which defines license
and privacy policies of this program. See "terms-of-use.txt"
in your unzipped install package or at the program's website.
=========================================================================
2. REMOVALS
=========================================================================
Hover footer dropped
--------------------
The former footer tool - which displayed event description text
at the bottom of month windows on mouse hover - has been removed.
This did not work on Android, worked unevenly on PCs after resizes,
and was rarely, if ever, used. Click events to view descriptions.
Month images dropped
--------------------
The former month images tool - which displayed an image for the
viewed month in a popup window - has been removed. This was arguably
gimmicky and was not useful in practice. UI space formerly taken
by footer and image toggles was reallocated to the new Find button.
=========================================================================
3. REPAIRS
=========================================================================
Fix for macOS event bug
-----------------------
This version's code works around a bug in the latest version of
the Tkinter GUI library on macOS, which may fire redundant events
for double clicks on a window that doesn't currently have focus,
yielding spurious dialogs. No user intervention is required.
Fix backslash escapes broken by Python 3.13
-------------------------------------------
Frigcal and the iCalendar package it embeds use "\<unrecognized>"
character escapes that worked for over 30 years but will begin
generating syntax errors in Python 3.13 (rudely). These were
recoded to avoid errors in the source-code package on 3.13+.
Fix lingering selection after event clicks
------------------------------------------
On macOS, and perhaps others, part of an event label's text would
remain selected after the event-edit dialog opened by an event
double click was closed. This bogus selection is now cleared.
macOS also had to be forced to redraw other widgets post mods.
Fix cursor color in event labels
--------------------------------
In double-click ("mouse") mode, the input cursor in month-window
event labels is now the same color as the event's foreground text.
This was formerly black and hard to see in some color schemes.
Fix GUI blurriness on Windows
-----------------------------
Frigcal now automatically removes the former blurriness its GUI
shared on Windows with all Tkinter programs (and some others).
You no longer need to navigate through DPI settings in the
program file's Properties to work around this manually.
=========================================================================
4. PLATFORMS
=========================================================================
This program runs on macOS, Windows, Linux, and Android. Its version
3.0 is available in portable source-code form that runs on all supported
platforms, as well as a standalone app for macOS and a standalone
executable for Windows. As a brief platform install/usage guide:
macOS
-----
Download and unzip the macOS app; optionally move it to your
Applications folder for easy access. Run the app itself
(folder "Frigcal.app") to start the program as usual.
To access supplemental tools (e.g., "makenewcalendar") use
Finder's "Show Package Contents" on the app itself and run
executables in its "Contents/Resources" subfolder using
command lines in Terminal. The app's "Contents/Resources"
subfolder also hosts the configs file ("frigcal_configs.py")
as well as the default calendars folder ("Calendars").
Tools executables have a noticeable pause when launched.
The macOS app is a universal2 binary, which runs natively
on both Intel and Apple M chips, and should work on macOS
Catalina and newer. As a fallback, the source-code package
also works on macOS the same as it does on Linux (ahead).
Windows
-------
Download and unzip the Windows executable. This creates
a folder which contains a "Frigcal.exe" which you run as
usual to start the program (e.g., by clicks in Explorer).
Also in the unzipped folder are supplemental tools (e.g.,
"makenewcalendar.exe"), which are generally run by clicks
in File Explorer or command lines in a console such as
Command Prompt. The unzipped folder also hosts the configs
file ("frigcal_configs.py") as well as the default calendars
folder ("Calendars").
The Windows executable should run on both Windows 11 and
10 64-bit machines. If it doesn't run on your device, try
running with the source-code package as on Linux (next).
Linux
-----
There is no Linux executable in this version due to Linux
library skew. To run, please fetch and unzip the portable
source-code package, and run "frigcal-main.py" in the unzip
with normal Python techniques to start the program (e.g., a
"python3 frigcal-main.py" command in Terminal).
The unzipped folder also hosts the "frigcal_configs.py"
configs file, the "Calendars" default calendars folder,
and supplemental tools (e.g., "makenewcalendar.py").
All this also applies to WSL2 Linux on Windows, though
this program has not yet been vetted in this context.
Android
-------
All prior Android patches were integrated into the common
source-code package so extra patches are no longer required.
To run, simply fetch and unzip the portable source-code
package, and open and run its "frigcal-main.py" in the
Pydroid 3 app to start the program.
The unzipped folder also hosts the "frigcal_configs.py"
configs file, the "Calendars" default calendars folder,
and supplemental tools (e.g., "makenewcalendar.py").
Storage note: in October 2024, the Pydroid 3 app's version
7.4 has finally gained Android's All Files Access permission,
which means you may download and unzip this program anywhere
in shared/internal storage on your phone or drives. Likewise,
your calendars folder may be kept anywhere in shared storage.
This is a recent development; for background info, see:
=> "learning-python.com/pydroid3-loses-storage-access.html".
Usage note: some features, including Clone and Find, assume a
multiple-window UI that isn't fully supported in Pydroid 3
but can be simulated by disabling fullscreen in app settings.
See Tkinter fullscreen toggles in the app's Settings=>System, plus:
=> "learning-python.com/using-tkinter-programs-on-android.html#moreonfit"
Emojis note: support for these is dependent on the version of
Tk provided by the Pydroid 3 app, which tends to lag behind PC
Pythons. As of Pydroid 3's 7.4, its Python 3.11 uses Tk 8.6.10
which does not support emojis (they are retained in calendar
files but display as a "?" in the GUI) though this is prone to
change in a future Pydroid 3. See also "minimumTkForEmojis"
in file "frigcal_configs_base.py" for a new, related config.
Explorers tip: you can open+run Frigcal's script "frigcal-main.py"
in Pydroid 3 itself (grant All Files Access first). File-explorer
apps (e.g., Cx, Solid) can also open+run this script in Pydroid 3,
and some even allow you to make a homescreen shortcut that does the
same, but this needs some help today. All explorers tested open such
files with the Storage Access Framework, which doesn't give access
to other required code and files in the script's folder. To work
around this, add the following Python code (without its enclosing
" quotes) at the start of the script (before its first "import" line)
to change to the script's directory and fix both opens and shortcuts.
This can't be automated because your 'unzip folder' may vary, but
has been added as commented-out code in "frigcal-main.py" for ease:
=> "import os; os.chdir('/sdcard/Download/Frigcal--source')"
[end]