comparison src/bar_keywords.c @ 1309:55ea4962887a

config file format changed to XML save and restore all layout windows save and restore sidebar configuration
author nadvornik
date Sun, 22 Feb 2009 15:35:37 +0000
parents 2abdd6e50120
children 8cca18bce950
comparison
equal deleted inserted replaced
1308:2320339ca8be 1309:55ea4962887a
23 #include "ui_misc.h" 23 #include "ui_misc.h"
24 #include "ui_utildlg.h" 24 #include "ui_utildlg.h"
25 #include "utilops.h" 25 #include "utilops.h"
26 #include "bar.h" 26 #include "bar.h"
27 #include "ui_menu.h" 27 #include "ui_menu.h"
28 #include "rcfile.h"
28 29
29 static const gchar *keyword_favorite_defaults[] = { 30 static const gchar *keyword_favorite_defaults[] = {
30 N_("Favorite"), 31 N_("Favorite"),
31 N_("Todo"), 32 N_("Todo"),
32 N_("People"), 33 N_("People"),
470 471
471 file_data_unref(pkd->fd); 472 file_data_unref(pkd->fd);
472 pkd->fd = file_data_ref(fd); 473 pkd->fd = file_data_ref(fd);
473 474
474 bar_pane_keywords_update(pkd); 475 bar_pane_keywords_update(pkd);
476 }
477
478 static void bar_pane_keywords_write_config(GtkWidget *pane, GString *outstr, gint indent)
479 {
480 PaneKeywordsData *pkd;
481
482 pkd = g_object_get_data(G_OBJECT(pane), "pane_data");
483 if (!pkd) return;
484
485 write_indent(outstr, indent);
486 g_string_append_printf(outstr, "<pane_keywords\n");
487 indent++;
488 WRITE_CHAR(*pkd, pane.title);
489 WRITE_BOOL(*pkd, pane.expanded);
490 WRITE_CHAR(*pkd, key);
491 indent--;
492 write_indent(outstr, indent);
493 g_string_append_printf(outstr, "/>\n");
475 } 494 }
476 495
477 gint bar_pane_keywords_event(GtkWidget *bar, GdkEvent *event) 496 gint bar_pane_keywords_event(GtkWidget *bar, GdkEvent *event)
478 { 497 {
479 PaneKeywordsData *pkd; 498 PaneKeywordsData *pkd;
705 gtk_list_store_append (model, &iter); 724 gtk_list_store_append (model, &iter);
706 gtk_list_store_set(model, &iter, 0, " ... ", -1); 725 gtk_list_store_set(model, &iter, 0, " ... ", -1);
707 return GTK_TREE_MODEL(model); 726 return GTK_TREE_MODEL(model);
708 } 727 }
709 728
710 GtkWidget *bar_pane_keywords_new(const gchar *title, const gchar *key) 729 GtkWidget *bar_pane_keywords_new(const gchar *title, const gchar *key, gboolean expanded)
711 { 730 {
712 PaneKeywordsData *pkd; 731 PaneKeywordsData *pkd;
713 GtkWidget *hbox; 732 GtkWidget *hbox;
714 GtkWidget *scrolled; 733 GtkWidget *scrolled;
715 GtkTextBuffer *buffer; 734 GtkTextBuffer *buffer;
719 738
720 pkd = g_new0(PaneKeywordsData, 1); 739 pkd = g_new0(PaneKeywordsData, 1);
721 740
722 pkd->pane.pane_set_fd = bar_pane_keywords_set_fd; 741 pkd->pane.pane_set_fd = bar_pane_keywords_set_fd;
723 pkd->pane.pane_event = bar_pane_keywords_event; 742 pkd->pane.pane_event = bar_pane_keywords_event;
743 pkd->pane.pane_write_config = bar_pane_keywords_write_config;
724 pkd->pane.title = g_strdup(title); 744 pkd->pane.title = g_strdup(title);
745 pkd->pane.expanded = expanded;
725 746
726 pkd->key = g_strdup(key); 747 pkd->key = g_strdup(key);
727 748
728 749
729 hbox = gtk_hbox_new(FALSE, PREF_PAD_GAP); 750 hbox = gtk_hbox_new(FALSE, PREF_PAD_GAP);
805 826
806 file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW); 827 file_data_register_notify_func(bar_pane_keywords_notify_cb, pkd, NOTIFY_PRIORITY_LOW);
807 828
808 return pkd->widget; 829 return pkd->widget;
809 } 830 }
831
832 GtkWidget *bar_pane_keywords_new_from_config(const gchar **attribute_names, const gchar **attribute_values)
833 {
834 gchar *title = g_strdup(_("NoName"));
835 gchar *key = g_strdup(COMMENT_KEY);
836 gboolean expanded = TRUE;
837
838 while (*attribute_names)
839 {
840 const gchar *option = *attribute_names++;
841 const gchar *value = *attribute_values++;
842
843 READ_CHAR_FULL("pane.title", title);
844 READ_CHAR_FULL("key", key);
845 READ_BOOL_FULL("pane.expanded", expanded);
846
847
848 DEBUG_1("unknown attribute %s = %s", option, value);
849 }
850
851 return bar_pane_keywords_new(title, key, expanded);
852 }
853
810 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ 854 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */