[Goodies-commits] r4688 - xfce4-notes-plugin/trunk/panel-plugin
Mike Massonnet
mmassonnet at xfce.org
Wed Apr 30 11:14:37 CEST 2008
Author: mmassonnet
Date: 2008-04-30 09:14:37 +0000 (Wed, 30 Apr 2008)
New Revision: 4688
Modified:
xfce4-notes-plugin/trunk/panel-plugin/defines.h
xfce4-notes-plugin/trunk/panel-plugin/notes-properties-dialog.c
xfce4-notes-plugin/trunk/panel-plugin/notes.c
xfce4-notes-plugin/trunk/panel-plugin/notes.h
xfce4-notes-plugin/trunk/panel-plugin/panel-plugin.c
Log:
rename the channels and some properties; make the panel plugin options work;
* src/defines.h,
src/notes-properties-dialog.c,
src/notes.c,
src/notes.h,
src/panel-plugin.c:
- Define the channel names
- Make use of new channel/property names
* src/notes.c:
* src/panel-plugin.c:
- Attach a callback to "property-changed" signal on the panel plugin channel
- Update arrow visibility
- Update taskbar hint for the windows
Modified: xfce4-notes-plugin/trunk/panel-plugin/defines.h
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/defines.h 2008-04-30 05:25:34 UTC (rev 4687)
+++ xfce4-notes-plugin/trunk/panel-plugin/defines.h 2008-04-30 09:14:37 UTC (rev 4688)
@@ -22,5 +22,8 @@
#define BORDER 8
+#define XFCONF_CHANNEL_NEW_WINDOW "xfce4-notes-plugin_new-window"
+#define XFCONF_CHANNEL_PANEL_PLUGIN "xfce4-notes-plugin_panel-plugin"
+
#endif
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes-properties-dialog.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes-properties-dialog.c 2008-04-30 05:25:34 UTC (rev 4687)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes-properties-dialog.c 2008-04-30 09:14:37 UTC (rev 4688)
@@ -29,28 +29,37 @@
-static XfconfChannel *channel = NULL;
+static XfconfChannel *channel_panel_plugin = NULL;
+static XfconfChannel *channel_new_window = NULL;
static void
-cb_toggled (GtkToggleButton *button,
- const gchar *property)
+cb_channel_panel_plugin_toggled (GtkToggleButton *button,
+ const gchar *property)
{
- xfconf_channel_set_bool (channel, property, gtk_toggle_button_get_active (button));
+ xfconf_channel_set_bool (channel_panel_plugin, property, gtk_toggle_button_get_active (button));
}
static void
-cb_fontset (GtkFontButton *fontbutton)
+cb_channel_new_window_toggled (GtkToggleButton *button,
+ const gchar *property)
{
- xfconf_channel_set_string (channel, "/window_font/description", gtk_font_button_get_font_name (fontbutton));
+ xfconf_channel_set_bool (channel_new_window, property, gtk_toggle_button_get_active (button));
}
static void
-cb_scale (GtkRange *range,
- const gchar *property)
+cb_channel_new_window_fontset (GtkFontButton *fontbutton,
+ const gchar *property)
{
- xfconf_channel_set_int (channel, property, (gint32)gtk_range_get_value (range));
+ xfconf_channel_set_string (channel_new_window, property, gtk_font_button_get_font_name (fontbutton));
}
+static void
+cb_channel_new_window_scale (GtkRange *range,
+ const gchar *property)
+{
+ xfconf_channel_set_int (channel_new_window, property, (gint32)gtk_range_get_value (range));
+}
+
GtkWidget *
prop_dialog_new (NotesPlugin *notes_plugin)
{
@@ -58,10 +67,10 @@
GtkWidget *fontbutton, *size_box;
/* Configuration channel */
- if (channel == NULL)
+ if (NULL == channel_panel_plugin && NULL == channel_new_window)
{
- xfconf_init (NULL);
- channel = xfconf_channel_new ("/Xfce4NotesPlugin/DefaultSettings");
+ channel_panel_plugin = notes_plugin->channel_panel_plugin;
+ channel_new_window = notes_plugin->channel_new_window;
}
/* Dialog */
@@ -87,10 +96,17 @@
/* Hide from taskbar */
button = gtk_check_button_new_with_label (_("Hide windows from taskbar"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
- xfconf_channel_get_bool (channel, "/window_state/hide_from_taskbar", FALSE));
+ xfconf_channel_get_bool (channel_panel_plugin, "/hide_windows_from_taskbar", FALSE));
gtk_container_add (GTK_CONTAINER (box), button);
- g_signal_connect (button, "toggled", G_CALLBACK (cb_toggled), "/window_state/hide_from_taskbar");
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_panel_plugin_toggled), "/hide_windows_from_taskbar");
+ /* Hide arrow button */
+ button = gtk_check_button_new_with_label (_("Hide arrow button"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
+ xfconf_channel_get_bool (channel_panel_plugin, "/hide_arrow_button", FALSE));
+ gtk_container_add (GTK_CONTAINER (box), button);
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_panel_plugin_toggled), "/hide_arrow_button");
+
/* === New window settings === */
box = gtk_vbox_new (TRUE, BORDER);
frame = xfce_create_framebox_with_content (_("New window settings"), box);
@@ -100,23 +116,23 @@
/* Always on top */
button = gtk_check_button_new_with_label (_("Always on top"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
- xfconf_channel_get_bool (channel, "/window_state/always_on_top", FALSE));
+ xfconf_channel_get_bool (channel_new_window, "/window_state/always_on_top", FALSE));
gtk_box_pack_start (GTK_BOX (box), button, TRUE, FALSE, 0);
- g_signal_connect (button, "toggled", G_CALLBACK (cb_toggled), "/window_state/always_on_top");
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_new_window_toggled), "/window_state/always_on_top");
/* Sticky window */
button = gtk_check_button_new_with_label (_("Sticky window"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
- xfconf_channel_get_bool (channel, "/window_state/sticky", TRUE));
+ xfconf_channel_get_bool (channel_new_window, "/window_state/sticky", TRUE));
gtk_box_pack_start (GTK_BOX (box), button, TRUE, FALSE, 0);
- g_signal_connect (button, "toggled", G_CALLBACK (cb_toggled), "/window_state/sticky");
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_new_window_toggled), "/window_state/sticky");
/* Resize grip */
button = gtk_check_button_new_with_label (_("Resize grip"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
- xfconf_channel_get_bool (channel, "/window_state/resize_grip", FALSE));
+ xfconf_channel_get_bool (channel_new_window, "/window_state/resize_grip", FALSE));
gtk_box_pack_start (GTK_BOX (box), button, TRUE, FALSE, 0);
- g_signal_connect (button, "toggled", G_CALLBACK (cb_toggled), "/window_state/resize_grip");
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_new_window_toggled), "/window_state/resize_grip");
/* Font */
hbox = gtk_hbox_new (FALSE, BORDER);
@@ -124,15 +140,15 @@
button = gtk_check_button_new_with_label (_("Font"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
- xfconf_channel_get_bool (channel, "/window_state/use_font", FALSE));
+ xfconf_channel_get_bool (channel_new_window, "/window_state/use_font", FALSE));
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
- g_signal_connect (button, "toggled", G_CALLBACK (cb_toggled), "/window_state/use_font");
+ g_signal_connect (button, "toggled", G_CALLBACK (cb_channel_new_window_toggled), "/window_state/use_font");
- gchar *description = xfconf_channel_get_string (channel, "/window_font/description", "Sans 10");
+ gchar *description = xfconf_channel_get_string (channel_new_window, "/font/description", "Sans 10");
fontbutton = gtk_font_button_new_with_font (description);
g_free (description);
gtk_box_pack_start (GTK_BOX (hbox), fontbutton, TRUE, TRUE, 0);
- g_signal_connect (fontbutton, "font-set", G_CALLBACK (cb_fontset), NULL);
+ g_signal_connect (fontbutton, "font-set", G_CALLBACK (cb_channel_new_window_fontset), "/font/description");
/* Size */
hbox = gtk_hbox_new (FALSE, BORDER);
@@ -146,20 +162,20 @@
scale = gtk_hscale_new_with_range (20, 600, 10);
gtk_range_set_value (GTK_RANGE (scale),
- (gdouble)xfconf_channel_get_int (channel, "/window_geometry/width", 375));
+ (gdouble)xfconf_channel_get_int (channel_new_window, "/geometry/width", 375));
gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_RIGHT);
gtk_box_pack_start (GTK_BOX (size_box), scale, TRUE, TRUE, 0);
- g_signal_connect (scale, "value-changed", G_CALLBACK (cb_scale), "/window_geometry/width");
+ g_signal_connect (scale, "value-changed", G_CALLBACK (cb_channel_new_window_scale), "/geometry/width");
label = gtk_label_new ("×");
gtk_box_pack_start (GTK_BOX (size_box), label, FALSE, FALSE, 0);
scale = gtk_hscale_new_with_range (20, 600, 10);
gtk_range_set_value (GTK_RANGE (scale),
- (gdouble)xfconf_channel_get_int (channel, "/window_geometry/height", 430));
+ (gdouble)xfconf_channel_get_int (channel_new_window, "/geometry/height", 430));
gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_LEFT);
gtk_box_pack_start (GTK_BOX (size_box), scale, TRUE, TRUE, 0);
- g_signal_connect (scale, "value-changed", G_CALLBACK (cb_scale), "/window_geometry/height");
+ g_signal_connect (scale, "value-changed", G_CALLBACK (cb_channel_new_window_scale), "/geometry/height");
/* === Ending === */
gtk_widget_show_all (GTK_DIALOG (dialog)->vbox);
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.c 2008-04-30 05:25:34 UTC (rev 4687)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.c 2008-04-30 09:14:37 UTC (rev 4688)
@@ -168,21 +168,20 @@
notes_window->notes = NULL;
notes_window->name = g_strdup (window_name);
-#ifdef HAVE_XFCONF
- /* Configuration channel */
- xfconf_init (NULL);
- XfconfChannel *channel = xfconf_channel_new ("/Xfce4NotesPlugin/DefaultSettings");
-#endif
-
/* Window */
notes_window->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_deletable (GTK_WINDOW (notes_window->window), FALSE);
gtk_window_set_title (GTK_WINDOW (notes_window->window), window_name);
- gtk_window_set_default_size (GTK_WINDOW (notes_window->window),
#ifdef HAVE_XFCONF
- xfconf_channel_get_int (channel, "/window_geometry/width", 375),
- xfconf_channel_get_int (channel, "/window_geometry/height", 430));
+ gtk_window_set_skip_taskbar_hint (GTK_WINDOW (notes_window->window),
+ xfconf_channel_get_bool (notes_plugin->channel_panel_plugin,
+ "/hide_windows_from_taskbar",
+ FALSE));
+ gtk_window_set_default_size (GTK_WINDOW (notes_window->window),
+ xfconf_channel_get_int (notes_plugin->channel_new_window, "/window_geometry/width", 375),
+ xfconf_channel_get_int (notes_plugin->channel_new_window, "/window_geometry/height", 430));
#else
+ gtk_window_set_default_size (GTK_WINDOW (notes_window->window),
375, 430);
#endif
gtk_window_set_decorated (GTK_WINDOW (notes_window->window), FALSE);
@@ -484,6 +483,7 @@
{
XfceRc *rc;
NotesNote *notes_note;
+ NotesPlugin *notes_plugin = notes_window->notes_plugin;
const gchar *note_name;
gint w = 375;
gint h = 430;
@@ -525,19 +525,16 @@
}
#ifdef HAVE_XFCONF
- xfconf_init (NULL);
- XfconfChannel *channel = xfconf_channel_new ("/Xfce4NotesPlugin/DefaultSettings");
- w = xfconf_channel_get_int (channel, "/window_geometry/width", w);
- h = xfconf_channel_get_int (channel, "/window_geometry/height", h);
- above = xfconf_channel_get_bool (channel, "/window_state/always_on_top", above);
- show_on_startup = xfconf_channel_get_bool (channel, "/window_state/show_on_startup", show_on_startup);
- show_statusbar = xfconf_channel_get_bool (channel, "/window_state/resize_grip", show_statusbar);
- sticky = xfconf_channel_get_bool (channel, "/window_state/sticky", sticky);
- visible = xfconf_channel_get_bool (channel, "/window_state/visible", visible);
- transparency = xfconf_channel_get_int (channel, "/window_state/transparency", transparency);
- if (xfconf_channel_get_bool (channel, "/window_state/use_font", FALSE))
- font_descr = xfconf_channel_get_string (channel, "/window_font/description", "Sans 10");
- g_object_unref (channel);
+ w = xfconf_channel_get_int (notes_plugin->channel_new_window, "/window_geometry/width", w);
+ h = xfconf_channel_get_int (notes_plugin->channel_new_window, "/window_geometry/height", h);
+ above = xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/always_on_top", above);
+ show_on_startup = xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/show_on_startup", show_on_startup);
+ show_statusbar = xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/resize_grip", show_statusbar);
+ sticky = xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/sticky", sticky);
+ visible = xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/visible", visible);
+ transparency = xfconf_channel_get_int (notes_plugin->channel_new_window, "/window_state/transparency", transparency);
+ if (xfconf_channel_get_bool (notes_plugin->channel_new_window, "/window_state/use_font", FALSE))
+ font_descr = xfconf_channel_get_string (notes_plugin->channel_new_window, "/window_font/description", "Sans 10");
#endif
rc = xfce_rc_simple_open (notes_window->notes_plugin->config_file, FALSE);
@@ -848,7 +845,7 @@
/* NotesWindow options menu */
notes_window->menu_options = gtk_menu_new ();
- GtkWidget *mi_show_statusbar = gtk_check_menu_item_new_with_label (_("Show statusbar"));
+ GtkWidget *mi_show_statusbar = gtk_check_menu_item_new_with_label (_("Resize grip"));
GtkWidget *mi_above = gtk_check_menu_item_new_with_label (_("Always on top"));
GtkWidget *mi_sticky = gtk_check_menu_item_new_with_label (_("Sticky window"));
GtkWidget *mi_show_on_startup = gtk_menu_item_new_with_label (_("Show on startup"));
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.h
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.h 2008-04-30 05:25:34 UTC (rev 4687)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.h 2008-04-30 09:14:37 UTC (rev 4688)
@@ -25,6 +25,9 @@
#include <libxfce4panel/xfce-panel-convenience.h>
#include <libxfcegui4/libxfcegui4.h>
#ifdef HAVE_THUNAR_VFS
+#include <xfconf/xfconf.h>
+#endif
+#ifdef HAVE_THUNAR_VFS
#include <thunar-vfs/thunar-vfs.h>
#endif
@@ -57,6 +60,10 @@
GtkTooltips *tooltips;
+#ifdef HAVE_XFCONF
+ XfconfChannel *channel_panel_plugin;
+ XfconfChannel *channel_new_window;
+#endif
#ifdef HAVE_THUNAR_VFS
ThunarVfsMonitor *monitor;
ThunarVfsPath *thunar_vfs_path;
Modified: xfce4-notes-plugin/trunk/panel-plugin/panel-plugin.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/panel-plugin.c 2008-04-30 05:25:34 UTC (rev 4687)
+++ xfce4-notes-plugin/trunk/panel-plugin/panel-plugin.c 2008-04-30 09:14:37 UTC (rev 4688)
@@ -23,6 +23,7 @@
#include <config.h>
#endif
+#include "defines.h"
#include "notes.h"
#ifdef HAVE_XFCONF
#include "notes-properties-dialog.h"
@@ -54,7 +55,14 @@
static void notes_plugin_free (NotesPlugin *notes_plugin);
static void notes_plugin_destroy_timeout (NotesPlugin *notes_plugin);
+#ifdef HAVE_XFCONF
+static void notes_plugin_monitor_xfconf (NotesPlugin *notes_plugin);
+static void notes_plugin_xfconf_property_changed
+ (NotesPlugin *notes_plugin,
+ gchar *property,
+ GValue *value);
+#endif
#ifdef HAVE_THUNAR_VFS
static NotesWindow *notes_plugin_get_window_by_name (NotesPlugin *notes_plugin,
const gchar *name);
@@ -102,6 +110,16 @@
NotesPlugin *notes_plugin = notes_plugin_new (panel_plugin);
g_return_if_fail (G_LIKELY (notes_plugin != NULL));
+#ifdef HAVE_XFCONF
+ notes_plugin_monitor_xfconf (notes_plugin);
+#endif
+
+ gtk_widget_show_all (GTK_WIDGET (panel_plugin));
+#ifdef HAVE_XFCONF
+ if (xfconf_channel_get_bool (notes_plugin->channel_panel_plugin, "/hide_arrow_button", FALSE))
+ gtk_widget_hide (notes_plugin->btn_arrow);
+#endif
+
notes_plugin_load_data (notes_plugin);
}
@@ -125,6 +143,10 @@
DBG ("\nLook up file: %s\nNotes path: %s", notes_plugin->config_file,
notes_plugin->notes_path);
+#ifdef HAVE_XFCONF
+ xfconf_init (NULL);
+#endif
+
notes_plugin->windows = NULL;
notes_plugin->box_panel = GTK_WIDGET (xfce_hvbox_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0));
notes_plugin->btn_panel = xfce_create_panel_toggle_button ();
@@ -193,7 +215,6 @@
#endif
xfce_panel_plugin_add_action_widget (panel_plugin, notes_plugin->btn_panel);
xfce_panel_plugin_add_action_widget (panel_plugin, notes_plugin->btn_arrow);
- gtk_widget_show_all (GTK_WIDGET (panel_plugin));
return notes_plugin;
}
@@ -296,6 +317,9 @@
notes_plugin_free (NotesPlugin *notes_plugin)
{
notes_plugin_save_data_all (notes_plugin);
+#ifdef HAVE_XFCONF
+ xfconf_shutdown ();
+#endif
#ifdef HAVE_THUNAR_VFS
/* TODO move code out from notes_window_destroy and add notes_window_free
* which would only free memory and not corrupt notes or configuration data
@@ -321,6 +345,43 @@
notes_plugin->timeout = 0;
}
+#ifdef HAVE_XFCONF
+static void
+notes_plugin_monitor_xfconf (NotesPlugin *notes_plugin)
+{
+ notes_plugin->channel_new_window = xfconf_channel_new (XFCONF_CHANNEL_NEW_WINDOW);
+ notes_plugin->channel_panel_plugin = xfconf_channel_new (XFCONF_CHANNEL_PANEL_PLUGIN);
+ g_signal_connect_swapped (notes_plugin->channel_panel_plugin, "property-changed",
+ G_CALLBACK (notes_plugin_xfconf_property_changed), notes_plugin);
+}
+
+static void
+notes_plugin_xfconf_property_changed (NotesPlugin *notes_plugin,
+ gchar *property,
+ GValue *value)
+{
+ /* Refresh both elements
+ * TODO find out how to guess efficiently the property name */
+ gboolean v = g_value_get_boolean (value);
+ if (!g_ascii_strcasecmp (property, "/hide_windows_from_taskbar"))
+ {
+ GSList *l;
+ for (l = notes_plugin->windows; l != NULL; l = l->next)
+ {
+ NotesWindow *notes_window = l->data;
+ gtk_window_set_skip_taskbar_hint (GTK_WINDOW (notes_window->window), v);
+ }
+ }
+ else if (!g_ascii_strcasecmp (property, "/hide_arrow_button"))
+ {
+ if (v)
+ gtk_widget_hide (notes_plugin->btn_arrow);
+ else
+ gtk_widget_show (notes_plugin->btn_arrow);
+ }
+}
+#endif
+
#ifdef HAVE_THUNAR_VFS
static NotesWindow *
notes_plugin_get_window_by_name (NotesPlugin *notes_plugin,
More information about the Goodies-commits
mailing list