diff options
Diffstat (limited to 'src/calcurse.h')
-rw-r--r-- | src/calcurse.h | 919 |
1 files changed, 919 insertions, 0 deletions
diff --git a/src/calcurse.h b/src/calcurse.h new file mode 100644 index 0000000..8af1166 --- /dev/null +++ b/src/calcurse.h @@ -0,0 +1,919 @@ +/* $Id: calcurse.h,v 1.1 2010/03/20 10:54:42 culot Exp $ */ + +/* + * Calcurse - text-based organizer + * + * Copyright (c) 2010 Frederic Culot <frederic@culot.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the + * following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Send your feedback or comments to : calcurse@culot.org + * Calcurse home page : http://culot.org/calcurse + * + */ + +#ifndef CALCURSE_H +#define CALCURSE_H + +#include "config.h" + +#ifdef HAVE_NCURSES_H +# include <ncurses.h> +#elif defined HAVE_NCURSES_NCURSES_H +# include <ncurses/ncurses.h> +#elif defined HAVE_NCURSESW_NCURSES_H +# include <ncursesw/ncurses.h> +#else +# error "Missing ncurses header. Aborting..." +#endif + +#include <pthread.h> +#include <time.h> +#include <stdlib.h> +#include <stdio.h> + +#include "htable.h" + +/* Internationalization. */ +#if ENABLE_NLS +# include <locale.h> +# include <libintl.h> +# undef _ +# define _(String) gettext(String) +# ifdef gettext_noop +# define N_(String) gettext_noop(String) +# else +# define N_(String) (String) +# endif +#else /* NLS disabled */ +# define _(String) (String) +# define N_(String) (String) +# define textdomain(String) (String) +# define gettext(String) (String) +# define dgettext(String) (String) +# define dcgettext(String) (String) +# define bindtextdomain(String) (String) +# define bind_textdomain_codeset(Domain,Codeset) (Codeset) +#endif /* ENABLE_NLS */ + +/* Memory debugging functions. */ +#ifdef CALCURSE_MEMORY_DEBUG +# define mem_malloc(s) dbg_malloc ((s), __FILE_POS__) +# define mem_calloc(n, s) dbg_calloc ((n), (s), __FILE_POS__) +# define mem_realloc(p, n, s) dbg_realloc ((p), (n), (s), __FILE_POS__) +# define mem_strdup(s) dbg_strdup ((s), __FILE_POS__) +# define mem_free(p) dbg_free ((p), __FILE_POS__) +#else /* MEMORY DEBUG disabled */ +# define mem_malloc(s) xmalloc ((s)) +# define mem_calloc(n, s) xcalloc ((n), (s)) +# define mem_realloc(p, n, s) xrealloc ((p), (n), (s)) +# define mem_strdup(s) xstrdup ((s)) +# define mem_free(p) xfree ((p)) +# define mem_stats() +#endif /* CALCURSE_MEMORY_DEBUG */ + +/* Paths configuration. */ +#define DIR_NAME ".calcurse/" +#define TODO_PATH_NAME "todo" +#define APTS_PATH_NAME "apts" +#define CONF_PATH_NAME "conf" +#define KEYS_PATH_NAME "keys" +#define CPID_PATH_NAME ".calcurse.pid" +#define DPID_PATH_NAME ".daemon.pid" +#define DLOG_PATH_NAME "daemon.log" +#define NOTES_DIR_NAME "notes/" + +#define TODO_PATH DIR_NAME TODO_PATH_NAME +#define APTS_PATH DIR_NAME APTS_PATH_NAME +#define CONF_PATH DIR_NAME CONF_PATH_NAME +#define KEYS_PATH DIR_NAME KEYS_PATH_NAME +#define CPID_PATH DIR_NAME CPID_PATH_NAME +#define DLOG_PATH DIR_NAME DLOG_PATH_NAME +#define DPID_PATH DIR_NAME DPID_PATH_NAME +#define NOTES_DIR DIR_NAME NOTES_DIR_NAME + +#define ATTR_FALSE 0 +#define ATTR_TRUE 1 +#define ATTR_LOWEST 2 +#define ATTR_LOW 3 +#define ATTR_MIDDLE 4 +#define ATTR_HIGH 5 +#define ATTR_HIGHEST 6 + +#define STATUSHEIGHT 2 +#define NOTESIZ 6 + +/* Format for appointment hours is: HH:MM */ +#define HRMIN_SIZE 6 + +/* Maximum number of colors available. */ +#define NBUSERCOLORS 6 + +/* Related to date manipulation. */ +#define DAYINSEC 86400 +#define HOURINSEC 3600 +#define MININSEC 60 +#define YEARINDAYS 365 +#define YEARINMONTHS 12 +#define WEEKINDAYS 7 +#define TM_YEAR_BASE 1900 + +/* Calendar window. */ +#define CALHEIGHT 12 +#define CALWIDTH 30 + +/* Key definitions. */ +#define CTRLVAL 0x1F +#define CTRL(x) ((x) & CTRLVAL) +#define ESCAPE 27 +#define TAB 9 +#define SPACE 32 + +#define KEYS_KEYLEN 3 /* length of each keybinding */ +#define KEYS_LABELEN 8 /* length of command description */ +#define KEYS_CMDS_PER_LINE 6 /* max number of commands per line */ + +#define ERROR_MSG(...) do { \ + char msg[BUFSIZ]; \ + int len; \ + \ + len = snprintf (msg, BUFSIZ, "%s: %d: ", __FILE__, __LINE__); \ + (void)snprintf (msg + len, BUFSIZ - len, __VA_ARGS__); \ + if (ui_mode == UI_CURSES) \ + fatalbox (msg); \ + else \ + (void)fprintf (stderr, "%s\n", msg); \ +} while (0) + +#define WARN_MSG(...) do { \ + char msg[BUFSIZ]; \ + \ + (void)snprintf (msg, BUFSIZ, __VA_ARGS__); \ + if (ui_mode == UI_CURSES) \ + warnbox (msg); \ + else \ + (void)fprintf (stderr, "%s\n", msg); \ +} while (0) + +#define EXIT(...) do { \ + ERROR_MSG(__VA_ARGS__); \ + if (ui_mode == UI_CURSES) \ + exit_calcurse (EXIT_FAILURE); \ + else \ + exit (EXIT_FAILURE); \ +} while (0) + +#define EXIT_IF(cond, ...) do { \ + if ((cond)) \ + EXIT(__VA_ARGS__); \ +} while (0) + +#define RETURN_IF(cond, ...) do { \ + if ((cond)) \ + { \ + ERROR_MSG(__VA_ARGS__); \ + return; \ + } \ +} while (0) + +#define RETVAL_IF(cond, val, ...) do { \ + if ((cond)) \ + { \ + ERROR_MSG(__VA_ARGS__); \ + return (val); \ + } \ +} while (0) + +#define STRING_BUILD(str) {str, sizeof (str) - 1} +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) +#define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__) + +#define MAX(x,y) ((x)>(y)?(x):(y)) +#define MIN(x,y) ((x)<(y)?(x):(y)) + +/* General configuration variables. */ +struct conf { + unsigned auto_save; + unsigned periodic_save; + unsigned confirm_quit; + unsigned confirm_delete; + unsigned skip_system_dialogs; + unsigned skip_progress_bar; + char *editor; + char *pager; + char output_datefmt[BUFSIZ]; /* format for displaying date */ + int input_datefmt; /* format for reading date */ +}; + +/* Daemon-related configuration. */ +struct dmon_conf { + unsigned enable; /* launch daemon automatically when exiting */ + unsigned log; /* log daemon activity */ +}; + +struct string { + const char *str; + const int len; +}; + +enum datefmt { + DATEFMT_MMDDYYYY = 1, + DATEFMT_DDMMYYYY, + DATEFMT_YYYYMMDD, + DATEFMT_ISO, + DATE_FORMATS +}; + +#define DATEFMT(datefmt) (datefmt == DATEFMT_MMDDYYYY ? "%m/%d/%Y" : \ + (datefmt == DATEFMT_DDMMYYYY ? "%d/%m/%Y" : \ + (datefmt == DATEFMT_YYYYMMDD ? "%Y/%m/%d" : "%Y-%m-%d"))) + +#define DATEFMT_DESC(datefmt) (datefmt == DATEFMT_MMDDYYYY ? \ + _("mm/dd/yyyy") : \ + (datefmt == DATEFMT_DDMMYYYY ? \ + _("dd/mm/yyyy") : \ + (datefmt == DATEFMT_YYYYMMDD ? \ + _("yyyy/mm/dd") : _("yyyy-mm-dd")))) + +struct date { + unsigned dd; + unsigned mm; + unsigned yyyy; +}; + +/* Appointment definition. */ +struct apoint +{ + struct apoint *next; /* appointments are stored in a linked-list */ + long start; /* seconds since 1 jan 1970 */ + long dur; /* duration of the appointment in seconds */ + +#define APOINT_NULL 0x0 +#define APOINT_NOTIFY 0x1 /* Item needs to be notified */ +#define APOINT_NOTIFIED 0x2 /* Item was already notified */ + int state; + + char *mesg; + char *note; +}; + +/* Appointments are stored in a linked-list. */ +struct apoint_list +{ + struct apoint *root; + pthread_mutex_t mutex; +}; + +/* Event definition. */ +struct event { + struct event *next; + int id; /* event identifier */ + long day; /* seconds since 1 jan 1970 */ + char *mesg; + char *note; +}; + +/* Todo item definition. */ +struct todo { + struct todo *next; + char *mesg; + int id; + char *note; +}; + +/* Number of items in current day. */ +struct day_items_nb { + unsigned nb_events; + unsigned nb_apoints; +}; + +/* Generic item description (to hold appointments, events...). */ +struct day_item { + struct day_item *next; + long start; /* seconds since 1 jan 1970 */ + long appt_dur; /* appointment duration in seconds */ + int type; /* (recursive or normal) event or appointment */ + int evnt_id; /* event identifier */ + int appt_pos; /* real position in recurrent list */ + char state; /* appointment state */ + char *mesg; /* item description */ + char *note; /* note attached to item */ +}; + +struct days { + struct days *next; + long st; /* beggining of the considered day, in seconds */ +}; + +enum recur_type { + RECUR_NO, + RECUR_DAILY, + RECUR_WEEKLY, + RECUR_MONTHLY, + RECUR_YEARLY, + RECUR_TYPES +}; + +/* To describe an item's repetition. */ +struct rpt { + enum recur_type type; /* repetition type */ + int freq; /* repetition frequence */ + long until; /* ending date for repeated event */ +}; + +/* Recurrent appointment definition. */ +struct recur_apoint { + struct recur_apoint *next; + struct rpt *rpt; /* information about repetition */ + struct days *exc; /* days when the item should not be repeated */ + long start; /* beggining of the appointment */ + long dur; /* duration of the appointment */ + char state; /* 8 bits to store item state */ + char *mesg; /* appointment description */ + char *note; /* note attached to appointment */ +}; + +/* Recurrent appointments are stored in a linked-list. */ +struct recur_apoint_list { + struct recur_apoint *root; + pthread_mutex_t mutex; +}; + +/* Reccurent event definition. */ +struct recur_event { + struct recur_event *next; + struct rpt *rpt; /* information about repetition */ + struct days *exc; /* days when the item should not be repeated */ + int id; /* event type */ + long day; /* day at which event occurs */ + char *mesg; /* event description */ + char *note; /* note attached to event */ +}; + +struct notify_app { + long time; + int got_app; + char *txt; + char state; + pthread_mutex_t mutex; +}; + +struct io_file { + FILE *fd; + char name[BUFSIZ]; +}; + +/* Available keys. */ +enum key { + KEY_GENERIC_CANCEL, + KEY_GENERIC_SELECT, + KEY_GENERIC_CREDITS, + KEY_GENERIC_HELP, + KEY_GENERIC_QUIT, + KEY_GENERIC_SAVE, + KEY_GENERIC_CUT, + KEY_GENERIC_PASTE, + KEY_GENERIC_CHANGE_VIEW, + KEY_GENERIC_IMPORT, + KEY_GENERIC_EXPORT, + KEY_GENERIC_GOTO, + KEY_GENERIC_OTHER_CMD, + KEY_GENERIC_CONFIG_MENU, + KEY_GENERIC_REDRAW, + KEY_GENERIC_ADD_APPT, + KEY_GENERIC_ADD_TODO, + KEY_GENERIC_NEXT_DAY, + KEY_GENERIC_PREV_DAY, + KEY_GENERIC_NEXT_WEEK, + KEY_GENERIC_PREV_WEEK, + KEY_GENERIC_SCROLL_DOWN, + KEY_GENERIC_SCROLL_UP, + KEY_GENERIC_GOTO_TODAY, + + KEY_MOVE_RIGHT, + KEY_MOVE_LEFT, + KEY_MOVE_DOWN, + KEY_MOVE_UP, + KEY_START_OF_WEEK, + KEY_END_OF_WEEK, + KEY_ADD_ITEM, + KEY_DEL_ITEM, + KEY_EDIT_ITEM, + KEY_VIEW_ITEM, + KEY_FLAG_ITEM, + KEY_REPEAT_ITEM, + KEY_EDIT_NOTE, + KEY_VIEW_NOTE, + KEY_RAISE_PRIORITY, + KEY_LOWER_PRIORITY, + + NBKEYS, + KEY_UNDEF +}; + +/* To describe a key binding. */ +struct binding { + char *label; + enum key action; +}; + +enum win { + CAL, + APP, + TOD, + NOT, + STA, + NBWINS +}; + +enum ui_mode { + UI_CURSES, + UI_CMDLINE, + UI_MODES +}; + +/* Generic window structure. */ +struct window { + WINDOW *p; /* pointer to window */ + unsigned w; /* width */ + unsigned h; /* height */ + int x; /* x position */ + int y; /* y position */ +}; + +/* Generic scrolling window structure. */ +struct scrollwin { + struct window win; + struct window pad; + unsigned first_visible_line; + unsigned total_lines; + char label[BUFSIZ]; +}; + +/* Pad structure to handle scrolling. */ +struct pad { + int width; + int length; + int first_onscreen; /* first line to be displayed inside window */ + WINDOW *ptrwin; /* pointer to the pad window */ +}; + +/* Notification bar definition. */ +struct nbar { + int show; /* display or hide the notify-bar */ + int cntdwn; /* warn when time left before next app + becomes lesser than cntdwn */ + char datefmt[BUFSIZ]; /* format for displaying date */ + char timefmt[BUFSIZ]; /* format for displaying time */ + char cmd[BUFSIZ]; /* notification command */ + char *shell; /* user shell to launch notif. cmd */ + pthread_mutex_t mutex; +}; + +/* Available types of items. */ +enum item_type { + RECUR_EVNT = 1, + EVNT, + RECUR_APPT, + APPT, + MAX_TYPES = APPT +}; + +/* Flags used to adapt processing when erasing an item. */ +enum eraseflg { + ERASE_DONT_FORCE, + ERASE_FORCE, + ERASE_FORCE_KEEP_NOTE, + ERASE_FORCE_ONLY_NOTE, + ERASE_CUT +}; + +/* Return codes for the getstring() function. */ +enum getstr { + GETSTRING_VALID, + GETSTRING_ESC, /* user pressed escape to cancel editing. */ + GETSTRING_RET /* return was pressed without entering any text. */ +}; + +/* Week days. */ +enum wday { + SUNDAY, + MONDAY, + TUESDAY, + WEDNESDAY, + THURSDAY, + FRIDAY, + SATURDAY, + WDAYS +}; + +/* Possible movements inside calendar. */ +enum move { + UP, + DOWN, + LEFT, + RIGHT, + WEEK_START, + WEEK_END, + MOVES +}; + +/* Available color pairs. */ +enum { + COLR_RED = 1, + COLR_GREEN, + COLR_YELLOW, + COLR_BLUE, + COLR_MAGENTA, + COLR_CYAN, + COLR_DEFAULT, + COLR_HIGH, + COLR_CUSTOM +}; + +/* Available import types. */ +enum import_type { + IO_IMPORT_ICAL, + IO_IMPORT_NBTYPES +}; + +/* Available export types. */ +enum export_type { + IO_EXPORT_ICAL, + IO_EXPORT_PCAL, + IO_EXPORT_NBTYPES +}; + +/* To customize the display when saving data. */ +enum save_display { + IO_SAVE_DISPLAY_BAR, + IO_SAVE_DISPLAY_MARK, + IO_SAVE_DISPLAY_NONE +}; + +/* apoint.c */ +extern struct apoint_list *alist_p; +void apoint_free_bkp (enum eraseflg); +void apoint_llist_init (void); +void apoint_llist_free (void); +void apoint_hilt_set (int); +void apoint_hilt_decrease (void); +void apoint_hilt_increase (void); +int apoint_hilt (void); +struct apoint *apoint_new (char *, char *, long, long, char); +void apoint_add (void); +void apoint_delete (struct conf *, unsigned *, unsigned *); +int apoint_cut (unsigned *, unsigned *); +void apoint_paste (unsigned *, unsigned *, int); +unsigned apoint_inday (struct apoint *, long); +void apoint_sec2str (struct apoint *, int, long, char *, char *); +void apoint_write (struct apoint *, FILE *); +struct apoint *apoint_scan (FILE *, struct tm, struct tm, char, char *); +struct apoint *apoint_get (long, int); +void apoint_delete_bynum (long, unsigned, enum eraseflg); +void apoint_scroll_pad_down (int, int); +void apoint_scroll_pad_up (int); +struct notify_app *apoint_check_next (struct notify_app *, long); +struct apoint *apoint_recur_s2apoint_s (struct recur_apoint *); +void apoint_switch_notify (void); +void apoint_update_panel (int); +void apoint_paste_item (void); + +/* args.c */ +int parse_args (int, char **, struct conf *); + +/* calendar.c */ +void calendar_view_next (void); +void calendar_view_prev (void); +void calendar_set_view (int); +int calendar_get_view (void); +void calendar_start_date_thread (void); +void calendar_stop_date_thread (void); +void calendar_set_current_date (void); +void calendar_set_first_day_of_week (enum wday); +void calendar_change_first_day_of_week (void); +unsigned calendar_week_begins_on_monday (void); +void calendar_store_current_date (struct date *); +void calendar_init_slctd_day (void); +struct date *calendar_get_slctd_day (void); +long calendar_get_slctd_day_sec (void); +void calendar_update_panel (struct window *); +void calendar_goto_today (void); +void calendar_change_day (int); +void calendar_move (enum move); +long calendar_start_of_year (void); +long calendar_end_of_year (void); +char *calendar_get_pom (time_t); + +/* custom.c */ +void custom_init_attr (void); +void custom_apply_attr (WINDOW *, int); +void custom_remove_attr (WINDOW *, int); +void custom_load_conf (struct conf *, int); +void custom_config_bar (void); +void custom_layout_config (void); +void custom_color_config (void); +void custom_color_theme_name (char *); +void custom_confwin_init (struct window *, char *); +void custom_set_swsiz (struct scrollwin *); +void custom_general_config (struct conf *); +void custom_keys_config (void); + +/* day.c */ +void day_free_list (void); +struct day_items_nb *day_process_storage (struct date *, unsigned, + struct day_items_nb *); +void day_write_pad (long, int, int, int); +void day_popup_item (void); +int day_check_if_item (struct date); +unsigned day_chk_busy_slices (struct date, int, int *); +void day_edit_item (struct conf *); +int day_erase_item (long, int, enum eraseflg); +int day_cut_item (long, int); +int day_paste_item (long, int); +struct day_item *day_get_item (int); +int day_item_nb (long, int, int); +void day_edit_note (char *); +void day_view_note (char *); + +/* dmon.c */ +void dmon_start (int); +void dmon_stop (void); + +/* event.c */ +extern struct event *eventlist; +void event_free_bkp (enum eraseflg); +void event_llist_free (void); +struct event *event_new (char *, char *, long, int); +unsigned event_inday (struct event *, long); +void event_write (struct event *, FILE *); +struct event *event_scan (FILE *, struct tm, int, char *); +struct event *event_get (long, int); +void event_delete_bynum (long, unsigned, enum eraseflg); +void event_paste_item (void); + +/* help.c */ +void help_wins_init (struct scrollwin *, int, int, int, int); +void help_screen (void); + +/* io.c */ +unsigned io_fprintln (const char *, const char *, ...); +void io_init (char *, char *); +void io_extract_data (char *, const char *, int); +unsigned io_save_conf (struct conf *); +unsigned io_save_apts (void); +unsigned io_save_todo (void); +unsigned io_save_keys (void); +void io_save_cal (struct conf *, enum save_display); +void io_load_app (void); +void io_load_todo (void); +void io_load_keys (char *); +void io_check_dir (char *, int *); +unsigned io_file_exist (char *); +void io_check_file (char *, int *); +int io_check_data_files (void); +void io_startup_screen (unsigned, int); +void io_export_data (enum export_type, struct conf *); +void io_export_bar (void); +void io_import_data (enum import_type, struct conf *, char *); +struct io_file *io_log_init (void); +void io_log_print (struct io_file *, int, char *); +void io_log_display (struct io_file *, char *, char *); +void io_log_free (struct io_file *); +void io_start_psave_thread (struct conf *); +void io_stop_psave_thread (void); +void io_set_lock (void); +unsigned io_dump_pid (char *); +unsigned io_get_pid (char *); + +/* keys.c */ +void keys_init (void); +void keys_free (void); +void keys_dump_defaults (char *); +char *keys_get_label (enum key); +enum key keys_get_action (int); +enum key keys_getch (WINDOW *win); +int keys_assign_binding (int, enum key); +void keys_remove_binding (int, enum key); +int keys_str2int (char *); +char *keys_int2str (int); +int keys_action_count_keys (enum key); +char *keys_action_firstkey (enum key); +char *keys_action_nkey (enum key, int); +char *keys_action_allkeys (enum key); +void keys_display_bindings_bar (WINDOW *, struct binding **, int, int); +void keys_popup_info (enum key); +void keys_save_bindings (FILE *); +int keys_check_missing_bindings (void); +void keys_fill_missing (void); + +/* mem.c */ +void *xmalloc (size_t); +void *xcalloc (size_t, size_t); +void *xrealloc (void *, size_t, size_t); +char *xstrdup (const char *); +void xfree (void *); +void *dbg_malloc (size_t, const char *); +void *dbg_calloc (size_t, size_t, const char *); +void *dbg_realloc (void *, size_t, size_t, const char *); +char *dbg_strdup (const char *, const char *); +void dbg_free (void *, const char *); +void mem_stats (void); + +/* notify.c */ +int notify_time_left (void); +unsigned notify_needs_reminder (void); +void notify_update_app (long, char, char *); +int notify_bar (void); +void notify_init_vars (void); +void notify_init_bar (void); +void notify_free_app (void); +void notify_start_main_thread (void); +void notify_stop_main_thread (void); +void notify_reinit_bar (void); +unsigned notify_launch_cmd (void); +void notify_update_bar (void); +unsigned notify_get_next (struct notify_app *); +unsigned notify_get_next_bkgd (void); +char *notify_app_txt (void); +void notify_check_next_app (void); +void notify_check_added (char *, long, char); +void notify_check_repeated (struct recur_apoint *); +int notify_same_item (long); +int notify_same_recur_item (struct recur_apoint *); +void notify_config_bar (void); + +/* recur.c */ +extern struct recur_apoint_list *recur_alist_p; +extern struct recur_event *recur_elist; +void recur_event_free_bkp (enum eraseflg); +void recur_apoint_free_bkp (enum eraseflg); +void recur_apoint_llist_init (void); +void recur_apoint_llist_free (void); +void recur_event_llist_free (void); +struct recur_apoint *recur_apoint_new (char *, char *, long, long, char, + int, int, long, struct days **); +struct recur_event *recur_event_new (char *, char *, long, int, int, int, + long, struct days **); +char recur_def2char (enum recur_type); +int recur_char2def (char); +struct recur_apoint *recur_apoint_scan (FILE *, struct tm, struct tm, + char, int, struct tm, char *, + struct days **, char); +struct recur_event *recur_event_scan (FILE *, struct tm, int, char, + int, struct tm, char *, + struct days **); +void recur_save_data (FILE *); +unsigned recur_item_inday (long, struct days *, int, int, + long, long); +void recur_event_erase (long, unsigned, unsigned, + enum eraseflg); +void recur_apoint_erase (long, unsigned, unsigned, + enum eraseflg); +void recur_repeat_item (struct conf *); +struct days *recur_exc_scan (FILE *); +struct notify_app *recur_apoint_check_next (struct notify_app *, long, long); +struct recur_apoint *recur_get_apoint (long, int); +struct recur_event *recur_get_event (long, int); +void recur_apoint_switch_notify (long, int); +void recur_event_paste_item (void); +void recur_apoint_paste_item (void); + +/* sigs.c */ +void sigs_init (void); +unsigned sigs_set_hdlr (int, void (*)(int)); + +/* todo.c */ +extern struct todo *todolist; +void todo_hilt_set (int); +void todo_hilt_decrease (void); +void todo_hilt_increase (void); +int todo_hilt (void); +int todo_nb (void); +void todo_set_nb (int); +void todo_set_first (int); +void todo_first_increase (void); +void todo_first_decrease (void); +int todo_hilt_pos (void); +char *todo_saved_mesg (void); +void todo_new_item (void); +struct todo *todo_add (char *, int, char *); +void todo_flag (void); +void todo_delete (struct conf *); +void todo_chg_priority (int); +void todo_edit_item (void); +void todo_update_panel (int); +void todo_edit_note (char *); +void todo_view_note (char *); +void todo_free_list (void); + +/* utils.c */ +void exit_calcurse (int); +void free_user_data (void); +void fatalbox (const char *); +void warnbox (const char *); +void status_mesg (char *, char *); +void erase_window_part (WINDOW *, int, int, int, int); +WINDOW *popup (int, int, int, int, char *, char *, int); +void print_in_middle (WINDOW *, int, int, int, char *); +enum getstr getstring (WINDOW *, char *, int, int, int); +int updatestring (WINDOW *, char **, int, int); +int is_all_digit (char *); +long get_item_time (long); +int get_item_hour (long); +int get_item_min (long); +long date2sec (struct date, unsigned, unsigned); +char *date_sec2hour_str (long); +char *date_sec2date_str (long, char *); +void date_sec2date_fmt (long, const char *, char *); +long date_sec_change (long, int, int); +long update_time_in_date (long, unsigned, unsigned); +long get_sec_date (struct date); +long min2sec (unsigned); +int check_time (char *); +void draw_scrollbar (WINDOW *, int, int, int, int, int, unsigned); +void item_in_popup (char *, char *, char *, char *); +long get_today (void); +long now (void); +char *nowstr (void); +long mystrtol (const char *); +void print_bool_option_incolor (WINDOW *, unsigned, int, int); +char *new_tempfile (const char *, int); +void erase_note (char **, enum eraseflg); +int parse_date (char *, enum datefmt, int *, int *, int *); +char *str_toupper (char *); +void file_close (FILE *, const char *); +void psleep (unsigned); + +/* vars.c */ +extern int col, row; +extern unsigned colorize; +extern enum ui_mode ui_mode; +extern int days[12]; +extern char *monthnames[12]; +extern char *daynames[8]; +extern char path_dir[BUFSIZ]; +extern char path_todo[BUFSIZ]; +extern char path_apts[BUFSIZ]; +extern char path_conf[BUFSIZ]; +extern char path_keys[BUFSIZ]; +extern char path_notes[BUFSIZ]; +extern char path_cpid[BUFSIZ]; +extern char path_dpid[BUFSIZ]; +extern char path_dmon_log[BUFSIZ]; +extern struct pad apad; +extern struct nbar nbar; +extern struct dmon_conf dmon; +void vars_init (struct conf *); + +/* wins.c */ +extern struct window win[NBWINS]; +int wins_layout (void); +void wins_set_layout (int); +void wins_slctd_init (void); +enum win wins_slctd (void); +void wins_slctd_set (enum win); +void wins_slctd_next (void); +void wins_init (void); +void wins_scrollwin_init (struct scrollwin *); +void wins_scrollwin_delete (struct scrollwin *); +void wins_scrollwin_display (struct scrollwin *); +void wins_scrollwin_up (struct scrollwin *, int); +void wins_scrollwin_down (struct scrollwin *, int); +void wins_reinit (void); +void wins_show (WINDOW *, char *); +void wins_get_config (void); +void wins_update (void); +void wins_reset (void); +void wins_launch_external (const char *, const char *); +void wins_status_bar (void); +void wins_erase_status_bar (void); +void wins_other_status_page (int); +void wins_reset_status_page (void); + +#endif /* CALCURSE_H */ |