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>
|
2010-03-19 Frederic Culot <frederic@culot.org>
|
||||||
|
|
||||||
* TODO: list updated
|
* 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
|
AUTOMAKE_OPTIONS= foreign
|
||||||
|
|
||||||
bin_PROGRAMS= calcurse
|
bin_PROGRAMS= calcurse
|
||||||
|
|
||||||
calcurse_SOURCES= \
|
calcurse_SOURCES= \
|
||||||
calcurse.c i18n.h htable.h \
|
calcurse.c calcurse.h htable.h \
|
||||||
apoint.c apoint.h \
|
apoint.c \
|
||||||
args.c args.h \
|
args.c \
|
||||||
calendar.c calendar.h \
|
calendar.c \
|
||||||
custom.c custom.h \
|
custom.c \
|
||||||
day.c day.h \
|
day.c \
|
||||||
event.c event.h \
|
event.c \
|
||||||
help.c help.h \
|
help.c \
|
||||||
io.c io.h \
|
io.c \
|
||||||
keys.c keys.h \
|
keys.c \
|
||||||
notify.c notify.h \
|
notify.c \
|
||||||
recur.c recur.h \
|
recur.c \
|
||||||
sigs.c sigs.h \
|
sigs.c \
|
||||||
todo.c todo.h \
|
todo.c \
|
||||||
utils.c utils.h \
|
utils.c \
|
||||||
vars.c vars.h \
|
vars.c \
|
||||||
wins.c wins.h \
|
wins.c \
|
||||||
mem.c mem.h \
|
mem.c \
|
||||||
dmon.c dmon.h
|
dmon.c
|
||||||
|
|
||||||
LDADD= @LTLIBINTL@
|
LDADD= @LTLIBINTL@
|
||||||
|
|
||||||
|
77
src/apoint.c
77
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,24 +41,14 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.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"
|
|
||||||
|
|
||||||
apoint_llist_t *alist_p;
|
struct apoint_list *alist_p;
|
||||||
static apoint_llist_node_t bkp_cut_apoint;
|
static struct apoint bkp_cut_apoint;
|
||||||
static int hilt;
|
static int hilt;
|
||||||
|
|
||||||
void
|
void
|
||||||
apoint_free_bkp (erase_flag_e flag)
|
apoint_free_bkp (enum eraseflg flag)
|
||||||
{
|
{
|
||||||
if (bkp_cut_apoint.mesg)
|
if (bkp_cut_apoint.mesg)
|
||||||
{
|
{
|
||||||
@ -69,7 +59,7 @@ apoint_free_bkp (erase_flag_e flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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"));
|
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||||
|
|
||||||
@ -84,7 +74,7 @@ apoint_dup (apoint_llist_node_t *in, apoint_llist_node_t *bkp)
|
|||||||
void
|
void
|
||||||
apoint_llist_init (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;
|
alist_p->root = NULL;
|
||||||
pthread_mutex_init (&(alist_p->mutex), NULL);
|
pthread_mutex_init (&(alist_p->mutex), NULL);
|
||||||
}
|
}
|
||||||
@ -97,7 +87,7 @@ apoint_llist_init (void)
|
|||||||
void
|
void
|
||||||
apoint_llist_free (void)
|
apoint_llist_free (void)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *o, **i;
|
struct apoint *o, **i;
|
||||||
|
|
||||||
i = &alist_p->root;
|
i = &alist_p->root;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -137,12 +127,12 @@ apoint_hilt (void)
|
|||||||
return (hilt);
|
return (hilt);
|
||||||
}
|
}
|
||||||
|
|
||||||
apoint_llist_node_t *
|
struct apoint *
|
||||||
apoint_new (char *mesg, char *note, long start, long dur, char state)
|
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->mesg = mem_strdup (mesg);
|
||||||
o->note = (note != NULL) ? mem_strdup (note) : NULL;
|
o->note = (note != NULL) ? mem_strdup (note) : NULL;
|
||||||
o->state = state;
|
o->state = state;
|
||||||
@ -280,7 +270,7 @@ apoint_add (void)
|
|||||||
|
|
||||||
/* Delete an item from the appointment list. */
|
/* Delete an item from the appointment list. */
|
||||||
void
|
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 *choices = "[y/n] ";
|
||||||
char *del_app_str = _("Do you really want to delete this item ?");
|
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
|
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)
|
if (i->start <= start + DAYINSEC && i->start + i->dur > start)
|
||||||
{
|
{
|
||||||
@ -408,8 +398,7 @@ apoint_inday (apoint_llist_node_t *i, long start)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
|
apoint_sec2str (struct apoint *o, int type, long day, char *start, char *end)
|
||||||
char *end)
|
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
@ -433,7 +422,7 @@ apoint_sec2str (apoint_llist_node_t *o, int type, long day, char *start,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
apoint_write (apoint_llist_node_t *o, FILE *f)
|
apoint_write (struct apoint *o, FILE *f)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
@ -461,7 +450,7 @@ apoint_write (apoint_llist_node_t *o, FILE *f)
|
|||||||
(void)fprintf (f, "%s\n", o->mesg);
|
(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)
|
apoint_scan (FILE *f, struct tm start, struct tm end, char state, char *note)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZ], *newline;
|
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. */
|
/* 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_get (long day, int pos)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *o;
|
struct apoint *o;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
@ -513,11 +502,11 @@ apoint_get (long day, int pos)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
apoint_delete_bynum (long start, unsigned num, erase_flag_e flag)
|
apoint_delete_bynum (long start, unsigned num, enum eraseflg flag)
|
||||||
{
|
{
|
||||||
unsigned n;
|
unsigned n;
|
||||||
int need_check_notify = 0;
|
int need_check_notify = 0;
|
||||||
apoint_llist_node_t *i, **iptr;
|
struct apoint *i, **iptr;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
pthread_mutex_lock (&(alist_p->mutex));
|
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
|
* 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).
|
* stored in the notify_app structure (which is the next item to be notified).
|
||||||
*/
|
*/
|
||||||
struct notify_app_s *
|
struct notify_app *
|
||||||
apoint_check_next (struct notify_app_s *app, long start)
|
apoint_check_next (struct notify_app *app, long start)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *i;
|
struct apoint *i;
|
||||||
|
|
||||||
pthread_mutex_lock (&(alist_p->mutex));
|
pthread_mutex_lock (&(alist_p->mutex));
|
||||||
for (i = alist_p->root; i != 0; i = i->next)
|
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
|
* recur_apoint_s
|
||||||
*/
|
*/
|
||||||
apoint_llist_node_t *
|
struct apoint *
|
||||||
apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
|
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->mesg = mem_strdup (p->mesg);
|
||||||
a->start = p->start;
|
a->start = p->start;
|
||||||
a->dur = p->dur;
|
a->dur = p->dur;
|
||||||
@ -674,8 +663,8 @@ apoint_recur_s2apoint_s (recur_apoint_llist_node_t *p)
|
|||||||
void
|
void
|
||||||
apoint_switch_notify (void)
|
apoint_switch_notify (void)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *apoint;
|
struct apoint *apoint;
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
long date;
|
long date;
|
||||||
int apoint_nb = 0, n, need_chk_notify;
|
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_width = win[APP].w - bordr;
|
||||||
int app_length = win[APP].h - bordr - title_lines;
|
int app_length = win[APP].h - bordr - title_lines;
|
||||||
long date;
|
long date;
|
||||||
date_t slctd_date;
|
struct date slctd_date;
|
||||||
|
|
||||||
/* variable inits */
|
/* variable inits */
|
||||||
slctd_date = *calendar_get_slctd_day ();
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -45,20 +45,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <regex.h>
|
#include <regex.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.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 */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print Calcurse usage and exit.
|
* Print Calcurse usage and exit.
|
||||||
@ -257,7 +244,7 @@ print_notefile (FILE *out, char *filename, int nbtab)
|
|||||||
static void
|
static void
|
||||||
todo_arg (int priority, int print_note, regex_t *regex)
|
todo_arg (int priority, int print_note, regex_t *regex)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
int title = 1;
|
int title = 1;
|
||||||
char *titlestr, priority_str[BUFSIZ] = "";
|
char *titlestr, priority_str[BUFSIZ] = "";
|
||||||
char *all_todos_title = _("to do:\n");
|
char *all_todos_title = _("to do:\n");
|
||||||
@ -313,7 +300,7 @@ todo_arg (int priority, int print_note, regex_t *regex)
|
|||||||
static void
|
static void
|
||||||
next_arg (void)
|
next_arg (void)
|
||||||
{
|
{
|
||||||
struct notify_app_s next_app;
|
struct notify_app next_app;
|
||||||
const long current_time = now ();
|
const long current_time = now ();
|
||||||
int time_left, hours_left, min_left;
|
int time_left, hours_left, min_left;
|
||||||
char mesg[BUFSIZ];
|
char mesg[BUFSIZ];
|
||||||
@ -342,7 +329,7 @@ next_arg (void)
|
|||||||
* Print the date on stdout.
|
* Print the date on stdout.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
arg_print_date (long date, conf_t *conf)
|
arg_print_date (long date, struct conf *conf)
|
||||||
{
|
{
|
||||||
char date_str[BUFSIZ];
|
char date_str[BUFSIZ];
|
||||||
time_t t;
|
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.
|
* If regex is not null, only the matching appointments or events are printed.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
app_arg (int add_line, date_t *day, long date, int print_note, conf_t *conf,
|
app_arg (int add_line, struct date *day, long date, int print_note,
|
||||||
regex_t *regex)
|
struct conf *conf, regex_t *regex)
|
||||||
{
|
{
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
struct event_s *j;
|
struct event *j;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
apoint_llist_node_t *i;
|
struct apoint *i;
|
||||||
long today;
|
long today;
|
||||||
unsigned print_date = 1;
|
unsigned print_date = 1;
|
||||||
int app_found = 0;
|
int app_found = 0;
|
||||||
char apoint_start_time[100];
|
char apoint_start_time[HRMIN_SIZE];
|
||||||
char apoint_end_time[100];
|
char apoint_end_time[HRMIN_SIZE];
|
||||||
|
|
||||||
if (date == 0)
|
if (date == 0)
|
||||||
today = get_sec_date (*day);
|
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,
|
if (recur_item_inday (ra->start, ra->exc, ra->rpt->type, ra->rpt->freq,
|
||||||
ra->rpt->until, today))
|
ra->rpt->until, today))
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *apt;
|
struct apoint *apt;
|
||||||
|
|
||||||
if (regex && regexec (regex, ra->mesg, 0, 0, 0) != 0)
|
if (regex && regexec (regex, ra->mesg, 0, 0, 0) != 0)
|
||||||
continue;
|
continue;
|
||||||
@ -531,10 +518,10 @@ more_info (void)
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
display_app (struct tm *t, int numdays, int add_line, int print_note,
|
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;
|
int i, app_found;
|
||||||
date_t day;
|
struct date day;
|
||||||
|
|
||||||
for (i = 0; i < numdays; i++)
|
for (i = 0; i < numdays; i++)
|
||||||
{
|
{
|
||||||
@ -554,11 +541,11 @@ display_app (struct tm *t, int numdays, int add_line, int print_note,
|
|||||||
* days.
|
* days.
|
||||||
*/
|
*/
|
||||||
static void
|
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)
|
regex_t *regex)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
date_t day;
|
struct date day;
|
||||||
int numdays = 0, num_digit = 0;
|
int numdays = 0, num_digit = 0;
|
||||||
int arg_len = 0, app_found = 0;
|
int arg_len = 0, app_found = 0;
|
||||||
static struct tm t;
|
static struct tm t;
|
||||||
@ -618,7 +605,7 @@ date_arg (char *ddate, int add_line, int print_note, conf_t *conf,
|
|||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
date_arg_extended (char *startday, char *range, int add_line, int print_note,
|
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;
|
int i, numdays = 1, error = 0, arg_len = 0;
|
||||||
static struct tm t;
|
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.
|
* routines to handle those arguments. Also initialize the data paths.
|
||||||
*/
|
*/
|
||||||
int
|
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 ch, add_line = 0;
|
||||||
int unknown_flag = 0, app_found = 0;
|
int unknown_flag = 0, app_found = 0;
|
||||||
@ -954,7 +941,7 @@ parse_args (int argc, char **argv, conf_t *conf)
|
|||||||
}
|
}
|
||||||
else if (aflag)
|
else if (aflag)
|
||||||
{
|
{
|
||||||
date_t day;
|
struct date day;
|
||||||
|
|
||||||
io_check_file (path_apts, (int *)0);
|
io_check_file (path_apts, (int *)0);
|
||||||
io_check_file (path_conf, (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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -38,22 +38,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#include "calcurse.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"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse is a text-based personal organizer which helps keeping track
|
* Calcurse is a text-based personal organizer which helps keeping track
|
||||||
@ -65,8 +50,8 @@
|
|||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
conf_t conf;
|
struct conf conf;
|
||||||
day_items_nb_t inday;
|
struct day_items_nb inday;
|
||||||
int background, foreground;
|
int background, foreground;
|
||||||
int non_interactive;
|
int non_interactive;
|
||||||
int no_data_file = 1;
|
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
|
* Calcurse - text-based organizer
|
||||||
@ -43,15 +43,7 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.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"
|
|
||||||
|
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265358979323846
|
#define M_PI 3.14159265358979323846
|
||||||
@ -73,14 +65,24 @@ enum {
|
|||||||
CAL_VIEWS
|
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 unsigned calendar_view, week_begins_on_monday;
|
||||||
static pthread_mutex_t date_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t date_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||||
static pthread_t calendar_t_date;
|
static pthread_t calendar_t_date;
|
||||||
|
|
||||||
static void draw_monthly_view (window_t *, date_t *, unsigned);
|
static void draw_monthly_view (struct window *, struct date *, unsigned);
|
||||||
static void draw_weekly_view (window_t *, date_t *, unsigned);
|
static void draw_weekly_view (struct window *, struct date *, unsigned);
|
||||||
static void (*draw_calendar[CAL_VIEWS]) (window_t *, date_t *, unsigned) =
|
static void (*draw_calendar[CAL_VIEWS]) (struct window *, struct date *,
|
||||||
|
unsigned) =
|
||||||
{draw_monthly_view, draw_weekly_view};
|
{draw_monthly_view, draw_weekly_view};
|
||||||
|
|
||||||
/* Switch between calendar views (monthly view is selected by default). */
|
/* 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. */
|
/* Needed to display sunday or monday as the first day of week in calendar. */
|
||||||
void
|
void
|
||||||
calendar_set_first_day_of_week (wday_e first_day)
|
calendar_set_first_day_of_week (enum wday first_day)
|
||||||
{
|
{
|
||||||
switch (first_day)
|
switch (first_day)
|
||||||
{
|
{
|
||||||
@ -200,7 +202,7 @@ calendar_week_begins_on_monday (void)
|
|||||||
|
|
||||||
/* Fill in the given variable with the current date. */
|
/* Fill in the given variable with the current date. */
|
||||||
void
|
void
|
||||||
calendar_store_current_date (date_t *date)
|
calendar_store_current_date (struct date *date)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock (&date_thread_mutex);
|
pthread_mutex_lock (&date_thread_mutex);
|
||||||
*date = today;
|
*date = today;
|
||||||
@ -215,7 +217,7 @@ calendar_init_slctd_day (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Return the selected day in calendar */
|
/* Return the selected day in calendar */
|
||||||
date_t *
|
struct date *
|
||||||
calendar_get_slctd_day (void)
|
calendar_get_slctd_day (void)
|
||||||
{
|
{
|
||||||
return (&slctd_day);
|
return (&slctd_day);
|
||||||
@ -229,7 +231,7 @@ calendar_get_slctd_day_sec (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
calendar_get_wday (date_t *date)
|
calendar_get_wday (struct date *date)
|
||||||
{
|
{
|
||||||
struct tm t;
|
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. */
|
/* Draw the monthly view inside calendar panel. */
|
||||||
static void
|
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;
|
int c_day, c_day_1, day_1_sav, numdays, j;
|
||||||
unsigned yr, mo;
|
unsigned yr, mo;
|
||||||
int ofs_x, ofs_y;
|
int ofs_x, ofs_y;
|
||||||
@ -472,7 +474,7 @@ ISO8601weeknum (const struct tm *t)
|
|||||||
|
|
||||||
/* Draw the weekly view inside calendar panel. */
|
/* Draw the weekly view inside calendar panel. */
|
||||||
static void
|
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;
|
int j, c_wday, days_to_remove, weeknum;
|
||||||
struct tm t;
|
struct tm t;
|
||||||
@ -502,7 +504,7 @@ draw_weekly_view (window_t *cwin, date_t *current_day, unsigned sunday_first)
|
|||||||
/* Now draw calendar view. */
|
/* Now draw calendar view. */
|
||||||
for (j = 0; j < WEEKINDAYS; j++)
|
for (j = 0; j < WEEKINDAYS; j++)
|
||||||
{
|
{
|
||||||
date_t date;
|
struct date date;
|
||||||
unsigned attr, item_this_day;
|
unsigned attr, item_this_day;
|
||||||
int i, slices[DAYSLICESNO];
|
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. */
|
/* Function used to display the calendar panel. */
|
||||||
void
|
void
|
||||||
calendar_update_panel (window_t *cwin)
|
calendar_update_panel (struct window *cwin)
|
||||||
{
|
{
|
||||||
date_t current_day;
|
struct date current_day;
|
||||||
unsigned sunday_first;
|
unsigned sunday_first;
|
||||||
|
|
||||||
calendar_store_current_date (¤t_day);
|
calendar_store_current_date (¤t_day);
|
||||||
@ -596,7 +598,7 @@ calendar_update_panel (window_t *cwin)
|
|||||||
void
|
void
|
||||||
calendar_goto_today (void)
|
calendar_goto_today (void)
|
||||||
{
|
{
|
||||||
date_t today;
|
struct date today;
|
||||||
|
|
||||||
calendar_store_current_date (&today);
|
calendar_store_current_date (&today);
|
||||||
slctd_day.dd = today.dd;
|
slctd_day.dd = today.dd;
|
||||||
@ -661,7 +663,7 @@ calendar_change_day (int datefmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
calendar_move (move_t move)
|
calendar_move (enum move move)
|
||||||
{
|
{
|
||||||
int ret, days_to_remove, days_to_add;
|
int ret, days_to_remove, days_to_add;
|
||||||
struct tm t;
|
struct tm t;
|
||||||
@ -882,7 +884,7 @@ pom (time_t tmpt)
|
|||||||
struct tm *GMT;
|
struct tm *GMT;
|
||||||
double days;
|
double days;
|
||||||
int cnt;
|
int cnt;
|
||||||
pom_e pom;
|
enum pom pom;
|
||||||
|
|
||||||
pom = NO_POM;
|
pom = NO_POM;
|
||||||
GMT = gmtime (&tmpt);
|
GMT = gmtime (&tmpt);
|
||||||
@ -906,7 +908,7 @@ char *
|
|||||||
calendar_get_pom (time_t date)
|
calendar_get_pom (time_t date)
|
||||||
{
|
{
|
||||||
char *pom_pict[MOON_PHASES] = { " ", "|) ", "(|)", "(| ", " | " };
|
char *pom_pict[MOON_PHASES] = { " ", "|) ", "(|)", "(| ", " | " };
|
||||||
pom_e phase = NO_POM;
|
enum pom phase = NO_POM;
|
||||||
double pom_today, relative_pom, pom_yesterday, pom_tomorrow;
|
double pom_today, relative_pom, pom_yesterday, pom_tomorrow;
|
||||||
const double half = 50.0;
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -40,20 +40,39 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#include "calcurse.h"
|
||||||
#include "config.h"
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
#include "i18n.h"
|
/* Available configuration variables. */
|
||||||
#include "io.h"
|
enum {
|
||||||
#include "utils.h"
|
CUSTOM_CONF_NOVARIABLE,
|
||||||
#include "keys.h"
|
CUSTOM_CONF_AUTOSAVE,
|
||||||
#include "apoint.h"
|
CUSTOM_CONF_PERIODICSAVE,
|
||||||
#include "help.h"
|
CUSTOM_CONF_CONFIRMQUIT,
|
||||||
#include "mem.h"
|
CUSTOM_CONF_CONFIRMDELETE,
|
||||||
#include "custom.h"
|
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
|
static unsigned
|
||||||
fill_config_var (char *string)
|
fill_config_var (char *string)
|
||||||
@ -217,7 +236,7 @@ custom_remove_attr (WINDOW *win, int attr_num)
|
|||||||
|
|
||||||
/* Load the user configuration. */
|
/* Load the user configuration. */
|
||||||
void
|
void
|
||||||
custom_load_conf (conf_t *conf, int background)
|
custom_load_conf (struct conf *conf, int background)
|
||||||
{
|
{
|
||||||
FILE *data_file;
|
FILE *data_file;
|
||||||
char *mesg_line1 = _("Failed to open config file");
|
char *mesg_line1 = _("Failed to open config file");
|
||||||
@ -412,15 +431,15 @@ custom_config_bar (void)
|
|||||||
static void
|
static void
|
||||||
layout_selection_bar (void)
|
layout_selection_bar (void)
|
||||||
{
|
{
|
||||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||||
binding_t select = {_("Select"), KEY_GENERIC_SELECT};
|
struct binding select = {_("Select"), KEY_GENERIC_SELECT};
|
||||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||||
binding_t help = {_("Help"), KEY_GENERIC_HELP};
|
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]);
|
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||||
|
|
||||||
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
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. */
|
/* Used to display available layouts in layout configuration menu. */
|
||||||
static void
|
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 CURSOR (32 | A_REVERSE)
|
||||||
#define MARK 88
|
#define MARK 88
|
||||||
@ -500,8 +520,8 @@ display_layout_config (window_t *lwin, int mark, int cursor, int need_reset)
|
|||||||
void
|
void
|
||||||
custom_layout_config (void)
|
custom_layout_config (void)
|
||||||
{
|
{
|
||||||
scrollwin_t hwin;
|
struct scrollwin hwin;
|
||||||
window_t conf_win;
|
struct window conf_win;
|
||||||
int ch, mark, cursor, need_reset;
|
int ch, mark, cursor, need_reset;
|
||||||
char *help_text =
|
char *help_text =
|
||||||
_("With this configuration menu, one can choose where panels will be\n"
|
_("With this configuration menu, one can choose where panels will be\n"
|
||||||
@ -572,7 +592,7 @@ custom_layout_config (void)
|
|||||||
#undef LAYOUTSPERCOL
|
#undef LAYOUTSPERCOL
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_confwin_attr (window_t *cwin)
|
set_confwin_attr (struct window *cwin)
|
||||||
{
|
{
|
||||||
cwin->h = (notify_bar ())? row - 3 : row - 2;
|
cwin->h = (notify_bar ())? row - 3 : row - 2;
|
||||||
cwin->w = col;
|
cwin->w = col;
|
||||||
@ -584,7 +604,7 @@ set_confwin_attr (window_t *cwin)
|
|||||||
* (useful in case of window resize).
|
* (useful in case of window resize).
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
custom_confwin_init (window_t *confwin, char *label)
|
custom_confwin_init (struct window *confwin, char *label)
|
||||||
{
|
{
|
||||||
if (confwin->p)
|
if (confwin->p)
|
||||||
{
|
{
|
||||||
@ -611,16 +631,16 @@ custom_confwin_init (window_t *confwin, char *label)
|
|||||||
static void
|
static void
|
||||||
color_selection_bar (void)
|
color_selection_bar (void)
|
||||||
{
|
{
|
||||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||||
binding_t select = {_("Select"), KEY_GENERIC_SELECT};
|
struct binding select = {_("Select"), KEY_GENERIC_SELECT};
|
||||||
binding_t nocolor = {_("No color"), KEY_GENERIC_CANCEL};
|
struct binding nocolor = {_("No color"), KEY_GENERIC_CANCEL};
|
||||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||||
|
|
||||||
|
|
||||||
binding_t *binding[] = {
|
struct binding *binding[] = {
|
||||||
&quit, &nocolor, &up, &down, &left, &right, &select
|
&quit, &nocolor, &up, &down, &left, &right, &select
|
||||||
};
|
};
|
||||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||||
@ -633,7 +653,7 @@ color_selection_bar (void)
|
|||||||
* This is useful for window resizing.
|
* This is useful for window resizing.
|
||||||
*/
|
*/
|
||||||
static void
|
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)
|
int cursor, int need_reset, int theme_changed)
|
||||||
{
|
{
|
||||||
#define SIZE (2 * (NBUSERCOLORS + 1))
|
#define SIZE (2 * (NBUSERCOLORS + 1))
|
||||||
@ -761,7 +781,7 @@ display_color_config (window_t *cwin, int *mark_fore, int *mark_back,
|
|||||||
void
|
void
|
||||||
custom_color_config (void)
|
custom_color_config (void)
|
||||||
{
|
{
|
||||||
window_t conf_win;
|
struct window conf_win;
|
||||||
int ch, cursor, need_reset, theme_changed;
|
int ch, cursor, need_reset, theme_changed;
|
||||||
int mark_fore, mark_back;
|
int mark_fore, mark_back;
|
||||||
|
|
||||||
@ -886,7 +906,7 @@ custom_color_theme_name (char *theme_name)
|
|||||||
|
|
||||||
/* Prints the general options. */
|
/* Prints the general options. */
|
||||||
static int
|
static int
|
||||||
print_general_options (WINDOW *win, conf_t *conf)
|
print_general_options (WINDOW *win, struct conf *conf)
|
||||||
{
|
{
|
||||||
enum {
|
enum {
|
||||||
AUTO_SAVE,
|
AUTO_SAVE,
|
||||||
@ -986,7 +1006,7 @@ print_general_options (WINDOW *win, conf_t *conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
custom_set_swsiz (scrollwin_t *sw)
|
custom_set_swsiz (struct scrollwin *sw)
|
||||||
{
|
{
|
||||||
sw->win.x = 0;
|
sw->win.x = 0;
|
||||||
sw->win.y = 0;
|
sw->win.y = 0;
|
||||||
@ -1001,9 +1021,9 @@ custom_set_swsiz (scrollwin_t *sw)
|
|||||||
|
|
||||||
/* General configuration. */
|
/* General configuration. */
|
||||||
void
|
void
|
||||||
custom_general_config (conf_t *conf)
|
custom_general_config (struct conf *conf)
|
||||||
{
|
{
|
||||||
scrollwin_t cwin;
|
struct scrollwin cwin;
|
||||||
char *number_str =
|
char *number_str =
|
||||||
_("Enter an option number to change its value");
|
_("Enter an option number to change its value");
|
||||||
char *keys =
|
char *keys =
|
||||||
@ -1188,16 +1208,16 @@ print_keys_bindings (WINDOW *win, int selected_row, int selected_elm, int yoff)
|
|||||||
static void
|
static void
|
||||||
custom_keys_config_bar (void)
|
custom_keys_config_bar (void)
|
||||||
{
|
{
|
||||||
binding_t quit = {_("Exit"), KEY_GENERIC_QUIT};
|
struct binding quit = {_("Exit"), KEY_GENERIC_QUIT};
|
||||||
binding_t info = {_("Key info"), KEY_GENERIC_HELP};
|
struct binding info = {_("Key info"), KEY_GENERIC_HELP};
|
||||||
binding_t add = {_("Add key"), KEY_ADD_ITEM};
|
struct binding add = {_("Add key"), KEY_ADD_ITEM};
|
||||||
binding_t del = {_("Del key"), KEY_DEL_ITEM};
|
struct binding del = {_("Del key"), KEY_DEL_ITEM};
|
||||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||||
binding_t left = {_("Prev Key"), KEY_MOVE_LEFT};
|
struct binding left = {_("Prev Key"), KEY_MOVE_LEFT};
|
||||||
binding_t right = {_("Next Key"), KEY_MOVE_RIGHT};
|
struct binding right = {_("Next Key"), KEY_MOVE_RIGHT};
|
||||||
|
|
||||||
binding_t *binding[] = {
|
struct binding *binding[] = {
|
||||||
&quit, &info, &add, &del, &up, &down, &left, &right
|
&quit, &info, &add, &del, &up, &down, &left, &right
|
||||||
};
|
};
|
||||||
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
int binding_size = sizeof (binding) / sizeof (binding[0]);
|
||||||
@ -1208,7 +1228,7 @@ custom_keys_config_bar (void)
|
|||||||
void
|
void
|
||||||
custom_keys_config (void)
|
custom_keys_config (void)
|
||||||
{
|
{
|
||||||
scrollwin_t kwin;
|
struct scrollwin kwin;
|
||||||
int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
|
int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed;
|
||||||
int keyval, used, not_recognized;
|
int keyval, used, not_recognized;
|
||||||
char *keystr;
|
char *keystr;
|
||||||
@ -1303,7 +1323,7 @@ custom_keys_config (void)
|
|||||||
used = keys_assign_binding (keyval, selrow);
|
used = keys_assign_binding (keyval, selrow);
|
||||||
if (used)
|
if (used)
|
||||||
{
|
{
|
||||||
keys_e action;
|
enum key action;
|
||||||
|
|
||||||
action = keys_get_action (keyval);
|
action = keys_get_action (keyval);
|
||||||
WARN_MSG (_("This key is already in use for %s, "
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -42,16 +42,18 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "apoint.h"
|
|
||||||
#include "event.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "day.h"
|
|
||||||
|
|
||||||
static struct day_item_s *day_items_ptr;
|
struct day_saved_item {
|
||||||
static struct day_saved_item_s 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.
|
* 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
|
void
|
||||||
day_free_list (void)
|
day_free_list (void)
|
||||||
{
|
{
|
||||||
struct day_item_s *o, **i;
|
struct day_item *o, **i;
|
||||||
|
|
||||||
i = &day_items_ptr;
|
i = &day_items_ptr;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -74,12 +76,12 @@ day_free_list (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add an event in the current day list */
|
/* 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)
|
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->mesg = mesg;
|
||||||
o->note = note;
|
o->note = note;
|
||||||
o->type = type;
|
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. */
|
/* 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,
|
day_add_apoint (int type, char *mesg, char *note, long start, long dur,
|
||||||
char state, int real_pos)
|
char state, int real_pos)
|
||||||
{
|
{
|
||||||
struct day_item_s *o, **i;
|
struct day_item *o, **i;
|
||||||
int insert_item = 0;
|
int insert_item = 0;
|
||||||
|
|
||||||
o = mem_malloc (sizeof (struct day_item_s));
|
o = mem_malloc (sizeof (struct day_item));
|
||||||
o->mesg = mesg;
|
o->mesg = mesg;
|
||||||
o->note = note;
|
o->note = note;
|
||||||
o->start = start;
|
o->start = start;
|
||||||
@ -150,8 +152,8 @@ day_add_apoint (int type, char *mesg, char *note, long start, long dur,
|
|||||||
static int
|
static int
|
||||||
day_store_events (long date)
|
day_store_events (long date)
|
||||||
{
|
{
|
||||||
struct event_s *j;
|
struct event *j;
|
||||||
struct day_item_s *ptr;
|
struct day_item *ptr;
|
||||||
int e_nb = 0;
|
int e_nb = 0;
|
||||||
|
|
||||||
for (j = eventlist; j != 0; j = j->next)
|
for (j = eventlist; j != 0; j = j->next)
|
||||||
@ -176,8 +178,8 @@ day_store_events (long date)
|
|||||||
static int
|
static int
|
||||||
day_store_recur_events (long date)
|
day_store_recur_events (long date)
|
||||||
{
|
{
|
||||||
struct recur_event_s *j;
|
struct recur_event *j;
|
||||||
struct day_item_s *ptr;
|
struct day_item *ptr;
|
||||||
int e_nb = 0;
|
int e_nb = 0;
|
||||||
|
|
||||||
for (j = recur_elist; j != 0; j = j->next)
|
for (j = recur_elist; j != 0; j = j->next)
|
||||||
@ -203,8 +205,8 @@ day_store_recur_events (long date)
|
|||||||
static int
|
static int
|
||||||
day_store_apoints (long date)
|
day_store_apoints (long date)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *j;
|
struct apoint *j;
|
||||||
struct day_item_s *ptr;
|
struct day_item *ptr;
|
||||||
int a_nb = 0;
|
int a_nb = 0;
|
||||||
|
|
||||||
pthread_mutex_lock (&(alist_p->mutex));
|
pthread_mutex_lock (&(alist_p->mutex));
|
||||||
@ -232,8 +234,8 @@ day_store_apoints (long date)
|
|||||||
static int
|
static int
|
||||||
day_store_recur_apoints (long date)
|
day_store_recur_apoints (long date)
|
||||||
{
|
{
|
||||||
recur_apoint_llist_node_t *j;
|
struct recur_apoint *j;
|
||||||
struct day_item_s *ptr;
|
struct day_item *ptr;
|
||||||
long real_start;
|
long real_start;
|
||||||
int a_nb = 0, n = 0;
|
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
|
* 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. This is useful to speed up the appointment panel update.
|
||||||
*/
|
*/
|
||||||
day_items_nb_t *
|
struct day_items_nb *
|
||||||
day_process_storage (date_t *slctd_date, unsigned day_changed,
|
day_process_storage (struct date *slctd_date, unsigned day_changed,
|
||||||
day_items_nb_t *inday)
|
struct day_items_nb *inday)
|
||||||
{
|
{
|
||||||
long date;
|
long date;
|
||||||
date_t day;
|
struct date day;
|
||||||
|
|
||||||
if (slctd_date)
|
if (slctd_date)
|
||||||
day = *slctd_date;
|
day = *slctd_date;
|
||||||
@ -328,7 +330,7 @@ day_process_storage (date_t *slctd_date, unsigned day_changed,
|
|||||||
* day_item_s
|
* day_item_s
|
||||||
*/
|
*/
|
||||||
static void
|
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->state = p->state;
|
||||||
a->start = p->start;
|
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.
|
* Print an item date in the appointment panel.
|
||||||
*/
|
*/
|
||||||
static void
|
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)
|
int y, int x)
|
||||||
{
|
{
|
||||||
WINDOW *win;
|
WINDOW *win;
|
||||||
@ -404,8 +406,8 @@ display_item (int incolor, char *msg, int recur, int note, int len, int y,
|
|||||||
void
|
void
|
||||||
day_write_pad (long date, int width, int length, int incolor)
|
day_write_pad (long date, int width, int length, int incolor)
|
||||||
{
|
{
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
apoint_llist_node_t a;
|
struct apoint a;
|
||||||
int line, item_number, max_pos, recur;
|
int line, item_number, max_pos, recur;
|
||||||
const int x_pos = 0;
|
const int x_pos = 0;
|
||||||
unsigned draw_line = 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.
|
* calendar. This is used to put the correct colors inside calendar panel.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
day_check_if_item (date_t day)
|
day_check_if_item (struct date day)
|
||||||
{
|
{
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
struct event_s *e;
|
struct event *e;
|
||||||
apoint_llist_node_t *a;
|
struct apoint *a;
|
||||||
const long date = date2sec (day, 0, 0);
|
const long date = date2sec (day, 0, 0);
|
||||||
|
|
||||||
for (re = recur_elist; re != 0; re = re->next)
|
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.
|
* A 24 hours day is divided into 'slicesno' number of time slices.
|
||||||
*/
|
*/
|
||||||
unsigned
|
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;
|
struct recur_apoint *ra;
|
||||||
apoint_llist_node_t *a;
|
struct apoint *a;
|
||||||
int slicelen;
|
int slicelen;
|
||||||
const long date = date2sec (day, 0, 0);
|
const long date = date2sec (day, 0, 0);
|
||||||
|
|
||||||
@ -669,7 +671,7 @@ update_desc (char **desc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
const int SINGLECHAR = 2;
|
||||||
int ch, cancel, newfreq, date_entered;
|
int ch, cancel, newfreq, date_entered;
|
||||||
@ -689,7 +691,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
status_mesg (msg_rpt_type, msg_rpt_ans);
|
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));
|
(void)snprintf (typstr, SINGLECHAR, "%c", recur_def2char ((*rpt)->type));
|
||||||
cancel = updatestring (win[STA].p, &typstr, 0, 1);
|
cancel = updatestring (win[STA].p, &typstr, 0, 1);
|
||||||
if (cancel)
|
if (cancel)
|
||||||
@ -708,7 +710,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
status_mesg (_("Enter the new repetition frequence:"), "");
|
status_mesg (_("Enter the new repetition frequence:"), "");
|
||||||
freqstr = (char *) mem_malloc (BUFSIZ);
|
freqstr = mem_malloc (BUFSIZ);
|
||||||
(void)snprintf (freqstr, BUFSIZ, "%d", (*rpt)->freq);
|
(void)snprintf (freqstr, BUFSIZ, "%d", (*rpt)->freq);
|
||||||
cancel = updatestring (win[STA].p, &freqstr, 0, 1);
|
cancel = updatestring (win[STA].p, &freqstr, 0, 1);
|
||||||
if (cancel)
|
if (cancel)
|
||||||
@ -751,7 +753,7 @@ update_rept (struct rpt_s **rpt, const long start, conf_t *conf)
|
|||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
date_t new_date;
|
struct date new_date;
|
||||||
int newmonth, newday, newyear;
|
int newmonth, newday, newyear;
|
||||||
|
|
||||||
if (parse_date (timstr, conf->input_datefmt,
|
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. */
|
/* Edit an already existing item. */
|
||||||
void
|
void
|
||||||
day_edit_item (conf_t *conf)
|
day_edit_item (struct conf *conf)
|
||||||
{
|
{
|
||||||
#define STRT '1'
|
#define STRT '1'
|
||||||
#define END '2'
|
#define END '2'
|
||||||
#define DESC '3'
|
#define DESC '3'
|
||||||
#define REPT '4'
|
#define REPT '4'
|
||||||
|
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
struct event_s *e;
|
struct event *e;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
apoint_llist_node_t *a;
|
struct apoint *a;
|
||||||
long date;
|
long date;
|
||||||
int item_num, ch;
|
int item_num, ch;
|
||||||
|
|
||||||
@ -891,9 +893,9 @@ day_edit_item (conf_t *conf)
|
|||||||
* type of the item to be deleted.
|
* type of the item to be deleted.
|
||||||
*/
|
*/
|
||||||
int
|
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 =
|
char *erase_warning =
|
||||||
_("This item is recurrent. "
|
_("This item is recurrent. "
|
||||||
"Delete (a)ll occurences or just this (o)ne ?");
|
"Delete (a)ll occurences or just this (o)ne ?");
|
||||||
@ -972,7 +974,7 @@ int
|
|||||||
day_cut_item (long date, int item_number)
|
day_cut_item (long date, int item_number)
|
||||||
{
|
{
|
||||||
const int DELETE_WHOLE = 1;
|
const int DELETE_WHOLE = 1;
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
|
|
||||||
p = day_get_item (item_number);
|
p = day_get_item (item_number);
|
||||||
switch (p->type)
|
switch (p->type)
|
||||||
@ -1032,10 +1034,10 @@ day_paste_item (long date, int cut_item_type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Returns a structure containing the selected item. */
|
/* Returns a structure containing the selected item. */
|
||||||
struct day_item_s *
|
struct day_item *
|
||||||
day_get_item (int item_number)
|
day_get_item (int item_number)
|
||||||
{
|
{
|
||||||
struct day_item_s *o;
|
struct day_item *o;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
o = day_items_ptr;
|
o = day_items_ptr;
|
||||||
@ -1051,7 +1053,7 @@ int
|
|||||||
day_item_nb (long date, int day_num, int type)
|
day_item_nb (long date, int day_num, int type)
|
||||||
{
|
{
|
||||||
int i, nb_item[MAX_TYPES];
|
int i, nb_item[MAX_TYPES];
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
|
|
||||||
for (i = 0; i < MAX_TYPES; i++)
|
for (i = 0; i < MAX_TYPES; i++)
|
||||||
nb_item[i] = 0;
|
nb_item[i] = 0;
|
||||||
@ -1071,11 +1073,11 @@ day_item_nb (long date, int day_num, int type)
|
|||||||
void
|
void
|
||||||
day_edit_note (char *editor)
|
day_edit_note (char *editor)
|
||||||
{
|
{
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
apoint_llist_node_t *a;
|
struct apoint *a;
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
struct event_s *e;
|
struct event *e;
|
||||||
char fullname[BUFSIZ];
|
char fullname[BUFSIZ];
|
||||||
char *filename;
|
char *filename;
|
||||||
long date;
|
long date;
|
||||||
@ -1119,7 +1121,7 @@ day_edit_note (char *editor)
|
|||||||
void
|
void
|
||||||
day_view_note (char *pager)
|
day_view_note (char *pager)
|
||||||
{
|
{
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
char fullname[BUFSIZ];
|
char fullname[BUFSIZ];
|
||||||
|
|
||||||
p = day_get_item (apoint_hilt ());
|
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
|
* Calcurse - text-based organizer
|
||||||
*
|
*
|
||||||
* Copyright (c) 2009 Frederic Culot <frederic@culot.org>
|
* Copyright (c) 2009-2010 Frederic Culot <frederic@culot.org>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -43,15 +43,9 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "calcurse.h"
|
||||||
#include "i18n.h"
|
|
||||||
#include "sigs.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "io.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "notify.h"
|
|
||||||
#include "dmon.h"
|
|
||||||
|
|
||||||
#define DMON_SLEEP_TIME 60
|
#define DMON_SLEEP_TIME 60
|
||||||
|
|
||||||
@ -162,7 +156,7 @@ daemonize (int status)
|
|||||||
void
|
void
|
||||||
dmon_start (int parent_exit_status)
|
dmon_start (int parent_exit_status)
|
||||||
{
|
{
|
||||||
conf_t conf;
|
struct conf conf;
|
||||||
|
|
||||||
if (!daemonize (parent_exit_status))
|
if (!daemonize (parent_exit_status))
|
||||||
DMON_ABRT (_("Cannot daemonize, aborting\n"));
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,16 +41,13 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "vars.h"
|
#include "calcurse.h"
|
||||||
#include "i18n.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "event.h"
|
|
||||||
|
|
||||||
struct event_s *eventlist;
|
struct event *eventlist;
|
||||||
static struct event_s bkp_cut_event;
|
static struct event bkp_cut_event;
|
||||||
|
|
||||||
void
|
void
|
||||||
event_free_bkp (erase_flag_e flag)
|
event_free_bkp (enum eraseflg flag)
|
||||||
{
|
{
|
||||||
if (bkp_cut_event.mesg)
|
if (bkp_cut_event.mesg)
|
||||||
{
|
{
|
||||||
@ -61,7 +58,7 @@ event_free_bkp (erase_flag_e flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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"));
|
EXIT_IF (!in || !bkp, _("null pointer"));
|
||||||
|
|
||||||
@ -75,7 +72,7 @@ event_dup (struct event_s *in, struct event_s *bkp)
|
|||||||
void
|
void
|
||||||
event_llist_free (void)
|
event_llist_free (void)
|
||||||
{
|
{
|
||||||
struct event_s *o, **i;
|
struct event *o, **i;
|
||||||
|
|
||||||
i = &eventlist;
|
i = &eventlist;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -89,11 +86,11 @@ event_llist_free (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Create a new event */
|
/* Create a new event */
|
||||||
struct event_s *
|
struct event *
|
||||||
event_new (char *mesg, char *note, long day, int id)
|
event_new (char *mesg, char *note, long day, int id)
|
||||||
{
|
{
|
||||||
struct event_s *o, **i;
|
struct event *o, **i;
|
||||||
o = (struct event_s *) mem_malloc (sizeof (struct event_s));
|
o = mem_malloc (sizeof (struct event));
|
||||||
o->mesg = mem_strdup (mesg);
|
o->mesg = mem_strdup (mesg);
|
||||||
o->day = day;
|
o->day = day;
|
||||||
o->id = id;
|
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 */
|
/* Check if the event belongs to the selected day */
|
||||||
unsigned
|
unsigned
|
||||||
event_inday (struct event_s *i, long start)
|
event_inday (struct event *i, long start)
|
||||||
{
|
{
|
||||||
if (i->day <= start + DAYINSEC && i->day > 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 */
|
/* Write to file the event in user-friendly format */
|
||||||
void
|
void
|
||||||
event_write (struct event_s *o, FILE *f)
|
event_write (struct event *o, FILE *f)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
@ -140,7 +137,7 @@ event_write (struct event_s *o, FILE *f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Load the events from file */
|
/* Load the events from file */
|
||||||
struct event_s *
|
struct event *
|
||||||
event_scan (FILE *f, struct tm start, int id, char *note)
|
event_scan (FILE *f, struct tm start, int id, char *note)
|
||||||
{
|
{
|
||||||
char buf[BUFSIZ], *nl;
|
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. */
|
/* Retrieve an event from the list, given the day and item position. */
|
||||||
struct event_s *
|
struct event *
|
||||||
event_get (long day, int pos)
|
event_get (long day, int pos)
|
||||||
{
|
{
|
||||||
struct event_s *o;
|
struct event *o;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
@ -193,10 +190,10 @@ event_get (long day, int pos)
|
|||||||
|
|
||||||
/* Delete an event from the list. */
|
/* Delete an event from the list. */
|
||||||
void
|
void
|
||||||
event_delete_bynum (long start, unsigned num, erase_flag_e flag)
|
event_delete_bynum (long start, unsigned num, enum eraseflg flag)
|
||||||
{
|
{
|
||||||
unsigned n;
|
unsigned n;
|
||||||
struct event_s *i, **iptr;
|
struct event *i, **iptr;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
iptr = &eventlist;
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,16 +41,14 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#include "calcurse.h"
|
||||||
#include "config.h"
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
#include "i18n.h"
|
#define HELPTEXTSIZ 4096
|
||||||
#include "custom.h"
|
|
||||||
#include "utils.h"
|
typedef struct {
|
||||||
#include "keys.h"
|
char *title;
|
||||||
#include "notify.h"
|
char text[HELPTEXTSIZ];
|
||||||
#include "help.h"
|
} help_page_t;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -100,7 +98,7 @@ get_help_lines (char *text)
|
|||||||
* of lines that were written.
|
* of lines that were written.
|
||||||
*/
|
*/
|
||||||
static int
|
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;
|
int colnum, rownum;
|
||||||
char *bindings_title = "key bindings: %s";
|
char *bindings_title = "key bindings: %s";
|
||||||
@ -150,7 +148,7 @@ help_write_pad (window_t *win, char *title, char *text, keys_e action)
|
|||||||
* faster.
|
* faster.
|
||||||
*/
|
*/
|
||||||
void
|
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 PADOFFSET = 4;
|
||||||
const int TITLELINES = 3;
|
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.
|
* size and placement.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
help_wins_reinit (scrollwin_t *hwin)
|
help_wins_reinit (struct scrollwin *hwin)
|
||||||
{
|
{
|
||||||
wins_scrollwin_delete (hwin);
|
wins_scrollwin_delete (hwin);
|
||||||
wins_get_config ();
|
wins_get_config ();
|
||||||
@ -184,7 +182,7 @@ help_wins_reinit (scrollwin_t *hwin)
|
|||||||
|
|
||||||
/* Reset the screen, needed when resizing terminal for example. */
|
/* Reset the screen, needed when resizing terminal for example. */
|
||||||
static void
|
static void
|
||||||
help_wins_reset (scrollwin_t *hwin)
|
help_wins_reset (struct scrollwin *hwin)
|
||||||
{
|
{
|
||||||
endwin ();
|
endwin ();
|
||||||
refresh ();
|
refresh ();
|
||||||
@ -326,9 +324,9 @@ help_screen (void)
|
|||||||
MOVE_RIGHT,
|
MOVE_RIGHT,
|
||||||
DIRECTIONS
|
DIRECTIONS
|
||||||
};
|
};
|
||||||
scrollwin_t hwin;
|
struct scrollwin hwin;
|
||||||
int need_resize;
|
int need_resize;
|
||||||
keys_e ch = KEY_GENERIC_HELP;
|
enum key ch = KEY_GENERIC_HELP;
|
||||||
int page, oldpage;
|
int page, oldpage;
|
||||||
help_page_t hscr[HELPSCREENS];
|
help_page_t hscr[HELPSCREENS];
|
||||||
char keystr[DIRECTIONS][BUFSIZ];
|
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 */
|
|
171
src/io.c
171
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -45,21 +45,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#include "calcurse.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"
|
|
||||||
|
|
||||||
#define ICALDATEFMT "%Y%m%d"
|
#define ICALDATEFMT "%Y%m%d"
|
||||||
#define ICALDATETIMEFMT "%Y%m%dT%H%M%S"
|
#define ICALDATETIMEFMT "%Y%m%dT%H%M%S"
|
||||||
@ -96,15 +82,15 @@ typedef enum {
|
|||||||
} ical_vevent_e;
|
} ical_vevent_e;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
recur_types_t type;
|
enum recur_type type;
|
||||||
int freq;
|
int freq;
|
||||||
long until;
|
long until;
|
||||||
unsigned count;
|
unsigned count;
|
||||||
} ical_rpt_t;
|
} ical_rpt_t;
|
||||||
|
|
||||||
struct ht_keybindings_s {
|
struct ht_keybindings_s {
|
||||||
char *label;
|
char *label;
|
||||||
keys_e key;
|
enum key key;
|
||||||
HTABLE_ENTRY (ht_keybindings_s);
|
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. */
|
/* Ask user for a file name to export data to. */
|
||||||
static FILE *
|
static FILE *
|
||||||
get_export_stream (export_type_t type)
|
get_export_stream (enum export_type type)
|
||||||
{
|
{
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
int cancel;
|
int cancel;
|
||||||
@ -263,7 +249,7 @@ get_export_stream (export_type_t type)
|
|||||||
* (mainly used to export data).
|
* (mainly used to export data).
|
||||||
*/
|
*/
|
||||||
static void
|
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,
|
long item_first_date, long item_dur, char *item_mesg,
|
||||||
cb_dump_t cb_dump, FILE *stream)
|
cb_dump_t cb_dump, FILE *stream)
|
||||||
{
|
{
|
||||||
@ -357,8 +343,8 @@ pcal_export_footer (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
ical_export_recur_events (FILE *stream)
|
ical_export_recur_events (FILE *stream)
|
||||||
{
|
{
|
||||||
struct recur_event_s *i;
|
struct recur_event *i;
|
||||||
struct days_s *day;
|
struct days *day;
|
||||||
char ical_date[BUFSIZ];
|
char ical_date[BUFSIZ];
|
||||||
|
|
||||||
for (i = recur_elist; i != 0; i = i->next)
|
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
|
static void
|
||||||
pcal_export_recur_events (FILE *stream)
|
pcal_export_recur_events (FILE *stream)
|
||||||
{
|
{
|
||||||
struct recur_event_s *i;
|
struct recur_event *i;
|
||||||
char pcal_date[BUFSIZ];
|
char pcal_date[BUFSIZ];
|
||||||
|
|
||||||
(void)fprintf (stream, "\n# =============");
|
(void)fprintf (stream, "\n# =============");
|
||||||
@ -476,7 +462,7 @@ pcal_export_recur_events (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
ical_export_events (FILE *stream)
|
ical_export_events (FILE *stream)
|
||||||
{
|
{
|
||||||
struct event_s *i;
|
struct event *i;
|
||||||
char ical_date[BUFSIZ];
|
char ical_date[BUFSIZ];
|
||||||
|
|
||||||
for (i = eventlist; i != 0; i = i->next)
|
for (i = eventlist; i != 0; i = i->next)
|
||||||
@ -492,7 +478,7 @@ ical_export_events (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
pcal_export_events (FILE *stream)
|
pcal_export_events (FILE *stream)
|
||||||
{
|
{
|
||||||
struct event_s *i;
|
struct event *i;
|
||||||
|
|
||||||
(void)fprintf (stream, "\n# ======\n# Events\n# ======\n");
|
(void)fprintf (stream, "\n# ======\n# Events\n# ======\n");
|
||||||
for (i = eventlist; i != 0; i = i->next)
|
for (i = eventlist; i != 0; i = i->next)
|
||||||
@ -504,8 +490,8 @@ pcal_export_events (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
ical_export_recur_apoints (FILE *stream)
|
ical_export_recur_apoints (FILE *stream)
|
||||||
{
|
{
|
||||||
recur_apoint_llist_node_t *i;
|
struct recur_apoint *i;
|
||||||
struct days_s *day;
|
struct days *day;
|
||||||
char ical_datetime[BUFSIZ];
|
char ical_datetime[BUFSIZ];
|
||||||
char ical_date[BUFSIZ];
|
char ical_date[BUFSIZ];
|
||||||
|
|
||||||
@ -550,7 +536,7 @@ ical_export_recur_apoints (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
pcal_export_recur_apoints (FILE *stream)
|
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];
|
char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ];
|
||||||
|
|
||||||
(void)fprintf (stream, "\n# ==============");
|
(void)fprintf (stream, "\n# ==============");
|
||||||
@ -609,7 +595,7 @@ pcal_export_recur_apoints (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
ical_export_apoints (FILE *stream)
|
ical_export_apoints (FILE *stream)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *i;
|
struct apoint *i;
|
||||||
char ical_datetime[BUFSIZ];
|
char ical_datetime[BUFSIZ];
|
||||||
|
|
||||||
pthread_mutex_lock (&(alist_p->mutex));
|
pthread_mutex_lock (&(alist_p->mutex));
|
||||||
@ -630,7 +616,7 @@ ical_export_apoints (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
pcal_export_apoints (FILE *stream)
|
pcal_export_apoints (FILE *stream)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *i;
|
struct apoint *i;
|
||||||
|
|
||||||
(void)fprintf (stream, "\n# ============\n# Appointments\n# ============\n");
|
(void)fprintf (stream, "\n# ============\n# Appointments\n# ============\n");
|
||||||
pthread_mutex_lock (&(alist_p->mutex));
|
pthread_mutex_lock (&(alist_p->mutex));
|
||||||
@ -644,7 +630,7 @@ pcal_export_apoints (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
ical_export_todo (FILE *stream)
|
ical_export_todo (FILE *stream)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
|
|
||||||
for (i = todolist; i != 0; i = i->next)
|
for (i = todolist; i != 0; i = i->next)
|
||||||
{
|
{
|
||||||
@ -661,7 +647,7 @@ ical_export_todo (FILE *stream)
|
|||||||
static void
|
static void
|
||||||
pcal_export_todo (FILE *stream)
|
pcal_export_todo (FILE *stream)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
|
|
||||||
(void)fprintf (stream, "#\n# Todos\n#\n");
|
(void)fprintf (stream, "#\n# Todos\n#\n");
|
||||||
for (i = todolist; i != 0; i = i->next)
|
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. */
|
/* Save the user configuration. */
|
||||||
unsigned
|
unsigned
|
||||||
io_save_conf (conf_t *conf)
|
io_save_conf (struct conf *conf)
|
||||||
{
|
{
|
||||||
char *config_txt =
|
char *config_txt =
|
||||||
"#\n"
|
"#\n"
|
||||||
@ -969,8 +955,8 @@ io_save_conf (conf_t *conf)
|
|||||||
unsigned
|
unsigned
|
||||||
io_save_apts (void)
|
io_save_apts (void)
|
||||||
{
|
{
|
||||||
apoint_llist_node_t *a;
|
struct apoint *a;
|
||||||
struct event_s *e;
|
struct event *e;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
if ((fp = fopen (path_apts, "w")) == 0)
|
if ((fp = fopen (path_apts, "w")) == 0)
|
||||||
@ -996,7 +982,7 @@ io_save_apts (void)
|
|||||||
unsigned
|
unsigned
|
||||||
io_save_todo (void)
|
io_save_todo (void)
|
||||||
{
|
{
|
||||||
struct todo_s *t;
|
struct todo *t;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
if ((fp = fopen (path_todo, "w")) == 0)
|
if ((fp = fopen (path_todo, "w")) == 0)
|
||||||
@ -1031,7 +1017,7 @@ io_save_keys (void)
|
|||||||
|
|
||||||
/* Save the calendar data */
|
/* Save the calendar data */
|
||||||
void
|
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 *access_pb = _("Problems accessing data file ...");
|
||||||
char *save_success = _("The data files were successfully saved");
|
char *save_success = _("The data files were successfully saved");
|
||||||
@ -1089,7 +1075,7 @@ io_load_app (void)
|
|||||||
FILE *data_file;
|
FILE *data_file;
|
||||||
int c, is_appointment, is_event, is_recursive;
|
int c, is_appointment, is_event, is_recursive;
|
||||||
struct tm start, end, until, *lt;
|
struct tm start, end, until, *lt;
|
||||||
struct days_s *exc;
|
struct days *exc;
|
||||||
time_t t;
|
time_t t;
|
||||||
int id = 0;
|
int id = 0;
|
||||||
int freq;
|
int freq;
|
||||||
@ -1367,7 +1353,7 @@ io_load_keys (char *pager)
|
|||||||
struct ht_keybindings_s keys[NBKEYS];
|
struct ht_keybindings_s keys[NBKEYS];
|
||||||
FILE *keyfp;
|
FILE *keyfp;
|
||||||
char buf[BUFSIZ];
|
char buf[BUFSIZ];
|
||||||
io_file_t *log;
|
struct io_file *log;
|
||||||
int i, skipped, loaded, line;
|
int i, skipped, loaded, line;
|
||||||
const int MAX_ERRORS = 5;
|
const int MAX_ERRORS = 5;
|
||||||
|
|
||||||
@ -1382,8 +1368,8 @@ io_load_keys (char *pager)
|
|||||||
|
|
||||||
for (i = 0; i < NBKEYS; i++)
|
for (i = 0; i < NBKEYS; i++)
|
||||||
{
|
{
|
||||||
keys[i].key = (keys_e)i;
|
keys[i].key = (enum key)i;
|
||||||
keys[i].label = keys_get_label ((keys_e)i);
|
keys[i].label = keys_get_label ((enum key)i);
|
||||||
HTABLE_INSERT (ht_keybindings, &ht_keys, &keys[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. */
|
/* Export calcurse data. */
|
||||||
void
|
void
|
||||||
io_export_data (export_type_t type, conf_t *conf)
|
io_export_data (enum export_type type, struct conf *conf)
|
||||||
{
|
{
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
char *success = _("The data were successfully exported");
|
char *success = _("The data were successfully exported");
|
||||||
@ -1739,7 +1725,7 @@ ical_store_todo (int priority, char *mesg, char *note)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
ical_store_event (char *mesg, char *note, long day, long end, ical_rpt_t *rpt,
|
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;
|
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
|
static void
|
||||||
ical_store_apoint (char *mesg, char *note, long start, long dur,
|
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;
|
char state = 0L;
|
||||||
|
|
||||||
@ -1922,7 +1908,7 @@ static float
|
|||||||
ical_chk_header (FILE *fd, unsigned *lineno)
|
ical_chk_header (FILE *fd, unsigned *lineno)
|
||||||
{
|
{
|
||||||
const int HEADER_MALFORMED = -1;
|
const int HEADER_MALFORMED = -1;
|
||||||
const string_t icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
|
const struct string icalheader = STRING_BUILD ("BEGIN:VCALENDAR");
|
||||||
char buf[BUFSIZ];
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
(void)fgets (buf, BUFSIZ, fd);
|
(void)fgets (buf, BUFSIZ, fd);
|
||||||
@ -1971,7 +1957,7 @@ static long
|
|||||||
ical_datetime2long (char *datestr, ical_vevent_e *type)
|
ical_datetime2long (char *datestr, ical_vevent_e *type)
|
||||||
{
|
{
|
||||||
const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5;
|
const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5;
|
||||||
date_t date;
|
struct date date;
|
||||||
unsigned hour, min;
|
unsigned hour, min;
|
||||||
long datelong;
|
long datelong;
|
||||||
int format;
|
int format;
|
||||||
@ -2174,12 +2160,12 @@ static ical_rpt_t *
|
|||||||
ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
|
ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
|
||||||
const int itemline)
|
const int itemline)
|
||||||
{
|
{
|
||||||
const string_t daily = STRING_BUILD ("DAILY");
|
const struct string daily = STRING_BUILD ("DAILY");
|
||||||
const string_t weekly = STRING_BUILD ("WEEKLY");
|
const struct string weekly = STRING_BUILD ("WEEKLY");
|
||||||
const string_t monthly = STRING_BUILD ("MONTHLY");
|
const struct string monthly = STRING_BUILD ("MONTHLY");
|
||||||
const string_t yearly = STRING_BUILD ("YEARLY");
|
const struct string yearly = STRING_BUILD ("YEARLY");
|
||||||
const string_t count = STRING_BUILD ("COUNT=");
|
const struct string count = STRING_BUILD ("COUNT=");
|
||||||
const string_t interv = STRING_BUILD ("INTERVAL=");
|
const struct string interv = STRING_BUILD ("INTERVAL=");
|
||||||
unsigned interval;
|
unsigned interval;
|
||||||
ical_rpt_t *rpt;
|
ical_rpt_t *rpt;
|
||||||
char *p;
|
char *p;
|
||||||
@ -2285,15 +2271,15 @@ ical_read_rrule (FILE *log, char *rrulestr, unsigned *noskipped,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ical_add_exc (days_t **exc_head, long date)
|
ical_add_exc (struct days **exc_head, long date)
|
||||||
{
|
{
|
||||||
if (date == 0)
|
if (date == 0)
|
||||||
return;
|
return;
|
||||||
else
|
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->st = date;
|
||||||
exc->next = *exc_head;
|
exc->next = *exc_head;
|
||||||
*exc_head = exc;
|
*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
|
* This property defines the list of date/time exceptions for a
|
||||||
* recurring calendar component.
|
* recurring calendar component.
|
||||||
*/
|
*/
|
||||||
static days_t *
|
static struct days *
|
||||||
ical_read_exdate (FILE *log, char *exstr, unsigned *noskipped,
|
ical_read_exdate (FILE *log, char *exstr, unsigned *noskipped,
|
||||||
const int itemline)
|
const int itemline)
|
||||||
{
|
{
|
||||||
days_t *exc;
|
struct days *exc;
|
||||||
char *p, *q;
|
char *p, *q;
|
||||||
long date;
|
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. */
|
/* Returns an allocated string containing the ical item summary. */
|
||||||
static char *
|
static char *
|
||||||
|
|
||||||
ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno)
|
ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno)
|
||||||
{
|
{
|
||||||
char *p, *summary;
|
char *p, *summary;
|
||||||
@ -2414,20 +2399,20 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints,
|
|||||||
unsigned *noskipped, unsigned *lineno)
|
unsigned *noskipped, unsigned *lineno)
|
||||||
{
|
{
|
||||||
const int ITEMLINE = *lineno;
|
const int ITEMLINE = *lineno;
|
||||||
const string_t endevent = STRING_BUILD ("END:VEVENT");
|
const struct string endevent = STRING_BUILD ("END:VEVENT");
|
||||||
const string_t summary = STRING_BUILD ("SUMMARY:");
|
const struct string summary = STRING_BUILD ("SUMMARY:");
|
||||||
const string_t dtstart = STRING_BUILD ("DTSTART");
|
const struct string dtstart = STRING_BUILD ("DTSTART");
|
||||||
const string_t dtend = STRING_BUILD ("DTEND");
|
const struct string dtend = STRING_BUILD ("DTEND");
|
||||||
const string_t duration = STRING_BUILD ("DURATION:");
|
const struct string duration = STRING_BUILD ("DURATION:");
|
||||||
const string_t rrule = STRING_BUILD ("RRULE");
|
const struct string rrule = STRING_BUILD ("RRULE");
|
||||||
const string_t exdate = STRING_BUILD ("EXDATE");
|
const struct string exdate = STRING_BUILD ("EXDATE");
|
||||||
const string_t alarm = STRING_BUILD ("BEGIN:VALARM");
|
const struct string alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||||
const string_t endalarm = STRING_BUILD ("END:VALARM");
|
const struct string endalarm = STRING_BUILD ("END:VALARM");
|
||||||
const string_t desc = STRING_BUILD ("DESCRIPTION");
|
const struct string desc = STRING_BUILD ("DESCRIPTION");
|
||||||
ical_vevent_e vevent_type;
|
ical_vevent_e vevent_type;
|
||||||
char *p, buf[BUFSIZ], buf_upper[BUFSIZ];
|
char *p, buf[BUFSIZ], buf_upper[BUFSIZ];
|
||||||
struct {
|
struct {
|
||||||
days_t *exc;
|
struct days *exc;
|
||||||
ical_rpt_t *rpt;
|
ical_rpt_t *rpt;
|
||||||
char *mesg, *note;
|
char *mesg, *note;
|
||||||
long start, end, dur;
|
long start, end, dur;
|
||||||
@ -2607,11 +2592,11 @@ static void
|
|||||||
ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
|
ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped,
|
||||||
unsigned *lineno)
|
unsigned *lineno)
|
||||||
{
|
{
|
||||||
const string_t endtodo = STRING_BUILD ("END:VTODO");
|
const struct string endtodo = STRING_BUILD ("END:VTODO");
|
||||||
const string_t summary = STRING_BUILD ("SUMMARY");
|
const struct string summary = STRING_BUILD ("SUMMARY");
|
||||||
const string_t alarm = STRING_BUILD ("BEGIN:VALARM");
|
const struct string alarm = STRING_BUILD ("BEGIN:VALARM");
|
||||||
const string_t endalarm = STRING_BUILD ("END:VALARM");
|
const struct string endalarm = STRING_BUILD ("END:VALARM");
|
||||||
const string_t desc = STRING_BUILD ("DESCRIPTION");
|
const struct string desc = STRING_BUILD ("DESCRIPTION");
|
||||||
const int LOWEST = 9;
|
const int LOWEST = 9;
|
||||||
const int ITEMLINE = *lineno;
|
const int ITEMLINE = *lineno;
|
||||||
char buf[BUFSIZ], buf_upper[BUFSIZ];
|
char buf[BUFSIZ], buf_upper[BUFSIZ];
|
||||||
@ -2701,7 +2686,7 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static FILE *
|
static FILE *
|
||||||
get_import_stream (export_type_t type)
|
get_import_stream (enum export_type type)
|
||||||
{
|
{
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
char *stream_name;
|
char *stream_name;
|
||||||
@ -2742,10 +2727,10 @@ get_import_stream (export_type_t type)
|
|||||||
* and is cleared at the end.
|
* and is cleared at the end.
|
||||||
*/
|
*/
|
||||||
void
|
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 struct string vevent = STRING_BUILD ("BEGIN:VEVENT");
|
||||||
const string_t vtodo = STRING_BUILD ("BEGIN:VTODO");
|
const struct string vtodo = STRING_BUILD ("BEGIN:VTODO");
|
||||||
char *proc_report = _("Import process report: %04d lines read ");
|
char *proc_report = _("Import process report: %04d lines read ");
|
||||||
char *lines_stats =
|
char *lines_stats =
|
||||||
_("%d apps / %d events / %d todos / %d skipped ");
|
_("%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)");
|
_("%d apps / %d events / %d todos / %d skipped ([ENTER] to continue)");
|
||||||
char buf[BUFSIZ];
|
char buf[BUFSIZ];
|
||||||
FILE *stream = NULL;
|
FILE *stream = NULL;
|
||||||
io_file_t *log;
|
struct io_file *log;
|
||||||
float ical_version;
|
float ical_version;
|
||||||
struct {
|
struct {
|
||||||
unsigned events, apoints, todos, lines, skipped;
|
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_log_free (log);
|
||||||
}
|
}
|
||||||
|
|
||||||
io_file_t *
|
struct io_file *
|
||||||
io_log_init (void)
|
io_log_init (void)
|
||||||
{
|
{
|
||||||
const char *logprefix = "/tmp/calcurse_log.";
|
const char *logprefix = "/tmp/calcurse_log.";
|
||||||
char *logname;
|
char *logname;
|
||||||
io_file_t *log;
|
struct io_file *log;
|
||||||
|
|
||||||
logname = new_tempfile (logprefix, NOTESIZ);
|
logname = new_tempfile (logprefix, NOTESIZ);
|
||||||
RETVAL_IF (logname == 0, 0,
|
RETVAL_IF (logname == 0, 0,
|
||||||
_("Warning: could not create temporary log file, Aborting..."));
|
_("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,
|
RETVAL_IF (log == 0, 0,
|
||||||
_("Warning: could not open temporary log file, Aborting..."));
|
_("Warning: could not open temporary log file, Aborting..."));
|
||||||
(void)snprintf (log->name, sizeof (log->name), "%s%s", logprefix, logname);
|
(void)snprintf (log->name, sizeof (log->name), "%s%s", logprefix, logname);
|
||||||
@ -2871,14 +2856,14 @@ io_log_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
if (log && log->fd)
|
||||||
(void)fprintf (log->fd, "line %d: %s\n", line, msg);
|
(void)fprintf (log->fd, "line %d: %s\n", line, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
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] ";
|
char *choices = "[y/n] ";
|
||||||
int ans;
|
int ans;
|
||||||
@ -2913,7 +2898,7 @@ io_log_display (io_file_t *log, char *msg, char *pager)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
io_log_free (io_file_t *log)
|
io_log_free (struct io_file *log)
|
||||||
{
|
{
|
||||||
if (!log)
|
if (!log)
|
||||||
return;
|
return;
|
||||||
@ -2929,10 +2914,10 @@ static pthread_t io_t_psave;
|
|||||||
static void *
|
static void *
|
||||||
io_psave_thread (void *arg)
|
io_psave_thread (void *arg)
|
||||||
{
|
{
|
||||||
conf_t *config;
|
struct conf *config;
|
||||||
int delay;
|
int delay;
|
||||||
|
|
||||||
config = (conf_t *)arg;
|
config = (struct conf *)arg;
|
||||||
delay = config->periodic_save;
|
delay = config->periodic_save;
|
||||||
EXIT_IF (delay < 0, _("Invalid delay"));
|
EXIT_IF (delay < 0, _("Invalid delay"));
|
||||||
|
|
||||||
@ -2945,7 +2930,7 @@ io_psave_thread (void *arg)
|
|||||||
|
|
||||||
/* Launch the thread which handles periodic saves. */
|
/* Launch the thread which handles periodic saves. */
|
||||||
void
|
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);
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -39,11 +39,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "utils.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "keys.h"
|
|
||||||
|
|
||||||
#define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */
|
#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 struct key_str_s *keys[NBKEYS];
|
||||||
|
|
||||||
static keys_e actions[MAXKEYVAL];
|
static enum key actions[MAXKEYVAL];
|
||||||
|
|
||||||
static struct keydef_s keydef[NBKEYS] = {
|
static struct keydef_s keydef[NBKEYS] = {
|
||||||
{"generic-cancel", "ESC"},
|
{"generic-cancel", "ESC"},
|
||||||
@ -181,7 +177,7 @@ keys_dump_defaults (char *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
keys_get_label (keys_e key)
|
keys_get_label (enum key key)
|
||||||
{
|
{
|
||||||
EXIT_IF (key < 0 || key > NBKEYS,
|
EXIT_IF (key < 0 || key > NBKEYS,
|
||||||
_("FATAL ERROR: key value out of bounds"));
|
_("FATAL ERROR: key value out of bounds"));
|
||||||
@ -189,7 +185,7 @@ keys_get_label (keys_e key)
|
|||||||
return keydef[key].label;
|
return keydef[key].label;
|
||||||
}
|
}
|
||||||
|
|
||||||
keys_e
|
enum key
|
||||||
keys_get_action (int pressed)
|
keys_get_action (int pressed)
|
||||||
{
|
{
|
||||||
if (pressed < 0 || pressed > MAXKEYVAL)
|
if (pressed < 0 || pressed > MAXKEYVAL)
|
||||||
@ -198,7 +194,7 @@ keys_get_action (int pressed)
|
|||||||
return actions[pressed];
|
return actions[pressed];
|
||||||
}
|
}
|
||||||
|
|
||||||
keys_e
|
enum key
|
||||||
keys_getch (WINDOW *win)
|
keys_getch (WINDOW *win)
|
||||||
{
|
{
|
||||||
int ch;
|
int ch;
|
||||||
@ -214,7 +210,7 @@ keys_getch (WINDOW *win)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
add_key_str (keys_e action, int key)
|
add_key_str (enum key action, int key)
|
||||||
{
|
{
|
||||||
struct key_str_s *new, **i;
|
struct key_str_s *new, **i;
|
||||||
|
|
||||||
@ -242,7 +238,7 @@ add_key_str (keys_e action, int key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
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)
|
if (key < 0 || key > MAXKEYVAL || actions[key] != KEY_UNDEF)
|
||||||
return 1;
|
return 1;
|
||||||
@ -256,7 +252,7 @@ keys_assign_binding (int key, keys_e action)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
del_key_str (keys_e action, int key)
|
del_key_str (enum key action, int key)
|
||||||
{
|
{
|
||||||
struct key_str_s *old, **i;
|
struct key_str_s *old, **i;
|
||||||
char oldstr[BUFSIZ];
|
char oldstr[BUFSIZ];
|
||||||
@ -279,7 +275,7 @@ del_key_str (keys_e action, int key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
keys_remove_binding (int key, keys_e action)
|
keys_remove_binding (int key, enum key action)
|
||||||
{
|
{
|
||||||
if (key < 0 || key > MAXKEYVAL)
|
if (key < 0 || key > MAXKEYVAL)
|
||||||
return;
|
return;
|
||||||
@ -293,16 +289,16 @@ keys_remove_binding (int key, keys_e action)
|
|||||||
int
|
int
|
||||||
keys_str2int (char *key)
|
keys_str2int (char *key)
|
||||||
{
|
{
|
||||||
const string_t CONTROL_KEY = STRING_BUILD ("C-");
|
const struct string CONTROL_KEY = STRING_BUILD ("C-");
|
||||||
const string_t TAB_KEY = STRING_BUILD ("TAB");
|
const struct string TAB_KEY = STRING_BUILD ("TAB");
|
||||||
const string_t SPACE_KEY = STRING_BUILD ("SPC");
|
const struct string SPACE_KEY = STRING_BUILD ("SPC");
|
||||||
const string_t ESCAPE_KEY = STRING_BUILD ("ESC");
|
const struct string ESCAPE_KEY = STRING_BUILD ("ESC");
|
||||||
const string_t CURSES_KEY_UP = STRING_BUILD ("UP");
|
const struct string CURSES_KEY_UP = STRING_BUILD ("UP");
|
||||||
const string_t CURSES_KEY_DOWN = STRING_BUILD ("DWN");
|
const struct string CURSES_KEY_DOWN = STRING_BUILD ("DWN");
|
||||||
const string_t CURSES_KEY_LEFT = STRING_BUILD ("LFT");
|
const struct string CURSES_KEY_LEFT = STRING_BUILD ("LFT");
|
||||||
const string_t CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
|
const struct string CURSES_KEY_RIGHT = STRING_BUILD ("RGT");
|
||||||
const string_t CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
|
const struct string CURSES_KEY_HOME = STRING_BUILD ("KEY_HOME");
|
||||||
const string_t CURSES_KEY_END = STRING_BUILD ("KEY_END");
|
const struct string CURSES_KEY_END = STRING_BUILD ("KEY_END");
|
||||||
|
|
||||||
if (!key)
|
if (!key)
|
||||||
return -1;
|
return -1;
|
||||||
@ -366,7 +362,7 @@ keys_int2str (int key)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
keys_action_count_keys (keys_e action)
|
keys_action_count_keys (enum key action)
|
||||||
{
|
{
|
||||||
struct key_str_s *key;
|
struct key_str_s *key;
|
||||||
int i;
|
int i;
|
||||||
@ -379,13 +375,13 @@ keys_action_count_keys (keys_e action)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
keys_action_firstkey (keys_e action)
|
keys_action_firstkey (enum key action)
|
||||||
{
|
{
|
||||||
return (keys[action] != NULL) ? keys[action]->str : "XXX";
|
return (keys[action] != NULL) ? keys[action]->str : "XXX";
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
keys_action_nkey (keys_e action, int keynum)
|
keys_action_nkey (enum key action, int keynum)
|
||||||
{
|
{
|
||||||
struct key_str_s *key;
|
struct key_str_s *key;
|
||||||
int i;
|
int i;
|
||||||
@ -401,7 +397,7 @@ keys_action_nkey (keys_e action, int keynum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
keys_action_allkeys (keys_e action)
|
keys_action_allkeys (enum key action)
|
||||||
{
|
{
|
||||||
static char keystr[BUFSIZ];
|
static char keystr[BUFSIZ];
|
||||||
struct key_str_s *i;
|
struct key_str_s *i;
|
||||||
@ -451,7 +447,7 @@ keys_format_label (char *key, int keylen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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 last_key)
|
||||||
{
|
{
|
||||||
int i, j, cmdlen, space_between_cmds;
|
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).
|
* (could not add the keys descriptions to keydef variable, because of i18n).
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
keys_popup_info (keys_e key)
|
keys_popup_info (enum key key)
|
||||||
{
|
{
|
||||||
char *info[NBKEYS];
|
char *info[NBKEYS];
|
||||||
WINDOW *infowin;
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,9 +41,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "utils.h"
|
|
||||||
#include "mem.h"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
BLK_STATE,
|
BLK_STATE,
|
||||||
@ -58,26 +56,26 @@ enum {
|
|||||||
#define MAGIC_ALLOC 0xda
|
#define MAGIC_ALLOC 0xda
|
||||||
#define MAGIC_FREE 0xdf
|
#define MAGIC_FREE 0xdf
|
||||||
|
|
||||||
struct mem_blk_s {
|
struct mem_blk {
|
||||||
unsigned id, size;
|
unsigned id, size;
|
||||||
const char *pos;
|
const char *pos;
|
||||||
struct mem_blk_s *next;
|
struct mem_blk *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
struct mem_stats {
|
||||||
unsigned ncall, nalloc, nfree;
|
unsigned ncall, nalloc, nfree;
|
||||||
struct mem_blk_s *blk;
|
struct mem_blk *blk;
|
||||||
} mem_stats_t;
|
};
|
||||||
|
|
||||||
static mem_stats_t mstats;
|
static struct mem_stats mstats;
|
||||||
|
|
||||||
|
|
||||||
static unsigned
|
static unsigned
|
||||||
stats_add_blk (size_t size, const char *pos)
|
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"));
|
EXIT_IF (o == 0, _("could not allocate memory to store block info"));
|
||||||
|
|
||||||
mstats.ncall++;
|
mstats.ncall++;
|
||||||
@ -98,7 +96,7 @@ stats_add_blk (size_t size, const char *pos)
|
|||||||
static void
|
static void
|
||||||
stats_del_blk (unsigned id)
|
stats_del_blk (unsigned id)
|
||||||
{
|
{
|
||||||
struct mem_blk_s *o, **i;
|
struct mem_blk *o, **i;
|
||||||
|
|
||||||
EXIT_IF (id < 0, _("Incorrect block id"));
|
EXIT_IF (id < 0, _("Incorrect block id"));
|
||||||
|
|
||||||
@ -289,7 +287,7 @@ dbg_free (void *ptr, const char *pos)
|
|||||||
#ifdef CALCURSE_MEMORY_DEBUG
|
#ifdef CALCURSE_MEMORY_DEBUG
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dump_block_info (struct mem_blk_s *blk)
|
dump_block_info (struct mem_blk *blk)
|
||||||
{
|
{
|
||||||
if (blk == 0)
|
if (blk == 0)
|
||||||
return;
|
return;
|
||||||
@ -315,7 +313,7 @@ mem_stats (void)
|
|||||||
|
|
||||||
if (mstats.nfree < mstats.nalloc)
|
if (mstats.nfree < mstats.nalloc)
|
||||||
{
|
{
|
||||||
struct mem_blk_s *blk;
|
struct mem_blk *blk;
|
||||||
|
|
||||||
for (blk = mstats.blk; blk; blk = blk->next)
|
for (blk = mstats.blk; blk; blk = blk->next)
|
||||||
dump_block_info (blk);
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,19 +41,20 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#include "calcurse.h"
|
||||||
#include "config.h"
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
#include "i18n.h"
|
#define NOTIFY_FIELD_LENGTH 25
|
||||||
#include "utils.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "notify.h"
|
|
||||||
|
|
||||||
static struct notify_vars_s notify;
|
struct notify_vars {
|
||||||
static struct notify_app_s notify_app;
|
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_attr_t detached_thread_attr;
|
||||||
static pthread_t notify_t_main;
|
static pthread_t notify_t_main;
|
||||||
|
|
||||||
@ -364,7 +365,7 @@ notify_main_thread (void *arg)
|
|||||||
|
|
||||||
/* Fill the given structure with information about next appointment. */
|
/* Fill the given structure with information about next appointment. */
|
||||||
unsigned
|
unsigned
|
||||||
notify_get_next (struct notify_app_s *a)
|
notify_get_next (struct notify_app *a)
|
||||||
{
|
{
|
||||||
time_t current_time;
|
time_t current_time;
|
||||||
|
|
||||||
@ -390,7 +391,7 @@ notify_get_next (struct notify_app_s *a)
|
|||||||
unsigned
|
unsigned
|
||||||
notify_get_next_bkgd (void)
|
notify_get_next_bkgd (void)
|
||||||
{
|
{
|
||||||
struct notify_app_s a;
|
struct notify_app a;
|
||||||
|
|
||||||
a.txt = (char *)0;
|
a.txt = (char *)0;
|
||||||
if (!notify_get_next (&a))
|
if (!notify_get_next (&a))
|
||||||
@ -429,7 +430,7 @@ notify_app_txt (void)
|
|||||||
static void *
|
static void *
|
||||||
notify_thread_app (void *arg)
|
notify_thread_app (void *arg)
|
||||||
{
|
{
|
||||||
struct notify_app_s tmp_app;
|
struct notify_app tmp_app;
|
||||||
|
|
||||||
if (!notify_get_next (&tmp_app))
|
if (!notify_get_next (&tmp_app))
|
||||||
pthread_exit ((void *)0);
|
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. */
|
/* Check if the newly repeated appointment is to be notified. */
|
||||||
void
|
void
|
||||||
notify_check_repeated (recur_apoint_llist_node_t *i)
|
notify_check_repeated (struct recur_apoint *i)
|
||||||
{
|
{
|
||||||
long real_app_time;
|
long real_app_time;
|
||||||
int update_notify = 0;
|
int update_notify = 0;
|
||||||
@ -549,7 +550,7 @@ notify_same_item (long time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
notify_same_recur_item (recur_apoint_llist_node_t *i)
|
notify_same_recur_item (struct recur_apoint *i)
|
||||||
{
|
{
|
||||||
int same = 0;
|
int same = 0;
|
||||||
long item_start = 0;
|
long item_start = 0;
|
||||||
@ -684,7 +685,7 @@ print_config_options (WINDOW *optwin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
reinit_conf_win (scrollwin_t *win)
|
reinit_conf_win (struct scrollwin *win)
|
||||||
{
|
{
|
||||||
unsigned first_line;
|
unsigned first_line;
|
||||||
|
|
||||||
@ -700,7 +701,7 @@ reinit_conf_win (scrollwin_t *win)
|
|||||||
void
|
void
|
||||||
notify_config_bar (void)
|
notify_config_bar (void)
|
||||||
{
|
{
|
||||||
scrollwin_t cwin;
|
struct scrollwin cwin;
|
||||||
char *buf;
|
char *buf;
|
||||||
char *number_str =
|
char *number_str =
|
||||||
_("Enter an option number to change its value");
|
_("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
|
* Calcurse - text-based organizer
|
||||||
@ -42,24 +42,18 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "utils.h"
|
|
||||||
#include "notify.h"
|
|
||||||
#include "day.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "recur.h"
|
|
||||||
|
|
||||||
recur_apoint_llist_t *recur_alist_p;
|
struct recur_apoint_list *recur_alist_p;
|
||||||
struct recur_event_s *recur_elist;
|
struct recur_event *recur_elist;
|
||||||
static struct recur_event_s bkp_cut_recur_event;
|
static struct recur_event bkp_cut_recur_event;
|
||||||
static recur_apoint_llist_node_t bkp_cut_recur_apoint;
|
static struct recur_apoint bkp_cut_recur_apoint;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_exc (struct days_s *exc)
|
free_exc (struct days *exc)
|
||||||
{
|
{
|
||||||
struct days_s *o, **i;
|
struct days *o, **i;
|
||||||
|
|
||||||
i = &exc;
|
i = &exc;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -71,11 +65,11 @@ free_exc (struct days_s *exc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
o->st = day;
|
||||||
i = exc;
|
i = exc;
|
||||||
for (;;)
|
for (;;)
|
||||||
@ -91,16 +85,16 @@ recur_add_exc (struct days_s **exc, long day)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
for (p = exc; p; p = p->next)
|
||||||
recur_add_exc (in, p->st);
|
recur_add_exc (in, p->st);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
recur_event_free_bkp (erase_flag_e flag)
|
recur_event_free_bkp (enum eraseflg flag)
|
||||||
{
|
{
|
||||||
if (bkp_cut_recur_event.mesg)
|
if (bkp_cut_recur_event.mesg)
|
||||||
{
|
{
|
||||||
@ -121,7 +115,7 @@ recur_event_free_bkp (erase_flag_e flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
recur_apoint_free_bkp (erase_flag_e flag)
|
recur_apoint_free_bkp (enum eraseflg flag)
|
||||||
{
|
{
|
||||||
if (bkp_cut_recur_apoint.mesg)
|
if (bkp_cut_recur_apoint.mesg)
|
||||||
{
|
{
|
||||||
@ -142,7 +136,7 @@ recur_apoint_free_bkp (erase_flag_e flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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"));
|
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->day = in->day;
|
||||||
bkp->mesg = mem_strdup (in->mesg);
|
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->type = in->rpt->type;
|
||||||
bkp->rpt->freq = in->rpt->freq;
|
bkp->rpt->freq = in->rpt->freq;
|
||||||
bkp->rpt->until = in->rpt->until;
|
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
|
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"));
|
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->state = in->state;
|
||||||
bkp->mesg = mem_strdup (in->mesg);
|
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->type = in->rpt->type;
|
||||||
bkp->rpt->freq = in->rpt->freq;
|
bkp->rpt->freq = in->rpt->freq;
|
||||||
bkp->rpt->until = in->rpt->until;
|
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
|
void
|
||||||
recur_apoint_llist_init (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;
|
recur_alist_p->root = NULL;
|
||||||
pthread_mutex_init (&(recur_alist_p->mutex), NULL);
|
pthread_mutex_init (&(recur_alist_p->mutex), NULL);
|
||||||
}
|
}
|
||||||
@ -195,7 +189,7 @@ recur_apoint_llist_init (void)
|
|||||||
void
|
void
|
||||||
recur_apoint_llist_free (void)
|
recur_apoint_llist_free (void)
|
||||||
{
|
{
|
||||||
recur_apoint_llist_node_t *o, **i;
|
struct recur_apoint *o, **i;
|
||||||
|
|
||||||
i = &recur_alist_p->root;
|
i = &recur_alist_p->root;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -220,7 +214,7 @@ recur_apoint_llist_free (void)
|
|||||||
void
|
void
|
||||||
recur_event_llist_free (void)
|
recur_event_llist_free (void)
|
||||||
{
|
{
|
||||||
struct recur_event_s *o, **i;
|
struct recur_event *o, **i;
|
||||||
|
|
||||||
i = &recur_elist;
|
i = &recur_elist;
|
||||||
while (*i)
|
while (*i)
|
||||||
@ -242,14 +236,14 @@ recur_event_llist_free (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Insert a new recursive appointment in the general linked list */
|
/* 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,
|
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 = mem_malloc (sizeof (struct recur_apoint));
|
||||||
o->rpt = mem_malloc (sizeof (struct rpt_s));
|
o->rpt = mem_malloc (sizeof (struct rpt));
|
||||||
o->mesg = mem_strdup (mesg);
|
o->mesg = mem_strdup (mesg);
|
||||||
o->note = (note != 0) ? mem_strdup (note) : 0;
|
o->note = (note != 0) ? mem_strdup (note) : 0;
|
||||||
o->start = start;
|
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 */
|
/* 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,
|
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 = mem_malloc (sizeof (struct recur_event));
|
||||||
o->rpt = mem_malloc (sizeof (struct rpt_s));
|
o->rpt = mem_malloc (sizeof (struct rpt));
|
||||||
o->mesg = mem_strdup (mesg);
|
o->mesg = mem_strdup (mesg);
|
||||||
o->note = (note != 0) ? mem_strdup (note) : 0;
|
o->note = (note != 0) ? mem_strdup (note) : 0;
|
||||||
o->day = day;
|
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.
|
* and the letter to be written in file.
|
||||||
*/
|
*/
|
||||||
char
|
char
|
||||||
recur_def2char (recur_types_t define)
|
recur_def2char (enum recur_type define)
|
||||||
{
|
{
|
||||||
char recur_char;
|
char recur_char;
|
||||||
|
|
||||||
@ -384,7 +378,7 @@ recur_char2def (char type)
|
|||||||
|
|
||||||
/* Write days for which recurrent items should not be repeated. */
|
/* Write days for which recurrent items should not be repeated. */
|
||||||
static void
|
static void
|
||||||
recur_write_exc (struct days_s *exc, FILE *f)
|
recur_write_exc (struct days *exc, FILE *f)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
@ -403,9 +397,9 @@ recur_write_exc (struct days_s *exc, FILE *f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Load the recursive appointment description */
|
/* 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,
|
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)
|
char state)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
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 */
|
/* 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,
|
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;
|
char buf[BUFSIZ], *nl;
|
||||||
time_t tstart, tuntil;
|
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. */
|
/* Writting of a recursive appointment into file. */
|
||||||
static void
|
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;
|
struct tm *lt;
|
||||||
time_t t;
|
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. */
|
/* Writting of a recursive event into file. */
|
||||||
static void
|
static void
|
||||||
recur_event_write (struct recur_event_s *o, FILE *f)
|
recur_event_write (struct recur_event *o, FILE *f)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
@ -578,8 +572,8 @@ recur_event_write (struct recur_event_s *o, FILE *f)
|
|||||||
void
|
void
|
||||||
recur_save_data (FILE *f)
|
recur_save_data (FILE *f)
|
||||||
{
|
{
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
|
|
||||||
for (re = recur_elist; re != 0; re = re->next)
|
for (re = recur_elist; re != 0; re = re->next)
|
||||||
recur_event_write (re, f);
|
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.
|
* calculation of recurrent dates after a turn of years.
|
||||||
*/
|
*/
|
||||||
unsigned
|
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)
|
int rpt_freq, long rpt_until, long day_start)
|
||||||
{
|
{
|
||||||
date_t start_date;
|
struct date start_date;
|
||||||
long day_end, diff;
|
long day_end, diff;
|
||||||
struct tm lt_item, lt_day;
|
struct tm lt_item, lt_day;
|
||||||
struct days_s *exc;
|
struct days *exc;
|
||||||
time_t t;
|
time_t t;
|
||||||
|
|
||||||
day_end = day_start + DAYINSEC;
|
day_end = day_start + DAYINSEC;
|
||||||
@ -746,10 +740,10 @@ recur_item_inday (long item_start, struct days_s *item_exc, int rpt_type,
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
recur_event_erase (long start, unsigned num, unsigned delete_whole,
|
recur_event_erase (long start, unsigned num, unsigned delete_whole,
|
||||||
erase_flag_e flag)
|
enum eraseflg flag)
|
||||||
{
|
{
|
||||||
unsigned n = 0;
|
unsigned n = 0;
|
||||||
struct recur_event_s *i, **iptr;
|
struct recur_event *i, **iptr;
|
||||||
|
|
||||||
iptr = &recur_elist;
|
iptr = &recur_elist;
|
||||||
for (i = recur_elist; i != 0; i = i->next)
|
for (i = recur_elist; i != 0; i = i->next)
|
||||||
@ -811,10 +805,10 @@ recur_event_erase (long start, unsigned num, unsigned delete_whole,
|
|||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
|
recur_apoint_erase (long start, unsigned num, unsigned delete_whole,
|
||||||
erase_flag_e flag)
|
enum eraseflg flag)
|
||||||
{
|
{
|
||||||
unsigned n = 0;
|
unsigned n = 0;
|
||||||
recur_apoint_llist_node_t *i, **iptr;
|
struct recur_apoint *i, **iptr;
|
||||||
int need_check_notify = 0;
|
int need_check_notify = 0;
|
||||||
|
|
||||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
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
|
* and then delete the selected item to recreate it as a recurrent one
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
recur_repeat_item (conf_t *conf)
|
recur_repeat_item (struct conf *conf)
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t t;
|
time_t t;
|
||||||
int ch = 0;
|
int ch = 0;
|
||||||
int date_entered = 0;
|
int date_entered = 0;
|
||||||
int year = 0, month = 0, day = 0;
|
int year = 0, month = 0, day = 0;
|
||||||
date_t until_date;
|
struct date until_date;
|
||||||
char outstr[BUFSIZ];
|
char outstr[BUFSIZ];
|
||||||
char user_input[BUFSIZ] = "";
|
char user_input[BUFSIZ] = "";
|
||||||
char *mesg_type_1 =
|
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.");
|
_("Sorry, the date you entered is older than the item start time.");
|
||||||
int type = 0, freq = 0;
|
int type = 0, freq = 0;
|
||||||
int item_nb;
|
int item_nb;
|
||||||
struct day_item_s *p;
|
struct day_item *p;
|
||||||
recur_apoint_llist_node_t *ra;
|
struct recur_apoint *ra;
|
||||||
struct recur_event_s *re;
|
struct recur_event *re;
|
||||||
long until, date;
|
long until, date;
|
||||||
|
|
||||||
item_nb = apoint_hilt ();
|
item_nb = apoint_hilt ();
|
||||||
@ -1035,12 +1029,12 @@ recur_repeat_item (conf_t *conf)
|
|||||||
* Read days for which recurrent items must not be repeated
|
* Read days for which recurrent items must not be repeated
|
||||||
* (such days are called exceptions).
|
* (such days are called exceptions).
|
||||||
*/
|
*/
|
||||||
struct days_s *
|
struct days *
|
||||||
recur_exc_scan (FILE *data_file)
|
recur_exc_scan (FILE *data_file)
|
||||||
{
|
{
|
||||||
int c = 0;
|
int c = 0;
|
||||||
struct tm day;
|
struct tm day;
|
||||||
struct days_s *exc_head, *exc;
|
struct days *exc_head, *exc;
|
||||||
|
|
||||||
exc_head = 0;
|
exc_head = 0;
|
||||||
while ((c = getc (data_file)) == '!')
|
while ((c = getc (data_file)) == '!')
|
||||||
@ -1056,7 +1050,7 @@ recur_exc_scan (FILE *data_file)
|
|||||||
day.tm_isdst = -1;
|
day.tm_isdst = -1;
|
||||||
day.tm_year -= 1900;
|
day.tm_year -= 1900;
|
||||||
day.tm_mon--;
|
day.tm_mon--;
|
||||||
exc = mem_malloc (sizeof (struct days_s));
|
exc = mem_malloc (sizeof (struct days));
|
||||||
exc->st = mktime (&day);
|
exc->st = mktime (&day);
|
||||||
exc->next = exc_head;
|
exc->next = exc_head;
|
||||||
exc_head = exc;
|
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
|
* 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).
|
* stored in the notify_app structure (which is the next item to be notified).
|
||||||
*/
|
*/
|
||||||
struct notify_app_s *
|
struct notify_app *
|
||||||
recur_apoint_check_next (struct notify_app_s *app, long start, long day)
|
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;
|
long real_recur_start_time;
|
||||||
|
|
||||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
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. */
|
/* Returns a structure containing the selected recurrent appointment. */
|
||||||
recur_apoint_llist_node_t *
|
struct recur_apoint *
|
||||||
recur_get_apoint (long date, int num)
|
recur_get_apoint (long date, int num)
|
||||||
{
|
{
|
||||||
recur_apoint_llist_node_t *o;
|
struct recur_apoint *o;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
pthread_mutex_lock (&(recur_alist_p->mutex));
|
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. */
|
/* Returns a structure containing the selected recurrent event. */
|
||||||
struct recur_event_s *
|
struct recur_event *
|
||||||
recur_get_event (long date, int num)
|
recur_get_event (long date, int num)
|
||||||
{
|
{
|
||||||
struct recur_event_s *o;
|
struct recur_event *o;
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
for (o = recur_elist; o != 0; o = o->next)
|
for (o = recur_elist; o != 0; o = o->next)
|
||||||
@ -1156,7 +1150,7 @@ void
|
|||||||
recur_apoint_switch_notify (long date, int recur_nb)
|
recur_apoint_switch_notify (long date, int recur_nb)
|
||||||
{
|
{
|
||||||
int n, need_chk_notify;
|
int n, need_chk_notify;
|
||||||
recur_apoint_llist_node_t *o;
|
struct recur_apoint *o;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
need_chk_notify = 0;
|
need_chk_notify = 0;
|
||||||
@ -1199,7 +1193,7 @@ recur_event_paste_item (void)
|
|||||||
bkp_cut_recur_event.rpt->until += time_shift;
|
bkp_cut_recur_event.rpt->until += time_shift;
|
||||||
if (bkp_cut_recur_event.exc)
|
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)
|
for (exc = bkp_cut_recur_event.exc; exc != 0; exc = exc->next)
|
||||||
exc->st += time_shift;
|
exc->st += time_shift;
|
||||||
@ -1229,7 +1223,7 @@ recur_apoint_paste_item (void)
|
|||||||
bkp_cut_recur_apoint.rpt->until += time_shift;
|
bkp_cut_recur_apoint.rpt->until += time_shift;
|
||||||
if (bkp_cut_recur_apoint.exc)
|
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)
|
for (exc = bkp_cut_recur_apoint.exc; exc != 0; exc = exc->next)
|
||||||
exc->st += time_shift;
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -41,10 +41,9 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "utils.h"
|
|
||||||
#include "sigs.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* General signal handling routine.
|
* 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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -40,24 +40,19 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "calcurse.h"
|
||||||
#include "custom.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "i18n.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "todo.h"
|
|
||||||
|
|
||||||
struct todo_s *todolist;
|
struct todo *todolist;
|
||||||
static int hilt = 0;
|
static int hilt = 0;
|
||||||
static int todos = 0;
|
static int todos = 0;
|
||||||
static int first = 1;
|
static int first = 1;
|
||||||
static char *msgsav;
|
static char *msgsav;
|
||||||
|
|
||||||
/* Returns a structure containing the selected item. */
|
/* Returns a structure containing the selected item. */
|
||||||
static struct todo_s *
|
static struct todo *
|
||||||
todo_get_item (int item_number)
|
todo_get_item (int item_number)
|
||||||
{
|
{
|
||||||
struct todo_s *o;
|
struct todo *o;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
o = todolist;
|
o = todolist;
|
||||||
@ -169,13 +164,13 @@ todo_new_item (void)
|
|||||||
/*
|
/*
|
||||||
* Add an item in the todo linked list.
|
* Add an item in the todo linked list.
|
||||||
*/
|
*/
|
||||||
struct todo_s *
|
struct todo *
|
||||||
todo_add (char *mesg, int id, char *note)
|
todo_add (char *mesg, int id, char *note)
|
||||||
{
|
{
|
||||||
struct todo_s *o, **i;
|
struct todo *o, **i;
|
||||||
int absid;
|
int absid;
|
||||||
|
|
||||||
o = (struct todo_s *) mem_malloc (sizeof (struct todo_s));
|
o = mem_malloc (sizeof (struct todo));
|
||||||
o->mesg = mem_strdup (mesg);
|
o->mesg = mem_strdup (mesg);
|
||||||
o->id = id;
|
o->id = id;
|
||||||
o->note = (note != NULL && note[0] != '\0') ? mem_strdup (note) : NULL;
|
o->note = (note != NULL && note[0] != '\0') ? mem_strdup (note) : NULL;
|
||||||
@ -205,7 +200,7 @@ static void
|
|||||||
todo_delete_note_bynum (unsigned num)
|
todo_delete_note_bynum (unsigned num)
|
||||||
{
|
{
|
||||||
unsigned n;
|
unsigned n;
|
||||||
struct todo_s *i, **iptr;
|
struct todo *i, **iptr;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
iptr = &todolist;
|
iptr = &todolist;
|
||||||
@ -227,10 +222,10 @@ todo_delete_note_bynum (unsigned num)
|
|||||||
|
|
||||||
/* Delete an item from the todo linked list. */
|
/* Delete an item from the todo linked list. */
|
||||||
static void
|
static void
|
||||||
todo_delete_bynum (unsigned num, erase_flag_e flag)
|
todo_delete_bynum (unsigned num, enum eraseflg flag)
|
||||||
{
|
{
|
||||||
unsigned n;
|
unsigned n;
|
||||||
struct todo_s *i, **iptr;
|
struct todo *i, **iptr;
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
iptr = &todolist;
|
iptr = &todolist;
|
||||||
@ -260,7 +255,7 @@ todo_delete_bynum (unsigned num, erase_flag_e flag)
|
|||||||
void
|
void
|
||||||
todo_flag (void)
|
todo_flag (void)
|
||||||
{
|
{
|
||||||
struct todo_s *t;
|
struct todo *t;
|
||||||
|
|
||||||
t = todo_get_item (hilt);
|
t = todo_get_item (hilt);
|
||||||
t->id = -t->id;
|
t->id = -t->id;
|
||||||
@ -268,7 +263,7 @@ todo_flag (void)
|
|||||||
|
|
||||||
/* Delete an item from the ToDo list. */
|
/* Delete an item from the ToDo list. */
|
||||||
void
|
void
|
||||||
todo_delete (conf_t *conf)
|
todo_delete (struct conf *conf)
|
||||||
{
|
{
|
||||||
char *choices = "[y/n] ";
|
char *choices = "[y/n] ";
|
||||||
char *del_todo_str = _("Do you really want to delete this task ?");
|
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
|
* Returns the position into the linked list corresponding to the
|
||||||
* given todo_s item.
|
* given todo item.
|
||||||
*/
|
*/
|
||||||
static int
|
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;
|
int n = 1, found = 0;
|
||||||
|
|
||||||
for (o = todolist; o; o = o->next)
|
for (o = todolist; o; o = o->next)
|
||||||
@ -368,7 +363,7 @@ todo_get_position (struct todo_s *i)
|
|||||||
void
|
void
|
||||||
todo_chg_priority (int action)
|
todo_chg_priority (int action)
|
||||||
{
|
{
|
||||||
struct todo_s *backup;
|
struct todo *backup;
|
||||||
char backup_mesg[BUFSIZ];
|
char backup_mesg[BUFSIZ];
|
||||||
int backup_id;
|
int backup_id;
|
||||||
char backup_note[NOTESIZ + 1];
|
char backup_note[NOTESIZ + 1];
|
||||||
@ -405,7 +400,7 @@ todo_chg_priority (int action)
|
|||||||
void
|
void
|
||||||
todo_edit_item (void)
|
todo_edit_item (void)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
char *mesg = _("Enter the new ToDo description :");
|
char *mesg = _("Enter the new ToDo description :");
|
||||||
|
|
||||||
status_mesg (mesg, "");
|
status_mesg (mesg, "");
|
||||||
@ -447,7 +442,7 @@ display_todo_item (int incolor, char *msg, int prio, int note, int len, int y,
|
|||||||
void
|
void
|
||||||
todo_update_panel (int which_pan)
|
todo_update_panel (int which_pan)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
int len = win[TOD].w - 8;
|
int len = win[TOD].w - 8;
|
||||||
int num_todo = 0;
|
int num_todo = 0;
|
||||||
int y_offset = 3, x_offset = 1;
|
int y_offset = 3, x_offset = 1;
|
||||||
@ -498,7 +493,7 @@ todo_update_panel (int which_pan)
|
|||||||
void
|
void
|
||||||
todo_edit_note (char *editor)
|
todo_edit_note (char *editor)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
char fullname[BUFSIZ];
|
char fullname[BUFSIZ];
|
||||||
char *filename;
|
char *filename;
|
||||||
|
|
||||||
@ -518,7 +513,7 @@ todo_edit_note (char *editor)
|
|||||||
void
|
void
|
||||||
todo_view_note (char *pager)
|
todo_view_note (char *pager)
|
||||||
{
|
{
|
||||||
struct todo_s *i;
|
struct todo *i;
|
||||||
char fullname[BUFSIZ];
|
char fullname[BUFSIZ];
|
||||||
|
|
||||||
i = todo_get_item (hilt);
|
i = todo_get_item (hilt);
|
||||||
@ -531,7 +526,7 @@ todo_view_note (char *pager)
|
|||||||
void
|
void
|
||||||
todo_free_list (void)
|
todo_free_list (void)
|
||||||
{
|
{
|
||||||
struct todo_s *o, **i;
|
struct todo *o, **i;
|
||||||
|
|
||||||
i = &todolist;
|
i = &todolist;
|
||||||
while (*i)
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -45,20 +45,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "calcurse.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"
|
|
||||||
|
|
||||||
/* General routine to exit calcurse properly. */
|
/* General routine to exit calcurse properly. */
|
||||||
void
|
void
|
||||||
@ -331,7 +318,7 @@ add_char (int pos, int ch, char *str)
|
|||||||
* environment, otherwise the cursor would move from place to place without
|
* environment, otherwise the cursor would move from place to place without
|
||||||
* control.
|
* control.
|
||||||
*/
|
*/
|
||||||
int
|
enum getstr
|
||||||
getstring (WINDOW *win, char *str, int l, int x, int y)
|
getstring (WINDOW *win, char *str, int l, int x, int y)
|
||||||
{
|
{
|
||||||
int ch, newpos, len = 0;
|
int ch, newpos, len = 0;
|
||||||
@ -503,7 +490,7 @@ get_item_min (long date)
|
|||||||
}
|
}
|
||||||
|
|
||||||
long
|
long
|
||||||
date2sec (date_t day, unsigned hour, unsigned min)
|
date2sec (struct date day, unsigned hour, unsigned min)
|
||||||
{
|
{
|
||||||
struct tm start, *lt;
|
struct tm start, *lt;
|
||||||
time_t tstart, t;
|
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.
|
* If no date is entered, current date is chosen.
|
||||||
*/
|
*/
|
||||||
long
|
long
|
||||||
get_sec_date (date_t date)
|
get_sec_date (struct date date)
|
||||||
{
|
{
|
||||||
struct tm *ptrtime;
|
struct tm *ptrtime;
|
||||||
time_t timer;
|
time_t timer;
|
||||||
@ -752,7 +739,7 @@ get_today (void)
|
|||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t current_time;
|
time_t current_time;
|
||||||
long current_day;
|
long current_day;
|
||||||
date_t day;
|
struct date day;
|
||||||
|
|
||||||
current_time = time (NULL);
|
current_time = time (NULL);
|
||||||
lt = localtime (¤t_time);
|
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. */
|
/* Erase a note previously attached to a todo, event or appointment. */
|
||||||
void
|
void
|
||||||
erase_note (char **note, erase_flag_e flag)
|
erase_note (char **note, enum eraseflg flag)
|
||||||
{
|
{
|
||||||
char fullname[BUFSIZ];
|
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.
|
* Returns 1 if sucessfully converted or 0 if the string is an invalid date.
|
||||||
*/
|
*/
|
||||||
int
|
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 in1, in2, in3;
|
||||||
int lyear, lmonth, lday;
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -39,13 +39,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "calendar.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "wins.h"
|
|
||||||
#include "keys.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "vars.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* variables to store window size
|
* variables to store window size
|
||||||
@ -60,7 +54,7 @@ unsigned colorize = 0;
|
|||||||
* calcurse is running in command-line mode).
|
* calcurse is running in command-line mode).
|
||||||
* This is useful to konw how to display messages on the screen.
|
* 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
|
* variables to store calendar names
|
||||||
@ -107,19 +101,19 @@ char path_dpid[] = "";
|
|||||||
char path_dmon_log[] = "";
|
char path_dmon_log[] = "";
|
||||||
|
|
||||||
/* Variable to handle pads. */
|
/* Variable to handle pads. */
|
||||||
struct pad_s apad;
|
struct pad apad;
|
||||||
|
|
||||||
/* Variable to store notify-bar settings. */
|
/* Variable to store notify-bar settings. */
|
||||||
struct nbar_s nbar;
|
struct nbar nbar;
|
||||||
|
|
||||||
/* Variable to store daemon configuration. */
|
/* Variable to store daemon configuration. */
|
||||||
struct dmon_conf_s dmon;
|
struct dmon_conf dmon;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Variables init
|
* Variables init
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
vars_init (conf_t *conf)
|
vars_init (struct conf *conf)
|
||||||
{
|
{
|
||||||
char *PATH_VI = "/usr/bin/vi";
|
char *PATH_VI = "/usr/bin/vi";
|
||||||
char *PATH_LESS = "/usr/bin/less";
|
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
|
* 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.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -40,19 +40,12 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "calcurse.h"
|
||||||
#include "keys.h"
|
|
||||||
#include "notify.h"
|
|
||||||
#include "utils.h"
|
|
||||||
#include "todo.h"
|
|
||||||
#include "custom.h"
|
|
||||||
#include "mem.h"
|
|
||||||
#include "wins.h"
|
|
||||||
|
|
||||||
/* Variables to handle calcurse windows. */
|
/* 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;
|
static int layout;
|
||||||
|
|
||||||
/* Get the current layout. */
|
/* Get the current layout. */
|
||||||
@ -77,7 +70,7 @@ wins_slctd_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Returns an enum which corresponds to the window which is selected. */
|
/* Returns an enum which corresponds to the window which is selected. */
|
||||||
window_e
|
enum win
|
||||||
wins_slctd (void)
|
wins_slctd (void)
|
||||||
{
|
{
|
||||||
return (slctd_win);
|
return (slctd_win);
|
||||||
@ -85,7 +78,7 @@ wins_slctd (void)
|
|||||||
|
|
||||||
/* Sets the selected window. */
|
/* Sets the selected window. */
|
||||||
void
|
void
|
||||||
wins_slctd_set (window_e window)
|
wins_slctd_set (enum win window)
|
||||||
{
|
{
|
||||||
slctd_win = window;
|
slctd_win = window;
|
||||||
}
|
}
|
||||||
@ -141,7 +134,7 @@ wins_init (void)
|
|||||||
* scrolling faster.
|
* scrolling faster.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
wins_scrollwin_init (scrollwin_t *sw)
|
wins_scrollwin_init (struct scrollwin *sw)
|
||||||
{
|
{
|
||||||
EXIT_IF (sw == 0, "null pointer");
|
EXIT_IF (sw == 0, "null pointer");
|
||||||
sw->win.p = newwin (sw->win.h, sw->win.w, sw->win.y, sw->win.x);
|
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. */
|
/* Free an already created scrollwin. */
|
||||||
void
|
void
|
||||||
wins_scrollwin_delete (scrollwin_t *sw)
|
wins_scrollwin_delete (struct scrollwin *sw)
|
||||||
{
|
{
|
||||||
EXIT_IF (sw == 0, "null pointer");
|
EXIT_IF (sw == 0, "null pointer");
|
||||||
delwin(sw->win.p);
|
delwin(sw->win.p);
|
||||||
@ -161,7 +154,7 @@ wins_scrollwin_delete (scrollwin_t *sw)
|
|||||||
|
|
||||||
/* Display a scrolling window. */
|
/* Display a scrolling window. */
|
||||||
void
|
void
|
||||||
wins_scrollwin_display (scrollwin_t *sw)
|
wins_scrollwin_display (struct scrollwin *sw)
|
||||||
{
|
{
|
||||||
const int visible_lines = sw->win.h - sw->pad.y - 1;
|
const int visible_lines = sw->win.h - sw->pad.y - 1;
|
||||||
|
|
||||||
@ -185,14 +178,14 @@ wins_scrollwin_display (scrollwin_t *sw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
wins_scrollwin_up (scrollwin_t *sw, int amount)
|
wins_scrollwin_up (struct scrollwin *sw, int amount)
|
||||||
{
|
{
|
||||||
if (sw->first_visible_line > 0)
|
if (sw->first_visible_line > 0)
|
||||||
sw->first_visible_line -= amount;
|
sw->first_visible_line -= amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
wins_scrollwin_down (scrollwin_t *sw, int amount)
|
wins_scrollwin_down (struct scrollwin *sw, int amount)
|
||||||
{
|
{
|
||||||
if (sw->total_lines
|
if (sw->total_lines
|
||||||
> (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
|
> (sw->first_visible_line + sw->win.h - sw->pad.y - 1))
|
||||||
@ -512,50 +505,50 @@ void
|
|||||||
wins_status_bar (void)
|
wins_status_bar (void)
|
||||||
{
|
{
|
||||||
#define NB_PANELS 3 /* 3 panels: CALENDAR, APPOINTMENT, TODO */
|
#define NB_PANELS 3 /* 3 panels: CALENDAR, APPOINTMENT, TODO */
|
||||||
window_e which_pan;
|
enum win which_pan;
|
||||||
int start, end;
|
int start, end;
|
||||||
const int pos[NB_PANELS + 1] =
|
const int pos[NB_PANELS + 1] =
|
||||||
{ 0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS };
|
{ 0, NB_CAL_CMDS, NB_CAL_CMDS + NB_APP_CMDS, TOTAL_CMDS };
|
||||||
|
|
||||||
binding_t help = {_("Help"), KEY_GENERIC_HELP};
|
struct binding help = {_("Help"), KEY_GENERIC_HELP};
|
||||||
binding_t quit = {_("Quit"), KEY_GENERIC_QUIT};
|
struct binding quit = {_("Quit"), KEY_GENERIC_QUIT};
|
||||||
binding_t save = {_("Save"), KEY_GENERIC_SAVE};
|
struct binding save = {_("Save"), KEY_GENERIC_SAVE};
|
||||||
binding_t cut = {_("Cut"), KEY_GENERIC_CUT};
|
struct binding cut = {_("Cut"), KEY_GENERIC_CUT};
|
||||||
binding_t paste = {_("Paste"), KEY_GENERIC_PASTE};
|
struct binding paste = {_("Paste"), KEY_GENERIC_PASTE};
|
||||||
binding_t chgvu = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
|
struct binding chgvu = {_("Chg Win"), KEY_GENERIC_CHANGE_VIEW};
|
||||||
binding_t import = {_("Import"), KEY_GENERIC_IMPORT};
|
struct binding import = {_("Import"), KEY_GENERIC_IMPORT};
|
||||||
binding_t export = {_("Export"), KEY_GENERIC_EXPORT};
|
struct binding export = {_("Export"), KEY_GENERIC_EXPORT};
|
||||||
binding_t togo = {_("Go to"), KEY_GENERIC_GOTO};
|
struct binding togo = {_("Go to"), KEY_GENERIC_GOTO};
|
||||||
binding_t othr = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
|
struct binding othr = {_("OtherCmd"), KEY_GENERIC_OTHER_CMD};
|
||||||
binding_t conf = {_("Config"), KEY_GENERIC_CONFIG_MENU};
|
struct binding conf = {_("Config"), KEY_GENERIC_CONFIG_MENU};
|
||||||
binding_t draw = {_("Redraw"), KEY_GENERIC_REDRAW};
|
struct binding draw = {_("Redraw"), KEY_GENERIC_REDRAW};
|
||||||
binding_t appt = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
|
struct binding appt = {_("Add Appt"), KEY_GENERIC_ADD_APPT};
|
||||||
binding_t todo = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
|
struct binding todo = {_("Add Todo"), KEY_GENERIC_ADD_TODO};
|
||||||
binding_t gnday = {_("+1 Day"), KEY_GENERIC_NEXT_DAY};
|
struct binding gnday = {_("+1 Day"), KEY_GENERIC_NEXT_DAY};
|
||||||
binding_t gpday = {_("-1 Day"), KEY_GENERIC_PREV_DAY};
|
struct binding gpday = {_("-1 Day"), KEY_GENERIC_PREV_DAY};
|
||||||
binding_t gnweek = {_("+1 Week"), KEY_GENERIC_NEXT_WEEK};
|
struct binding gnweek = {_("+1 Week"), KEY_GENERIC_NEXT_WEEK};
|
||||||
binding_t gpweek = {_("-1 Week"), KEY_GENERIC_PREV_WEEK};
|
struct binding gpweek = {_("-1 Week"), KEY_GENERIC_PREV_WEEK};
|
||||||
binding_t today = {_("Today"), KEY_GENERIC_GOTO_TODAY};
|
struct binding today = {_("Today"), KEY_GENERIC_GOTO_TODAY};
|
||||||
binding_t nview = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
|
struct binding nview = {_("Nxt View"), KEY_GENERIC_SCROLL_DOWN};
|
||||||
binding_t pview = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
|
struct binding pview = {_("Prv View"), KEY_GENERIC_SCROLL_UP};
|
||||||
binding_t up = {_("Up"), KEY_MOVE_UP};
|
struct binding up = {_("Up"), KEY_MOVE_UP};
|
||||||
binding_t down = {_("Down"), KEY_MOVE_DOWN};
|
struct binding down = {_("Down"), KEY_MOVE_DOWN};
|
||||||
binding_t left = {_("Left"), KEY_MOVE_LEFT};
|
struct binding left = {_("Left"), KEY_MOVE_LEFT};
|
||||||
binding_t right = {_("Right"), KEY_MOVE_RIGHT};
|
struct binding right = {_("Right"), KEY_MOVE_RIGHT};
|
||||||
binding_t weekb = {_("beg Week"), KEY_START_OF_WEEK};
|
struct binding weekb = {_("beg Week"), KEY_START_OF_WEEK};
|
||||||
binding_t weeke = {_("end Week"), KEY_END_OF_WEEK};
|
struct binding weeke = {_("end Week"), KEY_END_OF_WEEK};
|
||||||
binding_t add = {_("Add Item"), KEY_ADD_ITEM};
|
struct binding add = {_("Add Item"), KEY_ADD_ITEM};
|
||||||
binding_t del = {_("Del Item"), KEY_DEL_ITEM};
|
struct binding del = {_("Del Item"), KEY_DEL_ITEM};
|
||||||
binding_t edit = {_("Edit Itm"), KEY_EDIT_ITEM};
|
struct binding edit = {_("Edit Itm"), KEY_EDIT_ITEM};
|
||||||
binding_t view = {_("View"), KEY_VIEW_ITEM};
|
struct binding view = {_("View"), KEY_VIEW_ITEM};
|
||||||
binding_t flag = {_("Flag Itm"), KEY_FLAG_ITEM};
|
struct binding flag = {_("Flag Itm"), KEY_FLAG_ITEM};
|
||||||
binding_t rept = {_("Repeat"), KEY_REPEAT_ITEM};
|
struct binding rept = {_("Repeat"), KEY_REPEAT_ITEM};
|
||||||
binding_t enote = {_("EditNote"), KEY_EDIT_NOTE};
|
struct binding enote = {_("EditNote"), KEY_EDIT_NOTE};
|
||||||
binding_t vnote = {_("ViewNote"), KEY_VIEW_NOTE};
|
struct binding vnote = {_("ViewNote"), KEY_VIEW_NOTE};
|
||||||
binding_t rprio = {_("Prio.+"), KEY_RAISE_PRIORITY};
|
struct binding rprio = {_("Prio.+"), KEY_RAISE_PRIORITY};
|
||||||
binding_t lprio = {_("Prio.-"), KEY_LOWER_PRIORITY};
|
struct binding lprio = {_("Prio.-"), KEY_LOWER_PRIORITY};
|
||||||
|
|
||||||
binding_t *binding[TOTAL_CMDS] = {
|
struct binding *binding[TOTAL_CMDS] = {
|
||||||
/* calendar keys */
|
/* calendar keys */
|
||||||
&help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right,
|
&help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right,
|
||||||
&togo, &othr, &import, &export, &weekb, &weeke, &appt, &todo,
|
&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