More work on sidebar customization.
This commit is contained in:
parent
ec36b96848
commit
cc77e839d8
@ -10,6 +10,14 @@
|
|||||||
|
|
||||||
* src/wins.c (wins_update_border, wins_update_panels): new
|
* src/wins.c (wins_update_border, wins_update_panels): new
|
||||||
functions extracted from wins_update()
|
functions extracted from wins_update()
|
||||||
|
|
||||||
|
* src/wins.c (wins_sbar_width, wins_sbar_wperc)
|
||||||
|
(wins_set_sbar_width, wins_sbar_winc, wins_sbar_wdec)
|
||||||
|
(wins_reinit_panels): new functions to handle side bar width
|
||||||
|
customization
|
||||||
|
|
||||||
|
* src/custom.c
|
||||||
|
* src/io.c: sidebar width added to the configuration file
|
||||||
|
|
||||||
2010-03-19 Frederic Culot <frederic@culot.org>
|
2010-03-19 Frederic Culot <frederic@culot.org>
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: calcurse.h,v 1.2 2010/03/20 13:29:47 culot Exp $ */
|
/* $Id: calcurse.h,v 1.3 2010/03/21 09:21:07 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -133,6 +133,10 @@
|
|||||||
/* Maximum number of colors available. */
|
/* Maximum number of colors available. */
|
||||||
#define NBUSERCOLORS 6
|
#define NBUSERCOLORS 6
|
||||||
|
|
||||||
|
/* Side bar width acceptable boundaries. */
|
||||||
|
#define SBARMINWIDTH 32
|
||||||
|
#define SBARMAXWIDTHPERC 50
|
||||||
|
|
||||||
/* Related to date manipulation. */
|
/* Related to date manipulation. */
|
||||||
#define DAYINSEC 86400
|
#define DAYINSEC 86400
|
||||||
#define HOURINSEC 3600
|
#define HOURINSEC 3600
|
||||||
@ -893,9 +897,13 @@ void vars_init (struct conf *);
|
|||||||
|
|
||||||
/* wins.c */
|
/* wins.c */
|
||||||
extern struct window win[NBWINS];
|
extern struct window win[NBWINS];
|
||||||
extern unsigned sbarwidth;
|
|
||||||
int wins_layout (void);
|
int wins_layout (void);
|
||||||
void wins_set_layout (int);
|
void wins_set_layout (int);
|
||||||
|
unsigned wins_sbar_width (void);
|
||||||
|
unsigned wins_sbar_wperc (void);
|
||||||
|
void wins_set_sbar_width (unsigned);
|
||||||
|
void wins_sbar_winc (void);
|
||||||
|
void wins_sbar_wdec (void);
|
||||||
void wins_slctd_init (void);
|
void wins_slctd_init (void);
|
||||||
enum win wins_slctd (void);
|
enum win wins_slctd (void);
|
||||||
void wins_slctd_set (enum win);
|
void wins_slctd_set (enum win);
|
||||||
@ -907,6 +915,7 @@ void wins_scrollwin_display (struct scrollwin *);
|
|||||||
void wins_scrollwin_up (struct scrollwin *, int);
|
void wins_scrollwin_up (struct scrollwin *, int);
|
||||||
void wins_scrollwin_down (struct scrollwin *, int);
|
void wins_scrollwin_down (struct scrollwin *, int);
|
||||||
void wins_reinit (void);
|
void wins_reinit (void);
|
||||||
|
void wins_reinit_panels (void);
|
||||||
void wins_show (WINDOW *, char *);
|
void wins_show (WINDOW *, char *);
|
||||||
void wins_get_config (void);
|
void wins_get_config (void);
|
||||||
void wins_update_border (void);
|
void wins_update_border (void);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: calendar.c,v 1.34 2010/03/20 13:29:48 culot Exp $ */
|
/* $calcurse: calendar.c,v 1.35 2010/03/21 09:21:07 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -306,17 +306,18 @@ draw_monthly_view (struct window *cwin, struct date *current_day,
|
|||||||
unsigned sunday_first)
|
unsigned sunday_first)
|
||||||
{
|
{
|
||||||
const int OFFY = 2 + (CALHEIGHT - 9) / 2;
|
const int OFFY = 2 + (CALHEIGHT - 9) / 2;
|
||||||
const int OFFX = (sbarwidth - 27) / 2;
|
|
||||||
struct date 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 OFFX, SBAR_WIDTH, ofs_x, ofs_y;
|
||||||
int item_this_day = 0;
|
int item_this_day = 0;
|
||||||
|
|
||||||
mo = slctd_day.mm;
|
mo = slctd_day.mm;
|
||||||
yr = slctd_day.yyyy;
|
yr = slctd_day.yyyy;
|
||||||
|
|
||||||
/* offset for centering calendar in window */
|
/* offset for centering calendar in window */
|
||||||
|
SBAR_WIDTH = wins_sbar_width ();
|
||||||
|
OFFX = (SBAR_WIDTH - 27) / 2;
|
||||||
ofs_y = OFFY;
|
ofs_y = OFFY;
|
||||||
ofs_x = OFFX;
|
ofs_x = OFFX;
|
||||||
|
|
||||||
@ -334,7 +335,7 @@ draw_monthly_view (struct window *cwin, struct date *current_day,
|
|||||||
/* Write the current month and year on top of the calendar */
|
/* Write the current month and year on top of the calendar */
|
||||||
custom_apply_attr (cwin->p, ATTR_HIGHEST);
|
custom_apply_attr (cwin->p, ATTR_HIGHEST);
|
||||||
mvwprintw (cwin->p, ofs_y,
|
mvwprintw (cwin->p, ofs_y,
|
||||||
(sbarwidth - (strlen (_(monthnames[mo - 1])) + 5)) / 2,
|
(SBAR_WIDTH - (strlen (_(monthnames[mo - 1])) + 5)) / 2,
|
||||||
"%s %d", _(monthnames[mo - 1]), slctd_day.yyyy);
|
"%s %d", _(monthnames[mo - 1]), slctd_day.yyyy);
|
||||||
custom_remove_attr (cwin->p, ATTR_HIGHEST);
|
custom_remove_attr (cwin->p, ATTR_HIGHEST);
|
||||||
++ofs_y;
|
++ofs_y;
|
||||||
|
20
src/custom.c
20
src/custom.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: custom.c,v 1.47 2010/03/20 13:29:48 culot Exp $ */
|
/* $calcurse: custom.c,v 1.48 2010/03/21 09:21:07 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -43,7 +43,7 @@
|
|||||||
#include "calcurse.h"
|
#include "calcurse.h"
|
||||||
|
|
||||||
/* Available configuration variables. */
|
/* Available configuration variables. */
|
||||||
enum {
|
enum conf_var {
|
||||||
CUSTOM_CONF_NOVARIABLE,
|
CUSTOM_CONF_NOVARIABLE,
|
||||||
CUSTOM_CONF_AUTOSAVE,
|
CUSTOM_CONF_AUTOSAVE,
|
||||||
CUSTOM_CONF_PERIODICSAVE,
|
CUSTOM_CONF_PERIODICSAVE,
|
||||||
@ -55,6 +55,7 @@ enum {
|
|||||||
CUSTOM_CONF_WEEKBEGINSONMONDAY,
|
CUSTOM_CONF_WEEKBEGINSONMONDAY,
|
||||||
CUSTOM_CONF_COLORTHEME,
|
CUSTOM_CONF_COLORTHEME,
|
||||||
CUSTOM_CONF_LAYOUT,
|
CUSTOM_CONF_LAYOUT,
|
||||||
|
CUSTOM_CONF_SBAR_WIDTH,
|
||||||
CUSTOM_CONF_NOTIFYBARSHOW,
|
CUSTOM_CONF_NOTIFYBARSHOW,
|
||||||
CUSTOM_CONF_NOTIFYBARDATE,
|
CUSTOM_CONF_NOTIFYBARDATE,
|
||||||
CUSTOM_CONF_NOTIFYBARCLOCK,
|
CUSTOM_CONF_NOTIFYBARCLOCK,
|
||||||
@ -242,7 +243,7 @@ custom_load_conf (struct conf *conf, int background)
|
|||||||
char *mesg_line1 = _("Failed to open config file");
|
char *mesg_line1 = _("Failed to open config file");
|
||||||
char *mesg_line2 = _("Press [ENTER] to continue");
|
char *mesg_line2 = _("Press [ENTER] to continue");
|
||||||
char buf[BUFSIZ], e_conf[BUFSIZ];
|
char buf[BUFSIZ], e_conf[BUFSIZ];
|
||||||
int var;
|
enum conf_var var;
|
||||||
|
|
||||||
data_file = fopen (path_conf, "r");
|
data_file = fopen (path_conf, "r");
|
||||||
if (data_file == NULL)
|
if (data_file == NULL)
|
||||||
@ -311,6 +312,10 @@ custom_load_conf (struct conf *conf, int background)
|
|||||||
wins_set_layout (atoi (e_conf));
|
wins_set_layout (atoi (e_conf));
|
||||||
var = 0;
|
var = 0;
|
||||||
break;
|
break;
|
||||||
|
case CUSTOM_CONF_SBAR_WIDTH:
|
||||||
|
wins_set_sbar_width (atoi (e_conf));
|
||||||
|
var = 0;
|
||||||
|
break;
|
||||||
case CUSTOM_CONF_NOTIFYBARSHOW:
|
case CUSTOM_CONF_NOTIFYBARSHOW:
|
||||||
nbar.show = fill_config_var (e_conf);
|
nbar.show = fill_config_var (e_conf);
|
||||||
var = 0;
|
var = 0;
|
||||||
@ -375,6 +380,8 @@ custom_load_conf (struct conf *conf, int background)
|
|||||||
var = CUSTOM_CONF_COLORTHEME;
|
var = CUSTOM_CONF_COLORTHEME;
|
||||||
else if (strncmp (e_conf, "layout=", 7) == 0)
|
else if (strncmp (e_conf, "layout=", 7) == 0)
|
||||||
var = CUSTOM_CONF_LAYOUT;
|
var = CUSTOM_CONF_LAYOUT;
|
||||||
|
else if (strncmp (e_conf, "side-bar_width=", 15) == 0)
|
||||||
|
var = CUSTOM_CONF_SBAR_WIDTH;
|
||||||
else if (strncmp (e_conf, "notify-bar_show=", 16) == 0)
|
else if (strncmp (e_conf, "notify-bar_show=", 16) == 0)
|
||||||
var = CUSTOM_CONF_NOTIFYBARSHOW;
|
var = CUSTOM_CONF_NOTIFYBARSHOW;
|
||||||
else if (strncmp (e_conf, "notify-bar_date=", 16) == 0)
|
else if (strncmp (e_conf, "notify-bar_date=", 16) == 0)
|
||||||
@ -605,6 +612,7 @@ custom_sidebar_config (void)
|
|||||||
|
|
||||||
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
||||||
doupdate ();
|
doupdate ();
|
||||||
|
|
||||||
while ((ch = keys_getch (win[STA].p)) != KEY_GENERIC_QUIT)
|
while ((ch = keys_getch (win[STA].p)) != KEY_GENERIC_QUIT)
|
||||||
{
|
{
|
||||||
unsigned need_update;
|
unsigned need_update;
|
||||||
@ -613,11 +621,11 @@ custom_sidebar_config (void)
|
|||||||
switch (ch)
|
switch (ch)
|
||||||
{
|
{
|
||||||
case KEY_MOVE_UP:
|
case KEY_MOVE_UP:
|
||||||
sbarwidth++;
|
wins_sbar_winc ();
|
||||||
need_update = 1;
|
need_update = 1;
|
||||||
break;
|
break;
|
||||||
case KEY_MOVE_DOWN:
|
case KEY_MOVE_DOWN:
|
||||||
sbarwidth--;
|
wins_sbar_wdec ();
|
||||||
need_update = 1;
|
need_update = 1;
|
||||||
break;
|
break;
|
||||||
case KEY_GENERIC_HELP:
|
case KEY_GENERIC_HELP:
|
||||||
@ -629,7 +637,7 @@ custom_sidebar_config (void)
|
|||||||
|
|
||||||
if (need_update)
|
if (need_update)
|
||||||
{
|
{
|
||||||
wins_reinit ();
|
wins_reinit_panels ();
|
||||||
wins_update_border ();
|
wins_update_border ();
|
||||||
wins_update_panels ();
|
wins_update_panels ();
|
||||||
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
keys_display_bindings_bar (win[STA].p, binding, 0, binding_size);
|
||||||
|
7
src/io.c
7
src/io.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: io.c,v 1.81 2010/03/20 10:54:46 culot Exp $ */
|
/* $calcurse: io.c,v 1.82 2010/03/21 09:21:07 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -887,6 +887,11 @@ io_save_conf (struct conf *conf)
|
|||||||
(void)fprintf (fp, "\n# This is the layout of the calendar :\n");
|
(void)fprintf (fp, "\n# This is the layout of the calendar :\n");
|
||||||
(void)fprintf (fp, "layout=\n");
|
(void)fprintf (fp, "layout=\n");
|
||||||
(void)fprintf (fp, "%d\n", wins_layout ());
|
(void)fprintf (fp, "%d\n", wins_layout ());
|
||||||
|
|
||||||
|
(void)fprintf (fp, "\n# Width (in percentage, 0 being minimun width) "
|
||||||
|
"of the side bar :\n");
|
||||||
|
(void)fprintf (fp, "side-bar_width=\n");
|
||||||
|
(void)fprintf (fp, "%d\n", wins_sbar_wperc ());
|
||||||
|
|
||||||
if (ui_mode == UI_CURSES)
|
if (ui_mode == UI_CURSES)
|
||||||
pthread_mutex_lock (&nbar.mutex);
|
pthread_mutex_lock (&nbar.mutex);
|
||||||
|
104
src/wins.c
104
src/wins.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: wins.c,v 1.30 2010/03/20 13:29:48 culot Exp $ */
|
/* $calcurse: wins.c,v 1.31 2010/03/21 09:21:07 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -46,7 +46,7 @@
|
|||||||
struct window win[NBWINS];
|
struct window win[NBWINS];
|
||||||
|
|
||||||
/* User-configurable side bar width. */
|
/* User-configurable side bar width. */
|
||||||
unsigned sbarwidth = 30;
|
static unsigned sbarwidth;
|
||||||
|
|
||||||
static enum win slctd_win;
|
static enum win slctd_win;
|
||||||
static int layout;
|
static int layout;
|
||||||
@ -55,7 +55,7 @@ static int layout;
|
|||||||
int
|
int
|
||||||
wins_layout (void)
|
wins_layout (void)
|
||||||
{
|
{
|
||||||
return (layout);
|
return layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the current layout. */
|
/* Set the current layout. */
|
||||||
@ -65,6 +65,63 @@ wins_set_layout (int nb)
|
|||||||
layout = nb;
|
layout = nb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get the current side bar width. */
|
||||||
|
unsigned
|
||||||
|
wins_sbar_width (void)
|
||||||
|
{
|
||||||
|
return sbarwidth ? sbarwidth : SBARMINWIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the side bar width in percentage of the total number of columns
|
||||||
|
* available in calcurse's screen.
|
||||||
|
*/
|
||||||
|
unsigned
|
||||||
|
wins_sbar_wperc (void)
|
||||||
|
{
|
||||||
|
unsigned perc;
|
||||||
|
|
||||||
|
perc = col ? (unsigned)(100 * sbarwidth / col + 1): 0;
|
||||||
|
|
||||||
|
return perc > SBARMAXWIDTHPERC ? SBARMAXWIDTHPERC : perc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set side bar width (unit: number of characters) given a width in percentage
|
||||||
|
* of calcurse's screen total width.
|
||||||
|
* The side bar could not have a width representing more than 50% of the screen,
|
||||||
|
* and could not be less than SBARMINWIDTH characters.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
wins_set_sbar_width (unsigned perc)
|
||||||
|
{
|
||||||
|
if (perc > SBARMAXWIDTHPERC)
|
||||||
|
sbarwidth = col * SBARMAXWIDTHPERC / 100;
|
||||||
|
else if (perc <= 0)
|
||||||
|
sbarwidth = SBARMINWIDTH;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbarwidth = (unsigned)(col * perc / 100);
|
||||||
|
if (sbarwidth < SBARMINWIDTH)
|
||||||
|
sbarwidth = SBARMINWIDTH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change the width of the side bar within acceptable boundaries. */
|
||||||
|
void
|
||||||
|
wins_sbar_winc (void)
|
||||||
|
{
|
||||||
|
if (sbarwidth < SBARMAXWIDTHPERC * col / 100)
|
||||||
|
sbarwidth++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
wins_sbar_wdec (void)
|
||||||
|
{
|
||||||
|
if (sbarwidth > SBARMINWIDTH)
|
||||||
|
sbarwidth--;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize the selected window in calcurse's interface. */
|
/* Initialize the selected window in calcurse's interface. */
|
||||||
void
|
void
|
||||||
wins_slctd_init (void)
|
wins_slctd_init (void)
|
||||||
@ -96,17 +153,12 @@ wins_slctd_next (void)
|
|||||||
slctd_win++;
|
slctd_win++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create all the windows. */
|
static void
|
||||||
void
|
wins_init_panels (void)
|
||||||
wins_init (void)
|
|
||||||
{
|
{
|
||||||
char label[BUFSIZ];
|
char label[BUFSIZ];
|
||||||
|
|
||||||
/*
|
win[CAL].p = newwin (CALHEIGHT, wins_sbar_width (), win[CAL].y, win[CAL].x);
|
||||||
* Create the three main windows plus the status bar and the pad used to
|
|
||||||
* display appointments and event.
|
|
||||||
*/
|
|
||||||
win[CAL].p = newwin (CALHEIGHT, sbarwidth, win[CAL].y, win[CAL].x);
|
|
||||||
(void)snprintf (label, BUFSIZ, _("Calendar"));
|
(void)snprintf (label, BUFSIZ, _("Calendar"));
|
||||||
wins_show (win[CAL].p, label);
|
wins_show (win[CAL].p, label);
|
||||||
|
|
||||||
@ -120,12 +172,19 @@ wins_init (void)
|
|||||||
(void)snprintf (label, BUFSIZ, _("ToDo"));
|
(void)snprintf (label, BUFSIZ, _("ToDo"));
|
||||||
wins_show (win[TOD].p, label);
|
wins_show (win[TOD].p, label);
|
||||||
|
|
||||||
win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y, win[STA].x);
|
/* Enable function keys (i.e. arrow keys) in those windows */
|
||||||
|
|
||||||
/* Enable function keys (i.e. arrow keys) in those windows */
|
|
||||||
keypad (win[CAL].p, TRUE);
|
keypad (win[CAL].p, TRUE);
|
||||||
keypad (win[APP].p, TRUE);
|
keypad (win[APP].p, TRUE);
|
||||||
keypad (win[TOD].p, TRUE);
|
keypad (win[TOD].p, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create all the windows. */
|
||||||
|
void
|
||||||
|
wins_init (void)
|
||||||
|
{
|
||||||
|
wins_init_panels ();
|
||||||
|
win[STA].p = newwin (win[STA].h, win[STA].w, win[STA].y, win[STA].x);
|
||||||
|
|
||||||
keypad (win[STA].p, TRUE);
|
keypad (win[STA].p, TRUE);
|
||||||
|
|
||||||
/* Notify that the curses mode is now launched. */
|
/* Notify that the curses mode is now launched. */
|
||||||
@ -195,6 +254,17 @@ wins_scrollwin_down (struct scrollwin *sw, int amount)
|
|||||||
sw->first_visible_line += amount;
|
sw->first_visible_line += amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
wins_reinit_panels (void)
|
||||||
|
{
|
||||||
|
delwin (win[CAL].p);
|
||||||
|
delwin (win[APP].p);
|
||||||
|
delwin (apad.ptrwin);
|
||||||
|
delwin (win[TOD].p);
|
||||||
|
wins_get_config ();
|
||||||
|
wins_init_panels ();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Delete the existing windows and recreate them with their new
|
* Delete the existing windows and recreate them with their new
|
||||||
* size and placement.
|
* size and placement.
|
||||||
@ -202,11 +272,11 @@ wins_scrollwin_down (struct scrollwin *sw, int amount)
|
|||||||
void
|
void
|
||||||
wins_reinit (void)
|
wins_reinit (void)
|
||||||
{
|
{
|
||||||
delwin (win[STA].p);
|
|
||||||
delwin (win[CAL].p);
|
delwin (win[CAL].p);
|
||||||
delwin (win[APP].p);
|
delwin (win[APP].p);
|
||||||
delwin (apad.ptrwin);
|
delwin (apad.ptrwin);
|
||||||
delwin (win[TOD].p);
|
delwin (win[TOD].p);
|
||||||
|
delwin (win[STA].p);
|
||||||
wins_get_config ();
|
wins_get_config ();
|
||||||
wins_init ();
|
wins_init ();
|
||||||
if (notify_bar ())
|
if (notify_bar ())
|
||||||
@ -260,7 +330,7 @@ wins_get_config (void)
|
|||||||
win[NOT].x = 0;
|
win[NOT].x = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
win[CAL].w = sbarwidth;
|
win[CAL].w = wins_sbar_width ();
|
||||||
win[CAL].h = CALHEIGHT;
|
win[CAL].h = CALHEIGHT;
|
||||||
|
|
||||||
if (layout <= 4)
|
if (layout <= 4)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user