[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