[Goodies-commits] r1789 - xfce4-notes-plugin/trunk/panel-plugin
Mike Massonnet
mmassonnet at xfce.org
Mon Jul 24 22:01:57 CEST 2006
Author: mmassonnet
Date: 2006-07-24 20:01:54 +0000 (Mon, 24 Jul 2006)
New Revision: 1789
Modified:
xfce4-notes-plugin/trunk/panel-plugin/notes-options.c
xfce4-notes-plugin/trunk/panel-plugin/notes-window.c
xfce4-notes-plugin/trunk/panel-plugin/notes-window.h
xfce4-notes-plugin/trunk/panel-plugin/notes.c
xfce4-notes-plugin/trunk/panel-plugin/notes.h
Log:
Support for multiple notes through a notebook
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes-options.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes-options.c 2006-07-24 19:59:41 UTC (rev 1788)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes-options.c 2006-07-24 20:01:54 UTC (rev 1789)
@@ -39,6 +39,7 @@
static void on_toggle_task_switcher (GtkWidget *, NotesPlugin *);
static void on_toggle_always_on_top (GtkWidget *, NotesPlugin *);
static void on_toggle_stick (GtkWidget *, NotesPlugin *);
+static void on_toggle_vscrollbar (GtkWidget *, NotesPlugin *);
GtkWidget *
@@ -46,6 +47,8 @@
{
GtkWidget *dialog, *vbox;
GtkWidget *cb_show, *cb_task_switcher, *cb_always_on_top, *cb_stick;
+ GtkWidget *hseparator;
+ GtkWidget *cb_vscrollbar;
NotesOptions *options;
DBG ("New Notes Options");
@@ -68,7 +71,7 @@
vbox = GTK_DIALOG (dialog)->vbox;
gtk_box_set_spacing (GTK_BOX (vbox), 2);
- cb_show = gtk_check_button_new_with_label (_("Show the notes on startup"));
+ cb_show = gtk_check_button_new_with_label (_("Show the notes at startup"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb_show), options->show);
gtk_box_pack_start (GTK_BOX (vbox), cb_show, FALSE, FALSE, 0);
gtk_widget_show (cb_show);
@@ -102,6 +105,23 @@
g_signal_connect (cb_stick, "toggled", G_CALLBACK (on_toggle_stick), notes);
+ hseparator = gtk_hseparator_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, FALSE, 0);
+ //gtk_widget_show (hseparator);
+
+ cb_vscrollbar =
+ gtk_check_button_new_with_label (_("Always show vertical scrollbar"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb_vscrollbar),
+ options->vscrollbar);
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (notes->tooltips),
+ cb_vscrollbar, _("A restart of the panel is needed"),
+ NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), cb_vscrollbar, FALSE, FALSE, 0);
+ //gtk_widget_show (cb_vscrollbar);
+
+ g_signal_connect (cb_vscrollbar, "toggled",
+ G_CALLBACK (on_toggle_vscrollbar), notes);
+
gtk_widget_show (dialog);
return dialog;
@@ -162,3 +182,31 @@
DBG ("Set option stick: %d", toggle_value);
}
+
+static void
+on_toggle_vscrollbar (GtkWidget *widget, NotesPlugin *notes)
+{
+ gboolean toggle_value;
+ GtkPolicyType vpolicy;
+ gint i;
+ GList *pages;
+ NotePage *page;
+
+ g_object_get (G_OBJECT (widget), "active", &toggle_value, NULL);
+ notes->options.vscrollbar = toggle_value;
+
+ vpolicy = (toggle_value) ? GTK_POLICY_AUTOMATIC : GTK_POLICY_ALWAYS;
+ pages = g_list_nth (notes->note->pages, 0);
+
+ for (i = 0, page = (NotePage *)g_list_nth_data (pages, i); page != NULL;
+ i++, page = (NotePage *)g_list_nth_data (pages, i))
+ {
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (page->scroll),
+ GTK_POLICY_AUTOMATIC, vpolicy);
+ /* This is being very obvious... it doesn't work!
+ * But the setting is correct if you restart the panel */
+ }
+
+ DBG ("Set option vscrollbar: %d", toggle_value);
+}
+
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes-window.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes-window.c 2006-07-24 19:59:41 UTC (rev 1788)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes-window.c 2006-07-24 20:01:54 UTC (rev 1789)
@@ -33,21 +33,27 @@
#define PLUGIN_NAME "xfce4-notes-plugin"
+static void note_page_load_data (XfcePanelPlugin *, NotePage *);
static gboolean on_note_delete ();
+static void on_note_close (GtkWidget *, GtkToggleButton *);
static gboolean on_title_press (GtkWidget *, GdkEventButton *, GtkWindow *);
static gboolean on_title_scroll (GtkWidget *, GdkEventScroll *, Note *);
+static gboolean on_note_key_press (GtkWidget *, GdkEventKey *, NotesPlugin *);
+static void on_note_changed (GtkWidget *, NotesPlugin *);
+static void on_page_create (GtkWidget *, NotesPlugin *);
+static gboolean on_page_delete (GtkWidget *, GdkEventButton *, NotesPlugin *);
Note *
-note_new (XfcePanelPlugin *plugin)
+note_new (NotesPlugin *notes)
{
Note *note;
DBG ("Create Note Window");
note = g_new0 (Note, 1);
+ note->pages = NULL;
-
/* Window */
note->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
@@ -76,19 +82,32 @@
gtk_container_add (GTK_CONTAINER (note->frame), note->vbox);
- /* Horizontal box: icon + title + close button */
+ /* Horizontal box: create new page button + title + close button */
note->hbox = gtk_hbox_new (FALSE, 2);
gtk_widget_show (note->hbox);
gtk_box_pack_start (GTK_BOX (note->vbox), note->hbox, FALSE, FALSE, 0);
- /* Icon */
- note->icon = gtk_image_new_from_stock (GTK_STOCK_EDIT,
- GTK_ICON_SIZE_MENU);
- gtk_widget_show (note->icon);
+ /* Create new page button + icon */
+ note->create_page_button = xfce_create_panel_button ();
+ gtk_widget_show (note->create_page_button);
- gtk_box_pack_start (GTK_BOX (note->hbox), note->icon, FALSE, FALSE, 0);
+ gtk_tooltips_set_tip (GTK_TOOLTIPS (notes->tooltips),
+ note->create_page_button, _("Open a new page"), NULL);
+ gtk_widget_set_size_request (note->create_page_button, 22, 22);
+ gtk_box_pack_start (GTK_BOX (note->hbox), note->create_page_button, FALSE,
+ FALSE, 0);
+ note->create_page_icon =
+ gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
+ gtk_widget_show (note->create_page_icon);
+
+ gtk_container_add (GTK_CONTAINER (note->create_page_button),
+ note->create_page_icon);
+
+ g_signal_connect (note->create_page_button, "clicked",
+ G_CALLBACK (on_page_create), notes);
+
/* Event box move + Title */
note->move_event_box = gtk_event_box_new ();
gtk_widget_show (note->move_event_box);
@@ -113,7 +132,7 @@
note->close_button = xfce_create_panel_button ();
gtk_widget_show (note->close_button);
- gtk_widget_set_size_request (note->close_button, 16, 16);
+ gtk_widget_set_size_request (note->close_button, 22, 22);
gtk_box_pack_start (GTK_BOX (note->hbox), note->close_button, FALSE, FALSE,
0);
@@ -123,27 +142,130 @@
gtk_container_add (GTK_CONTAINER (note->close_button), note->close_icon);
+ g_signal_connect (note->close_button, "clicked", G_CALLBACK (on_note_close),
+ notes->button);
+
+ /* Notebook */
+ note->notebook = gtk_notebook_new ();
+ gtk_widget_show (note->notebook);
+
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (note->notebook), FALSE);
+ gtk_notebook_set_tab_pos (GTK_NOTEBOOK (note->notebook), GTK_POS_LEFT);
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK (note->notebook), TRUE);
+
+ gtk_box_pack_start (GTK_BOX (note->vbox), note->notebook, TRUE, TRUE, 0);
+
+ return note;
+}
+
+void
+note_page_new (XfcePanelPlugin *plugin, NotesPlugin *notes)
+{
+ NotePage *page;
+ Note *note;
+ GtkTextBuffer *buffer;
+ gchar note_id[8];
+
+ DBG ("Create a new page");
+
+ page = g_new0 (NotePage, 1);
+ note = notes->note;
+ note->pages = g_list_append (note->pages, page);
+
+ /* HBox */
+ page->hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (page->hbox);
+
+ /* Label + Close eventbox/icon */
+ g_snprintf (note_id, 8, "%d", g_list_length (note->pages));
+ page->label = gtk_label_new (note_id);
+ gtk_widget_show (page->label);
+
+ gtk_label_set_justify (GTK_LABEL (page->label), GTK_JUSTIFY_RIGHT);
+ gtk_box_pack_start (GTK_BOX (page->hbox), page->label, TRUE, TRUE, 0);
+
+ page->close_eventbox = gtk_event_box_new ();
+ gtk_widget_show (page->close_eventbox);
+
+ gtk_event_box_set_above_child (GTK_EVENT_BOX (page->close_eventbox), TRUE);
+
+ page->close_icon = gtk_image_new_from_stock (GTK_STOCK_CLOSE,
+ GTK_ICON_SIZE_MENU);
+ gtk_widget_show (page->close_icon);
+
+ gtk_container_add (GTK_CONTAINER (page->close_eventbox), page->close_icon);
+ gtk_box_pack_start (GTK_BOX (page->hbox), page->close_eventbox, FALSE,
+ FALSE, 0);
+
/* Scrolled window + Text view */
- note->scroll = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_show (note->scroll);
+ page->scroll = gtk_scrolled_window_new (NULL, NULL);
+ gtk_widget_show (page->scroll);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (note->scroll),
- GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (note->scroll),
+ //GtkPolicyType vpolicy = (notes->options.vscrollbar) ? GTK_POLICY_ALWAYS
+ // : GTK_POLICY_AUTOMATIC;
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (page->scroll),
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
- gtk_box_pack_start (GTK_BOX (note->vbox), note->scroll, TRUE, TRUE, 0);
/* Text view */
- note->text = gtk_text_view_new ();
- gtk_widget_show (note->text);
+ page->text = gtk_text_view_new ();
+ gtk_widget_show (page->text);
- gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (note->text), GTK_WRAP_WORD);
- gtk_container_add (GTK_CONTAINER (note->scroll), note->text);
+ gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (page->text), GTK_WRAP_WORD);
+ gtk_container_add (GTK_CONTAINER (page->scroll), page->text);
- return note;
+
+ /* Append the widget to the notebook */
+ page->id = gtk_notebook_append_page (GTK_NOTEBOOK (note->notebook),
+ page->scroll, page->hbox);
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (note->notebook),
+ (gboolean) page->id);
+
+
+ note_page_load_data (plugin, page);
+
+ g_signal_connect (page->close_eventbox, "button-release-event",
+ G_CALLBACK (on_page_delete), notes);
+ g_signal_connect (page->text, "key-press-event",
+ G_CALLBACK (on_note_key_press), notes);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (page->text));
+ g_signal_connect (buffer, "changed", G_CALLBACK (on_note_changed), notes);
}
+static void
+note_page_load_data (XfcePanelPlugin *plugin, NotePage *page)
+{
+ gchar *file;
+ gchar note_entry[12];
+ XfceRc *rc;
+
+ if (!(file = xfce_panel_plugin_lookup_rc_file (plugin)))
+ return;
+
+ DBG ("Look up file (%s)", file);
+
+ rc = xfce_rc_simple_open (file, FALSE);
+ g_free (file);
+
+ if (rc)
+ {
+ GtkTextBuffer *buffer;
+ const gchar *text;
+
+ g_snprintf (note_entry, 12, "note%d", page->id);
+ text = xfce_rc_read_entry (rc, note_entry, "");
+
+ DBG ("Note %d (%s): %s", page->id, note_entry, text);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (page->text));
+ gtk_text_buffer_set_text (buffer, text, -1);
+
+ gtk_text_view_set_buffer (GTK_TEXT_VIEW (page->text), buffer);
+
+ xfce_rc_close (rc);
+ }
+}
+
static gboolean
on_note_delete ()
{
@@ -151,6 +273,12 @@
return TRUE;
}
+static void
+on_note_close (GtkWidget *widget, GtkToggleButton *panel_button)
+{
+ gtk_toggle_button_set_active (panel_button, FALSE);
+}
+
static gboolean
on_title_press (GtkWidget *widget, GdkEventButton *event, GtkWindow *window)
{
@@ -165,25 +293,119 @@
static gboolean
on_title_scroll (GtkWidget *widget, GdkEventScroll *event, Note *note)
{
- gint width, height;
-
- gtk_window_get_default_size (GTK_WINDOW (note->window), &width, &height);
-
if (event->type == GDK_SCROLL)
{
+ if (GTK_WIDGET_VISIBLE (note->notebook))
+ gtk_window_get_size (GTK_WINDOW (note->window), ¬e->w, ¬e->h);
+ else
+ gtk_window_get_size (GTK_WINDOW (note->window), ¬e->w, NULL);
+
if (event->direction == GDK_SCROLL_UP)
{
/* Hide the text view */
- gtk_widget_hide (note->scroll);
- gtk_window_resize (GTK_WINDOW (note->window), width, 1);
+ gtk_widget_hide (note->notebook);
+ gtk_window_resize (GTK_WINDOW (note->window), note->w, 1);
}
else if (event->direction == GDK_SCROLL_DOWN)
{
/* Show the text view */
- gtk_widget_show (note->scroll);
- gtk_window_resize (GTK_WINDOW (note->window), width, height);
+ gtk_widget_show (note->notebook);
+ gtk_window_resize (GTK_WINDOW (note->window), note->w, note->h);
}
}
return FALSE;
}
+
+static gboolean
+on_note_key_press (GtkWidget *widget, GdkEventKey *event, NotesPlugin *notes)
+{
+ if (event->type == GDK_KEY_PRESS && event->keyval == GDK_Escape)
+ on_note_close (widget, GTK_TOGGLE_BUTTON (notes->button));
+
+ return FALSE;
+}
+
+static void
+on_note_changed (GtkWidget *widget, NotesPlugin *notes)
+{
+ if (notes->timeout_id > 0)
+ {
+ g_source_remove (notes->timeout_id);
+ notes->timeout_id = 0;
+ }
+
+ notes->timeout_id = g_timeout_add (60000, (GSourceFunc) save_on_timeout,
+ notes);
+}
+
+static void
+on_page_create (GtkWidget *widget, NotesPlugin *notes)
+{
+ note_page_new (notes->plugin, notes);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (notes->note->notebook), -1);
+}
+
+static gboolean
+on_page_delete (GtkWidget *widget, GdkEventButton *event, NotesPlugin * notes)
+{
+ if (event->type == GDK_BUTTON_RELEASE && event->button == 1)
+ {
+ gint id;
+ GtkNotebook *notebook;
+ GList *pages;
+ NotePage *page;
+ gchar tab_label[8];
+
+ notebook = GTK_NOTEBOOK (notes->note->notebook);
+ id = gtk_notebook_get_current_page (notebook);
+
+ DBG ("Delete id %d", id);
+
+ notes->note->pages = g_list_nth (notes->note->pages, 0);
+ pages = g_list_nth (notes->note->pages, id);
+
+ notes->note->pages = g_list_remove_link (notes->note->pages, pages);
+ g_list_free_1 (pages);
+ gtk_notebook_remove_page (notebook, id);
+
+ pages = g_list_nth (notes->note->pages, 0);
+
+ for (id = 0, page = (NotePage *)g_list_nth_data (pages, id);
+ page != NULL;
+ id++, page = (NotePage *)g_list_nth_data (pages, id))
+ {
+ page->id = id;
+
+ DBG ("id:%d", id);
+
+ g_snprintf (tab_label, 8, "%d", id+1);
+ gtk_label_set_text (GTK_LABEL (page->label), tab_label);
+ }
+
+ gchar *file;
+ gchar note_entry[12];
+ XfceRc *rc;
+
+ if (!(file = xfce_panel_plugin_save_location (notes->plugin, TRUE)))
+ return TRUE;
+
+ rc = xfce_rc_simple_open (file, FALSE);
+ g_free (file);
+
+ if (rc)
+ {
+ g_snprintf (note_entry, 12, "note%d", g_list_length (pages));
+
+ xfce_rc_delete_entry (rc, note_entry, TRUE);
+ xfce_rc_close (rc);
+ }
+ gtk_notebook_set_show_tabs (notebook,
+ (gboolean)g_list_length (pages)-1);
+
+ save_on_timeout (notes);
+ }
+
+ return TRUE;
+}
+
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes-window.h
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes-window.h 2006-07-24 19:59:41 UTC (rev 1788)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes-window.h 2006-07-24 20:01:54 UTC (rev 1789)
@@ -22,27 +22,39 @@
typedef struct
{
+ GtkWidget *hbox;
+ GtkWidget *label;
+ GtkWidget *close_eventbox;
+ GtkWidget *close_icon;
+
+ GtkWidget *scroll;
+ GtkWidget *text;
+
+ gint id;
+}
+NotePage;
+
+typedef struct
+{
GtkWidget *window;
-
GtkWidget *frame;
- GtkWidget *icon;
+ GtkWidget *create_page_icon;
+ GtkWidget *create_page_button;
GtkWidget *move_event_box;
GtkWidget *title;
GtkWidget *close_button;
GtkWidget *close_icon;
- GtkWidget *scroll;
- GtkWidget *text;
+ GtkWidget *notebook;
+ GList *pages;
GtkWidget *vbox;
GtkWidget *hbox;
- /* Window position */
- gint x, y;
+ /* Window geometry */
+ gint x, y, w, h;
}
Note;
-Note * note_new (XfcePanelPlugin *);
-
#endif
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.c
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.c 2006-07-24 19:59:41 UTC (rev 1788)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.c 2006-07-24 20:01:54 UTC (rev 1789)
@@ -39,14 +39,10 @@
static void notes_construct (XfcePanelPlugin *);
static void notes_free_data (XfcePanelPlugin *, NotesPlugin *);
static void notes_save (XfcePanelPlugin *, NotesPlugin *);
-gboolean save_on_timeout (NotesPlugin *);
static void notes_configure (XfcePanelPlugin *, NotesPlugin *);
static gboolean notes_set_size (XfcePanelPlugin *, int size, NotesPlugin *);
static void notes_load_data (XfcePanelPlugin *, NotesPlugin *);
static void notes_button_toggled (XfcePanelPlugin *, NotesPlugin *);
-static void on_note_close (GtkWidget *, GtkToggleButton *);
-static gboolean on_note_key_press (GtkWidget *, GdkEventKey *, NotesPlugin *);
-static void on_note_changed (GtkWidget *widget, NotesPlugin *notes);
static void on_options_response (GtkWidget *, int response, NotesPlugin *);
@@ -75,10 +71,6 @@
char *file;
XfceRc *rc;
- GtkTextBuffer *buffer;
- GtkTextIter start, end;
- gchar *text;
-
DBG ("Save: %s", PLUGIN_NAME);
if (!(file = xfce_panel_plugin_save_location (plugin, TRUE)))
@@ -89,22 +81,19 @@
if (rc)
{
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (notes->note->text));
- gtk_text_buffer_get_bounds (buffer, &start, &end);
- text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &start,
- &end, TRUE);
-
- xfce_rc_write_entry (rc, "note", text);
- g_free (text);
-
if (GTK_WIDGET_VISIBLE (notes->note->window))
{
gtk_window_get_position (GTK_WINDOW (notes->note->window),
¬es->note->x, ¬es->note->y);
+ gtk_window_get_size (GTK_WINDOW (notes->note->window),
+ ¬es->note->w, ¬es->note->h);
}
+
xfce_rc_write_int_entry (rc, "pos_x", notes->note->x);
xfce_rc_write_int_entry (rc, "pos_y", notes->note->y);
+ xfce_rc_write_int_entry (rc, "width", notes->note->w);
+ xfce_rc_write_int_entry (rc, "height", notes->note->h);
xfce_rc_write_bool_entry (rc, "show", notes->options.show);
xfce_rc_write_bool_entry (rc, "task_switcher",
@@ -112,7 +101,37 @@
xfce_rc_write_bool_entry (rc, "always_on_top",
notes->options.always_on_top);
xfce_rc_write_bool_entry (rc, "stick", notes->options.stick);
+ xfce_rc_write_bool_entry (rc, "vscrollbar", notes->options.vscrollbar);
+
+ gint id;
+ NotePage *page;
+ GList *pages;
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ gchar *text;
+ gchar note_entry[12];
+
+ pages = notes->note->pages;
+
+ for (id = 0, page = (NotePage *)g_list_nth_data (pages, id);
+ page != NULL;
+ id++, page = (NotePage *)g_list_nth_data (pages, id))
+ {
+ g_snprintf (note_entry, 12, "note%d", id);
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (page->text));
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer), &start,
+ &end, TRUE);
+
+ DBG ("Note %d (%s): %s", id, note_entry, text);
+
+ xfce_rc_write_entry (rc, note_entry, text);
+ g_free (text);
+ }
+
+
xfce_rc_close (rc);
}
}
@@ -205,7 +224,6 @@
notes_new (XfcePanelPlugin *plugin)
{
NotesPlugin *notes;
- GtkTextBuffer *buffer;
DBG ("New Notes Plugin");
@@ -226,31 +244,21 @@
_("Notes\nClick this button to show/hide your notes"),
NULL);
- notes->note = note_new (plugin);
+ notes->note = note_new (notes);
notes_load_data (plugin, notes);
- g_signal_connect (notes->note->close_button, "clicked",
- G_CALLBACK (on_note_close), notes->button);
-
- g_signal_connect (notes->note->text, "key-press-event",
- G_CALLBACK (on_note_key_press), notes);
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (notes->note->text));
- g_signal_connect (buffer, "changed", G_CALLBACK (on_note_changed), notes);
-
return notes;
}
static void
notes_load_data (XfcePanelPlugin *plugin, NotesPlugin *notes)
{
- char *file;
+ gchar *file;
XfceRc *rc;
+ gchar note_entry[12];
+ gint id;
- GtkTextBuffer *buffer;
- const gchar *text;
-
- if (!(file = xfce_panel_plugin_lookup_rc_file (plugin)))
+ if (!(file = xfce_panel_plugin_save_location (plugin, TRUE)))
return;
DBG ("Look up file (%s)", file);
@@ -260,22 +268,29 @@
if (rc)
{
- text = xfce_rc_read_entry (rc, "note", "");
+ id = 0;
+ g_snprintf (note_entry, 12, "note%d", id++);
+ while (xfce_rc_has_entry (rc, note_entry))
+ {
+ note_page_new (plugin, notes);
+ g_snprintf (note_entry, 12, "note%d", id++);
+ }
+ if (id == 1 && !xfce_rc_has_entry (rc, note_entry))
+ note_page_new (plugin, notes);
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (notes->note->text));
- gtk_text_buffer_set_text (buffer, text, -1);
-
- gtk_text_view_set_buffer (GTK_TEXT_VIEW (notes->note->text), buffer);
-
notes->note->x = xfce_rc_read_int_entry (rc, "pos_x", -1);
notes->note->y = xfce_rc_read_int_entry (rc, "pos_y", -1);
+ notes->note->w = xfce_rc_read_int_entry (rc, "width", 242);
+ notes->note->h = xfce_rc_read_int_entry (rc, "height", 200);
notes->options.show = xfce_rc_read_bool_entry (rc, "show", FALSE);
notes->options.task_switcher =
- xfce_rc_read_bool_entry (rc, "task_switcher", FALSE);
+ xfce_rc_read_bool_entry (rc, "task_switcher", TRUE);
notes->options.always_on_top =
xfce_rc_read_bool_entry (rc, "always_on_top", FALSE);
- notes->options.stick = xfce_rc_read_bool_entry (rc, "stick", FALSE);
+ notes->options.stick = xfce_rc_read_bool_entry (rc, "stick", TRUE);
+ notes->options.vscrollbar =
+ xfce_rc_read_bool_entry (rc, "vscrollbar", TRUE);
xfce_rc_close (rc);
}
@@ -289,8 +304,11 @@
/* Show/hide the note */
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (notes->button)))
{
- gtk_window_move (GTK_WINDOW (notes->note->window), notes->note->x,
- notes->note->y);
+ if (notes->note->x != -1 && notes->note->y != -1)
+ gtk_window_move (GTK_WINDOW (notes->note->window), notes->note->x,
+ notes->note->y);
+ gtk_window_resize (GTK_WINDOW (notes->note->window), notes->note->w,
+ notes->note->h);
gtk_widget_show (notes->note->window);
@@ -306,40 +324,14 @@
{
gtk_window_get_position (GTK_WINDOW (notes->note->window),
¬es->note->x, ¬es->note->y);
+ gtk_window_get_default_size (GTK_WINDOW (notes->note->window),
+ ¬es->note->w, ¬es->note->h);
gtk_widget_hide (notes->note->window);
}
}
static void
-on_note_close (GtkWidget *widget, GtkToggleButton *panel_button)
-{
- gtk_toggle_button_set_active (panel_button, FALSE);
-}
-
-static gboolean
-on_note_key_press (GtkWidget *widget, GdkEventKey *event, NotesPlugin *notes)
-{
- if (event->type == GDK_KEY_PRESS && event->keyval == GDK_Escape)
- on_note_close (widget, GTK_TOGGLE_BUTTON (notes->button));
-
- return FALSE;
-}
-
-static void
-on_note_changed (GtkWidget *widget, NotesPlugin *notes)
-{
- if (notes->timeout_id > 0)
- {
- g_source_remove (notes->timeout_id);
- notes->timeout_id = 0;
- }
-
- notes->timeout_id = g_timeout_add (5000, (GSourceFunc) save_on_timeout,
- notes);
-}
-
-static void
on_options_response (GtkWidget *widget, int response, NotesPlugin *notes)
{
xfce_panel_plugin_unblock_menu (notes->plugin);
Modified: xfce4-notes-plugin/trunk/panel-plugin/notes.h
===================================================================
--- xfce4-notes-plugin/trunk/panel-plugin/notes.h 2006-07-24 19:59:41 UTC (rev 1788)
+++ xfce4-notes-plugin/trunk/panel-plugin/notes.h 2006-07-24 20:01:54 UTC (rev 1789)
@@ -30,6 +30,7 @@
gboolean task_switcher;
gboolean always_on_top;
gboolean stick;
+ gboolean vscrollbar;
}
NotesOptions;
@@ -49,6 +50,8 @@
NotesPlugin;
NotesPlugin * notes_new (XfcePanelPlugin *);
+Note * note_new (NotesPlugin *);
+void note_page_new (XfcePanelPlugin *, NotesPlugin *);
+gboolean save_on_timeout (NotesPlugin *);
#endif
-
More information about the Goodies-commits
mailing list