Revision: 658 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=658&view=rev Author: frlan Date: 2009-05-22 20:02:27 +0000 (Fri, 22 May 2009)
Log Message: ----------- GeanyLaTeX: Added configuration dialog.
Modified Paths: -------------- trunk/geanylatex/ChangeLog trunk/geanylatex/src/geanylatex.c trunk/geanylatex/src/geanylatex.h
Modified: trunk/geanylatex/ChangeLog =================================================================== --- trunk/geanylatex/ChangeLog 2009-05-22 20:01:53 UTC (rev 657) +++ trunk/geanylatex/ChangeLog 2009-05-22 20:02:27 UTC (rev 658) @@ -1,3 +1,8 @@ +2009-05-21 Frank Lanitz frank@Kafka + + * Added configuration dialog. + + 2009-05-19 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
* Make toolbar document sensitive.
Modified: trunk/geanylatex/src/geanylatex.c =================================================================== --- trunk/geanylatex/src/geanylatex.c 2009-05-22 20:01:53 UTC (rev 657) +++ trunk/geanylatex/src/geanylatex.c 2009-05-22 20:02:27 UTC (rev 658) @@ -51,6 +51,10 @@ static GtkWidget *menu_latex_replace_selection = NULL; static GtkWidget *menu_latex_replace_toggle = NULL;
+/* Options for plugin */ +gboolean glatex_set_koma_active = FALSE; +gboolean glatex_set_toolbar_active = FALSE; + /* Function will be deactivated, when only loaded */ static gboolean toggle_active = FALSE;
@@ -61,6 +65,9 @@ static GtkWidget *glatex_toolbar = NULL; static GtkWidget *box = NULL;
+/* Configuration file */ +static gchar *config_file = NULL; + /* Doing some basic keybinding stuff */ enum { @@ -110,6 +117,98 @@ "</toolbar>" "</ui>";
+static struct +{ + GtkWidget *koma_active; + GtkWidget *toolbar_active; +} +config_widgets; + + +GtkWidget * +plugin_configure(GtkDialog * dialog) +{ + GtkWidget *vbox; + GtkTooltips *tooltip = NULL; + + tooltip = gtk_tooltips_new(); + + vbox = gtk_vbox_new(FALSE, 6); + + config_widgets.koma_active = gtk_check_button_new_with_label( + _("Use KOMA script by default")); + config_widgets.toolbar_active = gtk_check_button_new_with_label( + _("Show extra plugin toolbar")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_widgets.koma_active), + glatex_set_koma_active); + gtk_box_pack_start(GTK_BOX(vbox), config_widgets.koma_active, FALSE, FALSE, 2); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(config_widgets.toolbar_active), + glatex_set_toolbar_active); + gtk_box_pack_start(GTK_BOX(vbox), config_widgets.toolbar_active, FALSE, FALSE, 2); + + gtk_widget_show_all(vbox); + g_signal_connect(dialog, "response", G_CALLBACK(on_configure_response), NULL); + return vbox; +} + +static void +on_configure_response(G_GNUC_UNUSED GtkDialog *dialog, gint response, + G_GNUC_UNUSED gpointer user_data) +{ + if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY) + { + GKeyFile *config = g_key_file_new(); + gchar *data; + gchar *config_dir = g_path_get_dirname(config_file); + + config_file = g_strconcat(geany->app->configdir, + G_DIR_SEPARATOR_S, "plugins", G_DIR_SEPARATOR_S, + "geanyLaTeX", G_DIR_SEPARATOR_S, "general.conf", NULL); + glatex_set_koma_active = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_widgets.koma_active)); + glatex_set_toolbar_active = + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(config_widgets.toolbar_active)); + + /* writing stuff to file */ + g_key_file_load_from_file(config, config_file, G_KEY_FILE_NONE, NULL); + + g_key_file_set_boolean(config, "general", "glatex_set_koma_active", + glatex_set_koma_active); + g_key_file_set_boolean(config, "general", "glatex_set_toolbar_active", + glatex_set_toolbar_active); + + if (!g_file_test(config_dir, G_FILE_TEST_IS_DIR) + && utils_mkdir(config_dir, TRUE) != 0) + { + dialogs_show_msgbox(GTK_MESSAGE_ERROR, + _("Plugin configuration directory could not be created.")); + } + else + { + // write config to file + data = g_key_file_to_data(config, NULL, NULL); + utils_write_file(config_file, data); + g_free(data); + } + + g_free(config_dir); + g_key_file_free(config); + + /* Apply changes to Geany */ + /* Add toolbar if requested */ + if (glatex_set_toolbar_active == TRUE && glatex_toolbar == NULL) + { + init_toolbar(); + } + /* Destroy toolbar if there is any in case of its not needed anymore */ + else if (glatex_set_toolbar_active == FALSE && glatex_toolbar != NULL) + { + gtk_widget_destroy(glatex_toolbar); + glatex_toolbar = NULL; + } + } +} + /* Functions to toggle the status of plugin */ void glatex_set_latextoggle_status(gboolean new_status) { @@ -607,7 +706,7 @@ GtkWidget *papersize_combobox = NULL; GtkWidget *label_papersize = NULL; GtkWidget *checkbox_draft = NULL; - gboolean KOMA_active = TRUE; + gboolean KOMA_active; gboolean draft_active = FALSE;
GtkTooltips *tooltip = gtk_tooltips_new(); @@ -745,7 +844,7 @@ "Keep in mind: To compile your document these classes" "have to be installed before."), NULL); gtk_button_set_focus_on_click(GTK_BUTTON(checkbox_KOMA), FALSE); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_KOMA), KOMA_active); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbox_KOMA), glatex_set_koma_active); gtk_box_pack_start(GTK_BOX(vbox), checkbox_KOMA, FALSE, FALSE, 5);
checkbox_draft = gtk_check_button_new_with_label(_("Use draft mode")); @@ -1039,11 +1138,46 @@ { GtkTooltips *tooltips = NULL; GtkWidget *tmp = NULL; + GKeyFile *config = g_key_file_new(); + GError *error = NULL; + g_key_file_load_from_file(config, config_file, + G_KEY_FILE_NONE, NULL);
+ glatex_set_koma_active = g_key_file_get_boolean(config, "general", + "glatex_set_koma_active", &error); + if (error != NULL) + { + // Set default value + glatex_set_koma_active = FALSE; + g_error_free(error); + error = NULL; + } + + glatex_set_toolbar_active = g_key_file_get_boolean(config, "general", + "glatex_set_toolbar_active", &error); + if (error != NULL) + { + // Set default value + glatex_set_toolbar_active = FALSE; + g_error_free(error); + error = NULL; + } + int i;
main_locale_init(LOCALEDIR, GETTEXT_PACKAGE);
+ /* loading configurations from file ...*/ + config_file = g_strconcat(geany->app->configdir, G_DIR_SEPARATOR_S, + "plugins", G_DIR_SEPARATOR_S, + "geanyLaTeX", G_DIR_SEPARATOR_S, "general.conf", NULL); + + /* ... and Initialising options from config file */ + g_key_file_load_from_file(config, config_file, G_KEY_FILE_NONE, NULL); + + g_key_file_free(config); + + glatex_init_encodings_latex();
tooltips = gtk_tooltips_new(); @@ -1054,7 +1188,6 @@ menu_latex_menu = gtk_menu_new(); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_latex), menu_latex_menu);
- menu_latex_wizzard = ui_image_menu_item_new(GTK_STOCK_NEW, _("LaTeX-_Wizard")); gtk_container_add(GTK_CONTAINER(menu_latex_menu), menu_latex_wizzard); gtk_tooltips_set_tip(tooltips, menu_latex_wizzard, @@ -1159,7 +1292,10 @@ G_CALLBACK(glatex_toggle_status), NULL);
init_keybindings(); - init_toolbar(); + if (glatex_set_toolbar_active == TRUE) + { + init_toolbar(); + }
ui_add_document_sensitive(menu_latex_menu_special_char); @@ -1179,5 +1315,10 @@ { gtk_widget_destroy(main_menu_item); if (glatex_toolbar != NULL) + { gtk_widget_destroy(glatex_toolbar); + /* Useless in most cases. Just to be sure */ + glatex_toolbar = NULL; + } + g_free(config_file); }
Modified: trunk/geanylatex/src/geanylatex.h =================================================================== --- trunk/geanylatex/src/geanylatex.h 2009-05-22 20:01:53 UTC (rev 657) +++ trunk/geanylatex/src/geanylatex.h 2009-05-22 20:02:27 UTC (rev 658) @@ -121,4 +121,7 @@ void glatex_insert_ref_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata); void glatex_replace_special_character(); +static void on_configure_response(G_GNUC_UNUSED GtkDialog *dialog, gint response, + G_GNUC_UNUSED gpointer user_data); +static void init_toolbar(); #endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.