Re: PATCH: foobar clock widget



On Thu, 2001-12-13 at 17:32, iain wrote:
> 
> > +	const char *cals[] = { 
> > +		N_("Today..."),      N_("View the calendar for today."),     
> > "gnome-day.png",   "dayview",
> > +		N_("This Week..."),  N_("View the calendar for this week."), 
> > "gnome-week.png",  "weekview",
> > +		N_("This Month..."), N_("View the calendar for this month."),
> > "gnome-month.png", "monthview",
> > +		NULL
> > +	};
> 
> ... isn't needed here, because the menu item represents "view this
> (day,week,etc)" and by clicking on the item, thats what happens. After
> you click it, you don't need to do anything else to view this
> day,week,etc.
> 
> iain

Iain -

Thanks for your input.  I have attached a new screenshot and diff with
the inappropriate "..."s removed.  

Thanks,
Dennis

(Note:  I have not updated my previously posted links. My internet
provider has shutdown their ftp server, and they doesn't know when they
will be able to brink it back up.)

Attachment: foobar-clock-new.png
Description: PNG image

Index: foobar-widget.c
===================================================================
RCS file: /cvs/gnome/gnome-core/panel/foobar-widget.c,v
retrieving revision 1.105
diff -u -u -p -r1.105 foobar-widget.c
--- foobar-widget.c	2001/12/12 01:21:20	1.105
+++ foobar-widget.c	2001/12/14 05:02:46
@@ -35,6 +35,7 @@
 #include "drawer-widget.h"
 #include "gnome-run.h"
 #include "multiscreen-stuff.h"
+#include "panel-gconf.h"
 
 #define ICON_SIZE 20
 
@@ -314,13 +315,29 @@ append_folder_menu (GtkWidget *menu_bar,
 #endif
 
 static void
-append_gnomecal_item (GtkWidget *menu, const char *label, const char *flag)
+append_gnomecal_items (GtkWidget *menu)
 {
-	GtkWidget *item = gtk_image_menu_item_new_with_label (label);
-	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-	g_signal_connect (G_OBJECT (item), "activate",
-			  G_CALLBACK (gnomecal_client),
-			  (char *)flag);
+	GtkWidget *item;
+	int i;
+	
+	const char *cals[] = { 
+		N_("Today"),      N_("View the calendar for today."),      "gnome-day.png",   "dayview",
+		N_("This Week"),  N_("View the calendar for this week."),  "gnome-week.png",  "weekview",
+		N_("This Month"), N_("View the calendar for this month."), "gnome-month.png", "monthview",
+		NULL
+	};
+	
+	for (i=0; cals[i]; i+=4) {
+		item = pixmap_menu_item_new (cals[i], cals[i+2]);
+		gtk_tooltips_set_tip (panel_tooltips, item,
+			      	      cals[i+1],
+			      	      NULL);
+	
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+		g_signal_connect (G_OBJECT (item), "activate",
+				  G_CALLBACK (gnomecal_client),
+				  (char *)cals[i+3]);
+	}
 }
 
 static void
@@ -390,27 +407,48 @@ set_fooclock_format (GtkWidget *w, char 
 }
 
 static void
-append_format_item (GtkWidget *menu, const char *format)
+append_format_items (GtkWidget *menu)
 {
 	char hour[256];
 	GtkWidget *item;
+	GSList *group = NULL;
 	struct tm *das_tm;
 	time_t das_time = 0;
-
-	das_tm = localtime (&das_time);
-	if (strftime (hour, sizeof(hour), _(format), das_tm) == 0) {
-		/* according to docs, if the string does not fit, the
-		 * contents of tmp2 are undefined, thus just use
-		 * ??? */
-		strcpy(hour, "???");
-	}
-	hour[sizeof(hour)-1] = '\0'; /* just for sanity */
+	char *s = panel_gconf_global_config_get_string ("clock-format");
+	int i;
+	
+	const char *formats[] = {
+		N_("%H:%M"),
+		N_("%H:%M:%S"),
+		N_("%l:%M %p"),
+		N_("%l:%M:%S %p"),
+		NULL
+	};
+	
+	for (i = 0; formats[i]; i++)
+	{
+		das_tm = localtime (&das_time);
+		if (strftime (hour, sizeof(hour), _(formats[i]), das_tm) == 0) {
+ 			/* according to docs, if the string does not fit, the
+ 		 	 * contents of tmp2 are undefined, thus just use
+ 		 	 * ??? */
+			strcpy(hour, "???");
+		}
+		hour[sizeof(hour)-1] = '\0'; /* just for sanity */
 
-	item = gtk_image_menu_item_new_with_label (hour);
-	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-	g_signal_connect (G_OBJECT (item), "activate",
+		item = gtk_radio_menu_item_new_with_label (group, hour);
+		group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (item));
+	
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);	
+		g_signal_connect (G_OBJECT (item), "activate",
 			  G_CALLBACK (set_fooclock_format),
-			  (char *)format);
+			  (char *)formats[i]);
+
+		if (s && !strcmp (s, formats[i])) {
+			gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), TRUE);
+		}
+	}
+	g_free (s);
 }
 
 static void
@@ -429,50 +467,33 @@ append_clock_menu (FoobarWidget *foo, Gt
 {
 	GtkWidget *item, *menu, *menu2;
 	gchar *time_admin_path;
-	int i;
-	const char *cals[] = { 
-		N_("Today"),      "dayview",
-		N_("This Week"),  "weekview",
-		N_("This Month"), "monthview",
-		NULL
-	};
-
-	const char *formats[] = {
-		N_("%H:%M"),
-		N_("%H:%M:%S"),
-		N_("%l:%M %p"),
-		N_("%l:%M:%S %p"),
-		NULL
-	};
 
 	menu = gtk_menu_new ();
-	
+	append_gnomecal_items (menu);
+
 #if 0 /* put back when evolution can do this */
-	item = gtk_image_menu_item_new_with_label (_("Add appointement..."));
+	item = gtk_image_menu_item_new_with_label (_("Add Appointment..."));
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+#endif
 
 	add_menu_separator (menu);
-#endif
 
-	/* FIXME: wtf is time-admin???? */
+	/* check for time-admin (part of ximian-setup-tools) */
 	time_admin_path = g_find_program_in_path  ("time-admin");
 	if (time_admin_path != NULL) {
-		item = gtk_image_menu_item_new_with_label (_("Set Time"));
+		item = pixmap_menu_item_new (_("Set Time..."), "gnome-set-time.png");
+		gtk_tooltips_set_tip (panel_tooltips, item,
+			      	      _("Adjust the date and time."),
+			      	      NULL);	
+		
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 		g_signal_connect (G_OBJECT (item), "activate",
 				  G_CALLBACK (set_time_cb),
-				  time_admin_path);
-		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-		add_menu_separator (menu);
+				  time_admin_path);			
 	}
 
-	for (i=0; cals[i]; i+=2)
-		append_gnomecal_item (menu, _(cals[i]), cals[i+1]);
-
-	add_menu_separator (menu);
-
 	menu2 = gtk_menu_new ();
-	for (i=0; formats[i]; i++)
-		append_format_item (menu2, formats[i]);
+	append_format_items (menu2); 
 
 	add_tearoff (GTK_MENU_SHELL (menu2));
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]