[Goodies-commits] r6553 - xfce4-radio-plugin/trunk/panel-plugin

Stefan Ott cockroach at xfce.org
Sun Jan 25 22:56:11 CET 2009


Author: cockroach
Date: 2009-01-25 21:56:10 +0000 (Sun, 25 Jan 2009)
New Revision: 6553

Modified:
   xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c
   xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h
Log:
Added config options for the graphical signal strength display


Modified: xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c	2009-01-25 21:53:06 UTC (rev 6552)
+++ xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c	2009-01-25 21:56:10 UTC (rev 6553)
@@ -60,7 +60,7 @@
 static GdkPixmap *signal_s;
 
 static void
-show_signal_image(radio_gui* data, gint signal)
+update_signal_image(radio_gui* data, gint signal)
 {
 	GdkImage *image;
 
@@ -77,46 +77,65 @@
 		gtk_box_pack_start (GTK_BOX (data->outer_box),
 			data->signal_image, FALSE, FALSE, 1);
 	}
+	g_object_unref(signal_s);
+	g_object_unref(image);
 }
 
+static void
+update_signal_bar (radio_gui* data, gint signal)
+{
+	GdkColor color;
+
+	gtk_widget_show (data->signal_bar);
+	gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR
+		(data->signal_bar), signal / data->max_signal_strength);
+	
+	if (signal == 1)
+		gdk_color_parse (COLOR_SIGNAL_LOW, &color);
+	else if (signal == data->max_signal_strength)
+		gdk_color_parse (COLOR_SIGNAL_HIGH, &color);
+	else
+		gdk_color_parse (COLOR_SIGNAL_MED, &color);
+
+	gtk_widget_modify_bg (data->signal_bar, GTK_STATE_PRELIGHT, &color);
+}
+
 static gboolean
-update_signal_bar (radio_gui* data)
+update_signal (radio_gui* data)
 {
 	if (!data->on || !data->show_signal)
 	{
+		data->signal_timeout_id = 0;
 		gtk_widget_hide (data->signal_bar);
-		data->signal_timeout_id = 0;
-		show_signal_image (data, 0);
+
+		if (data->on && !data->show_signal)
+			gtk_widget_hide (data->signal_image);
+
+		if (!data->on && data->show_label_when_off)
+			gtk_widget_hide (data->signal_image);
+
 		return FALSE;
 	}
 	else
 	{
-		gtk_widget_show (data->signal_bar);
 		double signal = radio_get_signal ();
-
-		if (signal > data->max_signal_strength)
-			data->max_signal_strength = signal;
-
-		gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR
-			(data->signal_bar), signal / data->max_signal_strength);
-
-		GdkColor color;
-		if (signal == 1)
-			gdk_color_parse (COLOR_SIGNAL_LOW, &color);
-		else if (signal == data->max_signal_strength)
-			gdk_color_parse (COLOR_SIGNAL_HIGH, &color);
-		else
-			gdk_color_parse (COLOR_SIGNAL_MED, &color);
-
-		gtk_widget_modify_bg (data->signal_bar, GTK_STATE_PRELIGHT,
-								&color);
+	
 		if (data->signal_timeout_id == 0)
 		{
 			data->signal_timeout_id = g_timeout_add (500,
-					(GtkFunction) update_signal_bar,
-							(gpointer) data);
+				(GtkFunction) update_signal, (gpointer) data);
 		}
-		show_signal_image (data, signal);
+
+		if (data->show_signal_graphical)
+		{
+			gtk_widget_hide (data->signal_bar);
+			update_signal_image (data, signal);
+		}
+		else
+		{
+			gtk_widget_hide (data->signal_image);
+			update_signal_bar(data, signal);
+		}
 		return TRUE;
 	}
 }
@@ -174,30 +193,63 @@
 }
 
 static void
-update_label (radio_gui* data)
+update_label_radio_on (radio_gui *data)
 {
 	gchar *label;
 
-	if (data->on)
+	if (data->show_label)
+		gtk_widget_show (data->label);
+	else
+		gtk_widget_hide (data->label);
+
+	if (data->resolve_presets_in_label)
 	{
-		//GtkTreeIter iter;
-		//GtkTreeModel *presets = GTK_TREE_MODEL (data->presets);
-		//if (find_preset_by_freq (presets, data->freq, &iter))
-		//	gtk_tree_model_get (presets, &iter, 0, &label, -1);
-		//else
+		GtkTreeIter iter;
+		GtkTreeModel *presets = GTK_TREE_MODEL (data->presets);
+		if (find_preset_by_freq (presets, data->freq, &iter))
+			gtk_tree_model_get (presets, &iter, 0, &label, -1);
+		else
+			label = g_strdup_printf
+				("%5.1f", ((float) data->freq) / 100);
+	}
+	else
 		label = g_strdup_printf ("%5.1f", ((float) data->freq) / 100);
-		update_tooltip (data);
+
+	gtk_label_set_label (GTK_LABEL (data->label), label);
+	g_free (label);
+}
+
+static void
+update_label_radio_off (radio_gui *data)
+{
+	gchar *label;
+	label = g_strdup (_("- off -"));
+	if (data->show_label_when_off)
+	{
+		gtk_widget_hide (data->signal_image);
+		gtk_widget_show (data->label);
 	}
 	else
 	{
-		label = g_strdup (_("- off -"));
+		gtk_widget_hide (data->label);
+		update_signal_image (data, 0);
 	}
-
 	gtk_label_set_label (GTK_LABEL (data->label), label);
 
 	g_free (label);
 }
 
+static void
+update_label (radio_gui *data)
+{
+	if (data->on)
+		update_label_radio_on (data);
+	else
+		update_label_radio_off (data);
+
+	update_tooltip (data);
+}
+
 static gboolean
 update_radio (radio_gui *data)
 {
@@ -228,7 +280,7 @@
 		DBG ("Updating frequency to %d", data->freq);
 	}
 	update_label (data);
-	update_signal_bar (data);
+	update_signal (data);
 
 	return TRUE;
 }
@@ -241,7 +293,7 @@
 	DBG ("Tuning to %f", freq);
 
 	update_label (data);
-	update_signal_bar (data);
+	update_signal (data);
 
 	write_config (data, FALSE);
 }
@@ -468,7 +520,7 @@
 				event->button, event->time);
 	}
 	update_label (data);
-	update_signal_bar (data);
+	update_signal (data);
 	return event->button != 3;
 }
 
@@ -643,6 +695,9 @@
 	strcpy(plugin_data->device, "/dev/radio0");
 
 	plugin_data->show_signal = TRUE;
+	plugin_data->show_signal_graphical = TRUE;
+	plugin_data->show_label = TRUE;
+	plugin_data->show_label_when_off = FALSE;
 	plugin_data->auto_update_display = TRUE;
 	plugin_data->presets = NULL;
 	plugin_data->presets = NULL;
@@ -689,12 +744,56 @@
 radio_show_signal_changed (GtkEditable* editable, void *pointer)
 {
 	radio_gui* data = (radio_gui*) pointer;
+	if (!data->show_label)
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editable),
+			TRUE);
 	data->show_signal = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 								(editable));
-	update_signal_bar (data);
+	update_signal (data);
 }
 
 static void
+radio_show_label_changed (GtkEditable* editable, void *pointer)
+{
+	radio_gui* data = (radio_gui*) pointer;
+	if (!data->show_signal)
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editable),
+			TRUE);
+	data->show_label = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
+								(editable));
+	update_label (data);
+}
+
+static void
+radio_show_label_when_off_changed (GtkEditable* editable, void *pointer)
+{
+	radio_gui* data = (radio_gui*) pointer;
+	data->show_label_when_off = gtk_toggle_button_get_active
+		(GTK_TOGGLE_BUTTON (editable));
+	update_label (data);
+}
+
+static void
+radio_resolve_presets_changed (GtkEditable* editable, void *pointer)
+{
+	radio_gui* data = (radio_gui*) pointer;
+	data->resolve_presets_in_label = gtk_toggle_button_get_active
+		(GTK_TOGGLE_BUTTON (editable));
+	update_label (data);
+}
+
+static void
+radio_signal_type_changed (GtkEditable* editable, void *pointer)
+{
+	radio_gui* data = (radio_gui*) pointer;
+	data->show_signal_graphical = !gtk_toggle_button_get_active
+		(GTK_TOGGLE_BUTTON (editable));
+	update_signal (data);
+
+	DBG ("show_signal_graphical = %d", data->show_signal_graphical);
+}
+
+static void
 radio_auto_update_display_changed (GtkEditable* editable, void *pointer)
 {
 	radio_gui* data = (radio_gui*) pointer;
@@ -880,15 +979,21 @@
 static void
 radio_plugin_create_options (XfcePanelPlugin *plugin, radio_gui *data)
 {
-	DBG("%d", data->freq);
 	GtkWidget *table;
 	GtkWidget *label;
 	GtkWidget *hbox;
 	GtkWidget *dialog;
+	GtkWidget *frame;
+	GtkWidget *real_frame;
 
-	GSList *show_signal_group = NULL;	// signal strength:
-	GtkWidget *signal_show;			//  - show
-	GtkWidget *signal_hide;			//  - hide
+	GtkWidget *show_signal;			// show the signal when on
+	GtkWidget *show_label;			// show the label when on
+	GSList *signal_type_group = NULL;	// show signal strength as:
+	GtkWidget *signal_type_bar;		//  - progress bar
+	GtkWidget *signal_type_xpm;		//  - graphical
+	GSList *show_when_off = NULL;		// what to show when off:
+	GtkWidget *label_when_off;		//  - label
+	GtkWidget *graphics_when_off;		//  - graphics
 	GSList *auto_update_display_group = NULL;// auto update display:
 	GtkWidget *auto_update_display_yes;	//  - show
 	GtkWidget *auto_update_display_no;	//  - hide
@@ -1006,164 +1111,298 @@
 	notebook = gtk_notebook_new ();
 	gtk_notebook_set_tab_pos (GTK_NOTEBOOK(notebook), GTK_POS_TOP);
 	gtk_notebook_set_show_tabs (GTK_NOTEBOOK(notebook), TRUE);
-	label_properties = gtk_label_new (_("Properties"));
+	label_properties = gtk_label_new (_("Options"));
 	label_presets =	gtk_label_new (_("Presets"));
-	gtk_notebook_append_page (GTK_NOTEBOOK(notebook), preset_box,
-								label_presets);
-	gtk_notebook_append_page (GTK_NOTEBOOK(notebook), table,
-							label_properties);
-	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook,
-								TRUE, TRUE, 0);
+	gtk_notebook_append_page
+		(GTK_NOTEBOOK(notebook), preset_box, label_presets);
+	gtk_box_pack_start
+		(GTK_BOX (GTK_DIALOG (dialog)->vbox), notebook, TRUE, TRUE, 0);
 	gtk_widget_show (notebook);
 
+	GtkWidget *align = gtk_alignment_new (0, 0, 0.5, 0.5);
+	gtk_widget_show (align);
+	gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 5, 5, 5);
+	gtk_notebook_append_page
+		(GTK_NOTEBOOK(notebook), align, label_properties);
+
+	GtkWidget *properties = gtk_vbox_new (FALSE, 0);
+	gtk_widget_show (properties);
+	gtk_container_add (GTK_CONTAINER (align), properties);
+	
+	// Device
+	real_frame = gtk_frame_new (_("Device"));
+	frame = gtk_alignment_new (0, 0, 0.5, 0.5);
+	table = gtk_table_new (2, 2, FALSE);
+
+	gtk_widget_show (frame);
+	gtk_widget_show (table);
+	gtk_widget_show (real_frame);
+
+	gtk_alignment_set_padding (GTK_ALIGNMENT (frame), 0, 2, 2, 2);
+
+	gtk_container_add (GTK_CONTAINER (properties), real_frame);
+	gtk_container_add (GTK_CONTAINER (real_frame), frame);
+	gtk_container_add (GTK_CONTAINER (frame), table);
+
 	// V4L device
+	hbox = gtk_hbox_new (FALSE, 0);
 	label = gtk_label_new (_("V4L device"));
-	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL,
-								0, 0, 0);
-	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+	device_entry = gtk_entry_new_with_max_length (MAX_DEVICE_NAME_LENGTH);
+	gtk_entry_set_text (GTK_ENTRY (device_entry), data->device);
 
-	// Show the signal strength
-	label = gtk_label_new (_("Display signal strength"));
 	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL,
-								0, 0, 0);
-	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
-	hbox = gtk_hbox_new (FALSE, 0);
+	gtk_widget_show (device_entry);
 	gtk_widget_show (hbox);
-	gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 1, 2, GTK_FILL,
-							GTK_FILL, 0, 0);
 
-	signal_show = gtk_radio_button_new_with_label (NULL, _("yes"));
-	gtk_widget_show (signal_show);
-	gtk_box_pack_start (GTK_BOX (hbox), signal_show, FALSE, FALSE, 0);
-	gtk_radio_button_set_group (GTK_RADIO_BUTTON (signal_show),
-							show_signal_group);
-	show_signal_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON
-							(signal_show));
+	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
 
-	signal_hide = gtk_radio_button_new_with_label (show_signal_group,
-								_("no"));
-	gtk_widget_show (signal_hide);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), label, 0, 1, 0, 1);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), device_entry, 1, 2, 0, 1);
 
-	gtk_box_pack_start (GTK_BOX (hbox), signal_hide, FALSE, FALSE, 0);
-
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (signal_show),
-							data->show_signal);
-	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (signal_hide),
-							!data->show_signal);
-
 	// Auto-update the display
+	hbox = gtk_hbox_new (FALSE, 0);
 	label = gtk_label_new (_("Synchronize state with the card"));
+	auto_update_display_yes = gtk_radio_button_new_with_label
+		(NULL, _("yes"));
+
+	gtk_widget_show (hbox);
 	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL,
-								0, 0, 0);
+
 	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
 
-	hbox = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox);
-	gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, GTK_FILL,
-							GTK_FILL, 0, 0);
-	auto_update_display_yes = gtk_radio_button_new_with_label (NULL,
-								_("yes"));
-	gtk_widget_show (auto_update_display_yes);
-	gtk_box_pack_start (GTK_BOX (hbox), auto_update_display_yes, FALSE,
-								FALSE, 0);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), label, 0, 1, 1, 2);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), hbox, 1, 2, 1, 2);
+
 	gtk_radio_button_set_group (GTK_RADIO_BUTTON (auto_update_display_yes),
-						auto_update_display_group);
+		auto_update_display_group);
 	auto_update_display_group = gtk_radio_button_get_group
-				(GTK_RADIO_BUTTON (auto_update_display_yes));
+		(GTK_RADIO_BUTTON (auto_update_display_yes));
 
 	auto_update_display_no = gtk_radio_button_new_with_label
-					(auto_update_display_group, _("no"));
+		(auto_update_display_group, _("no"));
+
+	gtk_widget_show (auto_update_display_yes);
 	gtk_widget_show (auto_update_display_no);
 
-	gtk_box_pack_start (GTK_BOX (hbox), auto_update_display_no, FALSE,
-								FALSE, 0);
+	gtk_box_pack_start
+		(GTK_BOX (hbox), auto_update_display_no, FALSE, FALSE, 0);
+	gtk_box_pack_start
+		(GTK_BOX (hbox), auto_update_display_yes, FALSE, FALSE, 0);
+
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
 			(auto_update_display_yes), data->auto_update_display);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
 			(auto_update_display_no), !data->auto_update_display);
 
-	// Post-startup command
-	label = gtk_label_new (_("Execute command after startup"));
-	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5, GTK_FILL,
-								0, 0, 0);
-	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+	// Mouse-scrolling
+	hbox = gtk_hbox_new (FALSE, 0);
+	label = gtk_label_new (_("Mouse scrolling changes"));
 
-	startup_command_entry = gtk_entry_new_with_max_length
-							(MAX_COMMAND_LENGTH);
-	gtk_entry_set_text (GTK_ENTRY (startup_command_entry),
-							data->startup_command);
-	gtk_widget_show (startup_command_entry);
-	gtk_table_attach (GTK_TABLE (table), startup_command_entry, 1, 2, 4, 5,
-					GTK_EXPAND | GTK_FILL, 0, 0, 0);
-
-	// Post-shutdown command
-	label = gtk_label_new (_("Execute command after shutdown"));
+	gtk_widget_show (hbox);
 	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 5, 6, GTK_FILL,
-								0, 0, 0);
-	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
 
-	shutdown_command_entry = gtk_entry_new_with_max_length
-							(MAX_COMMAND_LENGTH);
-	gtk_entry_set_text (GTK_ENTRY (shutdown_command_entry),
-							data->shutdown_command);
-	gtk_widget_show (shutdown_command_entry);
-	gtk_table_attach (GTK_TABLE (table), shutdown_command_entry, 1, 2, 5, 6,
-					GTK_EXPAND | GTK_FILL, 0, 0, 0);
-
-	// Mouse-scrolling
-	label = gtk_label_new (_("Mouse scrolling changes"));
-	gtk_widget_show (label);
-	gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL,
-								0, 0, 0);
 	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
 
-	hbox = gtk_hbox_new (FALSE, 0);
-	gtk_widget_show (hbox);
-	gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, GTK_FILL,
-							GTK_FILL, 0, 0);
+	gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
+	gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, 2, 3);
 
 	frequency_button = gtk_radio_button_new_with_label (NULL,
-							_("frequency"));
-	gtk_widget_show (frequency_button);
-	gtk_box_pack_start (GTK_BOX (hbox), frequency_button, FALSE, FALSE, 0);
+		_("frequency"));
 	gtk_radio_button_set_group (GTK_RADIO_BUTTON (frequency_button),
-								scroll_group);
+		scroll_group);
 	scroll_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON
-							(frequency_button));
+		(frequency_button));
+	preset_button = gtk_radio_button_new_with_label (NULL, _("preset"));
 
-	preset_button = gtk_radio_button_new_with_label (NULL, _("preset"));
-	gtk_widget_show (preset_button);
+	gtk_box_pack_start (GTK_BOX (hbox), frequency_button, FALSE, FALSE, 0);
 	gtk_box_pack_start (GTK_BOX (hbox), preset_button, FALSE, FALSE, 0);
-	gtk_radio_button_set_group (GTK_RADIO_BUTTON (preset_button),
-								scroll_group);
-	scroll_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON
-							(preset_button));
 
+	gtk_widget_show (frequency_button);
+	gtk_widget_show (preset_button);
+
+	gtk_radio_button_set_group
+		(GTK_RADIO_BUTTON (preset_button), scroll_group);
+	scroll_group =
+		gtk_radio_button_get_group (GTK_RADIO_BUTTON (preset_button));
+
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (frequency_button),
-						data->scroll == CHANGE_FREQ);
+		data->scroll == CHANGE_FREQ);
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preset_button),
-						data->scroll == CHANGE_PRESET);
+		data->scroll == CHANGE_PRESET);
 
-	device_entry = gtk_entry_new_with_max_length (MAX_DEVICE_NAME_LENGTH);
-	gtk_entry_set_text (GTK_ENTRY (device_entry), data->device);
-	gtk_widget_show (device_entry);
-	gtk_table_attach (GTK_TABLE(table), device_entry, 1, 2, 0, 1,
-					GTK_EXPAND | GTK_FILL, 0, 0, 0);
+	// When off
+	real_frame = gtk_frame_new (_("When radio is off"));
+	frame = gtk_alignment_new (0, 0, 0.5, 0.5);
+	GtkWidget *when_off = gtk_vbox_new (FALSE, 0);
 
+	gtk_widget_show (when_off);
+	gtk_widget_show (frame);
+	gtk_widget_show (real_frame);
+
+	gtk_alignment_set_padding (GTK_ALIGNMENT (frame), 0, 2, 2, 2);
+
+	gtk_box_pack_start (GTK_BOX (properties), real_frame, FALSE, FALSE, 9);
+	gtk_container_add (GTK_CONTAINER (real_frame), frame);
+	gtk_container_add (GTK_CONTAINER (frame), when_off);
+
+	label_when_off = gtk_radio_button_new_with_label
+		(NULL, _("Show the label"));
+	gtk_radio_button_set_group (GTK_RADIO_BUTTON (label_when_off),
+							show_when_off);
+	show_when_off = gtk_radio_button_get_group (GTK_RADIO_BUTTON
+							(label_when_off));
+	graphics_when_off = gtk_radio_button_new_with_label
+		(show_when_off, _("Show graphics"));
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+			(label_when_off), data->show_label_when_off);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+			(graphics_when_off), !data->show_label_when_off);
+	
+	gtk_widget_show (label_when_off);
+	gtk_widget_show (graphics_when_off);
+
+	gtk_container_add (GTK_CONTAINER (when_off), label_when_off);
+	gtk_container_add (GTK_CONTAINER (when_off), graphics_when_off);
+
+	// When on
+	real_frame = gtk_frame_new (_("When radio is running"));
+	frame = gtk_alignment_new (0, 0, 0.5, 0.5);
+	GtkWidget *when_on = gtk_vbox_new (FALSE, 0);
+	GtkWidget *strength = gtk_hbox_new (FALSE, 0);
+
+	gtk_widget_show (frame);
+	gtk_widget_show (when_on);
+	gtk_widget_show (strength);
+	gtk_widget_show (real_frame);
+
+	gtk_alignment_set_padding (GTK_ALIGNMENT (frame), 0, 2, 2, 2);
+
+	gtk_box_pack_start (GTK_BOX (properties), real_frame, FALSE, FALSE, 9);
+	gtk_container_add (GTK_CONTAINER (real_frame), frame);
+	gtk_container_add (GTK_CONTAINER (frame), when_on);
+	gtk_container_add (GTK_CONTAINER (when_on), strength);
+
+	// Show the signal strength
+	show_signal = gtk_check_button_new_with_label
+		(_("Show signal strength"));
+	gtk_widget_show (show_signal);
+	gtk_container_add (GTK_CONTAINER (strength), show_signal);
+
+	// Show the signal strength as
+	hbox = gtk_hbox_new (FALSE, 0);
+	gtk_widget_show (hbox);
+	gtk_container_add (GTK_CONTAINER (strength), hbox);
+
+	signal_type_bar = gtk_radio_button_new_with_label
+		(signal_type_group, _("as a bar"));
+	signal_type_group = gtk_radio_button_get_group
+		(GTK_RADIO_BUTTON (signal_type_bar));
+	signal_type_xpm = gtk_radio_button_new_with_label
+		(signal_type_group, _("graphically"));
+
+	gtk_widget_show (signal_type_bar);
+	gtk_widget_show (signal_type_xpm);
+
+	gtk_container_add (GTK_CONTAINER (strength), signal_type_bar);
+	gtk_container_add (GTK_CONTAINER (strength), signal_type_xpm);
+
+	// Show the label
+	show_label = gtk_check_button_new_with_label
+		(_("Show the label"));
+	gtk_widget_show (show_label);
+	gtk_container_add (GTK_CONTAINER (when_on), show_label);
+
+	// Resolve presets
+	GtkWidget *resolve_presets = gtk_check_button_new_with_label
+					(_("Show preset names in label"));
+	gtk_widget_show (resolve_presets);
+	gtk_container_add (GTK_CONTAINER (when_on), resolve_presets);
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+		(show_signal), data->show_signal);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+		(signal_type_bar), !data->show_signal_graphical);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+		(signal_type_xpm), data->show_signal_graphical);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+		(show_label), data->show_label);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
+		(resolve_presets), data->resolve_presets_in_label);
+
+	// Commands
+	real_frame = gtk_frame_new (_("Commands"));
+	frame = gtk_alignment_new (0, 0, 0.5, 0.5);
+	table = gtk_table_new(2, 2, FALSE);
+
+	gtk_widget_show (frame);
+	gtk_widget_show (table);
+	gtk_widget_show (real_frame);
+
+	gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
+	gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
+	gtk_alignment_set_padding (GTK_ALIGNMENT (frame), 0, 2, 2, 2);
+
+	gtk_container_add (GTK_CONTAINER (frame), table);
+	gtk_container_add (GTK_CONTAINER (real_frame), frame);
+	gtk_box_pack_start(GTK_BOX(properties), real_frame, FALSE, FALSE, 0);	
+
+	// Post-startup command
+	label = gtk_label_new (_("Run after startup"));
+	startup_command_entry = gtk_entry_new_with_max_length
+		(MAX_COMMAND_LENGTH);
+
+	gtk_widget_show (label);
+	gtk_widget_show (startup_command_entry);
+
+	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+
+	gtk_entry_set_text
+		(GTK_ENTRY (startup_command_entry), data->startup_command);
+
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), label, 0, 1, 0, 1);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), startup_command_entry, 1, 2, 0, 1);
+
+	// Post-shutdown command
+	label = gtk_label_new (_("Run after shutdown"));
+	shutdown_command_entry = gtk_entry_new_with_max_length
+		(MAX_COMMAND_LENGTH);
+
+	gtk_widget_show (label);
+	gtk_widget_show (shutdown_command_entry);
+
+	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
+
+	gtk_entry_set_text
+		(GTK_ENTRY (shutdown_command_entry), data->shutdown_command);
+
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), label, 0, 1, 1, 2);
+	gtk_table_attach_defaults
+		(GTK_TABLE (table), shutdown_command_entry, 1, 2, 1, 2);
+
 	g_signal_connect ((gpointer) startup_command_entry, "changed",
 			G_CALLBACK (radio_startup_command_changed), data);
 	g_signal_connect ((gpointer) shutdown_command_entry, "changed",
 			G_CALLBACK (radio_shutdown_command_changed), data);
 	g_signal_connect ((gpointer) device_entry, "changed",
 			G_CALLBACK (radio_device_changed), data);
-	g_signal_connect (G_OBJECT (signal_show), "toggled",
+	g_signal_connect (G_OBJECT (show_signal), "toggled",
 			G_CALLBACK (radio_show_signal_changed), data);
+	g_signal_connect (G_OBJECT (show_label), "toggled",
+			G_CALLBACK (radio_show_label_changed), data);
+	g_signal_connect (G_OBJECT (label_when_off), "toggled",
+			G_CALLBACK (radio_show_label_when_off_changed), data);
+	g_signal_connect (G_OBJECT (resolve_presets), "toggled",
+			G_CALLBACK (radio_resolve_presets_changed), data);
+	g_signal_connect (G_OBJECT (signal_type_bar), "toggled",
+			G_CALLBACK (radio_signal_type_changed), data);
 	g_signal_connect (G_OBJECT (auto_update_display_yes), "toggled",
 			G_CALLBACK (radio_auto_update_display_changed), data);
 	g_signal_connect (G_OBJECT (frequency_button), "toggled",

Modified: xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h	2009-01-25 21:53:06 UTC (rev 6552)
+++ xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h	2009-01-25 21:56:10 UTC (rev 6553)
@@ -78,7 +78,11 @@
 	gint			radio_timeout_id;
 
 	gboolean		on;
+	gboolean		show_label;
 	gboolean		show_signal;
+	gboolean		show_label_when_off;
+	gboolean		resolve_presets_in_label;
+	gboolean		show_signal_graphical;
 	gboolean		auto_update_display;
 	gint			freq;
 	char			device [MAX_DEVICE_NAME_LENGTH];




More information about the Goodies-commits mailing list