From: <si...@us...> - 2009-09-01 20:38:11
|
Revision: 798 http://osmo-pim.svn.sourceforge.net/osmo-pim/?rev=798&view=rev Author: silloz Date: 2009-09-01 20:37:59 +0000 (Tue, 01 Sep 2009) Log Message: ----------- * Added preferences window Modified Paths: -------------- trunk/src/Makefile.am trunk/src/calendar.c trunk/src/gui.h trunk/src/utils_gui.c trunk/src/utils_gui.h Added Paths: ----------- trunk/src/preferences_gui.c trunk/src/preferences_gui.h Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2009-09-01 12:59:06 UTC (rev 797) +++ trunk/src/Makefile.am 2009-09-01 20:37:59 UTC (rev 798) @@ -38,6 +38,7 @@ options_gui_notes.c options_gui_notes.h \ options_gui_tasks.c options_gui_tasks.h \ options_prefs.c options_prefs.h \ + preferences_gui.c preferences_gui.h \ stock_icons.c stock_icons.h stock_icons_data.h \ tasks.c tasks.h \ tasks_export.c tasks_export.h \ Modified: trunk/src/calendar.c =================================================================== --- trunk/src/calendar.c 2009-09-01 12:59:06 UTC (rev 797) +++ trunk/src/calendar.c 2009-09-01 20:37:59 UTC (rev 798) @@ -40,9 +40,24 @@ #include "check_events.h" #include "calendar_moon.h" #include "stock_icons.h" +#include "preferences_gui.h" /*------------------------------------------------------------------------------*/ +void +show_preferences_window_cb (GtkWidget *widget, GUI *appGUI) +{ + gint page; + + appGUI->opt->window = opt_create_preferences_window (appGUI); + gtk_widget_show (appGUI->opt->window); + + page = gtk_notebook_page_num (GTK_NOTEBOOK (appGUI->opt->notebook), appGUI->opt->calendar); + gtk_notebook_set_current_page (GTK_NOTEBOOK (appGUI->opt->notebook), page); +} + +/*------------------------------------------------------------------------------*/ + static void cal_set_moon_icon (gint moon_phase, GUI *appGUI) { @@ -1527,15 +1542,19 @@ " <toolitem name=\"next_day\" action=\"next_day\" />\n" " <toolitem name=\"next_month\" action=\"next_month\" />\n" " <toolitem name=\"next_year\" action=\"next_year\" />\n" -" <separator name=\"sep1\" />\n" +" <separator/>\n" " <toolitem name=\"jump_to_date\" action=\"jump_to_date\" />\n" " <toolitem name=\"full_year\" action=\"full_year\" />\n" " <toolitem name=\"date_calc\" action=\"date_calc\" />\n" #ifdef PRINTING_SUPPORT " <toolitem name=\"print\" action=\"print\" />\n" #endif /* PRINTING_SUPPORT */ -" <separator name=\"sep2\" />\n" +" <separator/>\n" " <toolitem name=\"edit_note\" action=\"edit_note\" />\n" +#if 0 +" <separator expand=\"true\" />\n" +" <toolitem name=\"preferences\" action=\"preferences\" />\n" +#endif " </toolbar>\n"; GtkActionEntry entries[] = { @@ -1552,6 +1571,9 @@ { "print", OSMO_STOCK_PRINT, _("Print calendar"), NULL, _("Print calendar"), NULL }, #endif /* PRINTING_SUPPORT */ { "date_calc", OSMO_STOCK_CALCULATOR, _("Date calculator"), NULL, _("Date calculator"), NULL}, +#if 0 + { "preferences", OSMO_STOCK_PREFERENCES, _("Preferences"), NULL, _("Preferences"), NULL}, +#endif }; GtkToggleActionEntry t_entries[] = { @@ -1635,7 +1657,10 @@ g_signal_connect (G_OBJECT(gtk_ui_manager_get_widget (uim_widget, "/toolbar/edit_note")), "toggled", G_CALLBACK(calendar_edit_note_cb), appGUI); - +#if 0 + g_signal_connect (G_OBJECT (gtk_ui_manager_get_widget (uim_widget, "/toolbar/preferences")), "clicked", + G_CALLBACK (show_preferences_window_cb), appGUI); +#endif /*-------------------------------------------------------------------------------------*/ vbox2 = gtk_vbox_new (FALSE, 0); Modified: trunk/src/gui.h =================================================================== --- trunk/src/gui.h 2009-09-01 12:59:06 UTC (rev 797) +++ trunk/src/gui.h 2009-09-01 20:37:59 UTC (rev 798) @@ -818,6 +818,12 @@ GtkWidget *hide_contacts_checkbutton; GtkWidget *hide_notes_checkbutton; + /* preferences */ + GtkWidget *window; + GtkWidget *notebook; + GtkWidget *general; + GtkWidget *calendar; + } OPTIONS; Added: trunk/src/preferences_gui.c =================================================================== --- trunk/src/preferences_gui.c (rev 0) +++ trunk/src/preferences_gui.c 2009-09-01 20:37:59 UTC (rev 798) @@ -0,0 +1,114 @@ +/* + * Osmo - a handy personal organizer + * + * Copyright (C) 2007-2009 Tomasz Maka <pa...@us...> + * 2007-2009 Piotr Maka <si...@us...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "gui.h" +#include "i18n.h" +#include "options_prefs.h" +#include "preferences_gui.h" +#include "stock_icons.h" +#include "utils_gui.h" + +/* ========================================================================= */ + +GtkWidget * +opt_notebook_create_general (GtkWidget *notebook, int page) +{ + GtkWidget *vbox_top, *vbox_icon, *vbox; + + vbox_top = utl_gui_create_scrolled_vbox (notebook); + vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_PREFERENCES, _("General")); + + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), + gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), page), vbox_icon); + + /* Apperance settings */ + vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); + + return vbox_top; +} + +/* ========================================================================= */ + +GtkWidget * +opt_notebook_create_calendar (GtkWidget *notebook, int page) +{ + GtkWidget *vbox_top, *vbox_icon, *vbox; + + vbox_top = utl_gui_create_scrolled_vbox (notebook); + vbox_icon = utl_gui_create_icon_with_label (OSMO_STOCK_CALENDAR, _("Calendar")); + + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), + gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), page), vbox_icon); + + /* Apperance settings */ + vbox = utl_gui_create_vbox_in_frame (vbox_top, _("Appearance")); + + return vbox_top; +} + +/* ========================================================================= */ + +static void +close_window (GtkWidget *widget, GtkWidget *window) +{ + gtk_widget_destroy (window); +} + +/* ========================================================================= */ + +GtkWidget * +opt_create_preferences_window (GUI *appGUI) +{ + GtkWidget *window, *vbox_top; + GtkWidget *hbuttonbox, *button_close; + gint i = 0; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), _("Preferences")); + gtk_window_set_default_size (GTK_WINDOW (window), 600, 480); + + vbox_top = gtk_vbox_new (FALSE, VBOX_SPACING); + gtk_container_add (GTK_CONTAINER (window), vbox_top); + gtk_container_set_border_width (GTK_CONTAINER (vbox_top), BORDER_WIDTH); + + appGUI->opt->notebook = gtk_notebook_new (); + gtk_box_pack_start (GTK_BOX (vbox_top), appGUI->opt->notebook, TRUE, TRUE, 0); + gtk_notebook_set_tab_pos (GTK_NOTEBOOK (appGUI->opt->notebook), GTK_POS_LEFT); + + appGUI->opt->general = opt_notebook_create_general (appGUI->opt->notebook, i++); + appGUI->opt->calendar = opt_notebook_create_calendar (appGUI->opt->notebook, i++); + + /* Close button */ + hbuttonbox = gtk_hbutton_box_new (); + gtk_box_pack_start (GTK_BOX (vbox_top), hbuttonbox, FALSE, TRUE, 0); + gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox), GTK_BUTTONBOX_END); + gtk_box_set_spacing (GTK_BOX (hbuttonbox), HBOX_SPACING); + + button_close = utl_gui_create_button (GTK_STOCK_CLOSE, OSMO_STOCK_BUTTON_CLOSE, _("Close")); + gtk_container_add (GTK_CONTAINER (hbuttonbox), button_close); + GTK_WIDGET_SET_FLAGS (button_close, GTK_CAN_DEFAULT); + g_signal_connect (G_OBJECT (button_close), "clicked", G_CALLBACK (close_window), window); + + gtk_widget_show_all (vbox_top); + + return window; +} + Added: trunk/src/preferences_gui.h =================================================================== --- trunk/src/preferences_gui.h (rev 0) +++ trunk/src/preferences_gui.h 2009-09-01 20:37:59 UTC (rev 798) @@ -0,0 +1,30 @@ +/* + * Osmo - a handy personal organizer + * + * Copyright (C) 2007-2009 Tomasz Maka <pa...@us...> + * 2007-2009 Piotr Maka <si...@us...> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _PREFERENCES_GUI_H +#define _PREFERENCES_GUI_H + +#include "gui.h" + +GtkWidget * opt_create_preferences_window (GUI *appGUI); + +#endif /* _PREFERENCES_GUI_H */ + Modified: trunk/src/utils_gui.c =================================================================== --- trunk/src/utils_gui.c 2009-09-01 12:59:06 UTC (rev 797) +++ trunk/src/utils_gui.c 2009-09-01 20:37:59 UTC (rev 798) @@ -28,8 +28,127 @@ static gunichar TAG_CHAR = 0xe000; /* Unicode chars in the Private Use Area. */ -/*------------------------------------------------------------------------------*/ +/* ========================================================================= */ +GtkWidget * +utl_gui_create_button (const gchar *gtk_name, const gchar *osmo_name, gchar *label) +{ + return utl_gui_stock_name_button (config.default_stock_icons ? gtk_name : osmo_name, label); +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_frame (GtkWidget *container, const gchar *name) +{ + GtkWidget *frame, *label, *alignment; + gchar *label_str; + + frame = gtk_frame_new (NULL); + gtk_container_add (GTK_CONTAINER (container), frame); + gtk_container_set_border_width (GTK_CONTAINER (frame), BORDER_WIDTH); + + label_str = g_strdup_printf ("<b>%s</b>", name); + label = gtk_label_new (label_str); + g_free (label_str); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + gtk_frame_set_label_widget (GTK_FRAME (frame), label); + + alignment = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_container_add (GTK_CONTAINER (frame), alignment); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), ALIGNMENT_PADDING_TOP, 0, ALIGNMENT_PADDING_RIGHT, 0); + + return alignment; +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_vbox_in_frame (GtkWidget *container, const gchar *name) +{ + GtkWidget *frame, *box; + + frame = utl_gui_create_frame (container, name); + + box = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (frame), box); + + return box; +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_hbox_in_frame (GtkWidget *container, const gchar *name) +{ + GtkWidget *frame, *box; + + frame = utl_gui_create_frame (container, name); + + box = gtk_hbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (frame), box); + + return box; +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_table_in_frame (GtkWidget *container, const gchar *name, guint rows, guint columns) +{ + GtkWidget *frame, *table; + + frame = utl_gui_create_frame (container, name); + + table = gtk_table_new (rows, columns, FALSE); + gtk_container_add (GTK_CONTAINER (frame), table); + + return table; +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_icon_with_label (const gchar *stock_id, const gchar *label_str) +{ + GtkWidget *vbox_icon, *image, *label; + + vbox_icon = gtk_vbox_new (FALSE, 0); + + image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON); + gtk_box_pack_start (GTK_BOX (vbox_icon), image, TRUE, TRUE, 0); + + label = gtk_label_new (label_str); + gtk_box_pack_start (GTK_BOX (vbox_icon), label, FALSE, FALSE, 0); + gtk_widget_show_all (vbox_icon); + + return vbox_icon; +} + +/* ========================================================================= */ + +GtkWidget * +utl_gui_create_scrolled_vbox (GtkWidget *container) +{ + GtkWidget *vbox_top, *scrolledwindow, *viewport; + + scrolledwindow = gtk_scrolled_window_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (container), scrolledwindow); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + + viewport = gtk_viewport_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (scrolledwindow), viewport); + gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE); + + vbox_top = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (viewport), vbox_top); + + return vbox_top; +} + +/* ========================================================================= */ + void utl_gui_font_select_cb (GtkWidget *widget, gpointer user_data) { Modified: trunk/src/utils_gui.h =================================================================== --- trunk/src/utils_gui.h 2009-09-01 12:59:06 UTC (rev 797) +++ trunk/src/utils_gui.h 2009-09-01 20:37:59 UTC (rev 798) @@ -39,9 +39,24 @@ SW_MOVE_DOWN }; +#define VBOX_SPACING 8 +#define HBOX_SPACING 8 +#define BORDER_WIDTH 8 +#define ALIGNMENT_PADDING_TOP 4 +#define ALIGNMENT_PADDING_RIGHT 12 +#define CHECKBOX_PADDING 0 + #define COLOR_BG_OK "#fff77a" #define COLOR_BG_FAIL "#ff7770" +GtkWidget * utl_gui_create_button (const gchar *gtk_name, const gchar *osmo_name, gchar *label); +GtkWidget * utl_gui_create_frame (GtkWidget *container, const gchar *name); +GtkWidget * utl_gui_create_vbox_in_frame (GtkWidget *container, const gchar *name); +GtkWidget * utl_gui_create_hbox_in_frame (GtkWidget *container, const gchar *name); +GtkWidget * utl_gui_create_table_in_frame (GtkWidget *container, const gchar *name, guint rows, guint columns); +GtkWidget * utl_gui_create_icon_with_label (const gchar *stock_id, const gchar *label_str); +GtkWidget * utl_gui_create_scrolled_vbox (GtkWidget *container); + void utl_gui_font_select_cb (GtkWidget *widget, gpointer user_data); gint utl_gui_get_sw_vscrollbar_width (GtkWidget *scrolled_window); void utl_gui_sw_vscrollbar_move_position (GtkWidget *scrolled_window, gint direction); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |