r22275 - gnucash/trunk/src/gnome-utils - Remove depreciated Option functions - part 2
Geert Janssens
gjanssens at code.gnucash.org
Wed Aug 1 09:54:10 EDT 2012
Author: gjanssens
Date: 2012-08-01 09:54:10 -0400 (Wed, 01 Aug 2012)
New Revision: 22275
Trac: http://svn.gnucash.org/trac/changeset/22275
Modified:
gnucash/trunk/src/gnome-utils/gnc-date-edit.c
gnucash/trunk/src/gnome-utils/gnc-date-edit.h
Log:
Remove depreciated Option functions - part 2
This patch removes the option menu functions from gnc-date-edit which
come under the setting of time option. I do not think this bit is used
but can be seen if you find a GNCDateEdit and set the second option to
TRUE.
Patch by Robert Fewell
Modified: gnucash/trunk/src/gnome-utils/gnc-date-edit.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-date-edit.c 2012-08-01 13:53:58 UTC (rev 22274)
+++ gnucash/trunk/src/gnome-utils/gnc-date-edit.c 2012-08-01 13:54:10 UTC (rev 22275)
@@ -430,30 +430,28 @@
LEAVE(" ");
}
-typedef struct
-{
- char *hour;
- GNCDateEdit *gde;
-} hour_info_t;
-
static void
-set_time (GtkWidget *widget, hour_info_t *hit)
+set_time (GtkWidget *widget, GNCDateEdit *gde)
{
- gtk_entry_set_text (GTK_ENTRY (hit->gde->time_entry), hit->hour);
- g_signal_emit (G_OBJECT (hit->gde), date_edit_signals [TIME_CHANGED], 0);
-}
+ gchar *text;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
-static void
-free_resources (GtkWidget *widget, hour_info_t *hit)
-{
- g_free (hit->hour);
- g_free (hit);
+ model = gtk_combo_box_get_model(GTK_COMBO_BOX(gde->time_combo));
+ gtk_combo_box_get_active_iter (GTK_COMBO_BOX(gde->time_combo), &iter);
+ gtk_tree_model_get( model, &iter, 0, &text, -1 );
+
+ gtk_entry_set_text (GTK_ENTRY (gde->time_entry), text);
+ if(text)
+ g_free(text);
+ g_signal_emit (G_OBJECT (gde), date_edit_signals [TIME_CHANGED], 0);
}
static void
-fill_time_popup (GtkWidget *widget, GNCDateEdit *gde)
+fill_time_combo (GtkWidget *widget, GNCDateEdit *gde)
{
- GtkWidget *menu;
+ GtkTreeModel *model;
+ GtkTreeIter hour_iter, min_iter;
struct tm *tm_returned;
struct tm mtm;
time_t current_time;
@@ -462,8 +460,7 @@
if (gde->lower_hour > gde->upper_hour)
return;
- menu = gtk_menu_new ();
- gtk_option_menu_set_menu (GTK_OPTION_MENU (gde->time_popup), menu);
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX(gde->time_combo));
time (¤t_time);
tm_returned = localtime_r (¤t_time, &mtm);
@@ -471,56 +468,29 @@
for (i = gde->lower_hour; i <= gde->upper_hour; i++)
{
- GtkWidget *item, *submenu;
- hour_info_t *hit;
char buffer [40];
-
mtm.tm_hour = i;
mtm.tm_min = 0;
- hit = g_new (hour_info_t, 1);
if (gde->flags & GNC_DATE_EDIT_24_HR)
qof_strftime (buffer, sizeof (buffer), "%H:00", &mtm);
else
qof_strftime (buffer, sizeof (buffer), "%I:00 %p ", &mtm);
- hit->hour = g_strdup (buffer);
- hit->gde = gde;
- item = gtk_menu_item_new_with_label (buffer);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-#if 0
- g_signal_connect (G_OBJECT (item), "activate",
- G_CALLBACK (set_time), hit);
-#endif
- g_signal_connect (G_OBJECT (item), "destroy",
- G_CALLBACK (free_resources), hit);
- gtk_widget_show (item);
+ gtk_tree_store_append (GTK_TREE_STORE(model), &hour_iter, NULL);
+ gtk_tree_store_set (GTK_TREE_STORE(model), &hour_iter, 0, buffer, -1);
- submenu = gtk_menu_new ();
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
for (j = 0; j < 60; j += 15)
{
- GtkWidget *mins;
-
mtm.tm_min = j;
- hit = g_new (hour_info_t, 1);
+
if (gde->flags & GNC_DATE_EDIT_24_HR)
- qof_strftime (buffer, sizeof (buffer),
- "%H:%M", &mtm);
+ qof_strftime (buffer, sizeof (buffer), "%H:%M", &mtm);
else
- qof_strftime (buffer, sizeof (buffer),
- "%I:%M %p", &mtm);
- hit->hour = g_strdup (buffer);
- hit->gde = gde;
+ qof_strftime (buffer, sizeof (buffer), "%I:%M %p", &mtm);
- mins = gtk_menu_item_new_with_label (buffer);
- gtk_menu_shell_append (GTK_MENU_SHELL (submenu), mins);
- g_signal_connect (G_OBJECT (mins), "activate",
- G_CALLBACK (set_time), hit);
- g_signal_connect (G_OBJECT (item), "destroy",
- G_CALLBACK (free_resources),
- hit);
- gtk_widget_show (mins);
+ gtk_tree_store_append(GTK_TREE_STORE(model), &min_iter, &hour_iter );
+ gtk_tree_store_set (GTK_TREE_STORE(model), &min_iter, 0, buffer, -1);
}
}
}
@@ -609,8 +579,8 @@
gtk_widget_destroy (GTK_WIDGET(gde->time_entry));
gde->time_entry = NULL;
- gtk_widget_destroy (GTK_WIDGET(gde->time_popup));
- gde->time_popup = NULL;
+ gtk_widget_destroy (GTK_WIDGET(gde->time_combo));
+ gde->time_combo = NULL;
if (G_OBJECT_CLASS (parent_class)->dispose)
(* G_OBJECT_CLASS (parent_class)->dispose) (object);
@@ -739,7 +709,7 @@
gde->lower_hour = low_hour;
gde->upper_hour = up_hour;
- fill_time_popup(NULL, gde);
+ fill_time_combo(NULL, gde);
}
/* This code should be kept in sync with src/register/datecell.c */
@@ -798,6 +768,9 @@
GtkWidget *frame;
GtkWidget *hbox;
GtkWidget *arrow;
+ GtkComboBox *combo;
+ GtkTreeStore *store;
+ GtkCellRenderer *cell;
/* Create the text entry area. */
gde->date_entry = gtk_entry_new ();
@@ -841,20 +814,32 @@
gtk_widget_set_size_request (GTK_WIDGET(gde->time_entry), 88, -1);
gtk_box_pack_start (GTK_BOX (gde), gde->time_entry, TRUE, TRUE, 0);
- gde->time_popup = gtk_option_menu_new ();
- gtk_box_pack_start (GTK_BOX (gde), gde->time_popup, FALSE, FALSE, 0);
+ store = gtk_tree_store_new(1, G_TYPE_STRING);
+ gde->time_combo = GTK_WIDGET(gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)));
+ g_object_unref(store);
+ /* Create cell renderer. */
+ cell = gtk_cell_renderer_text_new();
+ /* Pack it to the combo box. */
+ gtk_cell_layout_pack_start( GTK_CELL_LAYOUT( gde->time_combo ), cell, TRUE );
+ /* Connect renderer to data source */
+ gtk_cell_layout_set_attributes( GTK_CELL_LAYOUT( gde->time_combo ), cell, "text", 0, NULL );
+ g_signal_connect (G_OBJECT (gde->time_combo), "changed",
+ G_CALLBACK (set_time), gde);
+
+ gtk_box_pack_start (GTK_BOX (gde), gde->time_combo, FALSE, FALSE, 0);
+
/* We do not create the popup menu with the hour range until we are
* realized, so that it uses the values that the user might supply in a
* future call to gnc_date_edit_set_popup_range
*/
g_signal_connect (G_OBJECT (gde), "realize",
- G_CALLBACK (fill_time_popup), gde);
+ G_CALLBACK (fill_time_combo), gde);
if (gde->flags & GNC_DATE_EDIT_SHOW_TIME)
{
gtk_widget_show (GTK_WIDGET(gde->time_entry));
- gtk_widget_show (GTK_WIDGET(gde->time_popup));
+ gtk_widget_show (GTK_WIDGET(gde->time_combo));
}
gde->cal_popup = gtk_window_new (GTK_WINDOW_POPUP);
@@ -1157,19 +1142,19 @@
{
gtk_widget_show (gde->cal_label);
gtk_widget_show (gde->time_entry);
- gtk_widget_show (gde->time_popup);
+ gtk_widget_show (gde->time_combo);
}
else
{
gtk_widget_hide (gde->cal_label);
gtk_widget_hide (gde->time_entry);
- gtk_widget_hide (gde->time_popup);
+ gtk_widget_hide (gde->time_combo);
}
}
if ((flags & GNC_DATE_EDIT_24_HR) != (old_flags & GNC_DATE_EDIT_24_HR))
/* This will destroy the old menu properly */
- fill_time_popup (GTK_WIDGET (gde), gde);
+ fill_time_combo (NULL, gde);
if ((flags & GNC_DATE_EDIT_WEEK_STARTS_ON_MONDAY)
!= (old_flags & GNC_DATE_EDIT_WEEK_STARTS_ON_MONDAY))
Modified: gnucash/trunk/src/gnome-utils/gnc-date-edit.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-date-edit.h 2012-08-01 13:53:58 UTC (rev 22274)
+++ gnucash/trunk/src/gnome-utils/gnc-date-edit.h 2012-08-01 13:54:10 UTC (rev 22275)
@@ -64,7 +64,7 @@
GtkWidget *date_button;
GtkWidget *time_entry;
- GtkWidget *time_popup;
+ GtkWidget *time_combo;
GtkWidget *cal_label;
GtkWidget *cal_popup;
More information about the gnucash-changes
mailing list