aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/main.c')
-rw-r--r--calendar/gui/main.c40
1 files changed, 29 insertions, 11 deletions
diff --git a/calendar/gui/main.c b/calendar/gui/main.c
index a489a157be..27042c3d2a 100644
--- a/calendar/gui/main.c
+++ b/calendar/gui/main.c
@@ -43,7 +43,7 @@ int active_calendars = 0;
/* A list of all of the calendars started */
GList *all_calendars = NULL;
-static void new_calendar (char *full_name, char *calendar_file, char *geometry);
+static void new_calendar (char *full_name, char *calendar_file, char *geometry, char *view);
/* For dumping part of a calendar */
static time_t from_t, to_t;
@@ -226,14 +226,14 @@ today_clicked (GtkWidget *widget, GnomeCalendar *gcal)
static void
new_calendar_cmd (GtkWidget *widget, void *data)
{
- new_calendar (full_name, NULL, NULL);
+ new_calendar (full_name, NULL, NULL, NULL);
}
static void
open_ok (GtkWidget *widget, GtkFileSelection *fs)
{
/* FIXME: find out who owns this calendar and use that name */
- new_calendar ("Somebody", gtk_file_selection_get_filename (fs), NULL);
+ new_calendar ("Somebody", gtk_file_selection_get_filename (fs), NULL, NULL);
gtk_widget_destroy (GTK_WIDGET (fs));
}
@@ -393,7 +393,7 @@ calendar_close_event (GtkWidget *widget, GdkEvent *event, GnomeCalendar *gcal)
}
static void
-new_calendar (char *full_name, char *calendar_file, char *geometry)
+new_calendar (char *full_name, char *calendar_file, char *geometry, char *page)
{
GtkWidget *toplevel;
char *title;
@@ -411,6 +411,9 @@ new_calendar (char *full_name, char *calendar_file, char *geometry)
g_free (title);
setup_menu (toplevel);
+ if (page)
+ gnome_calendar_set_view (GNOME_CALENDAR (toplevel), page);
+
if (calendar_file && g_file_exists (calendar_file))
gnome_calendar_load (GNOME_CALENDAR (toplevel), calendar_file);
else
@@ -436,7 +439,8 @@ process_dates (void)
enum {
GEOMETRY_KEY = -1,
- USERFILE_KEY = -2
+ USERFILE_KEY = -2,
+ VIEW_KEY = -3
};
static struct argp_option argp_options [] = {
@@ -445,12 +449,15 @@ static struct argp_option argp_options [] = {
{ "file", 'F', N_("FILE"), 0, N_("File to load calendar from"), 1 },
{ "userfile", USERFILE_KEY, NULL, 0, N_("Load the user calendar"), 1 },
{ "geometry", GEOMETRY_KEY, N_("GEOMETRY"), 0, N_("Geometry for starting up"), 1 },
+ { "view", VIEW_KEY, N_("VIEW"), 0, N_("The startup view mode"), 1 },
{ "to", 't', N_("DATE"), 0, N_("Specifies ending date [for --events]"), 1 },
{ NULL, 0, NULL, 0, NULL, 0 },
};
+/* Lists used to startup various GnomeCalendars */
static GList *start_calendars;
static GList *start_geometries;
+static GList *start_views;
static int
same_day (struct tm *a, struct tm *b)
@@ -532,6 +539,10 @@ parse_an_arg (int key, char *arg, struct argp_state *state)
*/
arg = COOKIE_USER_HOME_DIR;
/* fall trough */
+
+ case VIEW_KEY:
+ start_views = g_list_append (start_views, arg);
+ break;
case 'F':
start_calendars = g_list_append (start_calendars, arg);
@@ -570,7 +581,7 @@ session_save_state (GnomeClient *client, gint phase, GnomeRestartStyle save_styl
GnomeInteractStyle interact_style, gint fast, gpointer client_data)
{
char *sess_id;
- char **argv = (char **) g_malloc (sizeof (char *) * ((active_calendars * 4) + 3));
+ char **argv = (char **) g_malloc (sizeof (char *) * ((active_calendars * 6) + 3));
GList *l, *free_list = 0;
int i;
@@ -591,6 +602,8 @@ session_save_state (GnomeClient *client, gint phase, GnomeRestartStyle save_styl
}
argv [i++] = "--geometry";
argv [i++] = geometry;
+ argv [i++] = "--view";
+ argv [i++] = gnome_calendar_get_current_view_name (gcal);
free_list = g_list_append (free_list, geometry);
calendar_save (gcal->cal, gcal->cal->filename);
}
@@ -633,15 +646,17 @@ main(int argc, char *argv[])
* the geometry specificied -if any-
*/
if (start_calendars){
- GList *p, *g;
+ GList *p, *g, *v;
char *title;
p = start_calendars;
g = start_geometries;
+ v = start_views;
while (p){
char *file = p->data;
char *geometry = g ? g->data : NULL;
-
+ char *page_name = v ? v->data : NULL;
+
if (file == COOKIE_USER_HOME_DIR)
file = user_calendar_file;
@@ -649,17 +664,20 @@ main(int argc, char *argv[])
title = full_name;
else
title = file;
- new_calendar (title, file, geometry);
-
+ new_calendar (title, file, geometry, page_name);
+
p = p->next;
if (g)
g = g->next;
+ if (v)
+ v = v->next;
}
g_list_free (p);
} else {
char *geometry = start_geometries ? start_geometries->data : NULL;
+ char *page_name = start_views ? start_views->data : NULL;
- new_calendar (full_name, user_calendar_file, geometry);
+ new_calendar (full_name, user_calendar_file, geometry, page_name);
}
gtk_main ();
return 0;