All headers gathered into a single one. Typedefs suppressed.
This commit is contained in:
parent
689be29474
commit
a8cb1c92ef
@ -1,3 +1,7 @@
|
||||
2010-03-20 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* src/calcurse.h: new header to gather all existing ones
|
||||
|
||||
2010-03-19 Frederic Culot <frederic@culot.org>
|
||||
|
||||
* TODO: list updated
|
||||
|
@ -1,29 +1,29 @@
|
||||
# $calcurse: Makefile.am,v 1.10 2009/07/20 19:44:05 culot Exp $
|
||||
# $calcurse: Makefile.am,v 1.11 2010/03/20 10:54:41 culot Exp $
|
||||
|
||||
AUTOMAKE_OPTIONS= foreign
|
||||
|
||||
bin_PROGRAMS= calcurse
|
||||
|
||||
calcurse_SOURCES= \
|
||||
calcurse.c i18n.h htable.h \
|
||||
apoint.c apoint.h \
|
||||
args.c args.h \
|
||||
calendar.c calendar.h \
|
||||
custom.c custom.h \
|
||||
day.c day.h \
|
||||
event.c event.h \
|
||||
help.c help.h \
|
||||
io.c io.h \
|
||||
keys.c keys.h \
|
||||
notify.c notify.h \
|
||||
recur.c recur.h \
|
||||
sigs.c sigs.h \
|
||||
todo.c todo.h \
|
||||
utils.c utils.h \
|
||||
vars.c vars.h \
|
||||
wins.c wins.h \
|
||||
mem.c mem.h \
|
||||
dmon.c dmon.h
|
||||
calcurse.c calcurse.h htable.h \
|
||||
apoint.c \
|
||||
args.c \
|
||||
calendar.c \
|
||||
custom.c \
|
||||
day.c \
|
||||
event.c \
|
||||
help.c \
|
||||
io.c \
|
||||
keys.c \
|
||||
notify.c \
|
||||
recur.c \
|
||||
sigs.c \
|
||||
todo.c \
|
||||
utils.c \
|
||||
vars.c \
|
||||
wins.c \
|
||||
mem.c \
|
||||
dmon.c
|
||||
|
||||
LDADD= @LTLIBINTL@
|
||||
|
||||
|
75
src/apoint.c
75
src/apoint.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: apoint.c,v 1.37 2009/07/19 08:20:00 culot Exp $ */
|
||||
/* $calcurse: apoint.c,v 1.38 2010/03/20 10:54:41 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,24 +41,14 @@
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "vars.h"
|
||||
#include "event.h"
|
||||
#include "day.h"
|
||||
#include "custom.h"
|
||||
#include "notify.h"
|
||||
#include "recur.h"
|
||||
#include "keys.h"
|
||||
#include "calendar.h"
|
||||
#include "mem.h"
|
||||
#include "apoint.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
apoint_llist_t *alist_p;
|
||||
static apoint_llist_node_t bkp_cut_apoint;
|
||||
struct apoint_list *alist_p;
|
||||
static struct apoint bkp_cut_apoint;
|
||||
static int hilt;
|
||||
|
||||
void
|
||||
apoint_free_bkp (erase_flag_e flag)
|
||||
apoint_free_bkp (enum eraseflg flag)
|
||||
{
|
||||
if (bkp_cut_apoint.mesg)
|
||||
{
|
||||
@ -69,7 +59,7 @@ apoint_free_bkp (erase_flag_e flag)
|
||||
}
|
||||
|
||||
static void
|
||||
apoint_dup (apoint_llist_node_t *in, apoint_llist_node_t *bkp)
|
||||
apoint_dup (struct apoint *in, struct apoint *bkp)
|
||||
{
|
||||
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||
|
||||
@ -84,7 +74,7 @@ apoint_dup (apoint_llist_node_t *in, apoint_llist_node_t *bkp)
|
||||
void
|
||||
apoint_llist_init (void)
|
||||
{
|
||||
alist_p = (apoint_llist_t *) mem_malloc (sizeof (apoint_llist_t));
|
||||
alist_p = mem_malloc (sizeof (struct apoint_list));
|
||||
alist_p->root = NULL;
|
||||
pthread_mutex_init (&(alist_p->mutex), NULL);
|
||||
}
|
||||
@ -97,7 +87,7 @@ apoint_llist_init (void)
|
||||
void
|
||||
apoint_llist_free (void)
|
||||
{
|
||||
apoint_llist_node_t *o, **i;
|
||||
struct apoint *o, **i;
|
||||
|
||||
i = &alist_p->root;
|
||||
while (*i)
|
||||
@ -137,12 +127,12 @@ apoint_hilt (void)
|
||||
return (hilt);
|
||||
}
|
||||
|
||||
apoint_llist_node_t *
|
||||
struct apoint *
|
||||
apoint_new (char *mesg, char *note, long start, long dur, char state)
|
||||
{
|
||||
apoint_llist_node_t *o, **i;
|
||||
struct apoint *o, **i;
|
||||
|
||||
o = (apoint_llist_node_t *) mem_malloc (sizeof (apoint_llist_node_t));
|
||||
o = mem_malloc (sizeof (struct apoint));
|
||||
o->mesg = mem_strdup (mesg);
|
||||
o->note = (note != NULL) ? mem_strdup (note) : NULL;
|
||||
o->state = state;
|
||||
@ -280,7 +270,7 @@ apoint_add (void)
|
||||
|
||||
/* Delete an item from the appointment list. */
|
||||
void
|
||||
apoint_delete (conf_t *conf, unsigned *nb_events, unsigned *nb_apoints)
|
||||
apoint_delete (struct conf *conf, unsigned *nb_events, unsigned *nb_apoints)
|
||||
{
|
||||
char *choices = "[y/n] ";
|
||||
char *del_app_str = _("Do you really want to delete this item ?");
|
||||
@ -398,7 +388,7 @@ apoint_paste (unsigned *nb_events, unsigned *nb_apoints, int cut_item_type)
|
||||
}
|
||||
|
||||
unsigned
|
||||
apoint_inday (apoint_llist_node_t *i, long start)
|
||||
apoint_inday (struct apoint *i, long start)
|
||||
{
|
||||
if (i->start <= start + DAYINSEC && i->start + i->dur > start)
|
||||
{
|
||||
@ -408,8 +398,7 @@ apoint_inday (apoint_llist_node_t *i, long start)
|
||||
}
|
||||
|
||||
void
|
||||
apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
|
||||
char *end)
|
||||
apoint_sec2str (struct apoint *o, int type, long day, char *start, char *end)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -433,7 +422,7 @@ apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
|
||||
}
|
||||
|
||||
void
|
||||
apoint_write (apoint_llist_node_t *o, FILE *f)
|
||||
apoint_write (struct apoint *o, FILE *f)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -461,7 +450,7 @@ apoint_write (apoint_llist_node_t *o, FILE *f)
|
||||
(void)fprintf (f, "%s\n", o->mesg);
|
||||
}
|
||||
|
||||
apoint_llist_node_t *
|
||||
struct apoint *
|
||||
apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
|
||||
{
|
||||
char buf[BUFSIZ], *newline;
|
||||
@ -491,10 +480,10 @@ apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
|
||||
}
|
||||
|
||||
/* Retrieve an appointment from the list, given the day and item position. */
|
||||
apoint_llist_node_t *
|
||||
struct apoint *
|
||||
apoint_get (long day, int pos)
|
||||
{
|
||||
apoint_llist_node_t *o;
|
||||
struct apoint *o;
|
||||
int n;
|
||||
|
||||
n = 0;
|
||||
@ -513,11 +502,11 @@ apoint_get (long day, int pos)
|
||||
}
|
||||
|
||||
void
|
||||
apoint_delete_bynum (long start, unsigned num, erase_flag_e flag)
|
||||
apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
|
||||
{
|
||||
unsigned n;
|
||||
int need_check_notify = 0;
|
||||
apoint_llist_node_t *i, **iptr;
|
||||
struct apoint *i, **iptr;
|
||||
|
||||
n = 0;
|
||||
pthread_mutex_lock (&(alist_p->mutex));
|
||||
@ -623,10 +612,10 @@ apoint_scroll_pad_up (int nb_events_inday)
|
||||
* Look in the appointment list if we have an item which starts before the item
|
||||
* stored in the notify_app structure (which is the next item to be notified).
|
||||
*/
|
||||
struct notify_app_s *
|
||||
apoint_check_next (struct notify_app_s *app, long start)
|
||||
struct notify_app *
|
||||
apoint_check_next (struct notify_app *app, long start)
|
||||
{
|
||||
apoint_llist_node_t *i;
|
||||
struct apoint *i;
|
||||
|
||||
pthread_mutex_lock (&(alist_p->mutex));
|
||||
for (i = alist_p->root; i != 0; i = i->next)
|
||||
@ -653,15 +642,15 @@ apoint_check_next (struct notify_app_s *app, long start)
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns a structure of type apoint_llist_t given a structure of type
|
||||
* Returns a structure of type struct apoint_list given a structure of type
|
||||
* recur_apoint_s
|
||||
*/
|
||||
apoint_llist_node_t *
|
||||
apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
|
||||
struct apoint *
|
||||
apoint_recur_s2apoint_s (struct recur_apoint *p)
|
||||
{
|
||||
apoint_llist_node_t *a;
|
||||
struct apoint *a;
|
||||
|
||||
a = (apoint_llist_node_t *) mem_malloc (sizeof (apoint_llist_node_t));
|
||||
a = mem_malloc (sizeof (struct apoint));
|
||||
a->mesg = mem_strdup (p->mesg);
|
||||
a->start = p->start;
|
||||
a->dur = p->dur;
|
||||
@ -674,8 +663,8 @@ apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
|
||||
void
|
||||
apoint_switch_notify (void)
|
||||
{
|
||||
apoint_llist_node_t *apoint;
|
||||
struct day_item_s *p;
|
||||
struct apoint *apoint;
|
||||
struct day_item *p;
|
||||
long date;
|
||||
int apoint_nb = 0, n, need_chk_notify;
|
||||
|
||||
@ -733,7 +722,7 @@ apoint_update_panel (int which_pan)
|
||||
int app_width = win[APP].w - bordr;
|
||||
int app_length = win[APP].h - bordr - title_lines;
|
||||
long date;
|
||||
date_t slctd_date;
|
||||
struct date slctd_date;
|
||||
|
||||
/* variable inits */
|
||||
slctd_date = *calendar_get_slctd_day ();
|
||||
|
101
src/apoint.h
101
src/apoint.h
@ -1,101 +0,0 @@
|
||||
/* $calcurse: apoint.h,v 1.20 2009/08/01 20:28:55 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_APOINT_H
|
||||
#define CALCURSE_APOINT_H
|
||||
|
||||
#include "utils.h"
|
||||
#include "notify.h"
|
||||
#include "recur.h"
|
||||
#include "vars.h"
|
||||
|
||||
#define HRMIN_SIZE 6
|
||||
|
||||
typedef struct apoint_llist_node
|
||||
{
|
||||
struct apoint_llist_node *next;
|
||||
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 */
|
||||
char state; /* 8 bits to store item state */
|
||||
|
||||
char *mesg;
|
||||
char *note;
|
||||
}
|
||||
apoint_llist_node_t;
|
||||
|
||||
typedef struct apoint_llist
|
||||
{
|
||||
apoint_llist_node_t *root;
|
||||
pthread_mutex_t mutex;
|
||||
}
|
||||
apoint_llist_t;
|
||||
|
||||
extern apoint_llist_t *alist_p;
|
||||
|
||||
void apoint_free_bkp (erase_flag_e);
|
||||
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);
|
||||
apoint_llist_node_t *apoint_new (char *, char *, long, long, char);
|
||||
void apoint_add (void);
|
||||
void apoint_delete (conf_t *, unsigned *, unsigned *);
|
||||
int apoint_cut (unsigned *, unsigned *);
|
||||
void apoint_paste (unsigned *, unsigned *, int);
|
||||
unsigned apoint_inday (apoint_llist_node_t *, long);
|
||||
void apoint_sec2str (apoint_llist_node_t *, int, long, char *,
|
||||
char *);
|
||||
void apoint_write (apoint_llist_node_t *, FILE *);
|
||||
apoint_llist_node_t *apoint_scan (FILE *, struct tm, struct tm, char, char *);
|
||||
apoint_llist_node_t *apoint_get (long, int);
|
||||
void apoint_delete_bynum (long, unsigned, erase_flag_e);
|
||||
void apoint_scroll_pad_down (int, int);
|
||||
void apoint_scroll_pad_up (int);
|
||||
struct notify_app_s *apoint_check_next (struct notify_app_s *, long);
|
||||
apoint_llist_node_t *apoint_recur_s2apoint_s (recur_apoint_llist_node_t *);
|
||||
void apoint_switch_notify (void);
|
||||
void apoint_update_panel (int);
|
||||
void apoint_paste_item (void);
|
||||
|
||||
#endif /* CALCURSE_APOINT_H */
|
57
src/args.c
57
src/args.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: args.c,v 1.61 2009/11/01 11:19:14 culot Exp $ */
|
||||
/* $calcurse: args.c,v 1.62 2010/03/20 10:54:42 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -45,20 +45,7 @@
|
||||
#include <time.h>
|
||||
#include <regex.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "custom.h"
|
||||
#include "utils.h"
|
||||
#include "args.h"
|
||||
#include "event.h"
|
||||
#include "apoint.h"
|
||||
#include "day.h"
|
||||
#include "todo.h"
|
||||
#include "mem.h"
|
||||
#include "io.h"
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include "calcurse.h"
|
||||
|
||||
/*
|
||||
* Print Calcurse usage and exit.
|
||||
@ -257,7 +244,7 @@ print_notefile (FILE *out, char *filename, int nbtab)
|
||||
static void
|
||||
todo_arg (int priority, int print_note, regex_t *regex)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
int title = 1;
|
||||
char *titlestr, priority_str[BUFSIZ] = "";
|
||||
char *all_todos_title = _("to do:\n");
|
||||
@ -313,7 +300,7 @@ todo_arg (int priority, int print_note, regex_t *regex)
|
||||
static void
|
||||
next_arg (void)
|
||||
{
|
||||
struct notify_app_s next_app;
|
||||
struct notify_app next_app;
|
||||
const long current_time = now ();
|
||||
int time_left, hours_left, min_left;
|
||||
char mesg[BUFSIZ];
|
||||
@ -342,7 +329,7 @@ next_arg (void)
|
||||
* Print the date on stdout.
|
||||
*/
|
||||
static void
|
||||
arg_print_date (long date, conf_t *conf)
|
||||
arg_print_date (long date, struct conf *conf)
|
||||
{
|
||||
char date_str[BUFSIZ];
|
||||
time_t t;
|
||||
@ -362,18 +349,18 @@ arg_print_date (long date, conf_t *conf)
|
||||
* If regex is not null, only the matching appointments or events are printed.
|
||||
*/
|
||||
static int
|
||||
app_arg (int add_line, date_t *day, long date, int print_note, conf_t *conf,
|
||||
regex_t *regex)
|
||||
app_arg (int add_line, struct date *day, long date, int print_note,
|
||||
struct conf *conf, regex_t *regex)
|
||||
{
|
||||
struct recur_event_s *re;
|
||||
struct event_s *j;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
apoint_llist_node_t *i;
|
||||
struct recur_event *re;
|
||||
struct event *j;
|
||||
struct recur_apoint *ra;
|
||||
struct apoint *i;
|
||||
long today;
|
||||
unsigned print_date = 1;
|
||||
int app_found = 0;
|
||||
char apoint_start_time[100];
|
||||
char apoint_end_time[100];
|
||||
char apoint_start_time[HRMIN_SIZE];
|
||||
char apoint_end_time[HRMIN_SIZE];
|
||||
|
||||
if (date == 0)
|
||||
today = get_sec_date (*day);
|
||||
@ -445,7 +432,7 @@ app_arg (int add_line, date_t *day, long date, int print_note, conf_t *conf,
|
||||
if (recur_item_inday (ra->start, ra->exc, ra->rpt->type, ra->rpt->freq,
|
||||
ra->rpt->until, today))
|
||||
{
|
||||
apoint_llist_node_t *apt;
|
||||
struct apoint *apt;
|
||||
|
||||
if (regex && regexec (regex, ra->mesg, 0, 0, 0) != 0)
|
||||
continue;
|
||||
@ -531,10 +518,10 @@ more_info (void)
|
||||
*/
|
||||
static void
|
||||
display_app (struct tm *t, int numdays, int add_line, int print_note,
|
||||
conf_t *conf, regex_t *regex)
|
||||
struct conf *conf, regex_t *regex)
|
||||
{
|
||||
int i, app_found;
|
||||
date_t day;
|
||||
struct date day;
|
||||
|
||||
for (i = 0; i < numdays; i++)
|
||||
{
|
||||
@ -554,11 +541,11 @@ display_app (struct tm *t, int numdays, int add_line, int print_note,
|
||||
* days.
|
||||
*/
|
||||
static void
|
||||
date_arg (char *ddate, int add_line, int print_note, conf_t *conf,
|
||||
date_arg (char *ddate, int add_line, int print_note, struct conf *conf,
|
||||
regex_t *regex)
|
||||
{
|
||||
int i;
|
||||
date_t day;
|
||||
struct date day;
|
||||
int numdays = 0, num_digit = 0;
|
||||
int arg_len = 0, app_found = 0;
|
||||
static struct tm t;
|
||||
@ -618,7 +605,7 @@ date_arg (char *ddate, int add_line, int print_note, conf_t *conf,
|
||||
*/
|
||||
static void
|
||||
date_arg_extended (char *startday, char *range, int add_line, int print_note,
|
||||
conf_t *conf, regex_t *regex)
|
||||
struct conf *conf, regex_t *regex)
|
||||
{
|
||||
int i, numdays = 1, error = 0, arg_len = 0;
|
||||
static struct tm t;
|
||||
@ -677,7 +664,7 @@ date_arg_extended (char *startday, char *range, int add_line, int print_note,
|
||||
* routines to handle those arguments. Also initialize the data paths.
|
||||
*/
|
||||
int
|
||||
parse_args (int argc, char **argv, conf_t *conf)
|
||||
parse_args (int argc, char **argv, struct conf *conf)
|
||||
{
|
||||
int ch, add_line = 0;
|
||||
int unknown_flag = 0, app_found = 0;
|
||||
@ -954,7 +941,7 @@ parse_args (int argc, char **argv, conf_t *conf)
|
||||
}
|
||||
else if (aflag)
|
||||
{
|
||||
date_t day;
|
||||
struct date day;
|
||||
|
||||
io_check_file (path_apts, (int *)0);
|
||||
io_check_file (path_conf, (int *)0);
|
||||
|
45
src/args.h
45
src/args.h
@ -1,45 +0,0 @@
|
||||
/* $calcurse: args.h,v 1.10 2009/07/05 20:33:15 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2007 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_ARGS_H
|
||||
#define CALCURSE_ARGS_H
|
||||
|
||||
int parse_args (int, char **, conf_t *);
|
||||
|
||||
#endif /* CALCURSE_ARGS_H */
|
@ -1,9 +1,9 @@
|
||||
/* $calcurse: calcurse.c,v 1.86 2009/08/24 18:59:17 culot Exp $ */
|
||||
/* $calcurse: calcurse.c,v 1.87 2010/03/20 10:54:42 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -38,22 +38,7 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "i18n.h"
|
||||
#include "io.h"
|
||||
#include "help.h"
|
||||
#include "custom.h"
|
||||
#include "utils.h"
|
||||
#include "sigs.h"
|
||||
#include "day.h"
|
||||
#include "todo.h"
|
||||
#include "args.h"
|
||||
#include "notify.h"
|
||||
#include "keys.h"
|
||||
#include "dmon.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
/*
|
||||
* Calcurse is a text-based personal organizer which helps keeping track
|
||||
@ -65,8 +50,8 @@
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
conf_t conf;
|
||||
day_items_nb_t inday;
|
||||
struct conf conf;
|
||||
struct day_items_nb inday;
|
||||
int background, foreground;
|
||||
int non_interactive;
|
||||
int no_data_file = 1;
|
||||
|
919
src/calcurse.h
Normal file
919
src/calcurse.h
Normal file
@ -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 */
|
@ -1,4 +1,4 @@
|
||||
/* $calcurse: calendar.c,v 1.32 2010/03/08 08:44:44 culot Exp $ */
|
||||
/* $calcurse: calendar.c,v 1.33 2010/03/20 10:54:43 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -43,15 +43,7 @@
|
||||
#include <time.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "day.h"
|
||||
#include "apoint.h"
|
||||
#include "event.h"
|
||||
#include "custom.h"
|
||||
#include "vars.h"
|
||||
#include "keys.h"
|
||||
#include "utils.h"
|
||||
#include "calendar.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159265358979323846
|
||||
@ -73,14 +65,24 @@ enum {
|
||||
CAL_VIEWS
|
||||
};
|
||||
|
||||
static date_t today, slctd_day;
|
||||
enum pom {
|
||||
NO_POM,
|
||||
FIRST_QUARTER,
|
||||
FULL_MOON,
|
||||
LAST_QUARTER,
|
||||
NEW_MOON,
|
||||
MOON_PHASES
|
||||
};
|
||||
|
||||
static struct date today, slctd_day;
|
||||
static unsigned calendar_view, week_begins_on_monday;
|
||||
static pthread_mutex_t date_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
static pthread_t calendar_t_date;
|
||||
|
||||
static void draw_monthly_view (window_t *, date_t *, unsigned);
|
||||
static void draw_weekly_view (window_t *, date_t *, unsigned);
|
||||
static void (*draw_calendar[CAL_VIEWS]) (window_t *, date_t *, unsigned) =
|
||||
static void draw_monthly_view (struct window *, struct date *, unsigned);
|
||||
static void draw_weekly_view (struct window *, struct date *, unsigned);
|
||||
static void (*draw_calendar[CAL_VIEWS]) (struct window *, struct date *,
|
||||
unsigned) =
|
||||
{draw_monthly_view, draw_weekly_view};
|
||||
|
||||
/* Switch between calendar views (monthly view is selected by default). */
|
||||
@ -167,7 +169,7 @@ calendar_set_current_date (void)
|
||||
|
||||
/* Needed to display sunday or monday as the first day of week in calendar. */
|
||||
void
|
||||
calendar_set_first_day_of_week (wday_e first_day)
|
||||
calendar_set_first_day_of_week (enum wday first_day)
|
||||
{
|
||||
switch (first_day)
|
||||
{
|
||||
@ -200,7 +202,7 @@ calendar_week_begins_on_monday (void)
|
||||
|
||||
/* Fill in the given variable with the current date. */
|
||||
void
|
||||
calendar_store_current_date (date_t *date)
|
||||
calendar_store_current_date (struct date *date)
|
||||
{
|
||||
pthread_mutex_lock (&date_thread_mutex);
|
||||
*date = today;
|
||||
@ -215,7 +217,7 @@ calendar_init_slctd_day (void)
|
||||
}
|
||||
|
||||
/* Return the selected day in calendar */
|
||||
date_t *
|
||||
struct date *
|
||||
calendar_get_slctd_day (void)
|
||||
{
|
||||
return (&slctd_day);
|
||||
@ -229,7 +231,7 @@ calendar_get_slctd_day_sec (void)
|
||||
}
|
||||
|
||||
static int
|
||||
calendar_get_wday (date_t *date)
|
||||
calendar_get_wday (struct date *date)
|
||||
{
|
||||
struct tm t;
|
||||
|
||||
@ -300,9 +302,9 @@ date_change (struct tm *date, int delta_month, int delta_day)
|
||||
|
||||
/* Draw the monthly view inside calendar panel. */
|
||||
static void
|
||||
draw_monthly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
|
||||
draw_monthly_view (struct window *cwin, struct date *current_day, unsigned sunday_first)
|
||||
{
|
||||
date_t check_day;
|
||||
struct date check_day;
|
||||
int c_day, c_day_1, day_1_sav, numdays, j;
|
||||
unsigned yr, mo;
|
||||
int ofs_x, ofs_y;
|
||||
@ -472,7 +474,7 @@ ISO8601weeknum (const struct tm *t)
|
||||
|
||||
/* Draw the weekly view inside calendar panel. */
|
||||
static void
|
||||
draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
|
||||
draw_weekly_view (struct window *cwin, struct date *current_day, unsigned sunday_first)
|
||||
{
|
||||
int j, c_wday, days_to_remove, weeknum;
|
||||
struct tm t;
|
||||
@ -502,7 +504,7 @@ draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
|
||||
/* Now draw calendar view. */
|
||||
for (j = 0; j < WEEKINDAYS; j++)
|
||||
{
|
||||
date_t date;
|
||||
struct date date;
|
||||
unsigned attr, item_this_day;
|
||||
int i, slices[DAYSLICESNO];
|
||||
|
||||
@ -577,9 +579,9 @@ draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
|
||||
|
||||
/* Function used to display the calendar panel. */
|
||||
void
|
||||
calendar_update_panel (window_t *cwin)
|
||||
calendar_update_panel (struct window *cwin)
|
||||
{
|
||||
date_t current_day;
|
||||
struct date current_day;
|
||||
unsigned sunday_first;
|
||||
|
||||
calendar_store_current_date (¤t_day);
|
||||
@ -596,7 +598,7 @@ calendar_update_panel (window_t *cwin)
|
||||
void
|
||||
calendar_goto_today (void)
|
||||
{
|
||||
date_t today;
|
||||
struct date today;
|
||||
|
||||
calendar_store_current_date (&today);
|
||||
slctd_day.dd = today.dd;
|
||||
@ -661,7 +663,7 @@ calendar_change_day (int datefmt)
|
||||
}
|
||||
|
||||
void
|
||||
calendar_move (move_t move)
|
||||
calendar_move (enum move move)
|
||||
{
|
||||
int ret, days_to_remove, days_to_add;
|
||||
struct tm t;
|
||||
@ -882,7 +884,7 @@ pom (time_t tmpt)
|
||||
struct tm *GMT;
|
||||
double days;
|
||||
int cnt;
|
||||
pom_e pom;
|
||||
enum pom pom;
|
||||
|
||||
pom = NO_POM;
|
||||
GMT = gmtime (&tmpt);
|
||||
@ -906,7 +908,7 @@ char *
|
||||
calendar_get_pom (time_t date)
|
||||
{
|
||||
char *pom_pict[MOON_PHASES] = { " ", "|) ", "(|)", "(| ", " | " };
|
||||
pom_e phase = NO_POM;
|
||||
enum pom phase = NO_POM;
|
||||
double pom_today, relative_pom, pom_yesterday, pom_tomorrow;
|
||||
const double half = 50.0;
|
||||
|
||||
|
137
src/calendar.h
137
src/calendar.h
@ -1,137 +0,0 @@
|
||||
/* $calcurse: calendar.h,v 1.19 2010/03/08 08:44:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-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_CALENDAR_H
|
||||
#define CALCURSE_CALENDAR_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_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 <time.h>
|
||||
|
||||
#include "wins.h"
|
||||
|
||||
#define CALHEIGHT 12
|
||||
#define CALWIDTH 30
|
||||
|
||||
#define DAYINSEC 86400
|
||||
#define HOURINSEC 3600
|
||||
#define MININSEC 60
|
||||
#define YEARINDAYS 365
|
||||
#define YEARINMONTHS 12
|
||||
#define WEEKINDAYS 7
|
||||
#define TM_YEAR_BASE 1900
|
||||
|
||||
typedef enum
|
||||
{ /* days of week */
|
||||
SUNDAY,
|
||||
MONDAY,
|
||||
TUESDAY,
|
||||
WEDNESDAY,
|
||||
THURSDAY,
|
||||
FRIDAY,
|
||||
SATURDAY,
|
||||
WDAYS
|
||||
}
|
||||
wday_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned dd;
|
||||
unsigned mm;
|
||||
unsigned yyyy;
|
||||
}
|
||||
date_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
NO_POM,
|
||||
FIRST_QUARTER,
|
||||
FULL_MOON,
|
||||
LAST_QUARTER,
|
||||
NEW_MOON,
|
||||
MOON_PHASES
|
||||
}
|
||||
pom_e;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UP,
|
||||
DOWN,
|
||||
LEFT,
|
||||
RIGHT,
|
||||
WEEK_START,
|
||||
WEEK_END,
|
||||
MOVES
|
||||
}
|
||||
move_t;
|
||||
|
||||
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 (wday_e);
|
||||
void calendar_change_first_day_of_week (void);
|
||||
unsigned calendar_week_begins_on_monday (void);
|
||||
void calendar_store_current_date (date_t *);
|
||||
void calendar_init_slctd_day (void);
|
||||
date_t *calendar_get_slctd_day (void);
|
||||
long calendar_get_slctd_day_sec (void);
|
||||
void calendar_update_panel (window_t *);
|
||||
void calendar_goto_today (void);
|
||||
void calendar_change_day (int);
|
||||
void calendar_move (move_t);
|
||||
long calendar_start_of_year (void);
|
||||
long calendar_end_of_year (void);
|
||||
char *calendar_get_pom (time_t);
|
||||
|
||||
#endif /* CALCURSE_CALENDAR_H */
|
126
src/custom.c
126
src/custom.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: custom.c,v 1.45 2009/10/28 15:15:44 culot Exp $ */
|
||||
/* $calcurse: custom.c,v 1.46 2010/03/20 10:54:43 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -40,20 +40,39 @@
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include "calcurse.h"
|
||||
|
||||
#include "i18n.h"
|
||||
#include "io.h"
|
||||
#include "utils.h"
|
||||
#include "keys.h"
|
||||
#include "apoint.h"
|
||||
#include "help.h"
|
||||
#include "mem.h"
|
||||
#include "custom.h"
|
||||
/* Available configuration variables. */
|
||||
enum {
|
||||
CUSTOM_CONF_NOVARIABLE,
|
||||
CUSTOM_CONF_AUTOSAVE,
|
||||
CUSTOM_CONF_PERIODICSAVE,
|
||||
CUSTOM_CONF_CONFIRMQUIT,
|
||||
CUSTOM_CONF_CONFIRMDELETE,
|
||||
CUSTOM_CONF_SKIPSYSTEMDIALOGS,
|
||||
CUSTOM_CONF_SKIPPROGRESSBAR,
|
||||
CUSTOM_CONF_CALENDAR_DEFAULTVIEW,
|
||||
CUSTOM_CONF_WEEKBEGINSONMONDAY,
|
||||
CUSTOM_CONF_COLORTHEME,
|
||||
CUSTOM_CONF_LAYOUT,
|
||||
CUSTOM_CONF_NOTIFYBARSHOW,
|
||||
CUSTOM_CONF_NOTIFYBARDATE,
|
||||
CUSTOM_CONF_NOTIFYBARCLOCK,
|
||||
CUSTOM_CONF_NOTIFYBARWARNING,
|
||||
CUSTOM_CONF_NOTIFYBARCOMMAND,
|
||||
CUSTOM_CONF_OUTPUTDATEFMT,
|
||||
CUSTOM_CONF_INPUTDATEFMT,
|
||||
CUSTOM_CONF_DMON_ENABLE,
|
||||
CUSTOM_CONF_DMON_LOG,
|
||||
CUSTOM_CONF_VARIABLES
|
||||
};
|
||||
|
||||
static struct attribute_s attr;
|
||||
struct attribute {
|
||||
int color[7];
|
||||
int nocolor[7];
|
||||
};
|
||||
|
||||
static struct attribute attr;
|
||||
|
||||
static unsigned
|
||||
fill_config_var (char *string)
|
||||
@ -217,7 +236,7 @@ custom_remove_attr (WINDOW *win, int attr_num)
|
||||
|
||||
/* Load the user configuration. */
|
||||
void
|
||||
custom_load_conf (conf_t *conf, int background)
|
||||
custom_load_conf (struct conf *conf, int background)
|
||||
{
|
||||
FILE *data_file;
|
||||
char *mesg_line1 = _("Failed to open config file");
|
||||
@ -412,15 +431,15 @@ custom_config_bar (void)
|
||||
static void
|
||||
layout_selection_bar (void)
|
||||
{
|
||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
binding_t select = {_("Select"), KEY_GENERIC_SELECT};
|
||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
binding_t help = {_("Help"), KEY_GENERIC_HELP};
|
||||
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
struct binding select = {_("Select"), KEY_GENERIC_SELECT};
|
||||
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
struct binding help = {_("Help"), KEY_GENERIC_HELP};
|
||||
|
||||
binding_t *binding[] = {&quit, &select, &up, &down, &left, &right, &help};
|
||||
struct binding *binding[] = {&quit, &select, &up, &down, &left, &right, &help};
|
||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||
|
||||
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
||||
@ -431,7 +450,8 @@ layout_selection_bar (void)
|
||||
|
||||
/* Used to display available layouts in layout configuration menu. */
|
||||
static void
|
||||
display_layout_config (window_t *lwin, int mark, int cursor, int need_reset)
|
||||
display_layout_config (struct window *lwin, int mark, int cursor,
|
||||
int need_reset)
|
||||
{
|
||||
#define CURSOR (32 | A_REVERSE)
|
||||
#define MARK 88
|
||||
@ -500,8 +520,8 @@ display_layout_config (window_t *lwin, int mark, int cursor, int need_reset)
|
||||
void
|
||||
custom_layout_config (void)
|
||||
{
|
||||
scrollwin_t hwin;
|
||||
window_t conf_win;
|
||||
struct scrollwin hwin;
|
||||
struct window conf_win;
|
||||
int ch, mark, cursor, need_reset;
|
||||
char *help_text =
|
||||
_("With this configuration menu, one can choose where panels will be\n"
|
||||
@ -572,7 +592,7 @@ custom_layout_config (void)
|
||||
#undef LAYOUTSPERCOL
|
||||
|
||||
static void
|
||||
set_confwin_attr (window_t *cwin)
|
||||
set_confwin_attr (struct window *cwin)
|
||||
{
|
||||
cwin->h = (notify_bar ())? row - 3 : row - 2;
|
||||
cwin->w = col;
|
||||
@ -584,7 +604,7 @@ set_confwin_attr (window_t *cwin)
|
||||
* (useful in case of window resize).
|
||||
*/
|
||||
void
|
||||
custom_confwin_init (window_t *confwin, char *label)
|
||||
custom_confwin_init (struct window *confwin, char *label)
|
||||
{
|
||||
if (confwin->p)
|
||||
{
|
||||
@ -611,16 +631,16 @@ custom_confwin_init (window_t *confwin, char *label)
|
||||
static void
|
||||
color_selection_bar (void)
|
||||
{
|
||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
binding_t select = {_("Select"), KEY_GENERIC_SELECT};
|
||||
binding_t nocolor = {_("No color"), KEY_GENERIC_CANCEL};
|
||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
struct binding select = {_("Select"), KEY_GENERIC_SELECT};
|
||||
struct binding nocolor = {_("No color"), KEY_GENERIC_CANCEL};
|
||||
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
|
||||
|
||||
binding_t *binding[] = {
|
||||
struct binding *binding[] = {
|
||||
&quit, &nocolor, &up, &down, &left, &right, &select
|
||||
};
|
||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||
@ -633,7 +653,7 @@ color_selection_bar (void)
|
||||
* This is useful for window resizing.
|
||||
*/
|
||||
static void
|
||||
display_color_config (window_t *cwin, int *mark_fore, int *mark_back,
|
||||
display_color_config (struct window *cwin, int *mark_fore, int *mark_back,
|
||||
int cursor, int need_reset, int theme_changed)
|
||||
{
|
||||
#define SIZE (2 * (NBUSERCOLORS + 1))
|
||||
@ -761,7 +781,7 @@ display_color_config (window_t *cwin, int *mark_fore, int *mark_back,
|
||||
void
|
||||
custom_color_config (void)
|
||||
{
|
||||
window_t conf_win;
|
||||
struct window conf_win;
|
||||
int ch, cursor, need_reset, theme_changed;
|
||||
int mark_fore, mark_back;
|
||||
|
||||
@ -886,7 +906,7 @@ custom_color_theme_name (char *theme_name)
|
||||
|
||||
/* Prints the general options. */
|
||||
static int
|
||||
print_general_options (WINDOW *win, conf_t *conf)
|
||||
print_general_options (WINDOW *win, struct conf *conf)
|
||||
{
|
||||
enum {
|
||||
AUTO_SAVE,
|
||||
@ -986,7 +1006,7 @@ print_general_options (WINDOW *win, conf_t *conf)
|
||||
}
|
||||
|
||||
void
|
||||
custom_set_swsiz (scrollwin_t *sw)
|
||||
custom_set_swsiz (struct scrollwin *sw)
|
||||
{
|
||||
sw->win.x = 0;
|
||||
sw->win.y = 0;
|
||||
@ -1001,9 +1021,9 @@ custom_set_swsiz (scrollwin_t *sw)
|
||||
|
||||
/* General configuration. */
|
||||
void
|
||||
custom_general_config (conf_t *conf)
|
||||
custom_general_config (struct conf *conf)
|
||||
{
|
||||
scrollwin_t cwin;
|
||||
struct scrollwin cwin;
|
||||
char *number_str =
|
||||
_("Enter an option number to change its value");
|
||||
char *keys =
|
||||
@ -1188,16 +1208,16 @@ print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
|
||||
static void
|
||||
custom_keys_config_bar (void)
|
||||
{
|
||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
binding_t info = {_("Key info"), KEY_GENERIC_HELP};
|
||||
binding_t add = {_("Add key"), KEY_ADD_ITEM};
|
||||
binding_t del = {_("Del key"), KEY_DEL_ITEM};
|
||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
||||
binding_t left = {_("Prev Key"), KEY_MOVE_LEFT};
|
||||
binding_t right = {_("Next Key"), KEY_MOVE_RIGHT};
|
||||
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||
struct binding info = {_("Key info"), KEY_GENERIC_HELP};
|
||||
struct binding add = {_("Add key"), KEY_ADD_ITEM};
|
||||
struct binding del = {_("Del key"), KEY_DEL_ITEM};
|
||||
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||
struct binding left = {_("Prev Key"), KEY_MOVE_LEFT};
|
||||
struct binding right = {_("Next Key"), KEY_MOVE_RIGHT};
|
||||
|
||||
binding_t *binding[] = {
|
||||
struct binding *binding[] = {
|
||||
&quit, &info, &add, &del, &up, &down, &left, &right
|
||||
};
|
||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||
@ -1208,7 +1228,7 @@ custom_keys_config_bar (void)
|
||||
void
|
||||
custom_keys_config (void)
|
||||
{
|
||||
scrollwin_t kwin;
|
||||
struct scrollwin kwin;
|
||||
int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
|
||||
int keyval, used, not_recognized;
|
||||
char *keystr;
|
||||
@ -1303,7 +1323,7 @@ custom_keys_config (void)
|
||||
used = keys_assign_binding (keyval, selrow);
|
||||
if (used)
|
||||
{
|
||||
keys_e action;
|
||||
enum key action;
|
||||
|
||||
action = keys_get_action (keyval);
|
||||
WARN_MSG (_("This key is already in use for %s, "
|
||||
|
104
src/custom.h
104
src/custom.h
@ -1,104 +0,0 @@
|
||||
/* $calcurse: custom.h,v 1.19 2009/10/28 15:15:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_CUSTOM_H
|
||||
#define CALCURSE_CUSTOM_H
|
||||
|
||||
#include "vars.h"
|
||||
#include "wins.h"
|
||||
|
||||
#define NBUSERCOLORS 6
|
||||
|
||||
enum
|
||||
{ /* Color pairs */
|
||||
COLR_RED = 1,
|
||||
COLR_GREEN,
|
||||
COLR_YELLOW,
|
||||
COLR_BLUE,
|
||||
COLR_MAGENTA,
|
||||
COLR_CYAN,
|
||||
COLR_DEFAULT,
|
||||
COLR_HIGH,
|
||||
COLR_CUSTOM
|
||||
};
|
||||
|
||||
enum
|
||||
{ /* Configuration variables */
|
||||
CUSTOM_CONF_NOVARIABLE,
|
||||
CUSTOM_CONF_AUTOSAVE,
|
||||
CUSTOM_CONF_PERIODICSAVE,
|
||||
CUSTOM_CONF_CONFIRMQUIT,
|
||||
CUSTOM_CONF_CONFIRMDELETE,
|
||||
CUSTOM_CONF_SKIPSYSTEMDIALOGS,
|
||||
CUSTOM_CONF_SKIPPROGRESSBAR,
|
||||
CUSTOM_CONF_CALENDAR_DEFAULTVIEW,
|
||||
CUSTOM_CONF_WEEKBEGINSONMONDAY,
|
||||
CUSTOM_CONF_COLORTHEME,
|
||||
CUSTOM_CONF_LAYOUT,
|
||||
CUSTOM_CONF_NOTIFYBARSHOW,
|
||||
CUSTOM_CONF_NOTIFYBARDATE,
|
||||
CUSTOM_CONF_NOTIFYBARCLOCK,
|
||||
CUSTOM_CONF_NOTIFYBARWARNING,
|
||||
CUSTOM_CONF_NOTIFYBARCOMMAND,
|
||||
CUSTOM_CONF_OUTPUTDATEFMT,
|
||||
CUSTOM_CONF_INPUTDATEFMT,
|
||||
CUSTOM_CONF_DMON_ENABLE,
|
||||
CUSTOM_CONF_DMON_LOG,
|
||||
CUSTOM_CONF_VARIABLES
|
||||
};
|
||||
|
||||
struct attribute_s
|
||||
{
|
||||
int color[7];
|
||||
int nocolor[7];
|
||||
};
|
||||
|
||||
void custom_init_attr (void);
|
||||
void custom_apply_attr (WINDOW *, int);
|
||||
void custom_remove_attr (WINDOW *, int);
|
||||
void custom_load_conf (conf_t *, 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 (window_t *, char *);
|
||||
void custom_set_swsiz (scrollwin_t *);
|
||||
void custom_general_config (conf_t *);
|
||||
void custom_keys_config (void);
|
||||
|
||||
#endif /* CALCURSE_CUSTOM_H */
|
130
src/day.c
130
src/day.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: day.c,v 1.52 2009/10/16 15:51:33 culot Exp $ */
|
||||
/* $calcurse: day.c,v 1.53 2010/03/20 10:54:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -42,16 +42,18 @@
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "apoint.h"
|
||||
#include "event.h"
|
||||
#include "custom.h"
|
||||
#include "keys.h"
|
||||
#include "mem.h"
|
||||
#include "day.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
static struct day_item_s *day_items_ptr;
|
||||
static struct day_saved_item_s day_saved_item;
|
||||
struct day_saved_item {
|
||||
char start[BUFSIZ];
|
||||
char end[BUFSIZ];
|
||||
char state;
|
||||
char type;
|
||||
char *mesg;
|
||||
};
|
||||
|
||||
static struct day_item *day_items_ptr;
|
||||
static struct day_saved_item day_saved_item;
|
||||
|
||||
/*
|
||||
* Free the current day linked list containing the events and appointments.
|
||||
@ -61,7 +63,7 @@ static struct day_saved_item_s day_saved_item;
|
||||
void
|
||||
day_free_list (void)
|
||||
{
|
||||
struct day_item_s *o, **i;
|
||||
struct day_item *o, **i;
|
||||
|
||||
i = &day_items_ptr;
|
||||
while (*i)
|
||||
@ -74,12 +76,12 @@ day_free_list (void)
|
||||
}
|
||||
|
||||
/* Add an event in the current day list */
|
||||
static struct day_item_s *
|
||||
static struct day_item *
|
||||
day_add_event (int type, char *mesg, char *note, long day, int id)
|
||||
{
|
||||
struct day_item_s *o, **i;
|
||||
struct day_item *o, **i;
|
||||
|
||||
o = mem_malloc (sizeof (struct day_item_s));
|
||||
o = mem_malloc (sizeof (struct day_item));
|
||||
o->mesg = mesg;
|
||||
o->note = note;
|
||||
o->type = type;
|
||||
@ -102,14 +104,14 @@ day_add_event (int type, char *mesg, char *note, long day, int id)
|
||||
}
|
||||
|
||||
/* Add an appointment in the current day list. */
|
||||
static struct day_item_s *
|
||||
static struct day_item *
|
||||
day_add_apoint (int type, char *mesg, char *note, long start, long dur,
|
||||
char state, int real_pos)
|
||||
{
|
||||
struct day_item_s *o, **i;
|
||||
struct day_item *o, **i;
|
||||
int insert_item = 0;
|
||||
|
||||
o = mem_malloc (sizeof (struct day_item_s));
|
||||
o = mem_malloc (sizeof (struct day_item));
|
||||
o->mesg = mesg;
|
||||
o->note = note;
|
||||
o->start = start;
|
||||
@ -150,8 +152,8 @@ day_add_apoint (int type, char *mesg, char *note, long start, long dur,
|
||||
static int
|
||||
day_store_events (long date)
|
||||
{
|
||||
struct event_s *j;
|
||||
struct day_item_s *ptr;
|
||||
struct event *j;
|
||||
struct day_item *ptr;
|
||||
int e_nb = 0;
|
||||
|
||||
for (j = eventlist; j != 0; j = j->next)
|
||||
@ -176,8 +178,8 @@ day_store_events (long date)
|
||||
static int
|
||||
day_store_recur_events (long date)
|
||||
{
|
||||
struct recur_event_s *j;
|
||||
struct day_item_s *ptr;
|
||||
struct recur_event *j;
|
||||
struct day_item *ptr;
|
||||
int e_nb = 0;
|
||||
|
||||
for (j = recur_elist; j != 0; j = j->next)
|
||||
@ -203,8 +205,8 @@ day_store_recur_events (long date)
|
||||
static int
|
||||
day_store_apoints (long date)
|
||||
{
|
||||
apoint_llist_node_t *j;
|
||||
struct day_item_s *ptr;
|
||||
struct apoint *j;
|
||||
struct day_item *ptr;
|
||||
int a_nb = 0;
|
||||
|
||||
pthread_mutex_lock (&(alist_p->mutex));
|
||||
@ -232,8 +234,8 @@ day_store_apoints (long date)
|
||||
static int
|
||||
day_store_recur_apoints (long date)
|
||||
{
|
||||
recur_apoint_llist_node_t *j;
|
||||
struct day_item_s *ptr;
|
||||
struct recur_apoint *j;
|
||||
struct day_item *ptr;
|
||||
long real_start;
|
||||
int a_nb = 0, n = 0;
|
||||
|
||||
@ -294,12 +296,12 @@ day_store_items (long date, unsigned *pnb_events, unsigned *pnb_apoints)
|
||||
* those items in a pad. If selected day is null, then store items for current
|
||||
* day. This is useful to speed up the appointment panel update.
|
||||
*/
|
||||
day_items_nb_t *
|
||||
day_process_storage (date_t *slctd_date, unsigned day_changed,
|
||||
day_items_nb_t *inday)
|
||||
struct day_items_nb *
|
||||
day_process_storage (struct date *slctd_date, unsigned day_changed,
|
||||
struct day_items_nb *inday)
|
||||
{
|
||||
long date;
|
||||
date_t day;
|
||||
struct date day;
|
||||
|
||||
if (slctd_date)
|
||||
day = *slctd_date;
|
||||
@ -328,7 +330,7 @@ day_process_storage (date_t *slctd_date, unsigned day_changed,
|
||||
* day_item_s
|
||||
*/
|
||||
static void
|
||||
day_item_s2apoint_s (apoint_llist_node_t *a, struct day_item_s *p)
|
||||
day_item_s2apoint_s (struct apoint *a, struct day_item *p)
|
||||
{
|
||||
a->state = p->state;
|
||||
a->start = p->start;
|
||||
@ -340,7 +342,7 @@ day_item_s2apoint_s (apoint_llist_node_t *a, struct day_item_s *p)
|
||||
* Print an item date in the appointment panel.
|
||||
*/
|
||||
static void
|
||||
display_item_date (int incolor, apoint_llist_node_t *i, int type, long date,
|
||||
display_item_date (int incolor, struct apoint *i, int type, long date,
|
||||
int y, int x)
|
||||
{
|
||||
WINDOW *win;
|
||||
@ -404,8 +406,8 @@ display_item (int incolor, char *msg, int recur, int note, int len, int y,
|
||||
void
|
||||
day_write_pad (long date, int width, int length, int incolor)
|
||||
{
|
||||
struct day_item_s *p;
|
||||
apoint_llist_node_t a;
|
||||
struct day_item *p;
|
||||
struct apoint a;
|
||||
int line, item_number, max_pos, recur;
|
||||
const int x_pos = 0;
|
||||
unsigned draw_line = 0;
|
||||
@ -481,12 +483,12 @@ day_popup_item (void)
|
||||
* calendar. This is used to put the correct colors inside calendar panel.
|
||||
*/
|
||||
int
|
||||
day_check_if_item (date_t day)
|
||||
day_check_if_item (struct date day)
|
||||
{
|
||||
struct recur_event_s *re;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
struct event_s *e;
|
||||
apoint_llist_node_t *a;
|
||||
struct recur_event *re;
|
||||
struct recur_apoint *ra;
|
||||
struct event *e;
|
||||
struct apoint *a;
|
||||
const long date = date2sec (day, 0, 0);
|
||||
|
||||
for (re = recur_elist; re != 0; re = re->next)
|
||||
@ -543,10 +545,10 @@ fill_slices (int *slices, int slicesno, int first, int last)
|
||||
* A 24 hours day is divided into 'slicesno' number of time slices.
|
||||
*/
|
||||
unsigned
|
||||
day_chk_busy_slices (date_t day, int slicesno, int *slices)
|
||||
day_chk_busy_slices (struct date day, int slicesno, int *slices)
|
||||
{
|
||||
recur_apoint_llist_node_t *ra;
|
||||
apoint_llist_node_t *a;
|
||||
struct recur_apoint *ra;
|
||||
struct apoint *a;
|
||||
int slicelen;
|
||||
const long date = date2sec (day, 0, 0);
|
||||
|
||||
@ -669,7 +671,7 @@ update_desc (char **desc)
|
||||
}
|
||||
|
||||
static void
|
||||
update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
||||
update_rept (struct rpt **rpt, const long start, struct conf *conf)
|
||||
{
|
||||
const int SINGLECHAR = 2;
|
||||
int ch, cancel, newfreq, date_entered;
|
||||
@ -689,7 +691,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
||||
do
|
||||
{
|
||||
status_mesg (msg_rpt_type, msg_rpt_ans);
|
||||
typstr = (char *) mem_calloc (SINGLECHAR, sizeof (char));
|
||||
typstr = mem_calloc (SINGLECHAR, sizeof (char));
|
||||
(void)snprintf (typstr, SINGLECHAR, "%c", recur_def2char ((*rpt)->type));
|
||||
cancel = updatestring (win[STA].p, &typstr, 0, 1);
|
||||
if (cancel)
|
||||
@ -708,7 +710,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
||||
do
|
||||
{
|
||||
status_mesg (_("Enter the new repetition frequence:"), "");
|
||||
freqstr = (char *) mem_malloc (BUFSIZ);
|
||||
freqstr = mem_malloc (BUFSIZ);
|
||||
(void)snprintf (freqstr, BUFSIZ, "%d", (*rpt)->freq);
|
||||
cancel = updatestring (win[STA].p, &freqstr, 0, 1);
|
||||
if (cancel)
|
||||
@ -751,7 +753,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
date_t new_date;
|
||||
struct date new_date;
|
||||
int newmonth, newday, newyear;
|
||||
|
||||
if (parse_date (timstr, conf->input_datefmt,
|
||||
@ -792,18 +794,18 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
||||
|
||||
/* Edit an already existing item. */
|
||||
void
|
||||
day_edit_item (conf_t *conf)
|
||||
day_edit_item (struct conf *conf)
|
||||
{
|
||||
#define STRT '1'
|
||||
#define END '2'
|
||||
#define DESC '3'
|
||||
#define REPT '4'
|
||||
|
||||
struct day_item_s *p;
|
||||
struct recur_event_s *re;
|
||||
struct event_s *e;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
apoint_llist_node_t *a;
|
||||
struct day_item *p;
|
||||
struct recur_event *re;
|
||||
struct event *e;
|
||||
struct recur_apoint *ra;
|
||||
struct apoint *a;
|
||||
long date;
|
||||
int item_num, ch;
|
||||
|
||||
@ -891,9 +893,9 @@ day_edit_item (conf_t *conf)
|
||||
* type of the item to be deleted.
|
||||
*/
|
||||
int
|
||||
day_erase_item (long date, int item_number, erase_flag_e flag)
|
||||
day_erase_item (long date, int item_number, enum eraseflg flag)
|
||||
{
|
||||
struct day_item_s *p;
|
||||
struct day_item *p;
|
||||
char *erase_warning =
|
||||
_("This item is recurrent. "
|
||||
"Delete (a)ll occurences or just this (o)ne ?");
|
||||
@ -972,7 +974,7 @@ int
|
||||
day_cut_item (long date, int item_number)
|
||||
{
|
||||
const int DELETE_WHOLE = 1;
|
||||
struct day_item_s *p;
|
||||
struct day_item *p;
|
||||
|
||||
p = day_get_item (item_number);
|
||||
switch (p->type)
|
||||
@ -1032,10 +1034,10 @@ day_paste_item (long date, int cut_item_type)
|
||||
}
|
||||
|
||||
/* Returns a structure containing the selected item. */
|
||||
struct day_item_s *
|
||||
struct day_item *
|
||||
day_get_item (int item_number)
|
||||
{
|
||||
struct day_item_s *o;
|
||||
struct day_item *o;
|
||||
int i;
|
||||
|
||||
o = day_items_ptr;
|
||||
@ -1051,7 +1053,7 @@ int
|
||||
day_item_nb (long date, int day_num, int type)
|
||||
{
|
||||
int i, nb_item[MAX_TYPES];
|
||||
struct day_item_s *p;
|
||||
struct day_item *p;
|
||||
|
||||
for (i = 0; i < MAX_TYPES; i++)
|
||||
nb_item[i] = 0;
|
||||
@ -1071,11 +1073,11 @@ day_item_nb (long date, int day_num, int type)
|
||||
void
|
||||
day_edit_note (char *editor)
|
||||
{
|
||||
struct day_item_s *p;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
apoint_llist_node_t *a;
|
||||
struct recur_event_s *re;
|
||||
struct event_s *e;
|
||||
struct day_item *p;
|
||||
struct recur_apoint *ra;
|
||||
struct apoint *a;
|
||||
struct recur_event *re;
|
||||
struct event *e;
|
||||
char fullname[BUFSIZ];
|
||||
char *filename;
|
||||
long date;
|
||||
@ -1119,7 +1121,7 @@ day_edit_note (char *editor)
|
||||
void
|
||||
day_view_note (char *pager)
|
||||
{
|
||||
struct day_item_s *p;
|
||||
struct day_item *p;
|
||||
char fullname[BUFSIZ];
|
||||
|
||||
p = day_get_item (apoint_hilt ());
|
||||
|
97
src/day.h
97
src/day.h
@ -1,97 +0,0 @@
|
||||
/* $calcurse: day.h,v 1.25 2009/10/08 16:28:06 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_DAY_H
|
||||
#define CALCURSE_DAY_H
|
||||
|
||||
#include "vars.h"
|
||||
#include "utils.h"
|
||||
#include "calendar.h"
|
||||
|
||||
#define MAX_TYPES 4
|
||||
|
||||
#define RECUR_EVNT 1
|
||||
#define EVNT 2
|
||||
#define RECUR_APPT 3
|
||||
#define APPT 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned nb_events;
|
||||
unsigned nb_apoints;
|
||||
}
|
||||
day_items_nb_t;
|
||||
|
||||
struct day_item_s
|
||||
{
|
||||
struct day_item_s *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 day_saved_item_s
|
||||
{
|
||||
char start[BUFSIZ];
|
||||
char end[BUFSIZ];
|
||||
char state;
|
||||
char type;
|
||||
char *mesg;
|
||||
};
|
||||
|
||||
void day_free_list (void);
|
||||
day_items_nb_t *day_process_storage (date_t *, unsigned, day_items_nb_t *);
|
||||
void day_write_pad (long, int, int, int);
|
||||
void day_popup_item (void);
|
||||
int day_check_if_item (date_t);
|
||||
unsigned day_chk_busy_slices (date_t, int, int *);
|
||||
void day_edit_item (conf_t *);
|
||||
int day_erase_item (long, int, erase_flag_e);
|
||||
int day_cut_item (long, int);
|
||||
int day_paste_item (long, int);
|
||||
struct day_item_s *day_get_item (int);
|
||||
int day_item_nb (long, int, int);
|
||||
void day_edit_note (char *);
|
||||
void day_view_note (char *);
|
||||
|
||||
#endif /* CALCURSE_DAY_H */
|
16
src/dmon.c
16
src/dmon.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: dmon.c,v 1.11 2009/08/01 20:29:49 culot Exp $ */
|
||||
/* $calcurse: dmon.c,v 1.12 2010/03/20 10:54:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2009-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -43,15 +43,9 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "i18n.h"
|
||||
#include "sigs.h"
|
||||
#include "mem.h"
|
||||
#include "io.h"
|
||||
#include "custom.h"
|
||||
#include "notify.h"
|
||||
#include "dmon.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
#define DMON_SLEEP_TIME 60
|
||||
|
||||
@ -162,7 +156,7 @@ daemonize (int status)
|
||||
void
|
||||
dmon_start (int parent_exit_status)
|
||||
{
|
||||
conf_t conf;
|
||||
struct conf conf;
|
||||
|
||||
if (!daemonize (parent_exit_status))
|
||||
DMON_ABRT (_("Cannot daemonize, aborting\n"));
|
||||
|
45
src/dmon.h
45
src/dmon.h
@ -1,45 +0,0 @@
|
||||
/* $calcurse: dmon.h,v 1.2 2009/07/26 20:38:36 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2009 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_DMON_H
|
||||
#define CALCURSE_DMON_H
|
||||
|
||||
void dmon_start (int);
|
||||
void dmon_stop (void);
|
||||
|
||||
#endif /* CALCURSE_DMON_H */
|
39
src/event.c
39
src/event.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: event.c,v 1.15 2009/07/19 08:20:00 culot Exp $ */
|
||||
/* $calcurse: event.c,v 1.16 2010/03/20 10:54:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,16 +41,13 @@
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "vars.h"
|
||||
#include "i18n.h"
|
||||
#include "mem.h"
|
||||
#include "event.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
struct event_s *eventlist;
|
||||
static struct event_s bkp_cut_event;
|
||||
struct event *eventlist;
|
||||
static struct event bkp_cut_event;
|
||||
|
||||
void
|
||||
event_free_bkp (erase_flag_e flag)
|
||||
event_free_bkp (enum eraseflg flag)
|
||||
{
|
||||
if (bkp_cut_event.mesg)
|
||||
{
|
||||
@ -61,7 +58,7 @@ event_free_bkp (erase_flag_e flag)
|
||||
}
|
||||
|
||||
static void
|
||||
event_dup (struct event_s *in, struct event_s *bkp)
|
||||
event_dup (struct event *in, struct event *bkp)
|
||||
{
|
||||
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||
|
||||
@ -75,7 +72,7 @@ event_dup (struct event_s *in, struct event_s *bkp)
|
||||
void
|
||||
event_llist_free (void)
|
||||
{
|
||||
struct event_s *o, **i;
|
||||
struct event *o, **i;
|
||||
|
||||
i = &eventlist;
|
||||
while (*i)
|
||||
@ -89,11 +86,11 @@ event_llist_free (void)
|
||||
}
|
||||
|
||||
/* Create a new event */
|
||||
struct event_s *
|
||||
struct event *
|
||||
event_new (char *mesg, char *note, long day, int id)
|
||||
{
|
||||
struct event_s *o, **i;
|
||||
o = (struct event_s *) mem_malloc (sizeof (struct event_s));
|
||||
struct event *o, **i;
|
||||
o = mem_malloc (sizeof (struct event));
|
||||
o->mesg = mem_strdup (mesg);
|
||||
o->day = day;
|
||||
o->id = id;
|
||||
@ -114,7 +111,7 @@ event_new (char *mesg, char *note, long day, int id)
|
||||
|
||||
/* Check if the event belongs to the selected day */
|
||||
unsigned
|
||||
event_inday (struct event_s *i, long start)
|
||||
event_inday (struct event *i, long start)
|
||||
{
|
||||
if (i->day <= start + DAYINSEC && i->day > start)
|
||||
{
|
||||
@ -125,7 +122,7 @@ event_inday (struct event_s *i, long start)
|
||||
|
||||
/* Write to file the event in user-friendly format */
|
||||
void
|
||||
event_write (struct event_s *o, FILE *f)
|
||||
event_write (struct event *o, FILE *f)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -140,7 +137,7 @@ event_write (struct event_s *o, FILE *f)
|
||||
}
|
||||
|
||||
/* Load the events from file */
|
||||
struct event_s *
|
||||
struct event *
|
||||
event_scan (FILE *f, struct tm start, int id, char *note)
|
||||
{
|
||||
char buf[BUFSIZ], *nl;
|
||||
@ -170,10 +167,10 @@ event_scan (FILE *f, struct tm start, int id, char *note)
|
||||
}
|
||||
|
||||
/* Retrieve an event from the list, given the day and item position. */
|
||||
struct event_s *
|
||||
struct event *
|
||||
event_get (long day, int pos)
|
||||
{
|
||||
struct event_s *o;
|
||||
struct event *o;
|
||||
int n;
|
||||
|
||||
n = 0;
|
||||
@ -193,10 +190,10 @@ event_get (long day, int pos)
|
||||
|
||||
/* Delete an event from the list. */
|
||||
void
|
||||
event_delete_bynum (long start, unsigned num, erase_flag_e flag)
|
||||
event_delete_bynum (long start, unsigned num, enum eraseflg flag)
|
||||
{
|
||||
unsigned n;
|
||||
struct event_s *i, **iptr;
|
||||
struct event *i, **iptr;
|
||||
|
||||
n = 0;
|
||||
iptr = &eventlist;
|
||||
|
67
src/event.h
67
src/event.h
@ -1,67 +0,0 @@
|
||||
/* $calcurse: event.h,v 1.10 2009/07/05 20:33:19 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_EVENT_H
|
||||
#define CALCURSE_EVENT_H
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
#define HRMIN_SIZE 6
|
||||
|
||||
struct event_s
|
||||
{
|
||||
struct event_s *next;
|
||||
int id; /* event identifier */
|
||||
long day; /* seconds since 1 jan 1970 */
|
||||
char *mesg;
|
||||
char *note;
|
||||
};
|
||||
|
||||
extern struct event_s *eventlist;
|
||||
|
||||
void event_free_bkp (erase_flag_e);
|
||||
void event_llist_free (void);
|
||||
struct event_s *event_new (char *, char *, long, int);
|
||||
unsigned event_inday (struct event_s *, long);
|
||||
void event_write (struct event_s *, FILE *);
|
||||
struct event_s *event_scan (FILE *, struct tm, int, char *);
|
||||
struct event_s *event_get (long, int);
|
||||
void event_delete_bynum (long, unsigned, erase_flag_e);
|
||||
void event_paste_item (void);
|
||||
|
||||
#endif /* CALCURSE_EVENT_H */
|
32
src/help.c
32
src/help.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: help.c,v 1.42 2009/10/28 13:44:41 culot Exp $ */
|
||||
/* $calcurse: help.c,v 1.43 2010/03/20 10:54:45 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,16 +41,14 @@
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include "calcurse.h"
|
||||
|
||||
#include "i18n.h"
|
||||
#include "custom.h"
|
||||
#include "utils.h"
|
||||
#include "keys.h"
|
||||
#include "notify.h"
|
||||
#include "help.h"
|
||||
#define HELPTEXTSIZ 4096
|
||||
|
||||
typedef struct {
|
||||
char *title;
|
||||
char text[HELPTEXTSIZ];
|
||||
} help_page_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
@ -100,7 +98,7 @@ get_help_lines (char *text)
|
||||
* of lines that were written.
|
||||
*/
|
||||
static int
|
||||
help_write_pad (window_t *win, char *title, char *text, keys_e action)
|
||||
help_write_pad (struct window *win, char *title, char *text, enum key action)
|
||||
{
|
||||
int colnum, rownum;
|
||||
char *bindings_title = "key bindings: %s";
|
||||
@ -150,7 +148,7 @@ help_write_pad (window_t *win, char *title, char *text, keys_e action)
|
||||
* faster.
|
||||
*/
|
||||
void
|
||||
help_wins_init (scrollwin_t *hwin, int x, int y, int h, int w)
|
||||
help_wins_init (struct scrollwin *hwin, int x, int y, int h, int w)
|
||||
{
|
||||
const int PADOFFSET = 4;
|
||||
const int TITLELINES = 3;
|
||||
@ -175,7 +173,7 @@ help_wins_init (scrollwin_t *hwin, int x, int y, int h, int w)
|
||||
* size and placement.
|
||||
*/
|
||||
static void
|
||||
help_wins_reinit (scrollwin_t *hwin)
|
||||
help_wins_reinit (struct scrollwin *hwin)
|
||||
{
|
||||
wins_scrollwin_delete (hwin);
|
||||
wins_get_config ();
|
||||
@ -184,7 +182,7 @@ help_wins_reinit (scrollwin_t *hwin)
|
||||
|
||||
/* Reset the screen, needed when resizing terminal for example. */
|
||||
static void
|
||||
help_wins_reset (scrollwin_t *hwin)
|
||||
help_wins_reset (struct scrollwin *hwin)
|
||||
{
|
||||
endwin ();
|
||||
refresh ();
|
||||
@ -326,9 +324,9 @@ help_screen (void)
|
||||
MOVE_RIGHT,
|
||||
DIRECTIONS
|
||||
};
|
||||
scrollwin_t hwin;
|
||||
struct scrollwin hwin;
|
||||
int need_resize;
|
||||
keys_e ch = KEY_GENERIC_HELP;
|
||||
enum key ch = KEY_GENERIC_HELP;
|
||||
int page, oldpage;
|
||||
help_page_t hscr[HELPSCREENS];
|
||||
char keystr[DIRECTIONS][BUFSIZ];
|
||||
|
54
src/help.h
54
src/help.h
@ -1,54 +0,0 @@
|
||||
/* $calcurse: help.h,v 1.10 2009/07/05 20:33:20 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2008 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_HELP_H
|
||||
#define CALCURSE_HELP_H
|
||||
|
||||
#include "wins.h"
|
||||
|
||||
#define HELPTEXTSIZ 4096
|
||||
|
||||
typedef struct {
|
||||
char *title;
|
||||
char text[HELPTEXTSIZ];
|
||||
} help_page_t;
|
||||
|
||||
void help_wins_init (scrollwin_t *, int, int, int, int);
|
||||
void help_screen (void);
|
||||
|
||||
#endif /* CALCURSE_HELP_H */
|
67
src/i18n.h
67
src/i18n.h
@ -1,67 +0,0 @@
|
||||
/* $calcurse: i18n.h,v 1.4 2009/07/05 20:33:20 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2006 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_I18N_H
|
||||
#define CALCURSE_I18N_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#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 */
|
||||
|
||||
#endif /* CALCURSE_I18N_H */
|
163
src/io.c
163
src/io.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: io.c,v 1.80 2009/11/01 11:06:37 culot Exp $ */
|
||||
/* $calcurse: io.c,v 1.81 2010/03/20 10:54:46 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -45,21 +45,7 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "custom.h"
|
||||
#include "todo.h"
|
||||
#include "event.h"
|
||||
#include "apoint.h"
|
||||
#include "recur.h"
|
||||
#include "keys.h"
|
||||
#include "htable.h"
|
||||
#include "mem.h"
|
||||
#include "io.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
#define ICALDATEFMT "%Y%m%d"
|
||||
#define ICALDATETIMEFMT "%Y%m%dT%H%M%S"
|
||||
@ -96,7 +82,7 @@ typedef enum {
|
||||
} ical_vevent_e;
|
||||
|
||||
typedef struct {
|
||||
recur_types_t type;
|
||||
enum recur_type type;
|
||||
int freq;
|
||||
long until;
|
||||
unsigned count;
|
||||
@ -104,7 +90,7 @@ typedef struct {
|
||||
|
||||
struct ht_keybindings_s {
|
||||
char *label;
|
||||
keys_e key;
|
||||
enum key key;
|
||||
HTABLE_ENTRY (ht_keybindings_s);
|
||||
};
|
||||
|
||||
@ -218,7 +204,7 @@ progress_bar (progress_bar_t type, int progress)
|
||||
|
||||
/* Ask user for a file name to export data to. */
|
||||
static FILE *
|
||||
get_export_stream (export_type_t type)
|
||||
get_export_stream (enum export_type type)
|
||||
{
|
||||
FILE *stream;
|
||||
int cancel;
|
||||
@ -263,7 +249,7 @@ get_export_stream (export_type_t type)
|
||||
* (mainly used to export data).
|
||||
*/
|
||||
static void
|
||||
foreach_date_dump (const long date_end, struct rpt_s *rpt, struct days_s *exc,
|
||||
foreach_date_dump (const long date_end, struct rpt *rpt, struct days *exc,
|
||||
long item_first_date, long item_dur, char *item_mesg,
|
||||
cb_dump_t cb_dump, FILE *stream)
|
||||
{
|
||||
@ -357,8 +343,8 @@ pcal_export_footer (FILE *stream)
|
||||
static void
|
||||
ical_export_recur_events (FILE *stream)
|
||||
{
|
||||
struct recur_event_s *i;
|
||||
struct days_s *day;
|
||||
struct recur_event *i;
|
||||
struct days *day;
|
||||
char ical_date[BUFSIZ];
|
||||
|
||||
for (i = recur_elist; i != 0; i = i->next)
|
||||
@ -422,7 +408,7 @@ pcal_dump_apoint (FILE *stream, long apoint_date, long apoint_dur,
|
||||
static void
|
||||
pcal_export_recur_events (FILE *stream)
|
||||
{
|
||||
struct recur_event_s *i;
|
||||
struct recur_event *i;
|
||||
char pcal_date[BUFSIZ];
|
||||
|
||||
(void)fprintf (stream, "\n# =============");
|
||||
@ -476,7 +462,7 @@ pcal_export_recur_events (FILE *stream)
|
||||
static void
|
||||
ical_export_events (FILE *stream)
|
||||
{
|
||||
struct event_s *i;
|
||||
struct event *i;
|
||||
char ical_date[BUFSIZ];
|
||||
|
||||
for (i = eventlist; i != 0; i = i->next)
|
||||
@ -492,7 +478,7 @@ ical_export_events (FILE *stream)
|
||||
static void
|
||||
pcal_export_events (FILE *stream)
|
||||
{
|
||||
struct event_s *i;
|
||||
struct event *i;
|
||||
|
||||
(void)fprintf (stream, "\n# ======\n# Events\n# ======\n");
|
||||
for (i = eventlist; i != 0; i = i->next)
|
||||
@ -504,8 +490,8 @@ pcal_export_events (FILE *stream)
|
||||
static void
|
||||
ical_export_recur_apoints (FILE *stream)
|
||||
{
|
||||
recur_apoint_llist_node_t *i;
|
||||
struct days_s *day;
|
||||
struct recur_apoint *i;
|
||||
struct days *day;
|
||||
char ical_datetime[BUFSIZ];
|
||||
char ical_date[BUFSIZ];
|
||||
|
||||
@ -550,7 +536,7 @@ ical_export_recur_apoints (FILE *stream)
|
||||
static void
|
||||
pcal_export_recur_apoints (FILE *stream)
|
||||
{
|
||||
recur_apoint_llist_node_t *i;
|
||||
struct recur_apoint *i;
|
||||
char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ];
|
||||
|
||||
(void)fprintf (stream, "\n# ==============");
|
||||
@ -609,7 +595,7 @@ pcal_export_recur_apoints (FILE *stream)
|
||||
static void
|
||||
ical_export_apoints (FILE *stream)
|
||||
{
|
||||
apoint_llist_node_t *i;
|
||||
struct apoint *i;
|
||||
char ical_datetime[BUFSIZ];
|
||||
|
||||
pthread_mutex_lock (&(alist_p->mutex));
|
||||
@ -630,7 +616,7 @@ ical_export_apoints (FILE *stream)
|
||||
static void
|
||||
pcal_export_apoints (FILE *stream)
|
||||
{
|
||||
apoint_llist_node_t *i;
|
||||
struct apoint *i;
|
||||
|
||||
(void)fprintf (stream, "\n# ============\n# Appointments\n# ============\n");
|
||||
pthread_mutex_lock (&(alist_p->mutex));
|
||||
@ -644,7 +630,7 @@ pcal_export_apoints (FILE *stream)
|
||||
static void
|
||||
ical_export_todo (FILE *stream)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
|
||||
for (i = todolist; i != 0; i = i->next)
|
||||
{
|
||||
@ -661,7 +647,7 @@ ical_export_todo (FILE *stream)
|
||||
static void
|
||||
pcal_export_todo (FILE *stream)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
|
||||
(void)fprintf (stream, "#\n# Todos\n#\n");
|
||||
for (i = todolist; i != 0; i = i->next)
|
||||
@ -831,7 +817,7 @@ static pthread_mutex_t io_save_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
/* Save the user configuration. */
|
||||
unsigned
|
||||
io_save_conf (conf_t *conf)
|
||||
io_save_conf (struct conf *conf)
|
||||
{
|
||||
char *config_txt =
|
||||
"#\n"
|
||||
@ -969,8 +955,8 @@ io_save_conf (conf_t *conf)
|
||||
unsigned
|
||||
io_save_apts (void)
|
||||
{
|
||||
apoint_llist_node_t *a;
|
||||
struct event_s *e;
|
||||
struct apoint *a;
|
||||
struct event *e;
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen (path_apts, "w")) == 0)
|
||||
@ -996,7 +982,7 @@ io_save_apts (void)
|
||||
unsigned
|
||||
io_save_todo (void)
|
||||
{
|
||||
struct todo_s *t;
|
||||
struct todo *t;
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen (path_todo, "w")) == 0)
|
||||
@ -1031,7 +1017,7 @@ io_save_keys (void)
|
||||
|
||||
/* Save the calendar data */
|
||||
void
|
||||
io_save_cal (conf_t *conf, io_save_display_t display)
|
||||
io_save_cal (struct conf *conf, enum save_display display)
|
||||
{
|
||||
char *access_pb = _("Problems accessing data file ...");
|
||||
char *save_success = _("The data files were successfully saved");
|
||||
@ -1089,7 +1075,7 @@ io_load_app (void)
|
||||
FILE *data_file;
|
||||
int c, is_appointment, is_event, is_recursive;
|
||||
struct tm start, end, until, *lt;
|
||||
struct days_s *exc;
|
||||
struct days *exc;
|
||||
time_t t;
|
||||
int id = 0;
|
||||
int freq;
|
||||
@ -1367,7 +1353,7 @@ io_load_keys (char *pager)
|
||||
struct ht_keybindings_s keys[NBKEYS];
|
||||
FILE *keyfp;
|
||||
char buf[BUFSIZ];
|
||||
io_file_t *log;
|
||||
struct io_file *log;
|
||||
int i, skipped, loaded, line;
|
||||
const int MAX_ERRORS = 5;
|
||||
|
||||
@ -1382,8 +1368,8 @@ io_load_keys (char *pager)
|
||||
|
||||
for (i = 0; i < NBKEYS; i++)
|
||||
{
|
||||
keys[i].key = (keys_e)i;
|
||||
keys[i].label = keys_get_label ((keys_e)i);
|
||||
keys[i].key = (enum key)i;
|
||||
keys[i].label = keys_get_label ((enum key)i);
|
||||
HTABLE_INSERT (ht_keybindings, &ht_keys, &keys[i]);
|
||||
}
|
||||
|
||||
@ -1611,7 +1597,7 @@ io_startup_screen (unsigned skip_dialogs, int no_data_file)
|
||||
|
||||
/* Export calcurse data. */
|
||||
void
|
||||
io_export_data (export_type_t type, conf_t *conf)
|
||||
io_export_data (enum export_type type, struct conf *conf)
|
||||
{
|
||||
FILE *stream;
|
||||
char *success = _("The data were successfully exported");
|
||||
@ -1739,7 +1725,7 @@ ical_store_todo (int priority, char *mesg, char *note)
|
||||
|
||||
static void
|
||||
ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
|
||||
days_t *exc)
|
||||
struct days *exc)
|
||||
{
|
||||
const int EVENTID = 1;
|
||||
|
||||
@ -1771,7 +1757,7 @@ ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
|
||||
|
||||
static void
|
||||
ical_store_apoint (char *mesg, char *note, long start, long dur,
|
||||
ical_rpt_t *rpt, days_t *exc, int has_alarm)
|
||||
ical_rpt_t *rpt, struct days *exc, int has_alarm)
|
||||
{
|
||||
char state = 0L;
|
||||
|
||||
@ -1922,7 +1908,7 @@ static float
|
||||
ical_chk_header (FILE *fd, unsigned *lineno)
|
||||
{
|
||||
const int HEADER_MALFORMED = -1;
|
||||
const string_t icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
|
||||
const struct string icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
|
||||
char buf[BUFSIZ];
|
||||
|
||||
(void)fgets (buf, BUFSIZ, fd);
|
||||
@ -1971,7 +1957,7 @@ static long
|
||||
ical_datetime2long (char *datestr, ical_vevent_e *type)
|
||||
{
|
||||
const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5;
|
||||
date_t date;
|
||||
struct date date;
|
||||
unsigned hour, min;
|
||||
long datelong;
|
||||
int format;
|
||||
@ -2174,12 +2160,12 @@ static ical_rpt_t *
|
||||
ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
|
||||
const int itemline)
|
||||
{
|
||||
const string_t daily = STRING_BUILD ("DAILY");
|
||||
const string_t weekly = STRING_BUILD ("WEEKLY");
|
||||
const string_t monthly = STRING_BUILD ("MONTHLY");
|
||||
const string_t yearly = STRING_BUILD ("YEARLY");
|
||||
const string_t count = STRING_BUILD ("COUNT=");
|
||||
const string_t interv = STRING_BUILD ("INTERVAL=");
|
||||
const struct string daily = STRING_BUILD ("DAILY");
|
||||
const struct string weekly = STRING_BUILD ("WEEKLY");
|
||||
const struct string monthly = STRING_BUILD ("MONTHLY");
|
||||
const struct string yearly = STRING_BUILD ("YEARLY");
|
||||
const struct string count = STRING_BUILD ("COUNT=");
|
||||
const struct string interv = STRING_BUILD ("INTERVAL=");
|
||||
unsigned interval;
|
||||
ical_rpt_t *rpt;
|
||||
char *p;
|
||||
@ -2285,15 +2271,15 @@ ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
|
||||
}
|
||||
|
||||
static void
|
||||
ical_add_exc (days_t **exc_head, long date)
|
||||
ical_add_exc (struct days **exc_head, long date)
|
||||
{
|
||||
if (date == 0)
|
||||
return;
|
||||
else
|
||||
{
|
||||
struct days_s *exc;
|
||||
struct days *exc;
|
||||
|
||||
exc = mem_malloc (sizeof (struct days_s));
|
||||
exc = mem_malloc (sizeof (struct days));
|
||||
exc->st = date;
|
||||
exc->next = *exc_head;
|
||||
*exc_head = exc;
|
||||
@ -2304,11 +2290,11 @@ ical_add_exc (days_t **exc_head, long date)
|
||||
* This property defines the list of date/time exceptions for a
|
||||
* recurring calendar component.
|
||||
*/
|
||||
static days_t *
|
||||
static struct days *
|
||||
ical_read_exdate (FILE *log, char *exstr, unsigned *noskipped,
|
||||
const int itemline)
|
||||
{
|
||||
days_t *exc;
|
||||
struct days *exc;
|
||||
char *p, *q;
|
||||
long date;
|
||||
|
||||
@ -2394,7 +2380,6 @@ ical_read_note (char *first_line, FILE *fdi, unsigned *noskipped,
|
||||
|
||||
/* Returns an allocated string containing the ical item summary. */
|
||||
static char *
|
||||
|
||||
ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno)
|
||||
{
|
||||
char *p, *summary;
|
||||
@ -2414,20 +2399,20 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints,
|
||||
unsigned *noskipped, unsigned *lineno)
|
||||
{
|
||||
const int ITEMLINE = *lineno;
|
||||
const string_t endevent = STRING_BUILD ("END:VEVENT");
|
||||
const string_t summary = STRING_BUILD ("SUMMARY:");
|
||||
const string_t dtstart = STRING_BUILD ("DTSTART");
|
||||
const string_t dtend = STRING_BUILD ("DTEND");
|
||||
const string_t duration = STRING_BUILD ("DURATION:");
|
||||
const string_t rrule = STRING_BUILD ("RRULE");
|
||||
const string_t exdate = STRING_BUILD ("EXDATE");
|
||||
const string_t alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||
const string_t endalarm = STRING_BUILD ("END:VALARM");
|
||||
const string_t desc = STRING_BUILD ("DESCRIPTION");
|
||||
const struct string endevent = STRING_BUILD ("END:VEVENT");
|
||||
const struct string summary = STRING_BUILD ("SUMMARY:");
|
||||
const struct string dtstart = STRING_BUILD ("DTSTART");
|
||||
const struct string dtend = STRING_BUILD ("DTEND");
|
||||
const struct string duration = STRING_BUILD ("DURATION:");
|
||||
const struct string rrule = STRING_BUILD ("RRULE");
|
||||
const struct string exdate = STRING_BUILD ("EXDATE");
|
||||
const struct string alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||
const struct string endalarm = STRING_BUILD ("END:VALARM");
|
||||
const struct string desc = STRING_BUILD ("DESCRIPTION");
|
||||
ical_vevent_e vevent_type;
|
||||
char *p, buf[BUFSIZ], buf_upper[BUFSIZ];
|
||||
struct {
|
||||
days_t *exc;
|
||||
struct days *exc;
|
||||
ical_rpt_t *rpt;
|
||||
char *mesg, *note;
|
||||
long start, end, dur;
|
||||
@ -2607,11 +2592,11 @@ static void
|
||||
ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
|
||||
unsigned *lineno)
|
||||
{
|
||||
const string_t endtodo = STRING_BUILD ("END:VTODO");
|
||||
const string_t summary = STRING_BUILD ("SUMMARY");
|
||||
const string_t alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||
const string_t endalarm = STRING_BUILD ("END:VALARM");
|
||||
const string_t desc = STRING_BUILD ("DESCRIPTION");
|
||||
const struct string endtodo = STRING_BUILD ("END:VTODO");
|
||||
const struct string summary = STRING_BUILD ("SUMMARY");
|
||||
const struct string alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||
const struct string endalarm = STRING_BUILD ("END:VALARM");
|
||||
const struct string desc = STRING_BUILD ("DESCRIPTION");
|
||||
const int LOWEST = 9;
|
||||
const int ITEMLINE = *lineno;
|
||||
char buf[BUFSIZ], buf_upper[BUFSIZ];
|
||||
@ -2701,7 +2686,7 @@ cleanup:
|
||||
}
|
||||
|
||||
static FILE *
|
||||
get_import_stream (export_type_t type)
|
||||
get_import_stream (enum export_type type)
|
||||
{
|
||||
FILE *stream;
|
||||
char *stream_name;
|
||||
@ -2742,10 +2727,10 @@ get_import_stream (export_type_t type)
|
||||
* and is cleared at the end.
|
||||
*/
|
||||
void
|
||||
io_import_data (import_type_t type, conf_t *conf, char *stream_name)
|
||||
io_import_data (enum import_type type, struct conf *conf, char *stream_name)
|
||||
{
|
||||
const string_t vevent = STRING_BUILD ("BEGIN:VEVENT");
|
||||
const string_t vtodo = STRING_BUILD ("BEGIN:VTODO");
|
||||
const struct string vevent = STRING_BUILD ("BEGIN:VEVENT");
|
||||
const struct string vtodo = STRING_BUILD ("BEGIN:VTODO");
|
||||
char *proc_report = _("Import process report: %04d lines read ");
|
||||
char *lines_stats =
|
||||
_("%d apps / %d events / %d todos / %d skipped ");
|
||||
@ -2753,7 +2738,7 @@ io_import_data (import_type_t type, conf_t *conf, char *stream_name)
|
||||
_("%d apps / %d events / %d todos / %d skipped ([ENTER] to continue)");
|
||||
char buf[BUFSIZ];
|
||||
FILE *stream = NULL;
|
||||
io_file_t *log;
|
||||
struct io_file *log;
|
||||
float ical_version;
|
||||
struct {
|
||||
unsigned events, apoints, todos, lines, skipped;
|
||||
@ -2844,17 +2829,17 @@ io_import_data (import_type_t type, conf_t *conf, char *stream_name)
|
||||
io_log_free (log);
|
||||
}
|
||||
|
||||
io_file_t *
|
||||
struct io_file *
|
||||
io_log_init (void)
|
||||
{
|
||||
const char *logprefix = "/tmp/calcurse_log.";
|
||||
char *logname;
|
||||
io_file_t *log;
|
||||
struct io_file *log;
|
||||
|
||||
logname = new_tempfile (logprefix, NOTESIZ);
|
||||
RETVAL_IF (logname == 0, 0,
|
||||
_("Warning: could not create temporary log file, Aborting..."));
|
||||
log = mem_malloc (sizeof (io_file_t));
|
||||
log = mem_malloc (sizeof (struct io_file));
|
||||
RETVAL_IF (log == 0, 0,
|
||||
_("Warning: could not open temporary log file, Aborting..."));
|
||||
(void)snprintf (log->name, sizeof (log->name), "%s%s", logprefix, logname);
|
||||
@ -2871,14 +2856,14 @@ io_log_init (void)
|
||||
}
|
||||
|
||||
void
|
||||
io_log_print (io_file_t *log, int line, char *msg)
|
||||
io_log_print (struct io_file *log, int line, char *msg)
|
||||
{
|
||||
if (log && log->fd)
|
||||
(void)fprintf (log->fd, "line %d: %s\n", line, msg);
|
||||
}
|
||||
|
||||
void
|
||||
io_log_display (io_file_t *log, char *msg, char *pager)
|
||||
io_log_display (struct io_file *log, char *msg, char *pager)
|
||||
{
|
||||
char *choices = "[y/n] ";
|
||||
int ans;
|
||||
@ -2913,7 +2898,7 @@ io_log_display (io_file_t *log, char *msg, char *pager)
|
||||
}
|
||||
|
||||
void
|
||||
io_log_free (io_file_t *log)
|
||||
io_log_free (struct io_file *log)
|
||||
{
|
||||
if (!log)
|
||||
return;
|
||||
@ -2929,10 +2914,10 @@ static pthread_t io_t_psave;
|
||||
static void *
|
||||
io_psave_thread (void *arg)
|
||||
{
|
||||
conf_t *config;
|
||||
struct conf *config;
|
||||
int delay;
|
||||
|
||||
config = (conf_t *)arg;
|
||||
config = (struct conf *)arg;
|
||||
delay = config->periodic_save;
|
||||
EXIT_IF (delay < 0, _("Invalid delay"));
|
||||
|
||||
@ -2945,7 +2930,7 @@ io_psave_thread (void *arg)
|
||||
|
||||
/* Launch the thread which handles periodic saves. */
|
||||
void
|
||||
io_start_psave_thread (conf_t *conf)
|
||||
io_start_psave_thread (struct conf *conf)
|
||||
{
|
||||
pthread_create (&io_t_psave, NULL, io_psave_thread, (void *)conf);
|
||||
}
|
||||
|
95
src/io.h
95
src/io.h
@ -1,95 +0,0 @@
|
||||
/* $calcurse: io.h,v 1.27 2009/11/01 11:06:37 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_IO_H
|
||||
#define CALCURSE_IO_H
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
typedef enum {
|
||||
IO_IMPORT_ICAL,
|
||||
IO_IMPORT_NBTYPES
|
||||
} import_type_t;
|
||||
|
||||
typedef enum {
|
||||
IO_EXPORT_ICAL,
|
||||
IO_EXPORT_PCAL,
|
||||
IO_EXPORT_NBTYPES
|
||||
} export_type_t;
|
||||
|
||||
typedef enum {
|
||||
IO_SAVE_DISPLAY_BAR,
|
||||
IO_SAVE_DISPLAY_MARK,
|
||||
IO_SAVE_DISPLAY_NONE
|
||||
} io_save_display_t;
|
||||
|
||||
typedef struct {
|
||||
FILE *fd;
|
||||
char name[BUFSIZ];
|
||||
} io_file_t;
|
||||
|
||||
unsigned io_fprintln (const char *, const char *, ...);
|
||||
void io_init (char *, char *);
|
||||
void io_extract_data (char *, const char *, int);
|
||||
unsigned io_save_conf (conf_t *);
|
||||
unsigned io_save_apts (void);
|
||||
unsigned io_save_todo (void);
|
||||
unsigned io_save_keys (void);
|
||||
void io_save_cal (conf_t *, io_save_display_t);
|
||||
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 (export_type_t, conf_t *);
|
||||
void io_export_bar (void);
|
||||
void io_import_data (import_type_t, conf_t *, char *);
|
||||
io_file_t *io_log_init (void);
|
||||
void io_log_print (io_file_t *, int, char *);
|
||||
void io_log_display (io_file_t *, char *, char *);
|
||||
void io_log_free (io_file_t *);
|
||||
void io_start_psave_thread (conf_t *);
|
||||
void io_stop_psave_thread (void);
|
||||
void io_set_lock (void);
|
||||
unsigned io_dump_pid (char *);
|
||||
unsigned io_get_pid (char *);
|
||||
|
||||
#endif /* !CALCURSE_IO_H */
|
58
src/keys.c
58
src/keys.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: keys.c,v 1.17 2009/07/05 20:33:21 culot Exp $ */
|
||||
/* $calcurse: keys.c,v 1.18 2010/03/20 10:54:46 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2008-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -39,11 +39,7 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "custom.h"
|
||||
#include "mem.h"
|
||||
#include "keys.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
#define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */
|
||||
|
||||
@ -59,7 +55,7 @@ struct key_str_s {
|
||||
|
||||
static struct key_str_s *keys[NBKEYS];
|
||||
|
||||
static keys_e actions[MAXKEYVAL];
|
||||
static enum key actions[MAXKEYVAL];
|
||||
|
||||
static struct keydef_s keydef[NBKEYS] = {
|
||||
{"generic-cancel", "ESC"},
|
||||
@ -181,7 +177,7 @@ keys_dump_defaults (char *file)
|
||||
}
|
||||
|
||||
char *
|
||||
keys_get_label (keys_e key)
|
||||
keys_get_label (enum key key)
|
||||
{
|
||||
EXIT_IF (key < 0 || key > NBKEYS,
|
||||
_("FATAL ERROR: key value out of bounds"));
|
||||
@ -189,7 +185,7 @@ keys_get_label (keys_e key)
|
||||
return keydef[key].label;
|
||||
}
|
||||
|
||||
keys_e
|
||||
enum key
|
||||
keys_get_action (int pressed)
|
||||
{
|
||||
if (pressed < 0 || pressed > MAXKEYVAL)
|
||||
@ -198,7 +194,7 @@ keys_get_action (int pressed)
|
||||
return actions[pressed];
|
||||
}
|
||||
|
||||
keys_e
|
||||
enum key
|
||||
keys_getch (WINDOW *win)
|
||||
{
|
||||
int ch;
|
||||
@ -214,7 +210,7 @@ keys_getch (WINDOW *win)
|
||||
}
|
||||
|
||||
static void
|
||||
add_key_str (keys_e action, int key)
|
||||
add_key_str (enum key action, int key)
|
||||
{
|
||||
struct key_str_s *new, **i;
|
||||
|
||||
@ -242,7 +238,7 @@ add_key_str (keys_e action, int key)
|
||||
}
|
||||
|
||||
int
|
||||
keys_assign_binding (int key, keys_e action)
|
||||
keys_assign_binding (int key, enum key action)
|
||||
{
|
||||
if (key < 0 || key > MAXKEYVAL || actions[key] != KEY_UNDEF)
|
||||
return 1;
|
||||
@ -256,7 +252,7 @@ keys_assign_binding (int key, keys_e action)
|
||||
}
|
||||
|
||||
static void
|
||||
del_key_str (keys_e action, int key)
|
||||
del_key_str (enum key action, int key)
|
||||
{
|
||||
struct key_str_s *old, **i;
|
||||
char oldstr[BUFSIZ];
|
||||
@ -279,7 +275,7 @@ del_key_str (keys_e action, int key)
|
||||
}
|
||||
|
||||
void
|
||||
keys_remove_binding (int key, keys_e action)
|
||||
keys_remove_binding (int key, enum key action)
|
||||
{
|
||||
if (key < 0 || key > MAXKEYVAL)
|
||||
return;
|
||||
@ -293,16 +289,16 @@ keys_remove_binding (int key, keys_e action)
|
||||
int
|
||||
keys_str2int (char *key)
|
||||
{
|
||||
const string_t CONTROL_KEY = STRING_BUILD ("C-");
|
||||
const string_t TAB_KEY = STRING_BUILD ("TAB");
|
||||
const string_t SPACE_KEY = STRING_BUILD ("SPC");
|
||||
const string_t ESCAPE_KEY = STRING_BUILD ("ESC");
|
||||
const string_t CURSES_KEY_UP = STRING_BUILD ("UP");
|
||||
const string_t CURSES_KEY_DOWN = STRING_BUILD ("DWN");
|
||||
const string_t CURSES_KEY_LEFT = STRING_BUILD ("LFT");
|
||||
const string_t CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
|
||||
const string_t CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
|
||||
const string_t CURSES_KEY_END = STRING_BUILD ("KEY_END");
|
||||
const struct string CONTROL_KEY = STRING_BUILD ("C-");
|
||||
const struct string TAB_KEY = STRING_BUILD ("TAB");
|
||||
const struct string SPACE_KEY = STRING_BUILD ("SPC");
|
||||
const struct string ESCAPE_KEY = STRING_BUILD ("ESC");
|
||||
const struct string CURSES_KEY_UP = STRING_BUILD ("UP");
|
||||
const struct string CURSES_KEY_DOWN = STRING_BUILD ("DWN");
|
||||
const struct string CURSES_KEY_LEFT = STRING_BUILD ("LFT");
|
||||
const struct string CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
|
||||
const struct string CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
|
||||
const struct string CURSES_KEY_END = STRING_BUILD ("KEY_END");
|
||||
|
||||
if (!key)
|
||||
return -1;
|
||||
@ -366,7 +362,7 @@ keys_int2str (int key)
|
||||
}
|
||||
|
||||
int
|
||||
keys_action_count_keys (keys_e action)
|
||||
keys_action_count_keys (enum key action)
|
||||
{
|
||||
struct key_str_s *key;
|
||||
int i;
|
||||
@ -379,13 +375,13 @@ keys_action_count_keys (keys_e action)
|
||||
}
|
||||
|
||||
char *
|
||||
keys_action_firstkey (keys_e action)
|
||||
keys_action_firstkey (enum key action)
|
||||
{
|
||||
return (keys[action] != NULL) ? keys[action]->str : "XXX";
|
||||
}
|
||||
|
||||
char *
|
||||
keys_action_nkey (keys_e action, int keynum)
|
||||
keys_action_nkey (enum key action, int keynum)
|
||||
{
|
||||
struct key_str_s *key;
|
||||
int i;
|
||||
@ -401,7 +397,7 @@ keys_action_nkey (keys_e action, int keynum)
|
||||
}
|
||||
|
||||
char *
|
||||
keys_action_allkeys (keys_e action)
|
||||
keys_action_allkeys (enum key action)
|
||||
{
|
||||
static char keystr[BUFSIZ];
|
||||
struct key_str_s *i;
|
||||
@ -451,7 +447,7 @@ keys_format_label (char *key, int keylen)
|
||||
}
|
||||
|
||||
void
|
||||
keys_display_bindings_bar (WINDOW *win, binding_t **binding, int first_key,
|
||||
keys_display_bindings_bar (WINDOW *win, struct binding **binding, int first_key,
|
||||
int last_key)
|
||||
{
|
||||
int i, j, cmdlen, space_between_cmds;
|
||||
@ -495,7 +491,7 @@ keys_display_bindings_bar (WINDOW *win, binding_t **binding, int first_key,
|
||||
* (could not add the keys descriptions to keydef variable, because of i18n).
|
||||
*/
|
||||
void
|
||||
keys_popup_info (keys_e key)
|
||||
keys_popup_info (enum key key)
|
||||
{
|
||||
char *info[NBKEYS];
|
||||
WINDOW *infowin;
|
||||
|
140
src/keys.h
140
src/keys.h
@ -1,140 +0,0 @@
|
||||
/* $calcurse: keys.h,v 1.11 2009/07/05 20:33:21 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2008-2009 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_KEYS_H
|
||||
#define CALCURSE_KEYS_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_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
|
||||
|
||||
#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 */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
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
|
||||
}
|
||||
keys_e;
|
||||
|
||||
typedef struct {
|
||||
char *label;
|
||||
keys_e action;
|
||||
} binding_t;
|
||||
|
||||
void keys_init (void);
|
||||
void keys_free (void);
|
||||
void keys_dump_defaults (char *);
|
||||
char *keys_get_label (keys_e);
|
||||
keys_e keys_get_action (int);
|
||||
keys_e keys_getch (WINDOW *win);
|
||||
int keys_assign_binding (int, keys_e);
|
||||
void keys_remove_binding (int, keys_e);
|
||||
int keys_str2int (char *);
|
||||
char *keys_int2str (int);
|
||||
int keys_action_count_keys (keys_e);
|
||||
char *keys_action_firstkey (keys_e);
|
||||
char *keys_action_nkey (keys_e, int);
|
||||
char *keys_action_allkeys (keys_e);
|
||||
void keys_display_bindings_bar (WINDOW *, binding_t **, int, int);
|
||||
void keys_popup_info (keys_e);
|
||||
void keys_save_bindings (FILE *);
|
||||
int keys_check_missing_bindings (void);
|
||||
void keys_fill_missing (void);
|
||||
|
||||
#endif /* CALCURSE_KEYS_H */
|
30
src/mem.c
30
src/mem.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: mem.c,v 1.6 2009/07/19 07:44:59 culot Exp $ */
|
||||
/* $calcurse: mem.c,v 1.7 2010/03/20 10:54:46 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2008-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2008-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,9 +41,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "mem.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
enum {
|
||||
BLK_STATE,
|
||||
@ -58,26 +56,26 @@ enum {
|
||||
#define MAGIC_ALLOC 0xda
|
||||
#define MAGIC_FREE 0xdf
|
||||
|
||||
struct mem_blk_s {
|
||||
struct mem_blk {
|
||||
unsigned id, size;
|
||||
const char *pos;
|
||||
struct mem_blk_s *next;
|
||||
struct mem_blk *next;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct mem_stats {
|
||||
unsigned ncall, nalloc, nfree;
|
||||
struct mem_blk_s *blk;
|
||||
} mem_stats_t;
|
||||
struct mem_blk *blk;
|
||||
};
|
||||
|
||||
static mem_stats_t mstats;
|
||||
static struct mem_stats mstats;
|
||||
|
||||
|
||||
static unsigned
|
||||
stats_add_blk (size_t size, const char *pos)
|
||||
{
|
||||
struct mem_blk_s *o, **i;
|
||||
struct mem_blk *o, **i;
|
||||
|
||||
o = malloc (sizeof (struct mem_blk_s));
|
||||
o = malloc (sizeof (*o));
|
||||
EXIT_IF (o == 0, _("could not allocate memory to store block info"));
|
||||
|
||||
mstats.ncall++;
|
||||
@ -98,7 +96,7 @@ stats_add_blk (size_t size, const char *pos)
|
||||
static void
|
||||
stats_del_blk (unsigned id)
|
||||
{
|
||||
struct mem_blk_s *o, **i;
|
||||
struct mem_blk *o, **i;
|
||||
|
||||
EXIT_IF (id < 0, _("Incorrect block id"));
|
||||
|
||||
@ -289,7 +287,7 @@ dbg_free (void *ptr, const char *pos)
|
||||
#ifdef CALCURSE_MEMORY_DEBUG
|
||||
|
||||
static void
|
||||
dump_block_info (struct mem_blk_s *blk)
|
||||
dump_block_info (struct mem_blk *blk)
|
||||
{
|
||||
if (blk == 0)
|
||||
return;
|
||||
@ -315,7 +313,7 @@ mem_stats (void)
|
||||
|
||||
if (mstats.nfree < mstats.nalloc)
|
||||
{
|
||||
struct mem_blk_s *blk;
|
||||
struct mem_blk *blk;
|
||||
|
||||
for (blk = mstats.blk; blk; blk = blk->next)
|
||||
dump_block_info (blk);
|
||||
|
81
src/mem.h
81
src/mem.h
@ -1,81 +0,0 @@
|
||||
/* $calcurse: mem.h,v 1.3 2009/07/12 17:48:13 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2008-2009 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_MEM_H
|
||||
#define CALCURSE_MEM_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
|
||||
#include "utils.h"
|
||||
|
||||
|
||||
void *xmalloc (size_t);
|
||||
void *xcalloc (size_t, size_t);
|
||||
void *xrealloc (void *, size_t, size_t);
|
||||
char *xstrdup (const char *);
|
||||
void xfree (void *);
|
||||
|
||||
#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__)
|
||||
|
||||
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);
|
||||
|
||||
#else /* !CALCURSE_MEMORY_DEBUG */
|
||||
|
||||
#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 */
|
||||
|
||||
#endif /* CALCURSE_MEM_H */
|
41
src/notify.c
41
src/notify.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: notify.c,v 1.48 2010/02/14 17:29:16 culot Exp $ */
|
||||
/* $calcurse: notify.c,v 1.49 2010/03/20 10:54:47 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,19 +41,20 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_CONFIG_H */
|
||||
#include "calcurse.h"
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "custom.h"
|
||||
#include "keys.h"
|
||||
#include "mem.h"
|
||||
#include "notify.h"
|
||||
#define NOTIFY_FIELD_LENGTH 25
|
||||
|
||||
static struct notify_vars_s notify;
|
||||
static struct notify_app_s notify_app;
|
||||
struct notify_vars {
|
||||
WINDOW *win;
|
||||
char *apts_file;
|
||||
char time[NOTIFY_FIELD_LENGTH];
|
||||
char date[NOTIFY_FIELD_LENGTH];
|
||||
pthread_mutex_t mutex;
|
||||
};
|
||||
|
||||
static struct notify_vars notify;
|
||||
static struct notify_app notify_app;
|
||||
static pthread_attr_t detached_thread_attr;
|
||||
static pthread_t notify_t_main;
|
||||
|
||||
@ -364,7 +365,7 @@ notify_main_thread (void *arg)
|
||||
|
||||
/* Fill the given structure with information about next appointment. */
|
||||
unsigned
|
||||
notify_get_next (struct notify_app_s *a)
|
||||
notify_get_next (struct notify_app *a)
|
||||
{
|
||||
time_t current_time;
|
||||
|
||||
@ -390,7 +391,7 @@ notify_get_next (struct notify_app_s *a)
|
||||
unsigned
|
||||
notify_get_next_bkgd (void)
|
||||
{
|
||||
struct notify_app_s a;
|
||||
struct notify_app a;
|
||||
|
||||
a.txt = (char *)0;
|
||||
if (!notify_get_next (&a))
|
||||
@ -429,7 +430,7 @@ notify_app_txt (void)
|
||||
static void *
|
||||
notify_thread_app (void *arg)
|
||||
{
|
||||
struct notify_app_s tmp_app;
|
||||
struct notify_app tmp_app;
|
||||
|
||||
if (!notify_get_next (&tmp_app))
|
||||
pthread_exit ((void *)0);
|
||||
@ -501,7 +502,7 @@ notify_check_added (char *mesg, long start, char state)
|
||||
|
||||
/* Check if the newly repeated appointment is to be notified. */
|
||||
void
|
||||
notify_check_repeated (recur_apoint_llist_node_t *i)
|
||||
notify_check_repeated (struct recur_apoint *i)
|
||||
{
|
||||
long real_app_time;
|
||||
int update_notify = 0;
|
||||
@ -549,7 +550,7 @@ notify_same_item (long time)
|
||||
}
|
||||
|
||||
int
|
||||
notify_same_recur_item (recur_apoint_llist_node_t *i)
|
||||
notify_same_recur_item (struct recur_apoint *i)
|
||||
{
|
||||
int same = 0;
|
||||
long item_start = 0;
|
||||
@ -684,7 +685,7 @@ print_config_options (WINDOW *optwin)
|
||||
}
|
||||
|
||||
static void
|
||||
reinit_conf_win (scrollwin_t *win)
|
||||
reinit_conf_win (struct scrollwin *win)
|
||||
{
|
||||
unsigned first_line;
|
||||
|
||||
@ -700,7 +701,7 @@ reinit_conf_win (scrollwin_t *win)
|
||||
void
|
||||
notify_config_bar (void)
|
||||
{
|
||||
scrollwin_t cwin;
|
||||
struct scrollwin cwin;
|
||||
char *buf;
|
||||
char *number_str =
|
||||
_("Enter an option number to change its value");
|
||||
|
88
src/notify.h
88
src/notify.h
@ -1,88 +0,0 @@
|
||||
/* $calcurse: notify.h,v 1.21 2009/08/01 20:29:50 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_NOTIFY_H
|
||||
#define CALCURSE_NOTIFY_H
|
||||
|
||||
#include "wins.h"
|
||||
#include "apoint.h"
|
||||
#include "recur.h"
|
||||
|
||||
#define NOTIFY_FIELD_LENGTH 25
|
||||
|
||||
struct notify_vars_s
|
||||
{
|
||||
WINDOW *win;
|
||||
char *apts_file;
|
||||
char time[NOTIFY_FIELD_LENGTH];
|
||||
char date[NOTIFY_FIELD_LENGTH];
|
||||
pthread_mutex_t mutex;
|
||||
};
|
||||
|
||||
struct notify_app_s
|
||||
{
|
||||
long time;
|
||||
int got_app;
|
||||
char *txt;
|
||||
char state;
|
||||
pthread_mutex_t mutex;
|
||||
};
|
||||
|
||||
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_s *);
|
||||
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 (recur_apoint_llist_node_t *);
|
||||
int notify_same_item (long);
|
||||
int notify_same_recur_item (recur_apoint_llist_node_t *);
|
||||
void notify_config_bar (void);
|
||||
|
||||
#endif /* CALCURSE_NOTIFY_H */
|
140
src/recur.c
140
src/recur.c
@ -1,4 +1,4 @@
|
||||
/* $calcurse: recur.c,v 1.53 2010/03/08 08:44:44 culot Exp $ */
|
||||
/* $calcurse: recur.c,v 1.54 2010/03/20 10:54:47 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
@ -42,24 +42,18 @@
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "notify.h"
|
||||
#include "day.h"
|
||||
#include "keys.h"
|
||||
#include "mem.h"
|
||||
#include "recur.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
recur_apoint_llist_t *recur_alist_p;
|
||||
struct recur_event_s *recur_elist;
|
||||
static struct recur_event_s bkp_cut_recur_event;
|
||||
static recur_apoint_llist_node_t bkp_cut_recur_apoint;
|
||||
struct recur_apoint_list *recur_alist_p;
|
||||
struct recur_event *recur_elist;
|
||||
static struct recur_event bkp_cut_recur_event;
|
||||
static struct recur_apoint bkp_cut_recur_apoint;
|
||||
|
||||
|
||||
static void
|
||||
free_exc (struct days_s *exc)
|
||||
free_exc (struct days *exc)
|
||||
{
|
||||
struct days_s *o, **i;
|
||||
struct days *o, **i;
|
||||
|
||||
i = &exc;
|
||||
while (*i)
|
||||
@ -71,11 +65,11 @@ free_exc (struct days_s *exc)
|
||||
}
|
||||
|
||||
static void
|
||||
recur_add_exc (struct days_s **exc, long day)
|
||||
recur_add_exc (struct days **exc, long day)
|
||||
{
|
||||
struct days_s **i, *o;
|
||||
struct days **i, *o;
|
||||
|
||||
o = mem_malloc (sizeof (struct days_s));
|
||||
o = mem_malloc (sizeof (struct days));
|
||||
o->st = day;
|
||||
i = exc;
|
||||
for (;;)
|
||||
@ -91,16 +85,16 @@ recur_add_exc (struct days_s **exc, long day)
|
||||
}
|
||||
|
||||
static void
|
||||
exc_dup (struct days_s **in, struct days_s *exc)
|
||||
exc_dup (struct days **in, struct days *exc)
|
||||
{
|
||||
struct days_s *p;
|
||||
struct days *p;
|
||||
|
||||
for (p = exc; p; p = p->next)
|
||||
recur_add_exc (in, p->st);
|
||||
}
|
||||
|
||||
void
|
||||
recur_event_free_bkp (erase_flag_e flag)
|
||||
recur_event_free_bkp (enum eraseflg flag)
|
||||
{
|
||||
if (bkp_cut_recur_event.mesg)
|
||||
{
|
||||
@ -121,7 +115,7 @@ recur_event_free_bkp (erase_flag_e flag)
|
||||
}
|
||||
|
||||
void
|
||||
recur_apoint_free_bkp (erase_flag_e flag)
|
||||
recur_apoint_free_bkp (enum eraseflg flag)
|
||||
{
|
||||
if (bkp_cut_recur_apoint.mesg)
|
||||
{
|
||||
@ -142,7 +136,7 @@ recur_apoint_free_bkp (erase_flag_e flag)
|
||||
}
|
||||
|
||||
static void
|
||||
recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
|
||||
recur_event_dup (struct recur_event *in, struct recur_event *bkp)
|
||||
{
|
||||
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||
|
||||
@ -150,7 +144,7 @@ recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
|
||||
bkp->day = in->day;
|
||||
bkp->mesg = mem_strdup (in->mesg);
|
||||
|
||||
bkp->rpt = mem_malloc (sizeof (struct rpt_s));
|
||||
bkp->rpt = mem_malloc (sizeof (struct rpt));
|
||||
bkp->rpt->type = in->rpt->type;
|
||||
bkp->rpt->freq = in->rpt->freq;
|
||||
bkp->rpt->until = in->rpt->until;
|
||||
@ -163,7 +157,7 @@ recur_event_dup (struct recur_event_s *in, struct recur_event_s *bkp)
|
||||
}
|
||||
|
||||
static void
|
||||
recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
|
||||
recur_apoint_dup (struct recur_apoint *in, struct recur_apoint *bkp)
|
||||
{
|
||||
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||
|
||||
@ -172,7 +166,7 @@ recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
|
||||
bkp->state = in->state;
|
||||
bkp->mesg = mem_strdup (in->mesg);
|
||||
|
||||
bkp->rpt = mem_malloc (sizeof (struct rpt_s));
|
||||
bkp->rpt = mem_malloc (sizeof (struct rpt));
|
||||
bkp->rpt->type = in->rpt->type;
|
||||
bkp->rpt->freq = in->rpt->freq;
|
||||
bkp->rpt->until = in->rpt->until;
|
||||
@ -187,7 +181,7 @@ recur_apoint_dup (recur_apoint_llist_node_t *in, recur_apoint_llist_node_t *bkp)
|
||||
void
|
||||
recur_apoint_llist_init (void)
|
||||
{
|
||||
recur_alist_p = mem_malloc (sizeof (recur_apoint_llist_t));
|
||||
recur_alist_p = mem_malloc (sizeof (struct recur_apoint_list));
|
||||
recur_alist_p->root = NULL;
|
||||
pthread_mutex_init (&(recur_alist_p->mutex), NULL);
|
||||
}
|
||||
@ -195,7 +189,7 @@ recur_apoint_llist_init (void)
|
||||
void
|
||||
recur_apoint_llist_free (void)
|
||||
{
|
||||
recur_apoint_llist_node_t *o, **i;
|
||||
struct recur_apoint *o, **i;
|
||||
|
||||
i = &recur_alist_p->root;
|
||||
while (*i)
|
||||
@ -220,7 +214,7 @@ recur_apoint_llist_free (void)
|
||||
void
|
||||
recur_event_llist_free (void)
|
||||
{
|
||||
struct recur_event_s *o, **i;
|
||||
struct recur_event *o, **i;
|
||||
|
||||
i = &recur_elist;
|
||||
while (*i)
|
||||
@ -242,14 +236,14 @@ recur_event_llist_free (void)
|
||||
}
|
||||
|
||||
/* Insert a new recursive appointment in the general linked list */
|
||||
recur_apoint_llist_node_t *
|
||||
struct recur_apoint *
|
||||
recur_apoint_new (char *mesg, char *note, long start, long dur, char state,
|
||||
int type, int freq, long until, struct days_s **except)
|
||||
int type, int freq, long until, struct days **except)
|
||||
{
|
||||
recur_apoint_llist_node_t *o, **i;
|
||||
struct recur_apoint *o, **i;
|
||||
|
||||
o = mem_malloc (sizeof (recur_apoint_llist_node_t));
|
||||
o->rpt = mem_malloc (sizeof (struct rpt_s));
|
||||
o = mem_malloc (sizeof (struct recur_apoint));
|
||||
o->rpt = mem_malloc (sizeof (struct rpt));
|
||||
o->mesg = mem_strdup (mesg);
|
||||
o->note = (note != 0) ? mem_strdup (note) : 0;
|
||||
o->start = start;
|
||||
@ -284,14 +278,14 @@ recur_apoint_new (char *mesg, char *note, long start, long dur, char state,
|
||||
}
|
||||
|
||||
/* Insert a new recursive event in the general linked list */
|
||||
struct recur_event_s *
|
||||
struct recur_event *
|
||||
recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
|
||||
long until, struct days_s **except)
|
||||
long until, struct days **except)
|
||||
{
|
||||
struct recur_event_s *o, **i;
|
||||
struct recur_event *o, **i;
|
||||
|
||||
o = mem_malloc (sizeof (struct recur_event_s));
|
||||
o->rpt = mem_malloc (sizeof (struct rpt_s));
|
||||
o = mem_malloc (sizeof (struct recur_event));
|
||||
o->rpt = mem_malloc (sizeof (struct rpt));
|
||||
o->mesg = mem_strdup (mesg);
|
||||
o->note = (note != 0) ? mem_strdup (note) : 0;
|
||||
o->day = day;
|
||||
@ -326,7 +320,7 @@ recur_event_new (char *mesg, char *note, long day, int id, int type, int freq,
|
||||
* and the letter to be written in file.
|
||||
*/
|
||||
char
|
||||
recur_def2char (recur_types_t define)
|
||||
recur_def2char (enum recur_type define)
|
||||
{
|
||||
char recur_char;
|
||||
|
||||
@ -384,7 +378,7 @@ recur_char2def (char type)
|
||||
|
||||
/* Write days for which recurrent items should not be repeated. */
|
||||
static void
|
||||
recur_write_exc (struct days_s *exc, FILE *f)
|
||||
recur_write_exc (struct days *exc, FILE *f)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -403,9 +397,9 @@ recur_write_exc (struct days_s *exc, FILE *f)
|
||||
}
|
||||
|
||||
/* Load the recursive appointment description */
|
||||
recur_apoint_llist_node_t *
|
||||
struct recur_apoint *
|
||||
recur_apoint_scan (FILE *f, struct tm start, struct tm end, char type,
|
||||
int freq, struct tm until, char *note, struct days_s **exc,
|
||||
int freq, struct tm until, char *note, struct days **exc,
|
||||
char state)
|
||||
{
|
||||
struct tm *lt;
|
||||
@ -453,9 +447,9 @@ recur_apoint_scan (FILE *f, struct tm start, struct tm end, char type,
|
||||
}
|
||||
|
||||
/* Load the recursive events from file */
|
||||
struct recur_event_s *
|
||||
struct recur_event *
|
||||
recur_event_scan (FILE *f, struct tm start, int id, char type, int freq,
|
||||
struct tm until, char *note, struct days_s **exc)
|
||||
struct tm until, char *note, struct days **exc)
|
||||
{
|
||||
char buf[BUFSIZ], *nl;
|
||||
time_t tstart, tuntil;
|
||||
@ -493,7 +487,7 @@ recur_event_scan (FILE *f, struct tm start, int id, char type, int freq,
|
||||
|
||||
/* Writting of a recursive appointment into file. */
|
||||
static void
|
||||
recur_apoint_write (recur_apoint_llist_node_t *o, FILE *f)
|
||||
recur_apoint_write (struct recur_apoint *o, FILE *f)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -536,7 +530,7 @@ recur_apoint_write (recur_apoint_llist_node_t *o, FILE *f)
|
||||
|
||||
/* Writting of a recursive event into file. */
|
||||
static void
|
||||
recur_event_write (struct recur_event_s *o, FILE *f)
|
||||
recur_event_write (struct recur_event *o, FILE *f)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
@ -578,8 +572,8 @@ recur_event_write (struct recur_event_s *o, FILE *f)
|
||||
void
|
||||
recur_save_data (FILE *f)
|
||||
{
|
||||
struct recur_event_s *re;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
struct recur_event *re;
|
||||
struct recur_apoint *ra;
|
||||
|
||||
for (re = recur_elist; re != 0; re = re->next)
|
||||
recur_event_write (re, f);
|
||||
@ -664,13 +658,13 @@ diff_years (struct tm lt_start, struct tm lt_end)
|
||||
* calculation of recurrent dates after a turn of years.
|
||||
*/
|
||||
unsigned
|
||||
recur_item_inday (long item_start, struct days_s *item_exc, int rpt_type,
|
||||
recur_item_inday (long item_start, struct days *item_exc, int rpt_type,
|
||||
int rpt_freq, long rpt_until, long day_start)
|
||||
{
|
||||
date_t start_date;
|
||||
struct date start_date;
|
||||
long day_end, diff;
|
||||
struct tm lt_item, lt_day;
|
||||
struct days_s *exc;
|
||||
struct days *exc;
|
||||
time_t t;
|
||||
|
||||
day_end = day_start + DAYINSEC;
|
||||
@ -746,10 +740,10 @@ recur_item_inday (long item_start, struct days_s *item_exc, int rpt_type,
|
||||
*/
|
||||
void
|
||||
recur_event_erase (long start, unsigned num, unsigned delete_whole,
|
||||
erase_flag_e flag)
|
||||
enum eraseflg flag)
|
||||
{
|
||||
unsigned n = 0;
|
||||
struct recur_event_s *i, **iptr;
|
||||
struct recur_event *i, **iptr;
|
||||
|
||||
iptr = &recur_elist;
|
||||
for (i = recur_elist; i != 0; i = i->next)
|
||||
@ -811,10 +805,10 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
|
||||
*/
|
||||
void
|
||||
recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
|
||||
erase_flag_e flag)
|
||||
enum eraseflg flag)
|
||||
{
|
||||
unsigned n = 0;
|
||||
recur_apoint_llist_node_t *i, **iptr;
|
||||
struct recur_apoint *i, **iptr;
|
||||
int need_check_notify = 0;
|
||||
|
||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
||||
@ -888,14 +882,14 @@ recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
|
||||
* and then delete the selected item to recreate it as a recurrent one
|
||||
*/
|
||||
void
|
||||
recur_repeat_item (conf_t *conf)
|
||||
recur_repeat_item (struct conf *conf)
|
||||
{
|
||||
struct tm *lt;
|
||||
time_t t;
|
||||
int ch = 0;
|
||||
int date_entered = 0;
|
||||
int year = 0, month = 0, day = 0;
|
||||
date_t until_date;
|
||||
struct date until_date;
|
||||
char outstr[BUFSIZ];
|
||||
char user_input[BUFSIZ] = "";
|
||||
char *mesg_type_1 =
|
||||
@ -914,9 +908,9 @@ recur_repeat_item (conf_t *conf)
|
||||
_("Sorry, the date you entered is older than the item start time.");
|
||||
int type = 0, freq = 0;
|
||||
int item_nb;
|
||||
struct day_item_s *p;
|
||||
recur_apoint_llist_node_t *ra;
|
||||
struct recur_event_s *re;
|
||||
struct day_item *p;
|
||||
struct recur_apoint *ra;
|
||||
struct recur_event *re;
|
||||
long until, date;
|
||||
|
||||
item_nb = apoint_hilt ();
|
||||
@ -1035,12 +1029,12 @@ recur_repeat_item (conf_t *conf)
|
||||
* Read days for which recurrent items must not be repeated
|
||||
* (such days are called exceptions).
|
||||
*/
|
||||
struct days_s *
|
||||
struct days *
|
||||
recur_exc_scan (FILE *data_file)
|
||||
{
|
||||
int c = 0;
|
||||
struct tm day;
|
||||
struct days_s *exc_head, *exc;
|
||||
struct days *exc_head, *exc;
|
||||
|
||||
exc_head = 0;
|
||||
while ((c = getc (data_file)) == '!')
|
||||
@ -1056,7 +1050,7 @@ recur_exc_scan (FILE *data_file)
|
||||
day.tm_isdst = -1;
|
||||
day.tm_year -= 1900;
|
||||
day.tm_mon--;
|
||||
exc = mem_malloc (sizeof (struct days_s));
|
||||
exc = mem_malloc (sizeof (struct days));
|
||||
exc->st = mktime (&day);
|
||||
exc->next = exc_head;
|
||||
exc_head = exc;
|
||||
@ -1068,10 +1062,10 @@ recur_exc_scan (FILE *data_file)
|
||||
* Look in the appointment list if we have an item which starts before the item
|
||||
* stored in the notify_app structure (which is the next item to be notified).
|
||||
*/
|
||||
struct notify_app_s *
|
||||
recur_apoint_check_next (struct notify_app_s *app, long start, long day)
|
||||
struct notify_app *
|
||||
recur_apoint_check_next (struct notify_app *app, long start, long day)
|
||||
{
|
||||
recur_apoint_llist_node_t *i;
|
||||
struct recur_apoint *i;
|
||||
long real_recur_start_time;
|
||||
|
||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
||||
@ -1102,10 +1096,10 @@ recur_apoint_check_next (struct notify_app_s *app, long start, long day)
|
||||
}
|
||||
|
||||
/* Returns a structure containing the selected recurrent appointment. */
|
||||
recur_apoint_llist_node_t *
|
||||
struct recur_apoint *
|
||||
recur_get_apoint (long date, int num)
|
||||
{
|
||||
recur_apoint_llist_node_t *o;
|
||||
struct recur_apoint *o;
|
||||
int n = 0;
|
||||
|
||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
||||
@ -1128,10 +1122,10 @@ recur_get_apoint (long date, int num)
|
||||
}
|
||||
|
||||
/* Returns a structure containing the selected recurrent event. */
|
||||
struct recur_event_s *
|
||||
struct recur_event *
|
||||
recur_get_event (long date, int num)
|
||||
{
|
||||
struct recur_event_s *o;
|
||||
struct recur_event *o;
|
||||
int n = 0;
|
||||
|
||||
for (o = recur_elist; o != 0; o = o->next)
|
||||
@ -1156,7 +1150,7 @@ void
|
||||
recur_apoint_switch_notify (long date, int recur_nb)
|
||||
{
|
||||
int n, need_chk_notify;
|
||||
recur_apoint_llist_node_t *o;
|
||||
struct recur_apoint *o;
|
||||
|
||||
n = 0;
|
||||
need_chk_notify = 0;
|
||||
@ -1199,7 +1193,7 @@ recur_event_paste_item (void)
|
||||
bkp_cut_recur_event.rpt->until += time_shift;
|
||||
if (bkp_cut_recur_event.exc)
|
||||
{
|
||||
struct days_s *exc;
|
||||
struct days *exc;
|
||||
|
||||
for (exc = bkp_cut_recur_event.exc; exc != 0; exc = exc->next)
|
||||
exc->st += time_shift;
|
||||
@ -1229,7 +1223,7 @@ recur_apoint_paste_item (void)
|
||||
bkp_cut_recur_apoint.rpt->until += time_shift;
|
||||
if (bkp_cut_recur_apoint.exc)
|
||||
{
|
||||
struct days_s *exc;
|
||||
struct days *exc;
|
||||
|
||||
for (exc = bkp_cut_recur_apoint.exc; exc != 0; exc = exc->next)
|
||||
exc->st += time_shift;
|
||||
|
135
src/recur.h
135
src/recur.h
@ -1,135 +0,0 @@
|
||||
/* $calcurse: recur.h,v 1.27 2009/07/05 20:33:23 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_RECUR_H
|
||||
#define CALCURSE_RECUR_H
|
||||
|
||||
typedef enum
|
||||
{ RECUR_NO,
|
||||
RECUR_DAILY,
|
||||
RECUR_WEEKLY,
|
||||
RECUR_MONTHLY,
|
||||
RECUR_YEARLY,
|
||||
RECUR_TYPES
|
||||
}
|
||||
recur_types_t;
|
||||
|
||||
typedef struct days_s
|
||||
{
|
||||
struct days_s *next;
|
||||
long st; /* beggining of the considered day, in seconds */
|
||||
} days_t;
|
||||
|
||||
struct rpt_s
|
||||
{
|
||||
int type; /* repetition type, see RECUR_* defines */
|
||||
int freq; /* repetition frequence */
|
||||
long until; /* ending date for repeated event */
|
||||
};
|
||||
|
||||
typedef struct recur_apoint_llist_node
|
||||
{
|
||||
struct recur_apoint_llist_node *next;
|
||||
struct rpt_s *rpt; /* information about repetition */
|
||||
struct days_s *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 */
|
||||
}
|
||||
recur_apoint_llist_node_t;
|
||||
|
||||
typedef struct recur_apoint_llist
|
||||
{
|
||||
recur_apoint_llist_node_t *root;
|
||||
pthread_mutex_t mutex;
|
||||
}
|
||||
recur_apoint_llist_t;
|
||||
|
||||
struct recur_event_s
|
||||
{
|
||||
struct recur_event_s *next;
|
||||
struct rpt_s *rpt; /* information about repetition */
|
||||
struct days_s *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 */
|
||||
};
|
||||
|
||||
typedef void (*recur_cb_foreach_date_t)(FILE *, long, char *);
|
||||
|
||||
extern recur_apoint_llist_t *recur_alist_p;
|
||||
extern struct recur_event_s *recur_elist;
|
||||
|
||||
void recur_event_free_bkp (erase_flag_e);
|
||||
void recur_apoint_free_bkp (erase_flag_e);
|
||||
void recur_apoint_llist_init (void);
|
||||
void recur_apoint_llist_free (void);
|
||||
void recur_event_llist_free (void);
|
||||
recur_apoint_llist_node_t *recur_apoint_new (char *, char *, long, long, char,
|
||||
int, int, long, struct days_s **);
|
||||
struct recur_event_s *recur_event_new (char *, char *, long, int, int, int,
|
||||
long, struct days_s **);
|
||||
char recur_def2char (recur_types_t);
|
||||
int recur_char2def (char);
|
||||
recur_apoint_llist_node_t *recur_apoint_scan (FILE *, struct tm, struct tm,
|
||||
char, int, struct tm, char *,
|
||||
struct days_s **, char);
|
||||
struct recur_event_s *recur_event_scan (FILE *, struct tm, int, char,
|
||||
int, struct tm, char *,
|
||||
struct days_s **);
|
||||
void recur_save_data (FILE *);
|
||||
unsigned recur_item_inday (long, struct days_s *, int, int,
|
||||
long, long);
|
||||
void recur_event_erase (long, unsigned, unsigned,
|
||||
erase_flag_e);
|
||||
void recur_apoint_erase (long, unsigned, unsigned,
|
||||
erase_flag_e);
|
||||
void recur_repeat_item (conf_t *);
|
||||
struct days_s *recur_exc_scan (FILE *);
|
||||
struct notify_app_s *recur_apoint_check_next (struct notify_app_s *,
|
||||
long, long);
|
||||
recur_apoint_llist_node_t *recur_get_apoint (long, int);
|
||||
struct recur_event_s *recur_get_event (long, int);
|
||||
void recur_apoint_switch_notify (long, int);
|
||||
void recur_event_paste_item (void);
|
||||
void recur_apoint_paste_item (void);
|
||||
|
||||
#endif /* CALCURSE_RECUR_H */
|
@ -1,9 +1,9 @@
|
||||
/* $calcurse: sigs.c,v 1.10 2009/08/09 15:49:58 culot Exp $ */
|
||||
/* $calcurse: sigs.c,v 1.11 2010/03/20 10:54:48 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2007-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -41,10 +41,9 @@
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "utils.h"
|
||||
#include "sigs.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
/*
|
||||
* General signal handling routine.
|
||||
|
47
src/sigs.h
47
src/sigs.h
@ -1,47 +0,0 @@
|
||||
/* $calcurse: sigs.h,v 1.5 2009/07/19 16:51:36 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2007-2009 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_SIGS_H
|
||||
#define CALCURSE_SIGS_H
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
void sigs_init (void);
|
||||
unsigned sigs_set_hdlr (int, void (*)(int));
|
||||
|
||||
#endif /* CALCURSE_SIGS_H */
|
51
src/todo.c
51
src/todo.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: todo.c,v 1.35 2009/07/19 08:20:01 culot Exp $ */
|
||||
/* $calcurse: todo.c,v 1.36 2010/03/20 10:54:48 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -40,24 +40,19 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "custom.h"
|
||||
#include "keys.h"
|
||||
#include "i18n.h"
|
||||
#include "mem.h"
|
||||
#include "todo.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
struct todo_s *todolist;
|
||||
struct todo *todolist;
|
||||
static int hilt = 0;
|
||||
static int todos = 0;
|
||||
static int first = 1;
|
||||
static char *msgsav;
|
||||
|
||||
/* Returns a structure containing the selected item. */
|
||||
static struct todo_s *
|
||||
static struct todo *
|
||||
todo_get_item (int item_number)
|
||||
{
|
||||
struct todo_s *o;
|
||||
struct todo *o;
|
||||
int i;
|
||||
|
||||
o = todolist;
|
||||
@ -169,13 +164,13 @@ todo_new_item (void)
|
||||
/*
|
||||
* Add an item in the todo linked list.
|
||||
*/
|
||||
struct todo_s *
|
||||
struct todo *
|
||||
todo_add (char *mesg, int id, char *note)
|
||||
{
|
||||
struct todo_s *o, **i;
|
||||
struct todo *o, **i;
|
||||
int absid;
|
||||
|
||||
o = (struct todo_s *) mem_malloc (sizeof (struct todo_s));
|
||||
o = mem_malloc (sizeof (struct todo));
|
||||
o->mesg = mem_strdup (mesg);
|
||||
o->id = id;
|
||||
o->note = (note != NULL && note[0] != '\0') ? mem_strdup (note) : NULL;
|
||||
@ -205,7 +200,7 @@ static void
|
||||
todo_delete_note_bynum (unsigned num)
|
||||
{
|
||||
unsigned n;
|
||||
struct todo_s *i, **iptr;
|
||||
struct todo *i, **iptr;
|
||||
|
||||
n = 0;
|
||||
iptr = &todolist;
|
||||
@ -227,10 +222,10 @@ todo_delete_note_bynum (unsigned num)
|
||||
|
||||
/* Delete an item from the todo linked list. */
|
||||
static void
|
||||
todo_delete_bynum (unsigned num, erase_flag_e flag)
|
||||
todo_delete_bynum (unsigned num, enum eraseflg flag)
|
||||
{
|
||||
unsigned n;
|
||||
struct todo_s *i, **iptr;
|
||||
struct todo *i, **iptr;
|
||||
|
||||
n = 0;
|
||||
iptr = &todolist;
|
||||
@ -260,7 +255,7 @@ todo_delete_bynum (unsigned num, erase_flag_e flag)
|
||||
void
|
||||
todo_flag (void)
|
||||
{
|
||||
struct todo_s *t;
|
||||
struct todo *t;
|
||||
|
||||
t = todo_get_item (hilt);
|
||||
t->id = -t->id;
|
||||
@ -268,7 +263,7 @@ todo_flag (void)
|
||||
|
||||
/* Delete an item from the ToDo list. */
|
||||
void
|
||||
todo_delete (conf_t *conf)
|
||||
todo_delete (struct conf *conf)
|
||||
{
|
||||
char *choices = "[y/n] ";
|
||||
char *del_todo_str = _("Do you really want to delete this task ?");
|
||||
@ -336,12 +331,12 @@ todo_delete (conf_t *conf)
|
||||
|
||||
/*
|
||||
* Returns the position into the linked list corresponding to the
|
||||
* given todo_s item.
|
||||
* given todo item.
|
||||
*/
|
||||
static int
|
||||
todo_get_position (struct todo_s *i)
|
||||
todo_get_position (struct todo *i)
|
||||
{
|
||||
struct todo_s *o;
|
||||
struct todo *o;
|
||||
int n = 1, found = 0;
|
||||
|
||||
for (o = todolist; o; o = o->next)
|
||||
@ -368,7 +363,7 @@ todo_get_position (struct todo_s *i)
|
||||
void
|
||||
todo_chg_priority (int action)
|
||||
{
|
||||
struct todo_s *backup;
|
||||
struct todo *backup;
|
||||
char backup_mesg[BUFSIZ];
|
||||
int backup_id;
|
||||
char backup_note[NOTESIZ + 1];
|
||||
@ -405,7 +400,7 @@ todo_chg_priority (int action)
|
||||
void
|
||||
todo_edit_item (void)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
char *mesg = _("Enter the new ToDo description :");
|
||||
|
||||
status_mesg (mesg, "");
|
||||
@ -447,7 +442,7 @@ display_todo_item (int incolor, char *msg, int prio, int note, int len, int y,
|
||||
void
|
||||
todo_update_panel (int which_pan)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
int len = win[TOD].w - 8;
|
||||
int num_todo = 0;
|
||||
int y_offset = 3, x_offset = 1;
|
||||
@ -498,7 +493,7 @@ todo_update_panel (int which_pan)
|
||||
void
|
||||
todo_edit_note (char *editor)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
char fullname[BUFSIZ];
|
||||
char *filename;
|
||||
|
||||
@ -518,7 +513,7 @@ todo_edit_note (char *editor)
|
||||
void
|
||||
todo_view_note (char *pager)
|
||||
{
|
||||
struct todo_s *i;
|
||||
struct todo *i;
|
||||
char fullname[BUFSIZ];
|
||||
|
||||
i = todo_get_item (hilt);
|
||||
@ -531,7 +526,7 @@ todo_view_note (char *pager)
|
||||
void
|
||||
todo_free_list (void)
|
||||
{
|
||||
struct todo_s *o, **i;
|
||||
struct todo *o, **i;
|
||||
|
||||
i = &todolist;
|
||||
while (*i)
|
||||
|
74
src/todo.h
74
src/todo.h
@ -1,74 +0,0 @@
|
||||
/* $calcurse: todo.h,v 1.15 2009/07/05 20:33:24 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_TODO_H
|
||||
#define CALCURSE_TODO_H
|
||||
|
||||
struct todo_s
|
||||
{
|
||||
struct todo_s *next;
|
||||
char *mesg;
|
||||
int id;
|
||||
char *note;
|
||||
};
|
||||
|
||||
extern struct todo_s *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_s *todo_add (char *, int, char *);
|
||||
void todo_flag (void);
|
||||
void todo_delete (conf_t *);
|
||||
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);
|
||||
|
||||
#endif /* CALCURSE_TODO_H */
|
32
src/utils.c
32
src/utils.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: utils.c,v 1.82 2009/08/01 17:53:11 culot Exp $ */
|
||||
/* $calcurse: utils.c,v 1.83 2010/03/20 10:54:49 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -45,20 +45,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "i18n.h"
|
||||
#include "wins.h"
|
||||
#include "custom.h"
|
||||
#include "keys.h"
|
||||
#include "io.h"
|
||||
#include "recur.h"
|
||||
#include "event.h"
|
||||
#include "apoint.h"
|
||||
#include "todo.h"
|
||||
#include "day.h"
|
||||
#include "keys.h"
|
||||
#include "dmon.h"
|
||||
#include "mem.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
/* General routine to exit calcurse properly. */
|
||||
void
|
||||
@ -331,7 +318,7 @@ add_char (int pos, int ch, char *str)
|
||||
* environment, otherwise the cursor would move from place to place without
|
||||
* control.
|
||||
*/
|
||||
int
|
||||
enum getstr
|
||||
getstring (WINDOW *win, char *str, int l, int x, int y)
|
||||
{
|
||||
int ch, newpos, len = 0;
|
||||
@ -503,7 +490,7 @@ get_item_min (long date)
|
||||
}
|
||||
|
||||
long
|
||||
date2sec (date_t day, unsigned hour, unsigned min)
|
||||
date2sec (struct date day, unsigned hour, unsigned min)
|
||||
{
|
||||
struct tm start, *lt;
|
||||
time_t tstart, t;
|
||||
@ -622,7 +609,7 @@ update_time_in_date (long date, unsigned hr, unsigned mn)
|
||||
* If no date is entered, current date is chosen.
|
||||
*/
|
||||
long
|
||||
get_sec_date (date_t date)
|
||||
get_sec_date (struct date date)
|
||||
{
|
||||
struct tm *ptrtime;
|
||||
time_t timer;
|
||||
@ -752,7 +739,7 @@ get_today (void)
|
||||
struct tm *lt;
|
||||
time_t current_time;
|
||||
long current_day;
|
||||
date_t day;
|
||||
struct date day;
|
||||
|
||||
current_time = time (NULL);
|
||||
lt = localtime (¤t_time);
|
||||
@ -866,7 +853,7 @@ new_tempfile (const char *prefix, int trailing_len)
|
||||
|
||||
/* Erase a note previously attached to a todo, event or appointment. */
|
||||
void
|
||||
erase_note (char **note, erase_flag_e flag)
|
||||
erase_note (char **note, enum eraseflg flag)
|
||||
{
|
||||
char fullname[BUFSIZ];
|
||||
|
||||
@ -888,7 +875,8 @@ erase_note (char **note, erase_flag_e flag)
|
||||
* Returns 1 if sucessfully converted or 0 if the string is an invalid date.
|
||||
*/
|
||||
int
|
||||
parse_date (char *date_string, int datefmt, int *year, int *month, int *day)
|
||||
parse_date (char *date_string, enum datefmt datefmt, int *year, int *month,
|
||||
int *day)
|
||||
{
|
||||
int in1, in2, in3;
|
||||
int lyear, lmonth, lday;
|
||||
|
163
src/utils.h
163
src/utils.h
@ -1,163 +0,0 @@
|
||||
/* $calcurse: utils.h,v 1.49 2009/07/27 19:35:09 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2009 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_UTILS_H
|
||||
#define CALCURSE_UTILS_H
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "calendar.h"
|
||||
#include "vars.h"
|
||||
|
||||
#define MAX(x,y) ((x)>(y)?(x):(y))
|
||||
#define MIN(x,y) ((x)<(y)?(x):(y))
|
||||
|
||||
#define STRING_BUILD(str) {str, sizeof (str) - 1}
|
||||
|
||||
#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 STRINGIFY(x) #x
|
||||
#define TOSTRING(x) STRINGIFY(x)
|
||||
#define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__)
|
||||
|
||||
#define GETSTRING_VALID 0 /* value returned by getstring() if text is valid */
|
||||
#define GETSTRING_ESC 1 /* user pressed escape to cancel editing */
|
||||
#define GETSTRING_RET 2 /* return was pressed without entering any text */
|
||||
|
||||
typedef struct {
|
||||
const char *str;
|
||||
const int len;
|
||||
} string_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ERASE_DONT_FORCE,
|
||||
ERASE_FORCE,
|
||||
ERASE_FORCE_KEEP_NOTE,
|
||||
ERASE_FORCE_ONLY_NOTE,
|
||||
ERASE_CUT
|
||||
}
|
||||
erase_flag_e;
|
||||
|
||||
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 *);
|
||||
int 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 (date_t, 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 (date_t);
|
||||
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 **, erase_flag_e);
|
||||
int parse_date (char *, int, int *, int *, int *);
|
||||
char *str_toupper (char *);
|
||||
void file_close (FILE *, const char *);
|
||||
void psleep (unsigned);
|
||||
|
||||
#endif /* CALCURSE_UTILS_H */
|
22
src/vars.c
22
src/vars.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: vars.c,v 1.20 2009/08/01 13:31:21 culot Exp $ */
|
||||
/* $calcurse: vars.c,v 1.21 2010/03/20 10:54:49 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-2008 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2004-2008, 2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -39,13 +39,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "calendar.h"
|
||||
#include "custom.h"
|
||||
#include "wins.h"
|
||||
#include "keys.h"
|
||||
#include "mem.h"
|
||||
#include "vars.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
/*
|
||||
* variables to store window size
|
||||
@ -60,7 +54,7 @@ unsigned colorize = 0;
|
||||
* calcurse is running in command-line mode).
|
||||
* This is useful to konw how to display messages on the screen.
|
||||
*/
|
||||
ui_mode_e ui_mode = UI_CMDLINE;
|
||||
enum ui_mode ui_mode = UI_CMDLINE;
|
||||
|
||||
/*
|
||||
* variables to store calendar names
|
||||
@ -107,19 +101,19 @@ char path_dpid[] = "";
|
||||
char path_dmon_log[] = "";
|
||||
|
||||
/* Variable to handle pads. */
|
||||
struct pad_s apad;
|
||||
struct pad apad;
|
||||
|
||||
/* Variable to store notify-bar settings. */
|
||||
struct nbar_s nbar;
|
||||
struct nbar nbar;
|
||||
|
||||
/* Variable to store daemon configuration. */
|
||||
struct dmon_conf_s dmon;
|
||||
struct dmon_conf dmon;
|
||||
|
||||
/*
|
||||
* Variables init
|
||||
*/
|
||||
void
|
||||
vars_init (conf_t *conf)
|
||||
vars_init (struct conf *conf)
|
||||
{
|
||||
char *PATH_VI = "/usr/bin/vi";
|
||||
char *PATH_LESS = "/usr/bin/less";
|
||||
|
177
src/vars.h
177
src/vars.h
@ -1,177 +0,0 @@
|
||||
/* $calcurse: vars.h,v 1.38 2010/03/08 08:44:44 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2004-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_VARS_H
|
||||
#define CALCURSE_VARS_H
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif /* HAVE_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>
|
||||
|
||||
#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
|
||||
|
||||
enum {
|
||||
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"))))
|
||||
|
||||
typedef enum {
|
||||
UI_CURSES,
|
||||
UI_CMDLINE,
|
||||
UI_MODES
|
||||
} ui_mode_e;
|
||||
|
||||
struct pad_s
|
||||
{
|
||||
int width;
|
||||
int length;
|
||||
int first_onscreen; /* first line to be displayed inside window */
|
||||
WINDOW *ptrwin; /* pointer to the pad window */
|
||||
};
|
||||
|
||||
struct nbar_s
|
||||
{
|
||||
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;
|
||||
};
|
||||
|
||||
struct dmon_conf_s
|
||||
{
|
||||
unsigned enable; /* launch daemon automatically when exiting */
|
||||
unsigned log; /* log daemon activity */
|
||||
};
|
||||
|
||||
/* General configuration variables */
|
||||
typedef struct
|
||||
{
|
||||
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 */
|
||||
}
|
||||
conf_t;
|
||||
|
||||
extern int col, row;
|
||||
extern unsigned colorize;
|
||||
extern ui_mode_e 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_s apad;
|
||||
extern struct nbar_s nbar;
|
||||
extern struct dmon_conf_s dmon;
|
||||
|
||||
void vars_init (conf_t *);
|
||||
|
||||
#endif /* CALCURSE_VARS_H */
|
109
src/wins.c
109
src/wins.c
@ -1,9 +1,9 @@
|
||||
/* $calcurse: wins.c,v 1.28 2009/10/28 13:23:05 culot Exp $ */
|
||||
/* $calcurse: wins.c,v 1.29 2010/03/20 10:54:49 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2007-2009 Frederic Culot <frederic@culot.org>
|
||||
* Copyright (c) 2007-2010 Frederic Culot <frederic@culot.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -40,19 +40,12 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "i18n.h"
|
||||
#include "keys.h"
|
||||
#include "notify.h"
|
||||
#include "utils.h"
|
||||
#include "todo.h"
|
||||
#include "custom.h"
|
||||
#include "mem.h"
|
||||
#include "wins.h"
|
||||
#include "calcurse.h"
|
||||
|
||||
/* Variables to handle calcurse windows. */
|
||||
window_t win[NBWINS];
|
||||
struct window win[NBWINS];
|
||||
|
||||
static window_e slctd_win;
|
||||
static enum win slctd_win;
|
||||
static int layout;
|
||||
|
||||
/* Get the current layout. */
|
||||
@ -77,7 +70,7 @@ wins_slctd_init (void)
|
||||
}
|
||||
|
||||
/* Returns an enum which corresponds to the window which is selected. */
|
||||
window_e
|
||||
enum win
|
||||
wins_slctd (void)
|
||||
{
|
||||
return (slctd_win);
|
||||
@ -85,7 +78,7 @@ wins_slctd (void)
|
||||
|
||||
/* Sets the selected window. */
|
||||
void
|
||||
wins_slctd_set (window_e window)
|
||||
wins_slctd_set (enum win window)
|
||||
{
|
||||
slctd_win = window;
|
||||
}
|
||||
@ -141,7 +134,7 @@ wins_init (void)
|
||||
* scrolling faster.
|
||||
*/
|
||||
void
|
||||
wins_scrollwin_init (scrollwin_t *sw)
|
||||
wins_scrollwin_init (struct scrollwin *sw)
|
||||
{
|
||||
EXIT_IF (sw == 0, "null pointer");
|
||||
sw->win.p = newwin (sw->win.h, sw->win.w, sw->win.y, sw->win.x);
|
||||
@ -152,7 +145,7 @@ wins_scrollwin_init (scrollwin_t *sw)
|
||||
|
||||
/* Free an already created scrollwin. */
|
||||
void
|
||||
wins_scrollwin_delete (scrollwin_t *sw)
|
||||
wins_scrollwin_delete (struct scrollwin *sw)
|
||||
{
|
||||
EXIT_IF (sw == 0, "null pointer");
|
||||
delwin(sw->win.p);
|
||||
@ -161,7 +154,7 @@ wins_scrollwin_delete (scrollwin_t *sw)
|
||||
|
||||
/* Display a scrolling window. */
|
||||
void
|
||||
wins_scrollwin_display (scrollwin_t *sw)
|
||||
wins_scrollwin_display (struct scrollwin *sw)
|
||||
{
|
||||
const int visible_lines = sw->win.h - sw->pad.y - 1;
|
||||
|
||||
@ -185,14 +178,14 @@ wins_scrollwin_display (scrollwin_t *sw)
|
||||
}
|
||||
|
||||
void
|
||||
wins_scrollwin_up (scrollwin_t *sw, int amount)
|
||||
wins_scrollwin_up (struct scrollwin *sw, int amount)
|
||||
{
|
||||
if (sw->first_visible_line > 0)
|
||||
sw->first_visible_line -= amount;
|
||||
}
|
||||
|
||||
void
|
||||
wins_scrollwin_down (scrollwin_t *sw, int amount)
|
||||
wins_scrollwin_down (struct scrollwin *sw, int amount)
|
||||
{
|
||||
if (sw->total_lines
|
||||
> (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
|
||||
@ -512,50 +505,50 @@ void
|
||||
wins_status_bar (void)
|
||||
{
|
||||
#define NB_PANELS 3 /* 3 panels: CALENDAR, APPOINTMENT, TODO */
|
||||
window_e which_pan;
|
||||
enum win which_pan;
|
||||
int start, end;
|
||||
const int pos[NB_PANELS + 1] =
|
||||
{ 0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS };
|
||||
|
||||
binding_t help = {_("Help"), KEY_GENERIC_HELP};
|
||||
binding_t quit = {_("Quit"), KEY_GENERIC_QUIT};
|
||||
binding_t save = {_("Save"), KEY_GENERIC_SAVE};
|
||||
binding_t cut = {_("Cut"), KEY_GENERIC_CUT};
|
||||
binding_t paste = {_("Paste"), KEY_GENERIC_PASTE};
|
||||
binding_t chgvu = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
|
||||
binding_t import = {_("Import"), KEY_GENERIC_IMPORT};
|
||||
binding_t export = {_("Export"), KEY_GENERIC_EXPORT};
|
||||
binding_t togo = {_("Go to"), KEY_GENERIC_GOTO};
|
||||
binding_t othr = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
|
||||
binding_t conf = {_("Config"), KEY_GENERIC_CONFIG_MENU};
|
||||
binding_t draw = {_("Redraw"), KEY_GENERIC_REDRAW};
|
||||
binding_t appt = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
|
||||
binding_t todo = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
|
||||
binding_t gnday = {_("+1 Day"), KEY_GENERIC_NEXT_DAY};
|
||||
binding_t gpday = {_("-1 Day"), KEY_GENERIC_PREV_DAY};
|
||||
binding_t gnweek = {_("+1 Week"), KEY_GENERIC_NEXT_WEEK};
|
||||
binding_t gpweek = {_("-1 Week"), KEY_GENERIC_PREV_WEEK};
|
||||
binding_t today = {_("Today"), KEY_GENERIC_GOTO_TODAY};
|
||||
binding_t nview = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
|
||||
binding_t pview = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
|
||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
binding_t weekb = {_("beg Week"), KEY_START_OF_WEEK};
|
||||
binding_t weeke = {_("end Week"), KEY_END_OF_WEEK};
|
||||
binding_t add = {_("Add Item"), KEY_ADD_ITEM};
|
||||
binding_t del = {_("Del Item"), KEY_DEL_ITEM};
|
||||
binding_t edit = {_("Edit Itm"), KEY_EDIT_ITEM};
|
||||
binding_t view = {_("View"), KEY_VIEW_ITEM};
|
||||
binding_t flag = {_("Flag Itm"), KEY_FLAG_ITEM};
|
||||
binding_t rept = {_("Repeat"), KEY_REPEAT_ITEM};
|
||||
binding_t enote = {_("EditNote"), KEY_EDIT_NOTE};
|
||||
binding_t vnote = {_("ViewNote"), KEY_VIEW_NOTE};
|
||||
binding_t rprio = {_("Prio.+"), KEY_RAISE_PRIORITY};
|
||||
binding_t lprio = {_("Prio.-"), KEY_LOWER_PRIORITY};
|
||||
struct binding help = {_("Help"), KEY_GENERIC_HELP};
|
||||
struct binding quit = {_("Quit"), KEY_GENERIC_QUIT};
|
||||
struct binding save = {_("Save"), KEY_GENERIC_SAVE};
|
||||
struct binding cut = {_("Cut"), KEY_GENERIC_CUT};
|
||||
struct binding paste = {_("Paste"), KEY_GENERIC_PASTE};
|
||||
struct binding chgvu = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
|
||||
struct binding import = {_("Import"), KEY_GENERIC_IMPORT};
|
||||
struct binding export = {_("Export"), KEY_GENERIC_EXPORT};
|
||||
struct binding togo = {_("Go to"), KEY_GENERIC_GOTO};
|
||||
struct binding othr = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
|
||||
struct binding conf = {_("Config"), KEY_GENERIC_CONFIG_MENU};
|
||||
struct binding draw = {_("Redraw"), KEY_GENERIC_REDRAW};
|
||||
struct binding appt = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
|
||||
struct binding todo = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
|
||||
struct binding gnday = {_("+1 Day"), KEY_GENERIC_NEXT_DAY};
|
||||
struct binding gpday = {_("-1 Day"), KEY_GENERIC_PREV_DAY};
|
||||
struct binding gnweek = {_("+1 Week"), KEY_GENERIC_NEXT_WEEK};
|
||||
struct binding gpweek = {_("-1 Week"), KEY_GENERIC_PREV_WEEK};
|
||||
struct binding today = {_("Today"), KEY_GENERIC_GOTO_TODAY};
|
||||
struct binding nview = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
|
||||
struct binding pview = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
|
||||
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||
struct binding weekb = {_("beg Week"), KEY_START_OF_WEEK};
|
||||
struct binding weeke = {_("end Week"), KEY_END_OF_WEEK};
|
||||
struct binding add = {_("Add Item"), KEY_ADD_ITEM};
|
||||
struct binding del = {_("Del Item"), KEY_DEL_ITEM};
|
||||
struct binding edit = {_("Edit Itm"), KEY_EDIT_ITEM};
|
||||
struct binding view = {_("View"), KEY_VIEW_ITEM};
|
||||
struct binding flag = {_("Flag Itm"), KEY_FLAG_ITEM};
|
||||
struct binding rept = {_("Repeat"), KEY_REPEAT_ITEM};
|
||||
struct binding enote = {_("EditNote"), KEY_EDIT_NOTE};
|
||||
struct binding vnote = {_("ViewNote"), KEY_VIEW_NOTE};
|
||||
struct binding rprio = {_("Prio.+"), KEY_RAISE_PRIORITY};
|
||||
struct binding lprio = {_("Prio.-"), KEY_LOWER_PRIORITY};
|
||||
|
||||
binding_t *binding[TOTAL_CMDS] = {
|
||||
struct binding *binding[TOTAL_CMDS] = {
|
||||
/* calendar keys */
|
||||
&help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right,
|
||||
&togo, &othr, &import, &export, &weekb, &weeke, &appt, &todo,
|
||||
|
100
src/wins.h
100
src/wins.h
@ -1,100 +0,0 @@
|
||||
/* $calcurse: wins.h,v 1.12 2009/07/05 20:33:26 culot Exp $ */
|
||||
|
||||
/*
|
||||
* Calcurse - text-based organizer
|
||||
*
|
||||
* Copyright (c) 2007-2009 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_WINS_H
|
||||
#define CALCURSE_WINS_H
|
||||
|
||||
#include "vars.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CAL,
|
||||
APP,
|
||||
TOD,
|
||||
NOT,
|
||||
STA,
|
||||
NBWINS
|
||||
}
|
||||
window_e;
|
||||
|
||||
/* Generic window structure. */
|
||||
typedef struct
|
||||
{
|
||||
WINDOW *p; /* pointer to window */
|
||||
unsigned w; /* width */
|
||||
unsigned h; /* height */
|
||||
int x; /* x position */
|
||||
int y; /* y position */
|
||||
} window_t;
|
||||
|
||||
/* Generic scrolling window structure. */
|
||||
typedef struct
|
||||
{
|
||||
window_t win;
|
||||
window_t pad;
|
||||
unsigned first_visible_line;
|
||||
unsigned total_lines;
|
||||
char label[BUFSIZ];
|
||||
} scrollwin_t;
|
||||
|
||||
extern window_t win[NBWINS];
|
||||
|
||||
int wins_layout (void);
|
||||
void wins_set_layout (int);
|
||||
void wins_slctd_init (void);
|
||||
window_e wins_slctd (void);
|
||||
void wins_slctd_set (window_e);
|
||||
void wins_slctd_next (void);
|
||||
void wins_init (void);
|
||||
void wins_scrollwin_init (scrollwin_t *);
|
||||
void wins_scrollwin_delete (scrollwin_t *);
|
||||
void wins_scrollwin_display (scrollwin_t *);
|
||||
void wins_scrollwin_up (scrollwin_t *, int);
|
||||
void wins_scrollwin_down (scrollwin_t *, 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_WINS_H */
|
Loading…
x
Reference in New Issue
Block a user