|
From: CORE C. L. <cor...@so...> - 2000-12-19 16:24:11
|
Core CVS committal
Author : smugg
Project : core
Module : src
Modified Files:
callbacks.c core.h main.c menus.c menus.h panes.c prefs.c
prefs.h
Log Message:
rewrote the config parser to use GHashTables, and fixed everything, somehow core segfaults in create_main_menu, its hard to trace whats causing the segfault since it leaves no traces in the stack
===================================================================
RCS file: /cvsroot/corem/core/src/callbacks.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- callbacks.c 2000/12/15 22:27:17 1.35
+++ callbacks.c 2000/12/19 16:24:10 1.36
@@ -14,7 +14,6 @@
extern GtkWidget *mail_ctree;
extern GtkWidget *account_clist;
extern GtkWidget *main_win;
-extern ConfigData config;
extern gchar *title;
extern gchar *theme;
@@ -307,15 +306,13 @@
void switch_theme(gchar * theme)
{
- if (!theme || !config.theme)
+ if (!theme || !rc_get_value("theme"))
return;
- if (strcmp(theme, config.theme) == 0)
+ if (strcmp(theme, (char *) rc_get_value("theme")) == 0)
return;
- if (config.theme)
- g_free(config.theme);
- config.theme = g_strdup(theme);
+ rc_set_value("theme", theme);
set_theme_dir();
gtk_widget_destroy(toolbar);
create_main_toolbar();
@@ -493,35 +490,35 @@
text[col] = g_strdup("");
col++;
- if (config.ml_server == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_server")) == 0) {
text[col] = header_get_value(head, "Server:");
if (!text[col])
text[col] = g_strdup("");
col++;
}
- if (config.ml_priority == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_priority")) == 0) {
text[col] = header_get_value(head, "Priority:");
if (!text[col])
text[col] = g_strdup("");
col++;
}
- if (config.ml_attachment == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_attachment")) == 0) {
text[col] = header_get_value(head, "Attachment:");
if (!text[col])
text[col] = g_strdup("");
col++;
}
- if (config.ml_score == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_score")) == 0) {
text[col] = header_get_value(head, "Score:");
if (!text[col])
text[col] = g_strdup("");
col++;
}
- if (config.ml_read == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_read")) == 0) {
text[col] = g_strdup("");
}
@@ -543,7 +540,7 @@
NULL, text, 0, NULL, NULL, NULL,
NULL, FALSE, TRUE);
- if (config.ml_read == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_read")) == 0) {
char *xpm_name;
text[col] = header_get_value(head, "Status:");
@@ -569,7 +566,7 @@
gdk_bitmap_unref(bitmap);
gdk_pixmap_unref(pixmap);
- font = gdk_font_load(config.new_font);
+ font = gdk_font_load((char *) rc_get_value("new_font"));
style =
gtk_style_copy(gtk_widget_get_style
(mail_ctree));
===================================================================
RCS file: /cvsroot/corem/core/src/core.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- core.h 2000/11/26 11:39:17 1.10
+++ core.h 2000/12/19 16:24:10 1.11
@@ -5,7 +5,7 @@
#include <sys/stat.h>
#include <sys/types.h>
-typedef struct {
+/*typedef struct {
gint xsize;
gint ysize;
gboolean tb_show;
@@ -23,7 +23,7 @@
gboolean ml_server;
gboolean ml_linestyle;
gboolean fl_linestyle;
-} ConfigData;
+} ConfigData;*/
#define RED "[1;31m"
#define GREEN "[1;32m"
===================================================================
RCS file: /cvsroot/corem/core/src/main.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- main.c 2000/12/15 22:27:17 1.17
+++ main.c 2000/12/19 16:24:10 1.18
@@ -7,9 +7,10 @@
#include <sys/types.h>
#define PREFIX "/usr"
+void core_init();
+
gchar *theme, *title;
GtkWidget *message_pane;
-ConfigData config;
GtkWidget *main_win;
GtkWidget *mhandle;
GtkWidget *thandle;
@@ -22,37 +23,14 @@
int main(int argc, char **argv)
{
- gchar *dir;
- /* Create $HOME/.core directory */
- dir = g_strconcat(getenv("HOME"), "/.core", NULL);
- if (dir) {
- mkdir(dir, 0700);
- g_free(dir);
- }
-
- /* Create $HOME/.core/accounts directory */
- dir = g_strconcat(getenv("HOME"), "/.core/accounts", NULL);
- if (dir) {
- mkdir(dir, 0700);
- g_free(dir);
- }
-
- /* Create $HOME/.core/themes directory */
- dir = g_strconcat(getenv("HOME"), "/.core/themes", NULL);
- if (dir) {
- mkdir(dir, 0700);
- g_free(dir);
- }
-
/* Set locale */
gtk_set_locale();
- /* Init */
+ /* Init GTK+ */
gtk_init(&argc, &argv);
-
- /* Create main window */
- create_core_main_window();
+ /* Init Core */
+ core_init();
/* Here core sleeps until the core_main_quit is called */
gtk_main();
@@ -61,60 +39,91 @@
}
+void core_init()
+{
+ gchar *dir;
+ /* Create $HOME/.core directory */
+ dir = g_strconcat(getenv("HOME"), "/.core", NULL);
+ if (dir) {
+ mkdir(dir, 0700);
+ g_free(dir);
+ }
+
+ /* Create $HOME/.core/accounts directory */
+ dir = g_strconcat(getenv("HOME"), "/.core/accounts", NULL);
+ if (dir) {
+ mkdir(dir, 0700);
+ g_free(dir);
+ }
+
+ /* Create $HOME/.core/themes directory */
+ dir = g_strconcat(getenv("HOME"), "/.core/themes", NULL);
+ if (dir) {
+ mkdir(dir, 0700);
+ g_free(dir);
+ }
+
+ rc_set_defaults();
+ /* Create main window */
+ create_core_main_window();
+
+ return;
+}
+
+
/* The main window callback */
void create_core_main_window(void)
{
GtkWidget *main_vbox;
GtkWidget *main_menu;
GtkWidget *pane;
-
- bzero(&config, sizeof(ConfigData));
- config_read();
-
+ gint i = 0;
+g_print("%d", i); i++;
set_theme_dir();
-
+g_print("%d", i); i++;
title = g_strdup_printf("Core %s", CORE_VERSION);
main_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_usize(GTK_WIDGET(main_win), config.xsize,
- config.ysize);
+ gtk_widget_set_usize(GTK_WIDGET(main_win), 800,
+ 600);
gtk_window_set_title(GTK_WINDOW(main_win), title);
gtk_signal_connect(GTK_OBJECT(main_win), "delete_event",
core_main_quit, NULL);
gtk_signal_connect(GTK_OBJECT(main_win), "destroy",
core_main_quit, NULL);
gtk_widget_realize(main_win);
-
+g_print("%d", i); i++;
main_vbox = gtk_vbox_new(FALSE, 0);
gtk_container_set_border_width(GTK_CONTAINER(main_vbox), 0);
gtk_container_add(GTK_CONTAINER(main_win), main_vbox);
-
+g_print("%d", i); i++;
mhandle = gtk_handle_box_new();
gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(mhandle),
GTK_SHADOW_NONE);
-
+g_print("%d", i); i++;
gtk_handle_box_set_handle_position(GTK_HANDLE_BOX(mhandle),
GTK_POS_LEFT);
gtk_handle_box_set_snap_edge(GTK_HANDLE_BOX(mhandle),
GTK_POS_LEFT);
gtk_box_pack_start(GTK_BOX(main_vbox), mhandle, FALSE, FALSE, 0);
-
+g_print("%d", i); i++;
thandle = gtk_handle_box_new();
create_main_toolbar();
-
+g_print("%d", i); i++;
hpane = gtk_hpaned_new();
-
+g_print("%d", i); i++;
{
pane = core_create_folder_pane();
gtk_paned_pack1(GTK_PANED(hpane), pane, TRUE, TRUE);
-
+g_print("%d", i); i++;
pane = core_create_mlist_pane();
gtk_paned_pack2(GTK_PANED(hpane), pane, TRUE, TRUE);
}
-
+g_print("%d", i); i++; /***************9***************/
main_menu = create_main_menu();
+g_print("%d", i); i++;
gtk_container_set_border_width(GTK_CONTAINER(main_menu), 0);
gtk_container_add(GTK_CONTAINER(mhandle), main_menu);
-
+g_print("%d", i); i++;
gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(thandle),
GTK_SHADOW_NONE);
gtk_handle_box_set_handle_position(GTK_HANDLE_BOX(thandle),
@@ -122,22 +131,22 @@
gtk_handle_box_set_snap_edge(GTK_HANDLE_BOX(thandle),
GTK_POS_LEFT);
gtk_box_pack_start(GTK_BOX(main_vbox), thandle, FALSE, FALSE, 0);
-
+g_print("%d", i); i++;
gtk_box_pack_start(GTK_BOX(main_vbox), hpane, TRUE, TRUE, 0);
-
+g_print("%d", i); i++;
gtk_widget_show_all(main_win);
-
- if (config.tb_show == 0) {
+g_print("%d", i); i++;
+ if (GPOINTER_TO_INT(rc_get_value("tb_show")) == 0) {
gtk_widget_hide(thandle);
}
-
- if (config.tb_buttons == 0) {
+g_print("%d", i); i++;
+ if (GPOINTER_TO_INT(rc_get_value("tb_buttons")) == 0) {
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_TEXT);
gtk_widget_queue_resize(GTK_WIDGET(thandle));
}
-
- if (config.tb_buttons == 1) {
+g_print("%d", i); i++;
+ if (GPOINTER_TO_INT(rc_get_value("tb_buttons")) == 1) {
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_ICONS);
gtk_widget_queue_resize(GTK_WIDGET(thandle));
@@ -150,26 +159,26 @@
gchar *tmp;
tmp =
- g_strconcat(getenv("HOME"), "/.core/themes/", config.theme,
+ g_strconcat(getenv("HOME"), "/.core/themes/", rc_get_value("theme"),
"/", NULL);
dir = opendir(tmp);
if (dir != NULL) {
theme =
g_strconcat(getenv("HOME"), "/.core/themes/",
- config.theme, "/", NULL);
+ rc_get_value("theme"), "/", NULL);
return TRUE;
}
g_free(tmp);
- tmp = g_strconcat(CORE_SHARE, "/themes/", config.theme, NULL);
+ tmp = g_strconcat(CORE_SHARE, "/themes/", rc_get_value("theme"), NULL);
dir = opendir(tmp);
g_free(tmp);
if (dir != NULL) {
theme =
- g_strconcat(CORE_SHARE, "/themes/", config.theme, "/",
+ g_strconcat(CORE_SHARE, "/themes/", rc_get_value("theme"), "/",
NULL);
return TRUE;
}
@@ -276,21 +285,21 @@
void toolbar_change_layout(gint type)
{
if (type == 0) {
- config.tb_buttons = 0;
+ rc_set_value("tb_buttons", "0");
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_TEXT);
gtk_widget_queue_resize(GTK_WIDGET(thandle));
}
if (type == 1) {
- config.tb_buttons = 1;
+ rc_set_value("tb_buttons", "1");
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_ICONS);
gtk_widget_queue_resize(GTK_WIDGET(thandle));
}
if (type == 2) {
- config.tb_buttons = 2;
+ rc_set_value("tb_buttons", "2");
gtk_toolbar_set_style(GTK_TOOLBAR(toolbar),
GTK_TOOLBAR_BOTH);
gtk_widget_queue_resize(GTK_WIDGET(thandle));
@@ -299,13 +308,13 @@
void toolbar_hide_show()
{
- if (config.tb_show == 1) {
- config.tb_show = 0;
+ if (GPOINTER_TO_INT(rc_get_value("tb_show")) == 1) {
+ rc_set_value("tb_show", "0");
gtk_widget_hide(thandle);
return;
- } else if (config.tb_show == 0) {
+ } else if (GPOINTER_TO_INT(rc_get_value("tb_show")) == 0) {
gtk_widget_show(thandle);
- config.tb_show = 1;
+ rc_set_value("tb_show", "1");
return;
}
return;
@@ -315,6 +324,6 @@
void core_main_quit(void)
{
- config_write();
+ rc_write();
gtk_main_quit();
}
===================================================================
RCS file: /cvsroot/corem/core/src/menus.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- menus.c 2000/12/15 22:27:17 1.12
+++ menus.c 2000/12/19 16:24:10 1.13
@@ -5,15 +5,14 @@
#include "panes.h"
#include "prefs.h"
-extern ConfigData config;
extern GtkWidget *toolbar;
static GtkItemFactoryEntry mail_menu_items[] = {
{"/File", NULL, NULL, 0, "<Branch>"},
{"/File/Close", NULL, NULL, 0, NULL},
};
+static void create_themes_menu(GtkWidget * menu);
-
void core_create_mail_menu(GtkWidget * window, GtkWidget ** menubar)
{
GtkItemFactory *item_factory;
@@ -111,11 +110,11 @@
show = gtk_check_menu_item_new_with_label("Show");
gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(show),
TRUE);
- if (config.tb_show == 0) {
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("tb_show")) == 0) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show),
FALSE);
}
- if (config.tb_show == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("tb_show")) == 0) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show),
TRUE);
}
@@ -151,17 +150,17 @@
GINT_TO_POINTER(2));
gtk_menu_append(GTK_MENU(toolbarmenu), both);
- if (config.tb_buttons == 0) {
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("tb_buttons")) == 0) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(text),
TRUE);
}
- if (config.tb_buttons == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("tb_buttons")) == 0) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(icons),
TRUE);
}
- if (config.tb_buttons == 2) {
+ if (g_strcasecmp(g_strdup("2"), (char *) rc_get_value("tb_buttons")) == 0) {
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(both),
TRUE);
}
@@ -220,19 +219,19 @@
GINT_TO_POINTER(3));
gtk_menu_append(GTK_MENU(mline_stylemenu), mline_tabbed);
- if (config.ml_linestyle == 0)
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mline_none), TRUE);
- if (config.ml_linestyle == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mline_solid), TRUE);
- if (config.ml_linestyle == 2)
+ if (g_strcasecmp(g_strdup("2"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mline_dotted), TRUE);
- if (config.ml_linestyle == 3)
+ if (g_strcasecmp(g_strdup("3"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mline_tabbed), TRUE);
@@ -240,14 +239,14 @@
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mpriority),
FALSE);
gtk_menu_append(GTK_MENU(message_listmenu), mpriority);
- if (config.ml_priority == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_priority")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mpriority), TRUE);
mread = gtk_check_menu_item_new_with_label("Show Read");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mread), FALSE);
gtk_menu_append(GTK_MENU(message_listmenu), mread);
- if (config.ml_read == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mread),
TRUE);
@@ -256,14 +255,14 @@
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mattachment),
FALSE);
gtk_menu_append(GTK_MENU(message_listmenu), mattachment);
- if (config.ml_attachment == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_attachment")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mattachment), TRUE);
mscore = gtk_check_menu_item_new_with_label("Show Score");
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mscore), FALSE);
gtk_menu_append(GTK_MENU(message_listmenu), mscore);
- if (config.ml_score == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_score")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mscore),
TRUE);
@@ -271,7 +270,7 @@
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mserver),
FALSE);
gtk_menu_append(GTK_MENU(message_listmenu), mserver);
- if (config.ml_server == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_server")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(mserver), TRUE);
@@ -329,19 +328,19 @@
GINT_TO_POINTER(3));
gtk_menu_append(GTK_MENU(fline_stylemenu), fline_tabbed);
- if (config.fl_linestyle == 0)
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("fl_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(fline_none), TRUE);
- if (config.fl_linestyle == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("fl_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(fline_solid), TRUE);
- if (config.fl_linestyle == 2)
+ if (g_strcasecmp(g_strdup("2"), (char *) rc_get_value("fl_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(fline_dotted), TRUE);
- if (config.fl_linestyle == 3)
+ if (g_strcasecmp(g_strdup("3"), (char *) rc_get_value("fl_linestyle")) == 0)
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM
(fline_tabbed), TRUE);
@@ -359,11 +358,10 @@
GTK_SIGNAL_FUNC(create_core_about_window),
NULL);
gtk_menu_append(GTK_MENU(helpmenu), about);
-
return (menu);
}
-void create_themes_menu(GtkWidget * menu)
+static void create_themes_menu(GtkWidget * menu)
{
gint i;
gchar *dirs[] =
@@ -416,7 +414,6 @@
g_free(temp);
icon = gtk_pixmap_new(pixmap, bitmap);
-
hbox = gtk_hbox_new(0, 8);
gtk_box_pack_start(GTK_BOX(hbox), icon,
FALSE, FALSE, 0);
===================================================================
RCS file: /cvsroot/corem/core/src/menus.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- menus.h 2000/11/22 23:45:00 1.2
+++ menus.h 2000/12/19 16:24:10 1.3
@@ -1,2 +1 @@
GtkWidget *create_main_menu();
-void create_themes_menu(GtkWidget * menu);
===================================================================
RCS file: /cvsroot/corem/core/src/panes.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- panes.c 2000/12/15 22:27:17 1.20
+++ panes.c 2000/12/19 16:24:10 1.21
@@ -3,7 +3,6 @@
#include "panes.h"
#include "callbacks.h"
-extern ConfigData config;
GtkWidget *mail_ctree;
GtkWidget *folder_ctree;
GtkWidget *account_clist;
@@ -44,7 +43,7 @@
exit(-1);
}
- font = gdk_font_load(config.default_font);
+ font = gdk_font_load((char *) rc_get_value("default_font"));
style = gtk_style_copy(gtk_widget_get_style(hpane));
gdk_font_unref(style->font);
style->font = font;
@@ -58,7 +57,6 @@
g_strconcat(theme,
"folder_closed_normal.xpm",
NULL));
-
colormap = gtk_widget_get_colormap(folder_ctree);
opixmap =
gdk_pixmap_colormap_create_from_xpm(NULL, colormap,
@@ -100,16 +98,16 @@
gtk_widget_set_usize(scroll, 12, 50);
gtk_widget_show_all(folder_ctree);
- if (config.ml_linestyle == 0)
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_NONE);
- if (config.ml_linestyle == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_SOLID);
- if (config.ml_linestyle == 2)
+ if (g_strcasecmp(g_strdup("2"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_DOTTED);
- if (config.ml_linestyle == 3)
+ if (g_strcasecmp(g_strdup("3"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_TABBED);
@@ -147,31 +145,31 @@
idate = col;
col++;
- if (config.ml_server == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_server")) == 0) {
field_titles[col] = "Server";
iserver = col;
col++;
}
- if (config.ml_priority == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_priority")) == 0) {
field_titles[col] = "Priority";
ipriority = col;
col++;
}
- if (config.ml_attachment == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_attachment")) == 0) {
field_titles[col] = "";
iattachment = col;
col++;
}
- if (config.ml_score == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_score")) == 0) {
field_titles[col] = "Score";
iscore = col;
col++;
}
- if (config.ml_read == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_read")) == 0) {
field_titles[col] = "";
iread = col;
col++;
@@ -182,7 +180,7 @@
gtk_signal_connect(GTK_OBJECT(mail_ctree), "tree_select_row",
GTK_SIGNAL_FUNC(mail_selected), NULL);
- font = gdk_font_load(config.default_font);
+ font = gdk_font_load((char *) rc_get_value("default_font"));
style = gtk_style_copy(gtk_widget_get_style(hpane));
gdk_font_unref(style->font);
style->font = font;
@@ -197,17 +195,17 @@
gtk_clist_set_column_width(GTK_CLIST(mail_ctree), idate, 150);
- if (config.ml_server == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_server")) == 0) {
gtk_clist_set_column_width(GTK_CLIST(mail_ctree), iserver,
40);
}
- if (config.ml_priority) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_priority")) == 0) {
gtk_clist_set_column_width(GTK_CLIST(mail_ctree),
ipriority, 40);
}
- if (config.ml_read == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_read")) == 0) {
colormap = gtk_widget_get_colormap(mail_ctree);
pixmap =
gdk_pixmap_colormap_create_from_xpm(NULL, colormap,
@@ -227,7 +225,7 @@
}
- if (config.ml_attachment == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_attachment")) == 0) {
colormap = gtk_widget_get_colormap(mail_ctree);
pixmap =
gdk_pixmap_colormap_create_from_xpm(NULL, colormap,
@@ -247,7 +245,7 @@
}
- if (config.ml_score == 1) {
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_score")) == 0) {
gtk_clist_set_column_width(GTK_CLIST(mail_ctree), iscore,
30);
gtk_clist_set_column_auto_resize(GTK_CLIST(mail_ctree),
@@ -274,16 +272,16 @@
GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(scroll), mail_ctree);
gtk_widget_show_all(mail_ctree);
- if (config.ml_linestyle == 0)
+ if (g_strcasecmp(g_strdup("0"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_NONE);
- if (config.ml_linestyle == 1)
+ if (g_strcasecmp(g_strdup("1"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_SOLID);
- if (config.ml_linestyle == 2)
+ if (g_strcasecmp(g_strdup("2"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_DOTTED);
- if (config.ml_linestyle == 3)
+ if (g_strcasecmp(g_strdup("3"), (char *) rc_get_value("ml_linestyle")) == 0)
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_TABBED);
return (scroll);
@@ -619,25 +617,25 @@
void folder_ctree_change_line_style(gint type)
{
if (type == 0) {
- config.fl_linestyle = 0;
+ rc_set_value("fl_linestyle", "0");
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_NONE);
}
if (type == 1) {
- config.fl_linestyle = 1;
+ rc_set_value("fl_linestyle", "1");
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_SOLID);
}
if (type == 2) {
- config.fl_linestyle = 2;
+ rc_set_value("fl_linestyle", "2");
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_DOTTED);
}
if (type == 3) {
- config.fl_linestyle = 3;
+ rc_set_value("fl_linestyle", "3");
gtk_ctree_set_line_style(GTK_CTREE(folder_ctree),
GTK_CTREE_LINES_TABBED);
}
@@ -647,25 +645,25 @@
void mail_ctree_change_line_style(gint type)
{
if (type == 0) {
- config.ml_linestyle = 0;
+ rc_set_value("ml_linestyle", "0");
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_NONE);
}
if (type == 1) {
- config.ml_linestyle = 1;
+ rc_set_value("ml_linestyle", "1");
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_SOLID);
}
if (type == 2) {
- config.ml_linestyle = 2;
+ rc_set_value("ml_linestyle", "2");
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_DOTTED);
}
if (type == 3) {
- config.ml_linestyle = 3;
+ rc_set_value("ml_linestyle", "3");
gtk_ctree_set_line_style(GTK_CTREE(mail_ctree),
GTK_CTREE_LINES_TABBED);
}
===================================================================
RCS file: /cvsroot/corem/core/src/prefs.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- prefs.c 2000/12/15 22:27:17 1.11
+++ prefs.c 2000/12/19 16:24:10 1.12
@@ -1,8 +1,12 @@
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
#include "core.h"
#include "util.h"
#include "prefs.h"
-extern ConfigData config;
+ConfigData *config;
extern GtkWidget *folder_ctree;
extern GtkWidget *mail_ctree;
extern GtkWidget *main_win;
@@ -146,7 +150,7 @@
gtk_widget_set_usize(GTK_WIDGET(def_font), 320, 20);
gtk_entry_set_editable(GTK_ENTRY(def_font), TRUE);
gtk_entry_set_text(GTK_ENTRY(def_font),
- config.default_font);
+ (char *) rc_get_value("default_font"));
gtk_table_attach(GTK_TABLE(table), def_font, 0, 1, 1, 2,
GTK_EXPAND | GTK_FILL, 0, 1, 1);
@@ -167,7 +171,7 @@
new_font = gtk_entry_new();
gtk_widget_set_usize(GTK_WIDGET(new_font), 320, 20);
gtk_entry_set_editable(GTK_ENTRY(new_font), TRUE);
- gtk_entry_set_text(GTK_ENTRY(new_font), config.new_font);
+ gtk_entry_set_text(GTK_ENTRY(new_font), (char *) rc_get_value("new_font"));
gtk_table_attach(GTK_TABLE(table), new_font, 0, 1, 3, 4,
GTK_EXPAND | GTK_FILL, 0, 1, 1);
@@ -253,10 +257,8 @@
static void ok_clicked()
{
- config.default_font =
- g_strdup(gtk_entry_get_text(GTK_ENTRY(def_font)));
- config.new_font =
- g_strdup(gtk_entry_get_text(GTK_ENTRY(new_font)));
+ rc_set_value("default_font", gtk_entry_get_text(GTK_ENTRY(def_font)));
+ rc_set_value("new_font", gtk_entry_get_text(GTK_ENTRY(new_font)));
apply_clicked();
gtk_widget_destroy(pref_win);
}
@@ -326,7 +328,7 @@
}
-void config_read()
+/*void config_read()
{
FILE *config_file;
gchar *home;
@@ -338,7 +340,7 @@
config.xsize = 800;
config.ysize = 600;
config.tb_show = 1;
- config.tb_buttons = 2; /* 0 = TEXT 1 = ICONS 2 = BOTH */
+ config.tb_buttons = 2; 0 = TEXT 1 = ICONS 2 = BOTH
config.default_font =
g_strdup
("-schumacher-clean-medium-r-normal-*-*-120-*-*-c-*-iso8859-1");
@@ -447,4 +449,142 @@
fprintf(config_file, "theme=%s\n", config.theme);
g_free(rc);
return;
+}
+*/
+
+int rc_remove_key(char * key)
+{
+ char *tmp;
+
+ tmp = g_hash_table_lookup(config, key);
+ if (key && strlen(key)) {
+ if (tmp) {
+ g_hash_table_freeze(config);
+
+ g_hash_table_remove(config, key);
+
+ g_hash_table_thaw(config);
+ } else
+ return FALSE;
+ } else
+ return FALSE;
+
+ return TRUE;
+}
+
+int rc_set_value(char * key, char * value)
+{
+ char *tmp;
+
+ if (key && strlen(key)) {
+ if (value && strlen(value)) {
+ tmp = g_hash_table_lookup(config, key);
+ if (tmp) {
+ rc_remove_key(key);
+ g_free(tmp);
+ } else {
+ g_hash_table_freeze(config);
+
+ g_hash_table_insert(config, key, value);
+
+ g_hash_table_thaw(config);
+ }
+ } else
+ return FALSE;
+ } else
+ return FALSE;
+
+ return TRUE;
+}
+
+char *rc_get_value(char * key)
+{
+ char *tmp;
+
+ if (key && strlen(key)) {
+ tmp = g_hash_table_lookup(config, g_strdup(key));
+ if (tmp) {
+ return g_strdup(tmp);
+ g_free(tmp);
+ } else {
+ fprintf(stderr, "%sERROR:%s Key %s not found", RED, GREEN, g_strdup(key));
+ return FALSE;
+ }
+ } else {
+ fprintf(stderr, "%sERROR:%s Key not provided in rc_get_value", RED, GREEN);
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+
+int rc_set_defaults()
+{
+ config = g_hash_table_new(g_str_hash, g_str_equal);
+ rc_set_value("xsize", "800");
+ rc_set_value("ysize", "600");
+ rc_set_value("tb_show", "1");
+ rc_set_value("tb_buttons", "2"); /*0 = TEXT 1 = ICONS 2 = BOTH*/
+ rc_set_value("default_font",
+ "-schumacher-clean-medium-r-normal-*-*-120-*-*-c-*-iso8859-1");
+ rc_set_value("new_font",
+ "-schumacher-clean-bold-r-normal-*-*-120-*-*-c-*-iso646.1991-irv");
+ rc_set_value("ml_priority", "0");
+ rc_set_value("ml_read", "1");
+ rc_set_value("ml_attachment", "1");
+ rc_set_value("ml_score", "0");
+ rc_set_value("ml_from", "1");
+ rc_set_value("ml_subject", "1");
+ rc_set_value("ml_date", "1");
+ rc_set_value("ml_server", "0");
+ rc_set_value("ml_linestyle", "2");
+ rc_set_value("fl_linestyle", "2");
+ rc_set_value("theme", "Default");
+ return TRUE;
+}
+
+
+int rc_parse_into_hash()
+{
+
+
+ return TRUE;
+}
+
+int rc_write()
+{
+ FILE *config_file;
+ gchar *rc;
+
+ rc = g_strconcat(getenv("HOME"), "/.corerc", NULL);
+ config_file = fopen(rc, "w");
+ if (config_file == NULL) {
+ fprintf(config_file,
+ "%sERROR: %sFailed to write to %s\n", RED,
+ GREEN, rc);
+ return FALSE;
+ }
+
+ fprintf(config_file,
+ "# ~/.corerc: Created by core, do not modify\n");
+ fprintf(config_file, "xsize=%s\n", (char *) rc_get_value("xsize"));
+ fprintf(config_file, "ysize=%s\n", (char *) rc_get_value("ysize"));
+ fprintf(config_file, "tb_show=%s\n", (char *) rc_get_value("tb_show"));
+ fprintf(config_file, "tb_buttons=%s\n", (char *) rc_get_value("tb_buttons"));
+ fprintf(config_file, "default_font=%s\n", (char *) rc_get_value("default_font"));
+ fprintf(config_file, "new_font=%s\n", (char *) rc_get_value("new_font"));
+ fprintf(config_file, "ml_priority=%s\n", (char *) rc_get_value("ml_priority"));
+ fprintf(config_file, "ml_read=%s\n", (char *) rc_get_value("ml_read"));
+ fprintf(config_file, "ml_attachment=%s\n", (char *) rc_get_value("ml_attachment"));
+ fprintf(config_file, "ml_score=%s\n", (char *) rc_get_value("ml_score"));
+ fprintf(config_file, "ml_from=%s\n", (char *) rc_get_value("ml_from"));
+ fprintf(config_file, "ml_subject=%s\n", (char *) rc_get_value("ml_subject"));
+ fprintf(config_file, "ml_date=%s\n", (char *) rc_get_value("ml_date"));
+ fprintf(config_file, "ml_server=%s\n", (char *) rc_get_value("ml_server"));
+ fprintf(config_file, "ml_linestyle=%s\n", (char *) rc_get_value("ml_linestyle"));
+ fprintf(config_file, "fl_linestyle=%s\n", (char *) rc_get_value("fl_linestyle"));
+ fprintf(config_file, "theme=%s\n", (char *) rc_get_value("theme"));
+ g_free(rc);
+ return TRUE;
}
===================================================================
RCS file: /cvsroot/corem/core/src/prefs.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -3 -r1.1.1.1 -r1.2
--- prefs.h 2000/11/14 19:23:25 1.1.1.1
+++ prefs.h 2000/12/19 16:24:10 1.2
@@ -2,3 +2,10 @@
void create_preferences_window_cb(gchar * wintitle);
void config_read();
void config_write();
+
+int rc_remove_key(char * key);
+int rc_set_value(char * key, char * value);
+char *rc_get_value(char * key);
+int rc_set_defaults();
+int rc_parse_into_hash();
+typedef GHashTable ConfigData;
|