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

Stefan Ott cockroach at xfce.org
Mon Jan 19 21:23:32 CET 2009


Author: cockroach
Date: 2009-01-19 20:23:32 +0000 (Mon, 19 Jan 2009)
New Revision: 6508

Modified:
   xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c
   xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h
Log:
Can now switch orientation


Modified: xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c	2009-01-19 19:00:09 UTC (rev 6507)
+++ xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.c	2009-01-19 20:23:32 UTC (rev 6508)
@@ -1,7 +1,7 @@
 /*
  * radio plugin for Xfce4.
  *
- * Copyright (c) 2006-2008 Stefan Ott, All rights reserved.
+ * Copyright (c) 2006-2009 Stefan Ott, All rights reserved.
  *
  * 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
@@ -70,7 +70,7 @@
 								&color);
 		if (data->signal_timeout_id == 0)
 		{
-			data->signal_timeout_id = g_timeout_add(500,
+			data->signal_timeout_id = g_timeout_add (500,
 					(GtkFunction) update_signal_bar,
 							(gpointer) data);
 		}
@@ -479,38 +479,70 @@
 	}
 }
 
-static radio_gui *
-create_gui ()
+static void
+add_box (radio_gui *gui)
 {
-	radio_gui* gui;
-	gui = g_new (radio_gui, 1);
+	if (gui->orientation == GTK_ORIENTATION_HORIZONTAL)
+		gui->box = gtk_hbox_new (FALSE, 0);
+	else
+		gui->box = gtk_vbox_new (FALSE, 0);
 
-	gui->ebox = gtk_event_box_new ();
-	gtk_widget_show (gui->ebox);
-	g_signal_connect (GTK_WIDGET (gui->ebox), "button_press_event",
-						G_CALLBACK (mouse_click), gui);
-	g_signal_connect (GTK_WIDGET (gui->ebox), "scroll_event",
-						G_CALLBACK (mouse_scroll), gui);
+	gtk_container_set_border_width (GTK_CONTAINER (gui->box), BORDER / 2);
+	gtk_widget_show (gui->box);	
+}
 
-	gui->signal_bar = gtk_progress_bar_new ();
-	gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (gui->signal_bar),
-						GTK_PROGRESS_LEFT_TO_RIGHT);
+static void
+add_signal_bar (radio_gui *gui)
+{
+	GtkWidget *signal_bar = gtk_progress_bar_new ();
 
-	gui->box = gtk_vbox_new (FALSE, 0);
-	gtk_container_set_border_width (GTK_CONTAINER (gui->box), BORDER / 2);
-	gtk_widget_show (gui->box);
+	if (gui->orientation == GTK_ORIENTATION_HORIZONTAL)
+		gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR
+			(signal_bar), GTK_PROGRESS_BOTTOM_TO_TOP);
+	else
+		gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR
+			(signal_bar), GTK_PROGRESS_LEFT_TO_RIGHT);
 
+	gtk_box_pack_start (GTK_BOX (gui->box), signal_bar, FALSE, FALSE, 1);
+	gui->signal_bar = signal_bar;
+}
+
+static void
+add_label (radio_gui *gui)
+{
 	gui->label = gtk_label_new ("");
 	gtk_widget_show (gui->label);
 
-	gtk_box_pack_start (GTK_BOX (gui->box), gui->label, FALSE, FALSE, 0);
-	gtk_box_pack_start (GTK_BOX (gui->box), gui->signal_bar, FALSE, FALSE,
-									0);
+	gtk_box_pack_start (GTK_BOX (gui->box), gui->label, FALSE, FALSE, 1);
+}
 
+static void
+add_gui_elements (radio_gui *gui)
+{
+
+	add_box (gui);
+	add_label (gui);
+	add_signal_bar (gui);
 	gtk_container_add (GTK_CONTAINER (gui->ebox), gui->box);
+}
 
+static radio_gui *
+create_gui (gint orientation)
+{
+	radio_gui* gui;
+	gui = g_new (radio_gui, 1);
 	gui->max_signal_strength = 3;
+	gui->orientation = orientation;
 
+	gui->ebox = gtk_event_box_new ();
+	gtk_widget_show (gui->ebox);
+
+	g_signal_connect (GTK_WIDGET (gui->ebox), "button_press_event",
+						G_CALLBACK (mouse_click), gui);
+	g_signal_connect (GTK_WIDGET (gui->ebox), "scroll_event",
+						G_CALLBACK (mouse_scroll), gui);
+	add_gui_elements (gui);
+
 	return gui;
 }
 
@@ -536,7 +568,8 @@
 static radio_gui *
 plugin_control_new (XfcePanelPlugin *plugin)
 {
-	radio_gui* plugin_data = create_gui();
+	gint orientation = xfce_panel_plugin_get_orientation (plugin);
+	radio_gui* plugin_data = create_gui (orientation);
 
 	plugin_data->plugin = plugin;
 
@@ -611,13 +644,9 @@
 	gboolean frq = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button));
 
 	if (frq)
-	{
 		data->scroll = CHANGE_FREQ;
-	}
 	else
-	{
 		data->scroll = CHANGE_PRESET;
-	}
 }
 
 static void
@@ -1081,10 +1110,24 @@
 static void
 radio_plugin_set_size (XfcePanelPlugin *plugin, int size, radio_gui *data)
 {
-	gtk_widget_set_size_request (data->signal_bar, size - BORDER, BORDER);
+	GtkWidget* bar = data->signal_bar;
+
+	if (data->orientation == GTK_ORIENTATION_HORIZONTAL)
+		gtk_widget_set_size_request (bar, BORDER, size - BORDER);
+	else
+		gtk_widget_set_size_request (bar, size - BORDER, BORDER);
 }
 
 static void
+radio_set_orientation (XfcePanelPlugin *plugin, GtkOrientation orientation,
+								radio_gui *gui)
+{
+	gui->orientation = orientation;
+	gtk_container_remove (GTK_CONTAINER (gui->ebox), gui->box);
+	add_gui_elements (gui);
+}
+
+static void
 write_config_signal (XfcePanelPlugin *plugin, radio_gui *data)
 {
 	write_config (data, TRUE);
@@ -1294,6 +1337,8 @@
 	g_signal_connect (plugin, "free-data", G_CALLBACK (radio_free), data);
 	g_signal_connect (plugin, "save", G_CALLBACK (write_config_signal),
 									data);
+	g_signal_connect (plugin, "orientation-changed",
+				G_CALLBACK (radio_set_orientation), data);
 }
 
 XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (radio_plugin_construct);

Modified: xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h
===================================================================
--- xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h	2009-01-19 19:00:09 UTC (rev 6507)
+++ xfce4-radio-plugin/trunk/panel-plugin/xfce4-radio.h	2009-01-19 20:23:32 UTC (rev 6508)
@@ -1,7 +1,7 @@
 /*
  * radio plugin for Xfce4.
  *
- * Copyright 2006-2008 Stefan Ott, All rights reserved.
+ * Copyright 2006-2009 Stefan Ott, All rights reserved.
  *
  * 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
@@ -70,14 +70,15 @@
 	GtkWidget*		label;
 	GtkWidget*		signal_bar;
 	GtkTooltips*		tooltips;
+	gint			orientation;
 
-	int			signal_timeout_id;
-	int			radio_timeout_id;
+	gint			signal_timeout_id;
+	gint			radio_timeout_id;
 
 	gboolean		on;
 	gboolean		show_signal;
 	gboolean		auto_update_display;
-	int			freq;
+	gint			freq;
 	char			device [MAX_DEVICE_NAME_LENGTH];
 	char			startup_command [MAX_COMMAND_LENGTH];
 	char			shutdown_command [MAX_COMMAND_LENGTH];




More information about the Goodies-commits mailing list