Commit Graph
26 Commits
Author SHA1 Message Date
Lars HenriksenandLukas Fleischer 9e060b96c2 Scrollbar and right window border
When a scrollbar is on display in APP or TOD windows, the right
vertical border (outside the scrollbar) is not highlighted
when the window is selected.

The scrollbar itself is always highlighted:
- when APP or TOD is deselected
- in configuration windows where borders otherwise are not

The patch moves the scrollbar parameters from arguments of
draw_scrollbar() to the function itself.

The highlight argument to draw_scrollbar() was always 1.
Instead call circumstances are figured out and highlight set
accordingly.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-12-10 14:33:31 +01:00
Lars HenriksenandLukas Fleischer e733d09ea0 Default colour as foreground colour
In the default colour setup (white on black), white could only
with great difficulty be used as customized foreground colour,
because the colour pair COLR_CUSTOM then was identical to
COLR_DEFAULT (default on default). This made it impossible to
distinguish the selected element in lists.

The patch turns on the video attribute bold when default is chosen
as foreground colour.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-12-10 14:33:31 +01:00
Lars HenriksenandLukas Fleischer 95c5d576fa Update UTF-8 base code
UTF-8 encodes characters in one to four bytes (since 2003).

Because 0 is a valid code point, the decode function utf8_ord()
should return -1, not 0, on error. As a consequence utf8_width()
should return 0 for a continuation byte (as it did previously).

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-12-07 09:02:58 +01:00
Lars HenriksenandLukas Fleischer 691d6b33ee Check for the year span 1902-2037
Reintroduce year check for systems with a 32-bit time_t type. Remove the
lower limit (1902) for systems with a 64-bit time_t. This limits
movements in the calendar (for 32-bit systems) and in no way ensures
constistency of data.

Commit a12833e (Handle dates past January 19th, 2038, 2015-01-19)
removed the upper limit (2037) on dates but left the lower limit (1902).
It did not ensure the support of the target system.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-11-23 08:56:38 +01:00
Lars HenriksenandLukas Fleischer 97c3e7f957 Function cleanup in custom.c
Remove two remnants: custom_color_theme_name() and custom_set_swsiz().
Make static and rename custom_confwin_init() into confwin_init().

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-11-23 08:56:06 +01:00
Lars HenriksenandLukas Fleischer aca4e06c5f Fix help for nine actions
Seven actions were absent from display_help(). This meant that
commands like ':help ^P' did not work. They now refer to
general.txt, but are not all described there.

For two actions, generic-copy/paste, the file name was misspelled.

This solves Github issue #44.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-11-15 06:35:17 +01:00
Lars HenriksenandLukas Fleischer 9443de4783 Remove unused argument from wins_other_status_page
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-11-03 21:41:28 +01:00
Lars HenriksenandLukas Fleischer aee9099a44 Detect error on character input
Previously an error from the character input routine wgetch() was
silently ignored. It should still be ignored, but must explicitly be
detected in order to be ignored. The issue came up in connection with
terminal window resize. For whatever reasons ncurses returns ERR (as
well as KEY_RESIZE) when wgetch() asks for input after a resize.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-29 08:42:03 +01:00
Lars HenriksenandLukas Fleischer 012a0e6670 Fix multiple popup windows
The window was not deleted if an "already in use"-key was detected,
and a new one was created as the loop was reentered.

Create/delete of the popup are moved outside the loop.
A redrawwin() call is needed to have the window displayed again.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-29 08:42:03 +01:00
Lars HenriksenandLukas Fleischer 2b8d4e983f Remove recognized keys check
All keys known by ncurses can be bound. Thus the check for not
recognized keys in custom_keys_config() becomes superfluous.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-26 08:35:18 +02:00
Lars HenriksenandLukas Fleischer c0644d5aaf Fix spelling of "frequency"
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-23 21:18:07 +02:00
Lars HenriksenandLukas Fleischer 61e577bf8a Support key bindings for all escape keys
All key names for ordinary ASCII keys as well as for escape keys (pseudo
keys) are cached in a lookup-table, keynames[], at startup. Mapping
between key names (strings) and key codes (integers) in keys_str2int and
keys_int2str) is performed through this table.

The key names used are those returned by the keyname() function of
ncurses. But to accommodate some of the names to the three-letter space
available in the status menu, four ordinary keys and the most common
escape keys have calcurse abbreviated names: ESC, TAB, RET, SPC and LFT,
HOM, PgU, INS, F1, etc.

All keys known by ncurses can be bound. Thus the check for not
recognized keys in the key configuration menu becomes superfluous. The
only keys that cannot be bound, are those escape keys not known to
ncurses, i.e. not described by the terminfo database for the terminal
type in use.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-23 08:40:25 +02:00
Lars HenriksenandLukas Fleischer dd5af2f7f4 Updates for UTF-8 key bindings
Code point mapping adjusted for multibyte characters to avoid the
ncurses range 0-KEY_MAX.

This includes three fixes:

1) test sequence in keys_assign_binding(),
2) reassemble multi-byte character in keys_wgetch(),
3) check for already in use in keys_assign_binding().

Rearrangement of code. The introduction of allocated memory in
keys_int2str() has as a consequence that check for recognized ncurses
pseudo characters now are in two places: keys_str2int() and
custom_keys_config(). The latter was moved from keys_wgetch() to improve
user information.

More informative warning messages in custom_keys_config().

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-23 08:39:11 +02:00
Lars HenriksenandLukas Fleischer eeb7038c13 Do not tie ISO 8601 week numbering to Monday
The week number in the calendar panel is calculated according to
ISO 8601. Hence, Monday is the first day of the week and the
week number changes from Sunday to Monday.

However, calcurse ties the week number not to Monday, but to the
first day of the week as configured for display. Thus, when Sunday
is shown as first day of the week, the week number is correct for
Sunday, but wrong for the rest of the week (one behind).

With this patch the week number always follows the mon-sun week as
required by ISO 8601. A side effect is that when Sunday is displayed
as first day of the week, and Sunday is the selected day, the week
number displayed is invalid for the rest of the week (but changes
to the correct one when the selected day moves forward).

This raises the question whether the week numbering scheme should
follow the "first day of the week" choice and use the American week
numbering scheme instead of ISO 8601 when Sunday is the first day
of the week. But that is for the future.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-10-17 08:42:40 +02:00
Lars HenriksenandLukas Fleischer d20f9a5d2e Make the day heading position configurable
The date at the top of the appointments list may be positioned either to
the left, in the middle or to the right. Default is to the right. Can be
configured from the general options menu.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-09-08 21:08:53 +02:00
Lars HenriksenandLukas Fleischer 172efd7179 Remove phase of moon feature
The computation never really worked before and it seems like the feature
is not very helpful, sometimes even confusing (see GitHub issue #21).

The macro ISLEAP is moved to calcurse.h.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-09-08 21:08:53 +02:00
Lars HenriksenandLukas Fleischer 90fe21af88 Fix phase of moon calculation
The reported phase was often one day early because calculations were
based on midnight. For full and new moon this is changed to noon. For
first and last quarter a direct check of the appearance of the half moon
during the selected day is performed.

Comments are relocated and expanded.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-09-08 21:08:53 +02:00
Lars HenriksenandLukas Fleischer 3095bf4214 Add missing string initialization
When introducing the fmt_day_heading() function in commit d56cc7a (Make
heading in appointments panel configurable, 2017-08-19), we forgot to
initialize the dynamic string. This resulted in calling mem_free() with
a garbage pointer, potentially resulting in a segmentation fault. Fix
this by calling string_init() before using the string.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-09-04 16:34:19 +02:00
Lars HenriksenandLukas Fleischer 26aeddd490 Use nl_langinfo() for month and day names
Use the locale setting to fetch the month names and abbreviated day
names.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-28 07:30:38 +02:00
Lars HenriksenandLukas Fleischer 3efb3e42c9 Remove extra star from recurrent appointments
In the appointments panel, an appointment has a '-' to mark the time
span, and the description on the following line is slightly indented.
When the appointment is changed into a recurrent one, the '-' is changed
to a '*', making it easily distinguishable but the description also gets
a '*', thus breaking the pattern. Drop the extra '*'.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-28 07:30:38 +02:00
Lars HenriksenandLukas Fleischer e12875b420 Remove some leftovers from the past
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-28 07:30:38 +02:00
Lars HenriksenandLukas Fleischer d56cc7acfe Make heading in appointments panel configurable
Add a new configuration variable format.dayheading to set the format of
the date displayed at the top of the event and appointment list.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-28 07:30:38 +02:00
Lars HenriksenandLukas Fleischer 0c63b4661f Make the selected day in the calendar stand out
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-28 07:30:38 +02:00
Lars HenriksenandLukas Fleischer b36dd2e614 Fix empty warning box when key is already in use
When adding a key already in use for another action, a warning box is
displayed. The text length is limited by the window width through the
use of strncpy(). If the limit is exceeded, the string will have no null
termination, resulting in unpredictable behaviour.

A similar problem in fatalbox() is fixed as well.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-12 15:40:02 +02:00
Lars HenriksenandLukas Fleischer 53db74ab34 Fix fatal error when using the help command
Check that an action is defined for the key.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-12 15:38:55 +02:00
Lars HenriksenandLukas Fleischer 0df373f26a Check for optional argument to -s option
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
2017-08-12 15:38:24 +02:00