[gtranslator] Rework the profile managing using the new GtrProfileManager.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtranslator] Rework the profile managing using the new GtrProfileManager.
- Date: Wed, 17 Feb 2010 17:34:54 +0000 (UTC)
commit 0687a12ba2339e1bb6513d7111a6bb2a35356acf
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Tue Feb 16 16:03:39 2010 +0100
Rework the profile managing using the new GtrProfileManager.
src/Makefile.am | 14 +-
src/dialogs/gtr-assistant.c | 17 +-
src/dialogs/gtr-header-dialog.c | 14 +-
src/dialogs/gtr-preferences-dialog.c | 656 ++++++++++++++++++----------------
src/dialogs/gtr-preferences-dialog.h | 43 +--
src/dialogs/gtr-profile-dialog.c | 563 ++++++-----------------------
src/dialogs/gtr-profile-dialog.h | 20 +-
src/gtr-actions-file.c | 44 ---
src/gtr-dirs.h | 4 +-
src/gtr-header.c | 29 +-
src/gtr-header.h | 4 +
src/gtr-profile-manager.c | 161 ++++++---
src/gtr-profile-manager.h | 10 +-
src/gtr-profile.c | 376 +++++++-------------
src/gtr-profile.h | 70 ++---
src/gtr-window.c | 10 +
src/main.c | 4 -
17 files changed, 790 insertions(+), 1249 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 1d57898..7d9440a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -122,7 +122,9 @@ libgtranslator_la_SOURCES = \
gtr-header.c \
gtr-statusbar.c \
gtr-context.c \
- $(INST_H_FILES)
+ gtr-profile-manager.h \
+ gtr-profile-manager.c \
+ $(INST_H_FILES)
libgtranslator_la_LIBADD = \
$(GTRANSLATOR_LIBS) \
@@ -130,16 +132,6 @@ libgtranslator_la_LIBADD = \
toolbareditor/libtoolbareditor.la \
plugin-system/libpluginsystem.la \
translation-memory/libtranslationmemory.la
-
-#gtranslator_auto_learn_SOURCES = \
-# auto-learn.c
-#
-#gtranslator_auto_translate_SOURCES = \
-# auto-translate.c
-#
-#gtranslator_export_learn_buffer_SOURCES = \
-# export-learn-buffer.c
-#
gtr-enum-types.h: gtr-enum-types.h.template $(INST_H_FILES) $(GLIB_MKENUMS)
$(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gtr-enum-types.h.template $(INST_H_FILES)) > $@
diff --git a/src/dialogs/gtr-assistant.c b/src/dialogs/gtr-assistant.c
index 66ad88e..8f9120a 100644
--- a/src/dialogs/gtr-assistant.c
+++ b/src/dialogs/gtr-assistant.c
@@ -28,6 +28,7 @@
#include "gtr-application.h"
#include "gtr-assistant.h"
#include "gtr-profile.h"
+#include "gtr-profile-manager.h"
#include "gtr-utils.h"
#include "gtr-window.h"
@@ -190,10 +191,11 @@ on_assistant_apply (GtkAssistant * assistant)
GtrAssistant *as = GTR_ASSISTANT (assistant);
const gchar *po_name;
GtrProfile *profile;
- GList *profiles_list;
gulong close_signal_id;
+ GtrProfileManager *prof_manager;
profile = gtr_profile_new ();
+ prof_manager = gtr_profile_manager_get_default ();
gtr_profile_set_name (profile,
gtk_entry_get_text (GTK_ENTRY
@@ -227,16 +229,13 @@ on_assistant_apply (GtkAssistant * assistant)
gtk_entry_get_text (GTK_ENTRY
(as->priv->trans_enc)));
- gtr_profile_set_plurals (profile,
- gtk_entry_get_text (GTK_ENTRY
- (as->priv->plural_form)));
-
- gtr_application_set_active_profile (GTR_APP, profile);
+ gtr_profile_set_plural_forms (profile,
+ gtk_entry_get_text (GTK_ENTRY (as->priv->plural_form)));
- profiles_list = gtr_application_get_profiles (GTR_APP);
+ /* Add profile to profile manager and save it */
+ gtr_profile_manager_add_profile (prof_manager, profile);
- gtr_application_set_profiles (GTR_APP,
- g_list_append (profiles_list, profile));
+ g_object_unref (prof_manager);
close_signal_id = g_signal_connect (as,
"close",
diff --git a/src/dialogs/gtr-header-dialog.c b/src/dialogs/gtr-header-dialog.c
index 8baf324..dedd404 100644
--- a/src/dialogs/gtr-header-dialog.c
+++ b/src/dialogs/gtr-header-dialog.c
@@ -287,17 +287,9 @@ gtr_header_dialog_init (GtrHeaderDialog * dlg)
gtk_container_set_border_width (GTK_CONTAINER (dlg->priv->notebook), 5);
- if (gtr_application_get_profiles (GTR_APP) == NULL)
- {
- gtk_widget_set_sensitive (dlg->priv->take_my_options, FALSE);
- }
- else
- {
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
- (dlg->priv->take_my_options),
- gtr_prefs_manager_get_use_profile_values
- ());
- }
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->take_my_options),
+ gtr_prefs_manager_get_use_profile_values ());
+
gtk_text_view_set_editable (GTK_TEXT_VIEW (dlg->priv->prj_comment), TRUE);
gtk_widget_set_sensitive (dlg->priv->pot_date, FALSE);
diff --git a/src/dialogs/gtr-preferences-dialog.c b/src/dialogs/gtr-preferences-dialog.c
index dedc08a..2e0feb8 100644
--- a/src/dialogs/gtr-preferences-dialog.c
+++ b/src/dialogs/gtr-preferences-dialog.c
@@ -30,6 +30,7 @@
#include "gtr-preferences-dialog.h"
#include "gtr-prefs-manager.h"
#include "gtr-profile.h"
+#include "gtr-profile-manager.h"
#include "gtr-utils.h"
#include "gtr-plugin-manager.h"
#include "gtr-profile-dialog.h"
@@ -45,84 +46,84 @@
#include <string.h>
#include <gtksourceview/gtksourcestyleschememanager.h>
-#define GTR_PREFERENCES_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
- (object), \
- GTR_TYPE_PREFERENCES_DIALOG, \
- GtrPreferencesDialogPrivate))
+#define GTR_PREFERENCES_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
+ (object), \
+ GTR_TYPE_PREFERENCES_DIALOG, \
+ GtrPreferencesDialogPrivate))
G_DEFINE_TYPE (GtrPreferencesDialog, gtr_preferences_dialog, GTK_TYPE_DIALOG)
- struct _GtrPreferencesDialogPrivate
- {
- GtkWidget *notebook;
-
- /* Files->General */
- GtkWidget *warn_if_contains_fuzzy_checkbutton;
- GtkWidget *delete_compiled_checkbutton;
-
- /* Files->Autosave */
- GtkWidget *autosave_checkbutton;
- GtkWidget *autosave_interval_spinbutton;
- GtkWidget *autosave_hbox;
- GtkWidget *create_backup_checkbutton;
-
- /* Editor->Text display */
- GtkWidget *highlight_syntax_checkbutton;
- GtkWidget *visible_whitespace_checkbutton;
- GtkWidget *use_custom_font_checkbutton;
- GtkWidget *editor_font_fontbutton;
- GtkWidget *editor_font_hbox;
-
- /* Editor->Contents */
- GtkWidget *unmark_fuzzy_when_changed_checkbutton;
- GtkWidget *spellcheck_checkbutton;
-
- /*Profiles */
- GtkWidget *profile_treeview;
- GtkWidget *add_button;
- GtkWidget *edit_button;
- GtkWidget *delete_button;
-
- /*Translation Memory */
- GtkWidget *directory_entry;
- GtkWidget *search_button;
- GtkWidget *add_database_button;
- GtkWidget *add_database_progressbar;
-
- GtkWidget *use_lang_profile_in_tm;
- GtkWidget *tm_lang_entry;
- GtkWidget *missing_words_spinbutton;
- GtkWidget *sentence_length_spinbutton;
-
- /*PO header->Personal information */
- GtkWidget *name_entry;
- GtkWidget *email_entry;
-
- /*PO header->Language settings */
- GtkWidget *language_comboentry;
- GtkWidget *langcode_comboentry;
- GtkWidget *charset_comboentry;
- GtkWidget *encoding_comboentry;
- GtkWidget *team_email_comboentry;
- GtkWidget *plurals_entry;
- GtkWidget *number_plurals_spinbutton;
-
- /*Inteface */
- GtkWidget *gdl_combobox;
- GtkWidget *scheme_color_combobox;
-
- /*Plugins */
- GtkWidget *plugins_box;
- };
-
- static void setup_profile_pages (GtrPreferencesDialog * dlg);
-
-GtkWidget * gtr_preferences_dialog_get_treeview (GtrPreferencesDialog * dlg)
-{
- g_return_val_if_fail (GTR_IS_PREFERENCES_DIALOG (dlg), NULL);
- return dlg->priv->profile_treeview;
-}
+struct _GtrPreferencesDialogPrivate
+{
+ GtkWidget *notebook;
+
+ /* Files->General */
+ GtkWidget *warn_if_contains_fuzzy_checkbutton;
+ GtkWidget *delete_compiled_checkbutton;
+
+ /* Files->Autosave */
+ GtkWidget *autosave_checkbutton;
+ GtkWidget *autosave_interval_spinbutton;
+ GtkWidget *autosave_hbox;
+ GtkWidget *create_backup_checkbutton;
+
+ /* Editor->Text display */
+ GtkWidget *highlight_syntax_checkbutton;
+ GtkWidget *visible_whitespace_checkbutton;
+ GtkWidget *use_custom_font_checkbutton;
+ GtkWidget *editor_font_fontbutton;
+ GtkWidget *editor_font_hbox;
+
+ /* Editor->Contents */
+ GtkWidget *unmark_fuzzy_when_changed_checkbutton;
+ GtkWidget *spellcheck_checkbutton;
+
+ /*Profiles */
+ GtkWidget *profile_treeview;
+ GtkWidget *add_button;
+ GtkWidget *edit_button;
+ GtkWidget *delete_button;
+
+ /*Translation Memory */
+ GtkWidget *directory_entry;
+ GtkWidget *search_button;
+ GtkWidget *add_database_button;
+ GtkWidget *add_database_progressbar;
+
+ GtkWidget *use_lang_profile_in_tm;
+ GtkWidget *tm_lang_entry;
+ GtkWidget *missing_words_spinbutton;
+ GtkWidget *sentence_length_spinbutton;
+
+ /*PO header->Personal information */
+ GtkWidget *name_entry;
+ GtkWidget *email_entry;
+
+ /*PO header->Language settings */
+ GtkWidget *language_comboentry;
+ GtkWidget *langcode_comboentry;
+ GtkWidget *charset_comboentry;
+ GtkWidget *encoding_comboentry;
+ GtkWidget *team_email_comboentry;
+ GtkWidget *plurals_entry;
+ GtkWidget *number_plurals_spinbutton;
+
+ /*Inteface */
+ GtkWidget *gdl_combobox;
+ GtkWidget *scheme_color_combobox;
+
+ /*Plugins */
+ GtkWidget *plugins_box;
+};
+
+enum
+{
+ PROFILE_NAME_COLUMN,
+ ACTIVE_PROFILE_COLUMN,
+ PROFILE_COLUMN,
+ PROFILE_N_COLUMNS
+};
/***************Files pages****************/
@@ -413,116 +414,302 @@ setup_editor_pages (GtrPreferencesDialog * dlg)
/***************Profile pages****************/
static void
-active_toggled_cb (GtkCellRendererToggle * cell_renderer,
- gchar * path_str, GtrPreferencesDialog * dlg)
+on_profile_dialog_response_cb (GtrProfileDialog *profile_dialog,
+ gint response_id,
+ GtrPreferencesDialog *dlg)
{
- GtkTreeIter iter;
- GtkTreePath *path;
+ GtrProfileManager *prof_manager;
GtkTreeModel *model;
- gboolean active;
- gchar *profile_row;
- GtrProfile *old_profile_active;
- GList *l = NULL, *profiles_list = NULL;
- gchar *filename;
- gchar *config_folder;
- GFile *file;
+ GtrProfile *profile;
+ GtrProfile *active_profile;
+ GtkTreeIter iter;
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+ g_return_if_fail (model != NULL);
- config_folder = gtr_dirs_get_user_config_dir ();
- filename = g_build_filename (config_folder, "profiles.xml", NULL);
- g_free (config_folder);
+ prof_manager = gtr_profile_manager_get_default ();
+ profile = gtr_profile_dialog_get_profile (profile_dialog);
- file = g_file_new_for_path (filename);
- g_free (filename);
+ /* add new profile */
+ if (response_id == GTK_RESPONSE_ACCEPT)
+ {
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtr_profile_manager_add_profile (prof_manager, profile);
- path = gtk_tree_path_new_from_string (path_str);
+ active_profile = gtr_profile_manager_get_active_profile (prof_manager);
- model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
- g_return_if_fail (model != NULL);
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &iter,
+ PROFILE_NAME_COLUMN, gtr_profile_get_name (profile),
+ ACTIVE_PROFILE_COLUMN, (profile == active_profile),
+ PROFILE_COLUMN, profile,
+ -1);
+ }
+ /* modify profile */
+ else if (response_id == GTK_RESPONSE_YES)
+ {
+ GtkTreeSelection *selection;
- gtk_tree_model_get_iter (model, &iter, path);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ GtrProfile *old;
+
+ gtk_tree_model_get (model, &iter,
+ PROFILE_COLUMN, &old,
+ -1);
+
+ gtr_profile_manager_modify_profile (prof_manager, old, profile);
+ active_profile = gtr_profile_manager_get_active_profile (prof_manager);
+
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &iter,
+ PROFILE_NAME_COLUMN, gtr_profile_get_name (profile),
+ ACTIVE_PROFILE_COLUMN, (profile == active_profile),
+ PROFILE_COLUMN, profile,
+ -1);
+ }
+ }
+
+ g_object_unref (prof_manager);
+ gtk_widget_destroy (GTK_WIDGET (profile_dialog));
+}
+
+static void
+add_button_clicked (GtkWidget *button, GtrPreferencesDialog *dlg)
+{
+ GtrProfileDialog *profile_dialog;
+
+ profile_dialog = gtr_profile_dialog_new (GTK_WIDGET (dlg), NULL);
- gtk_tree_model_get (model, &iter, TOGGLE_COL, &active, -1);
+ g_signal_connect (profile_dialog, "response",
+ G_CALLBACK (on_profile_dialog_response_cb), dlg);
+
+ gtk_widget_show (GTK_WIDGET (profile_dialog));
+ gtk_window_present (GTK_WINDOW (profile_dialog));
+}
- if (!active)
+static void
+edit_button_clicked (GtkWidget *button, GtrPreferencesDialog *dlg)
+{
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ GtrProfile *profile;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+ g_return_if_fail (model != NULL);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
{
+ GtrProfileDialog *profile_dialog;
- old_profile_active = gtr_application_get_active_profile (GTR_APP);
+ gtk_tree_model_get (model, &iter, PROFILE_COLUMN, &profile, -1);
- gtk_list_store_set (GTK_LIST_STORE (model),
- &iter, TRUE, TOGGLE_COL, -1);
+ profile_dialog = gtr_profile_dialog_new (GTK_WIDGET (dlg), profile);
- gtk_tree_model_get (model, &iter, PROFILE_NAME_COL, &profile_row, -1);
- profiles_list = gtr_application_get_profiles (GTR_APP);
+ g_signal_connect (profile_dialog, "response",
+ G_CALLBACK (on_profile_dialog_response_cb), dlg);
- for (l = profiles_list; l; l = l->next)
+ gtk_widget_show (GTK_WIDGET (profile_dialog));
+ gtk_window_present (GTK_WINDOW (profile_dialog));
+ }
+}
+
+static void
+delete_confirm_dialog_cb (GtkWidget *dialog,
+ gint response_id, GtrPreferencesDialog *dlg)
+{
+ if (response_id == GTK_RESPONSE_YES)
+ {
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+ g_return_if_fail (model != NULL);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
{
+ GtrProfileManager *prof_manager;
GtrProfile *profile;
- profile = (GtrProfile *) l->data;
- if (!strcmp (gtr_profile_get_name (profile), profile_row))
+
+ gtk_tree_model_get (model, &iter, PROFILE_COLUMN, &profile,
+ -1);
+
+ if (profile != NULL)
{
- gtr_application_set_active_profile (GTR_APP, profile);
+ prof_manager = gtr_profile_manager_get_default ();
+ gtr_profile_manager_remove_profile (prof_manager, profile);
+ g_object_unref (prof_manager);
+
+ gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
}
}
}
- gtk_list_store_clear (GTK_LIST_STORE (model));
- gtr_preferences_fill_profile_treeview (dlg, model);
- gtk_tree_path_free (path);
+ gtk_widget_destroy (dialog);
}
-void
-gtr_preferences_fill_profile_treeview (GtrPreferencesDialog *
- dlg, GtkTreeModel * model)
+static void
+delete_button_clicked (GtkWidget *button, GtrPreferencesDialog *dlg)
{
GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreeSelection *selection;
+ gboolean active;
+ GtkWidget *dialog;
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+ g_return_if_fail (model != NULL);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ {
+ gtk_tree_model_get (model, &iter, ACTIVE_PROFILE_COLUMN, &active, -1);
+
+ if (active)
+ {
+ dialog = gtk_message_dialog_new (GTK_WINDOW (dlg),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE, NULL);
+
+ gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
+ _("<span weight=\"bold\" size=\"large\">Impossible to remove the active profile</span>"));
+
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG
+ (dialog),
+ _("Another profile should be selected as active before"));
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ }
+ else
+ {
+ dialog = gtk_message_dialog_new (GTK_WINDOW (dlg),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_NONE, NULL);
+
+ gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
+ _("<span weight=\"bold\" size=\"large\">Are you sure you want to delete this profile?</span>"));
+
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
+
+ gtk_dialog_add_button (GTK_DIALOG (dialog),
+ GTK_STOCK_DELETE, GTK_RESPONSE_YES);
+
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ g_signal_connect (GTK_DIALOG (dialog), "response",
+ G_CALLBACK (delete_confirm_dialog_cb), dlg);
+ }
+ }
+}
+
+static void
+active_toggled_cb (GtkCellRendererToggle *cell_renderer,
+ gchar *path_str, GtrPreferencesDialog *dlg)
+{
+ GtkTreeIter iter, first;
+ GtkTreePath *path;
+ GtkTreeModel *model;
GtrProfile *active_profile;
- GList *l = NULL, *profiles_list = NULL;
- gtk_list_store_clear (GTK_LIST_STORE (model));
+ path = gtk_tree_path_new_from_string (path_str);
- profiles_list = gtr_application_get_profiles (GTR_APP);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
+ g_return_if_fail (model != NULL);
+ gtk_tree_model_get_iter (model, &iter, path);
- active_profile = gtr_application_get_active_profile (GTR_APP);
+ gtk_tree_model_get (model, &iter, PROFILE_COLUMN, &active_profile, -1);
- for (l = profiles_list; l; l = l->next)
+ if (active_profile != NULL)
{
+ GtrProfileManager *prof_manager;
- GtrProfile *profile;
- const gchar *profile_name;
+ prof_manager = gtr_profile_manager_get_default ();
- profile = (GtrProfile *) l->data;
+ if (gtr_profile_manager_get_active_profile (prof_manager) != active_profile)
+ {
+ gtr_profile_manager_set_active_profile (prof_manager, active_profile);
- profile_name = gtr_profile_get_name (profile);
- gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtk_tree_model_get_iter_first (model, &first);
+
+ do
+ {
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &first,
+ ACTIVE_PROFILE_COLUMN, FALSE,
+ -1);
+ } while (gtk_tree_model_iter_next (model, &first));
- if (!strcmp (gtr_profile_get_name (active_profile), profile_name))
- {
gtk_list_store_set (GTK_LIST_STORE (model),
&iter,
- PROFILE_NAME_COL,
- profile_name, TOGGLE_COL, TRUE, -1);
- }
- else
- {
- gtk_list_store_set (GTK_LIST_STORE (model),
- &iter, PROFILE_NAME_COL, profile_name, -1);
+ ACTIVE_PROFILE_COLUMN, TRUE,
+ -1);
}
+
+ g_object_unref (prof_manager);
+ }
+
+ gtk_tree_path_free (path);
+}
+
+static void
+fill_profile_treeview (GtrPreferencesDialog *dlg, GtkTreeModel *model)
+{
+ GtrProfileManager *prof_manager;
+ GtkTreeIter iter;
+ GtrProfile *active_profile;
+ GSList *l, *profiles;
+
+ gtk_list_store_clear (GTK_LIST_STORE (model));
+
+ prof_manager = gtr_profile_manager_get_default ();
+ profiles = gtr_profile_manager_get_profiles (prof_manager);
+ active_profile = gtr_profile_manager_get_active_profile (prof_manager);
+
+ for (l = profiles; l != NULL; l = g_slist_next (l))
+ {
+ GtrProfile *profile = GTR_PROFILE (l->data);
+ const gchar *profile_name;
+
+ profile_name = gtr_profile_get_name (profile);
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &iter,
+ PROFILE_NAME_COLUMN, profile_name,
+ ACTIVE_PROFILE_COLUMN, (profile == active_profile),
+ PROFILE_COLUMN, profile,
+ -1);
}
+
+ g_object_unref (prof_manager);
}
static void
-setup_profile_pages (GtrPreferencesDialog * dlg)
+setup_profile_pages (GtrPreferencesDialog *dlg)
{
GtkTreeViewColumn *name_column, *toggle_column;
GtkCellRenderer *text_renderer, *toggle_renderer;
GtkListStore *model;
- model =
- gtk_list_store_new (N_COLUMNS_PROFILES, G_TYPE_STRING, G_TYPE_BOOLEAN);
+ model = gtk_list_store_new (PROFILE_N_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_BOOLEAN,
+ G_TYPE_POINTER);
gtk_tree_view_set_model (GTK_TREE_VIEW (dlg->priv->profile_treeview),
GTK_TREE_MODEL (model));
@@ -535,19 +722,22 @@ setup_profile_pages (GtrPreferencesDialog * dlg)
g_signal_connect (toggle_renderer,
"toggled", G_CALLBACK (active_toggled_cb), dlg);
- g_object_set (toggle_renderer,
- "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
+ gtk_cell_renderer_toggle_set_activatable (GTK_CELL_RENDERER_TOGGLE (toggle_renderer),
+ TRUE);
+ gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (toggle_renderer),
+ TRUE);
name_column = gtk_tree_view_column_new_with_attributes (_("Profile"),
text_renderer,
"text",
- PROFILE_NAME_COL,
+ PROFILE_NAME_COLUMN,
NULL);
toggle_column = gtk_tree_view_column_new_with_attributes (_("Active"),
toggle_renderer,
"active",
- TOGGLE_COL, NULL);
+ ACTIVE_PROFILE_COLUMN,
+ NULL);
gtk_tree_view_column_set_resizable (toggle_column, TRUE);
gtk_tree_view_column_set_resizable (name_column, TRUE);
@@ -556,9 +746,9 @@ setup_profile_pages (GtrPreferencesDialog * dlg)
gtk_tree_view_append_column (GTK_TREE_VIEW (dlg->priv->profile_treeview),
toggle_column);
- g_object_set (name_column, "expand", TRUE, NULL);
+ gtk_tree_view_column_set_expand (name_column, TRUE);
- gtr_preferences_fill_profile_treeview (dlg, GTK_TREE_MODEL (model));
+ fill_profile_treeview (dlg, GTK_TREE_MODEL (model));
}
/***************Interface pages****************/
@@ -659,7 +849,7 @@ response_filechooser_cb (GtkDialog * dialog,
}
static void
-on_search_button_pulsed (GtkButton * button, gpointer data)
+on_search_button_clicked (GtkButton * button, gpointer data)
{
GtkWidget *filechooser;
GtrPreferencesDialog *dlg;
@@ -781,7 +971,7 @@ destroy_idle_data (gpointer data)
}
static void
-on_add_database_button_pulsed (GtkButton * button, GtrPreferencesDialog * dlg)
+on_add_database_button_clicked (GtkButton * button, GtrPreferencesDialog * dlg)
{
GFile *dir;
const gchar *dir_name;
@@ -878,6 +1068,7 @@ directory_entry_changed (GObject * gobject,
static void
setup_tm_pages (GtrPreferencesDialog * dlg)
{
+ GtrProfileManager *prof_manager;
GtrProfile *profile;
const gchar *language_code;
const gchar *filename = NULL;
@@ -887,7 +1078,8 @@ setup_tm_pages (GtrPreferencesDialog * dlg)
gtr_prefs_manager_get_restrict_to_filename
());
- profile = gtr_application_get_active_profile (GTR_APP);
+ prof_manager = gtr_profile_manager_get_default ();
+ profile = gtr_profile_manager_get_active_profile (prof_manager);
if (profile != NULL)
{
@@ -896,6 +1088,7 @@ setup_tm_pages (GtrPreferencesDialog * dlg)
gtk_entry_set_text (GTK_ENTRY (dlg->priv->tm_lang_entry), filename);
}
+ g_object_unref (prof_manager);
if (filename != NULL)
gtr_prefs_manager_set_filename_restriction (filename);
@@ -911,7 +1104,7 @@ setup_tm_pages (GtrPreferencesDialog * dlg)
gtr_prefs_manager_get_max_length_diff ());
g_signal_connect (GTK_BUTTON (dlg->priv->search_button), "clicked",
- G_CALLBACK (on_search_button_pulsed), dlg);
+ G_CALLBACK (on_search_button_clicked), dlg);
g_signal_connect (dlg->priv->directory_entry, "notify::text",
G_CALLBACK (directory_entry_changed), dlg);
@@ -920,7 +1113,7 @@ setup_tm_pages (GtrPreferencesDialog * dlg)
G_CALLBACK (tm_lang_entry_changed), dlg);
g_signal_connect (GTK_BUTTON (dlg->priv->add_database_button), "clicked",
- G_CALLBACK (on_add_database_button_pulsed), dlg);
+ G_CALLBACK (on_add_database_button_clicked), dlg);
g_signal_connect (GTK_TOGGLE_BUTTON (dlg->priv->use_lang_profile_in_tm),
"toggled",
@@ -971,173 +1164,6 @@ dialog_response_handler (GtkDialog * dlg, gint res_id)
}
static void
-add_button_pulsed (GtkWidget * button, GtrPreferencesDialog * dlg)
-{
- GtrProfile *profile;
- profile = gtr_profile_new ();
- gtr_show_profile_dialog (dlg, profile, NEW_PROFILE);
-}
-
-static void
-edit_button_pulsed (GtkWidget * button, GtrPreferencesDialog * dlg)
-{
- GtkTreeIter iter;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
- gchar *profile_row;
- const gchar *old_profile_name;
- GtrProfile *edited_profile = NULL;
- GtrProfile *active_profile;
- GList *profiles_list = NULL, *l = NULL;
-
- model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
- g_return_if_fail (model != NULL);
-
- selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
-
- gtk_tree_model_get (model, &iter, PROFILE_NAME_COL, &profile_row, -1);
-
- profiles_list = gtr_application_get_profiles (GTR_APP);
- active_profile = gtr_application_get_active_profile (GTR_APP);
-
- for (l = profiles_list; l; l = l->next)
- {
- GtrProfile *profile;
- profile = (GtrProfile *) l->data;
- if (!strcmp (gtr_profile_get_name (profile), profile_row))
- {
- old_profile_name = gtr_profile_get_name (profile);
- edited_profile = profile;
- }
- }
- gtr_show_profile_dialog (dlg, edited_profile, EDIT_PROFILE);
- }
-}
-
-static void
-delete_confirm_dialog_cb (GtkWidget * dialog,
- gint response_id, GtrPreferencesDialog * dlg)
-{
- GtkTreeIter iter;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
- gchar *profile_row;
- GList *profiles_list = NULL, *l = NULL;
- GList *new_list = NULL;
-
- if (response_id == GTK_RESPONSE_YES)
- {
- model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
- g_return_if_fail (model != NULL);
-
- selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW
- (dlg->priv->profile_treeview));
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
-
- gtk_tree_model_get (model, &iter, PROFILE_NAME_COL, &profile_row,
- -1);
-
- profiles_list = gtr_application_get_profiles (GTR_APP);
-
- for (l = profiles_list; l; l = l->next)
- {
- GtrProfile *profile;
- profile = (GtrProfile *) l->data;
- if (!strcmp (gtr_profile_get_name (profile), profile_row))
- {
- new_list = g_list_remove (profiles_list, profile);
- gtr_application_set_profiles (GTR_APP, new_list);
- }
- }
- gtr_preferences_fill_profile_treeview (dlg, model);
- }
- gtk_widget_destroy (dialog);
- }
- else
- {
- gtk_widget_destroy (dialog);
- }
-}
-
-static void
-delete_button_pulsed (GtkWidget * button, GtrPreferencesDialog * dlg)
-{
- GtkTreeIter iter;
- GtkTreeModel *model;
- GtkTreeSelection *selection;
- gchar *profile_row;
- GtrProfile *active_profile;
- GtkWidget *dialog;
-
- model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (dlg->priv->profile_treeview));
- g_return_if_fail (model != NULL);
-
- selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->profile_treeview));
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
-
- gtk_tree_model_get (model, &iter, PROFILE_NAME_COL, &profile_row, -1);
-
- active_profile = gtr_application_get_active_profile (GTR_APP);
-
- if (!strcmp (gtr_profile_get_name (active_profile), profile_row))
- {
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (dlg),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE, NULL);
-
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
- _
- ("<span weight=\"bold\" size=\"large\">Impossible to remove the active profile</span>"));
-
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG
- (dialog),
- _
- ("Another profile should be selected as active before"));
-
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
- else
- {
- dialog = gtk_message_dialog_new (GTK_WINDOW (dlg),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_NONE, NULL);
-
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
- _
- ("<span weight=\"bold\" size=\"large\">Are you sure you want to delete this profile?</span>"));
-
- gtk_dialog_add_button (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-
- gtk_dialog_add_button (GTK_DIALOG (dialog),
- GTK_STOCK_DELETE, GTK_RESPONSE_YES);
-
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- g_signal_connect (GTK_DIALOG (dialog), "response",
- G_CALLBACK (delete_confirm_dialog_cb), dlg);
- }
- }
-}
-
-static void
gtr_preferences_dialog_init (GtrPreferencesDialog * dlg)
{
gboolean ret;
@@ -1251,13 +1277,13 @@ gtr_preferences_dialog_init (GtrPreferencesDialog * dlg)
gtk_container_set_border_width (GTK_CONTAINER (dlg->priv->notebook), 5);
g_signal_connect (dlg->priv->add_button,
- "clicked", G_CALLBACK (add_button_pulsed), dlg);
+ "clicked", G_CALLBACK (add_button_clicked), dlg);
g_signal_connect (dlg->priv->delete_button,
- "clicked", G_CALLBACK (delete_button_pulsed), dlg);
+ "clicked", G_CALLBACK (delete_button_clicked), dlg);
g_signal_connect (dlg->priv->edit_button,
- "clicked", G_CALLBACK (edit_button_pulsed), dlg);
+ "clicked", G_CALLBACK (edit_button_clicked), dlg);
setup_files_pages (dlg);
setup_editor_pages (dlg);
diff --git a/src/dialogs/gtr-preferences-dialog.h b/src/dialogs/gtr-preferences-dialog.h
index e3872b8..edbccec 100644
--- a/src/dialogs/gtr-preferences-dialog.h
+++ b/src/dialogs/gtr-preferences-dialog.h
@@ -23,32 +23,22 @@
#include <glib-object.h>
#include <gtk/gtk.h>
-#include "gtr-application.h"
#include "gtr-window.h"
-enum
-{
- PROFILE_NAME_COL,
- TOGGLE_COL,
- N_COLUMNS_PROFILES
-};
-
G_BEGIN_DECLS
-/*
- * Type checking and casting macros
- */
+
+/* Type checking and casting macros */
#define GTR_TYPE_PREFERENCES_DIALOG (gtr_preferences_dialog_get_type ())
#define GTR_PREFERENCES_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTR_TYPE_PREFERENCES_DIALOG, GtrPreferencesDialog))
-#define GTR_PREFERENCES_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GTR_TYPE_PREFERENCES_DIALOG, GtrPreferencesDialogClass))
+#define GTR_PREFERENCES_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GTR_TYPE_PREFERENCES_DIALOG, GtrPreferencesDialogClass))
#define GTR_IS_PREFERENCES_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTR_TYPE_PREFERENCES_DIALOG))
#define GTR_IS_PREFERENCES_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTR_TYPE_PREFERENCES_DIALOG))
#define GTR_PREFERENCES_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTR_TYPE_PREFERENCES_DIALOG, GtrPreferencesDialogClass))
+
/* Private structure type */
typedef struct _GtrPreferencesDialogPrivate GtrPreferencesDialogPrivate;
-/*
- * Main object structure
- */
+/* Main object structure */
typedef struct _GtrPreferencesDialog GtrPreferencesDialog;
struct _GtrPreferencesDialog
@@ -59,9 +49,7 @@ struct _GtrPreferencesDialog
GtrPreferencesDialogPrivate *priv;
};
-/*
- * Class definition
- */
+/* Class definition */
typedef struct _GtrPreferencesDialogClass GtrPreferencesDialogClass;
struct _GtrPreferencesDialogClass
@@ -69,22 +57,11 @@ struct _GtrPreferencesDialogClass
GtkDialogClass parent_class;
};
-/*
- * Public methods
- */
-GType
-gtr_preferences_dialog_get_type (void)
- G_GNUC_CONST;
-
- GType gtr_preferences_dialog_register_type (GTypeModule * module);
-
- void gtr_show_preferences_dialog (GtrWindow * window);
+/* Public methods */
+GType gtr_preferences_dialog_get_type (void)G_GNUC_CONST;
-GtkWidget * gtr_preferences_dialog_get_treeview (GtrPreferencesDialog * dlg);
-
- void
- gtr_preferences_fill_profile_treeview
- (GtrPreferencesDialog * dlg, GtkTreeModel * model);
+void gtr_show_preferences_dialog (GtrWindow *window);
G_END_DECLS
+
#endif /* __PREFERENCES_DIALOG_H__ */
diff --git a/src/dialogs/gtr-profile-dialog.c b/src/dialogs/gtr-profile-dialog.c
index 7a94a0f..df44ea4 100644
--- a/src/dialogs/gtr-profile-dialog.c
+++ b/src/dialogs/gtr-profile-dialog.c
@@ -16,329 +16,57 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Authors:
- * Pablo Sanxiao <psanxiao gmail com>
+ * Pablo Sanxiao <psanxiao gmail com>
+ * Ignacio Casal Quinteiro <icq gnome org>
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include "gtr-application.h"
#include "gtr-dirs.h"
#include "gtr-profile-dialog.h"
-#include "gtr-preferences-dialog.h"
#include "gtr-profile.h"
#include "gtr-utils.h"
#include <string.h>
#include <glib.h>
#include <glib/gi18n.h>
-#include <glib-object.h>
#include <gtk/gtk.h>
-#include <libxml/tree.h>
#define GTR_PROFILE_DIALOG_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
- (object), \
- GTR_TYPE_PROFILE_DIALOG, \
- GtrProfileDialogPrivate))
+ (object), \
+ GTR_TYPE_PROFILE_DIALOG, \
+ GtrProfileDialogPrivate))
G_DEFINE_TYPE (GtrProfileDialog, gtr_profile_dialog, GTK_TYPE_DIALOG)
- struct _GtrProfileDialogPrivate
- {
- GtkWidget *main_box;
- GtkWidget *profile_name_entry;
-
- GtkWidget *author_name_entry;
- GtkWidget *author_email_entry;
-
- GtkWidget *language_name_entry;
- GtkWidget *language_code_entry;
- GtkWidget *charset_entry;
- GtkWidget *encoding_entry;
- GtkWidget *language_email_entry;
- GtkWidget *plurals_forms_entry;
-
- GtrPreferencesDialog *prefs_dlg;
-
- GtrProfile *new_profile;
- GtrProfile *old_profile;
- };
-
- static void gtr_profile_dialog_finalize (GObject * object)
-{
- G_OBJECT_CLASS (gtr_profile_dialog_parent_class)->finalize (object);
-}
-
-static void
-gtr_profile_dialog_class_init (GtrProfileDialogClass * klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (GtrProfileDialogPrivate));
-
- object_class->finalize = gtr_profile_dialog_finalize;
-}
-
-/***************PROFILES****************/
-static void
-profile_name_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_name (profile_dlg->priv->new_profile, (gchar *) text);
-}
-
-static void
-author_name_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->author_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_author_name (profile_dlg->priv->new_profile,
- (gchar *) text);
-}
-
-static void
-author_email_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->author_email_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_author_email (profile_dlg->priv->new_profile,
- (gchar *) text);
-}
-
-static void
-language_name_entry_changed (GObject * gobject,
- GParamSpec * arg1,
- GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_language_name (profile_dlg->priv->new_profile,
- (gchar *) text);
-}
-
-static void
-language_code_entry_changed (GObject * gobject,
- GParamSpec * arg1,
- GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_language_code (profile_dlg->priv->new_profile,
- (gchar *) text);
-}
-
-static void
-charset_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_charset (profile_dlg->priv->new_profile, (gchar *) text);
-}
-
-static void
-encoding_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_encoding (profile_dlg->priv->new_profile, (gchar *) text);
-}
-
-static void
-group_email_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
-{
- const gchar *text;
-
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
-
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
-
- if (text)
- gtr_profile_set_group_email (profile_dlg->priv->new_profile,
- (gchar *) text);
-}
-
-static void
-plurals_entry_changed (GObject * gobject,
- GParamSpec * arg1, GtrProfileDialog * profile_dlg)
+struct _GtrProfileDialogPrivate
{
- const gchar *text;
+ GtkWidget *main_box;
- /*g_return_if_fail (GTK_ENTRY (gobject) == GTK_ENTRY (dlg->priv->profile_name_entry)); */
+ GtkWidget *profile_name_entry;
- text = gtk_entry_get_text (GTK_ENTRY (gobject));
+ GtkWidget *author_name_entry;
+ GtkWidget *author_email_entry;
- if (text)
- gtr_profile_set_plurals (profile_dlg->priv->new_profile, (gchar *) text);
-}
+ GtkWidget *language_name_entry;
+ GtkWidget *language_code_entry;
+ GtkWidget *charset_entry;
+ GtkWidget *encoding_entry;
+ GtkWidget *language_email_entry;
+ GtkWidget *plural_forms_entry;
+};
static void
-save_new_profile (GtkWidget * widget, GtrProfileDialog * profile_dlg)
+gtr_profile_dialog_class_init (GtrProfileDialogClass *klass)
{
- GList *profiles_list = NULL, *l = NULL;
- GtrPreferencesDialog *dlg;
- gboolean profile_exists;
- GtkWidget *treeview;
- GtkTreeModel *model;
- profile_exists = FALSE;
-
- profiles_list = gtr_application_get_profiles (GTR_APP);
-
- for (l = profiles_list; l; l = l->next)
- {
- GtrProfile *profile_in_list;
- profile_in_list = (GtrProfile *) l->data;
- if (!strcmp (gtr_profile_get_name (profile_in_list),
- gtr_profile_get_name (profile_dlg->priv->new_profile)))
- profile_exists = TRUE;
- }
-
- if (profile_exists)
- {
- GtkWidget *dialog;
- dialog =
- gtk_message_dialog_new (GTK_WINDOW
- (gtk_widget_get_ancestor
- (widget, GTK_TYPE_DIALOG)), GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, NULL);
-
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog),
- _
- ("<span weight=\"bold\" size=\"large\">The profile name already exists</span>"));
-
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- }
- else
- {
- /*
- * Add new profile to profiles list in memory
- */
- if (profiles_list == NULL)
- {
- GList *initial_list = NULL;
- initial_list =
- g_list_append (profiles_list, profile_dlg->priv->new_profile);
- gtr_application_set_active_profile (GTR_APP,
- profile_dlg->priv->new_profile);
- gtr_application_set_profiles (GTR_APP, initial_list);
- }
- else
- {
- profiles_list =
- g_list_append (profiles_list, profile_dlg->priv->new_profile);
- }
- }
-
- /*
- *Reload the preferences dialog
- */
- dlg = profile_dlg->priv->prefs_dlg;
-
- treeview = gtr_preferences_dialog_get_treeview (dlg);
-
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
- g_return_if_fail (GTK_IS_LIST_STORE (model));
-
- gtr_preferences_fill_profile_treeview (dlg, model);
-
- gtk_widget_destroy (gtk_widget_get_ancestor (widget, GTK_TYPE_DIALOG));
-}
-
-static void
-save_modified_profile (GtkWidget * widget, GtrProfileDialog * profile_dlg)
-{
- GtkWidget *treeview;
- GtkTreeModel *model;
-
- g_return_if_fail (GTR_IS_PREFERENCES_DIALOG (profile_dlg->priv->prefs_dlg));
-
- treeview =
- gtr_preferences_dialog_get_treeview (profile_dlg->priv->prefs_dlg);
-
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
- g_return_if_fail (GTK_IS_LIST_STORE (model));
-
- gtr_preferences_fill_profile_treeview (profile_dlg->priv->prefs_dlg, model);
- gtk_widget_destroy (gtk_widget_get_ancestor (widget, GTK_TYPE_DIALOG));
-}
-
-static void
-destroy_without_changes (GtkWidget * widget, GtrProfileDialog * dlg)
-{
- gtr_profile_set_name (dlg->priv->new_profile,
- gtr_profile_get_name (dlg->priv->old_profile));
- gtr_profile_set_author_name (dlg->priv->new_profile,
- gtr_profile_get_author_name
- (dlg->priv->old_profile));
- gtr_profile_set_author_email (dlg->priv->new_profile,
- gtr_profile_get_author_email
- (dlg->priv->old_profile));
- gtr_profile_set_language_name (dlg->priv->new_profile,
- gtr_profile_get_language_name
- (dlg->priv->old_profile));
- gtr_profile_set_language_code (dlg->priv->new_profile,
- gtr_profile_get_language_code
- (dlg->priv->old_profile));
- gtr_profile_set_charset (dlg->priv->new_profile,
- gtr_profile_get_charset (dlg->priv->old_profile));
- gtr_profile_set_encoding (dlg->priv->new_profile,
- gtr_profile_get_encoding
- (dlg->priv->old_profile));
- gtr_profile_set_group_email (dlg->priv->new_profile,
- gtr_profile_get_group_email (dlg->priv->
- old_profile));
- gtr_profile_set_plurals (dlg->priv->new_profile,
- gtr_profile_get_plurals (dlg->priv->old_profile));
-
- gtk_widget_destroy (gtk_widget_get_ancestor (widget, GTK_TYPE_DIALOG));
+ g_type_class_add_private (klass, sizeof (GtrProfileDialogPrivate));
}
static void
-gtr_profile_dialog_init (GtrProfileDialog * dlg)
+gtr_profile_dialog_init (GtrProfileDialog *dlg)
{
gboolean ret;
GtkWidget *error_widget;
@@ -350,13 +78,22 @@ gtr_profile_dialog_init (GtrProfileDialog * dlg)
dlg->priv = GTR_PROFILE_DIALOG_GET_PRIVATE (dlg);
+ gtk_dialog_add_buttons (GTK_DIALOG (dlg),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ NULL);
+
gtk_window_set_title (GTK_WINDOW (dlg), _("Gtranslator Profile"));
gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE);
gtk_dialog_set_has_separator (GTK_DIALOG (dlg), FALSE);
gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE);
+ gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
+ /* HIG defaults */
gtk_container_set_border_width (GTK_CONTAINER (dlg), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->vbox), 2);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->vbox), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width (GTK_CONTAINER
+ (GTK_DIALOG (dlg)->action_area), 5);
+ gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dlg)->action_area), 4);
path = gtr_dirs_get_ui_file ("gtr-profile-dialog.ui");
ret = gtr_utils_get_ui_objects (path,
@@ -381,7 +118,7 @@ gtr_profile_dialog_init (GtrProfileDialog * dlg)
"team_email_entry",
&dlg->priv->language_email_entry,
"plurals_entry",
- &dlg->priv->plurals_forms_entry, NULL);
+ &dlg->priv->plural_forms_entry, NULL);
g_free (path);
if (!ret)
@@ -393,188 +130,116 @@ gtr_profile_dialog_init (GtrProfileDialog * dlg)
return;
}
- gtk_widget_set_tooltip_text (dlg->priv->plurals_forms_entry,
- _("Example: nplurals=2; plural=(n != 1);"));
-
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox),
dlg->priv->main_box, FALSE, FALSE, 0);
- gtk_window_set_modal (GTK_WINDOW (dlg), TRUE);
-
}
-void
-gtr_show_profile_dialog (GtrPreferencesDialog * dialog,
- GtrProfile * profile, gint action)
+static void
+fill_entries (GtrProfileDialog *dlg, GtrProfile *profile)
{
- static GtrProfileDialog *dlg = NULL;
- GtkButton *ok_button, *cancel_button;
- GtrProfile *old_profile;
+ if (gtr_profile_get_name (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->profile_name_entry),
+ gtr_profile_get_name (profile));
- old_profile = gtr_profile_new ();
+ if (gtr_profile_get_author_name (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->author_name_entry),
+ gtr_profile_get_author_name (profile));
- cancel_button = GTK_BUTTON (gtk_button_new_from_stock (GTK_STOCK_CANCEL));
- gtk_widget_show (GTK_WIDGET (cancel_button));
- ok_button = GTK_BUTTON (gtk_button_new_from_stock (GTK_STOCK_OK));
- gtk_widget_show (GTK_WIDGET (ok_button));
+ if (gtr_profile_get_author_email (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->author_email_entry),
+ gtr_profile_get_author_email (profile));
- g_return_if_fail (GTR_IS_PREFERENCES_DIALOG (dialog));
+ if (gtr_profile_get_language_name (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->language_name_entry),
+ gtr_profile_get_language_name (profile));
- if (dlg == NULL)
- {
- dlg = g_object_new (GTR_TYPE_PROFILE_DIALOG, NULL);
- g_signal_connect (dlg,
- "destroy", G_CALLBACK (gtk_widget_destroyed), &dlg);
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area),
- GTK_WIDGET (cancel_button));
+ if (gtr_profile_get_language_code (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->language_code_entry),
+ gtr_profile_get_language_code (profile));
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area),
- GTK_WIDGET (ok_button));
+ if (gtr_profile_get_charset (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->charset_entry),
+ gtr_profile_get_charset (profile));
- dlg->priv->prefs_dlg = dialog;
+ if (gtr_profile_get_encoding (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->encoding_entry),
+ gtr_profile_get_encoding (profile));
- gtk_widget_show (GTK_WIDGET (dlg));
- }
+ if (gtr_profile_get_group_email (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->language_email_entry),
+ gtr_profile_get_group_email (profile));
- if (GTK_WINDOW (dialog) != gtk_window_get_transient_for (GTK_WINDOW (dlg)))
- {
- gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (dialog));
- }
+ if (gtr_profile_get_plural_forms (profile) != NULL)
+ gtk_entry_set_text (GTK_ENTRY (dlg->priv->plural_forms_entry),
+ gtr_profile_get_plural_forms (profile));
+}
- if (gtr_profile_get_name (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->profile_name_entry),
- gtr_profile_get_name (profile));
- gtr_profile_set_name (old_profile, gtr_profile_get_name (profile));
- }
+GtrProfileDialog *
+gtr_profile_dialog_new (GtkWidget *parent,
+ GtrProfile *profile)
+{
+ GtrProfileDialog *dlg;
- if (gtr_profile_get_author_name (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->priv->author_name_entry),
- gtr_profile_get_author_name (profile));
- gtr_profile_set_author_name (old_profile,
- gtr_profile_get_author_name (profile));
- }
+ dlg = g_object_new (GTR_TYPE_PROFILE_DIALOG, NULL);
- if (gtr_profile_get_author_email (profile) != NULL)
+ if (profile != NULL)
{
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->author_email_entry),
- gtr_profile_get_author_email (profile));
- gtr_profile_set_author_email (old_profile,
- gtr_profile_get_author_email (profile));
- }
+ fill_entries (dlg, profile);
- if (gtr_profile_get_language_name (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->language_name_entry),
- gtr_profile_get_language_name (profile));
- gtr_profile_set_language_name (old_profile,
- gtr_profile_get_language_name (profile));
+ /* We distinguish in the preferences dialog if we are modifying
+ or adding a new profile depending on the response */
+ gtk_dialog_add_button (GTK_DIALOG (dlg),
+ GTK_STOCK_OK, GTK_RESPONSE_YES);
}
-
- if (gtr_profile_get_language_code (profile) != NULL)
+ else
{
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->language_code_entry),
- gtr_profile_get_language_code (profile));
- gtr_profile_set_language_code (old_profile,
- gtr_profile_get_language_code (profile));
+ gtk_dialog_add_button (GTK_DIALOG (dlg),
+ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
}
- if (gtr_profile_get_charset (profile) != NULL)
+ if (GTK_WINDOW (parent) != gtk_window_get_transient_for (GTK_WINDOW (dlg)))
{
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->priv->charset_entry),
- gtr_profile_get_charset (profile));
- gtr_profile_set_charset (old_profile,
- gtr_profile_get_charset (profile));
+ gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (parent));
}
- if (gtr_profile_get_encoding (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->priv->encoding_entry),
- gtr_profile_get_encoding (profile));
- gtr_profile_set_encoding (old_profile,
- gtr_profile_get_encoding (profile));
- }
+ return dlg;
+}
- if (gtr_profile_get_group_email (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->language_email_entry),
- gtr_profile_get_group_email (profile));
- gtr_profile_set_group_email (old_profile,
- gtr_profile_get_group_email (profile));
- }
+GtrProfile *
+gtr_profile_dialog_get_profile (GtrProfileDialog *dlg)
+{
+ GtrProfile *profile;
- if (gtr_profile_get_plurals (profile) != NULL)
- {
- gtk_entry_set_text (GTK_ENTRY
- (GTR_PROFILE_DIALOG (dlg)->
- priv->plurals_forms_entry),
- gtr_profile_get_plurals (profile));
- gtr_profile_set_plurals (old_profile,
- gtr_profile_get_plurals (profile));
- }
+ g_return_val_if_fail (GTR_IS_PROFILE_DIALOG (dlg), NULL);
- dlg->priv->old_profile = old_profile;
- dlg->priv->new_profile = profile;
-
- /* Connect entry signals */
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->profile_name_entry,
- "notify::text", G_CALLBACK (profile_name_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->author_name_entry,
- "notify::text", G_CALLBACK (author_name_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->author_email_entry,
- "notify::text", G_CALLBACK (author_email_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->language_name_entry,
- "notify::text", G_CALLBACK (language_name_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->language_code_entry,
- "notify::text", G_CALLBACK (language_code_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->charset_entry,
- "notify::text", G_CALLBACK (charset_entry_changed), dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->encoding_entry,
- "notify::text", G_CALLBACK (encoding_entry_changed), dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->language_email_entry,
- "notify::text", G_CALLBACK (group_email_entry_changed),
- dlg);
- g_signal_connect (GTR_PROFILE_DIALOG (dlg)->priv->plurals_forms_entry,
- "notify::text", G_CALLBACK (plurals_entry_changed), dlg);
-
- /*
- * Connect signals to dialog buttons.
- */
-
- g_signal_connect (cancel_button,
- "clicked", G_CALLBACK (destroy_without_changes), dlg);
-
- if (action == NEW_PROFILE)
- {
- g_signal_connect (ok_button,
- "clicked", G_CALLBACK (save_new_profile), dlg);
- }
- else
- {
- if (action == EDIT_PROFILE)
- {
- g_signal_connect (ok_button,
- "clicked",
- G_CALLBACK (save_modified_profile), dlg);
- }
- }
+ profile = gtr_profile_new ();
+
+ gtr_profile_set_name (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->profile_name_entry)));
+
+ gtr_profile_set_author_name (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->author_name_entry)));
+
+ gtr_profile_set_author_email (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->author_email_entry)));
+
+ gtr_profile_set_language_name (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->language_name_entry)));
+
+ gtr_profile_set_language_code (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->language_code_entry)));
+
+ gtr_profile_set_charset (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->charset_entry)));
+
+ gtr_profile_set_encoding (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->encoding_entry)));
+
+ gtr_profile_set_group_email (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->language_email_entry)));
+
+ gtr_profile_set_plural_forms (profile,
+ gtk_entry_get_text (GTK_ENTRY (dlg->priv->plural_forms_entry)));
+ return profile;
}
diff --git a/src/dialogs/gtr-profile-dialog.h b/src/dialogs/gtr-profile-dialog.h
index fba4de0..0b25ce6 100644
--- a/src/dialogs/gtr-profile-dialog.h
+++ b/src/dialogs/gtr-profile-dialog.h
@@ -27,14 +27,8 @@
#include <gtk/gtk.h>
#include "gtr-profile.h"
-#include "gtr-window.h"
-#include "gtr-preferences-dialog.h"
-enum
-{
- NEW_PROFILE,
- EDIT_PROFILE
-};
+G_BEGIN_DECLS
/*
* Type checking and casting macros
@@ -75,13 +69,13 @@ struct _GtrProfileDialogClass
/*
* Public methods
*/
-GType
-gtr_profile_dialog_get_type (void)
- G_GNUC_CONST;
+GType gtr_profile_dialog_get_type (void) G_GNUC_CONST;
+
+GtrProfileDialog *gtr_profile_dialog_new (GtkWidget *parent,
+ GtrProfile *profile);
- GType gtr_profile_dialog_register_type (GTypeModule * module);
+GtrProfile *gtr_profile_dialog_get_profile (GtrProfileDialog *dlg);
- void gtr_show_profile_dialog (GtrPreferencesDialog *
- dialog, GtrProfile * profile, gint action);
+G_END_DECLS
#endif
diff --git a/src/gtr-actions-file.c b/src/gtr-actions-file.c
index 289e24b..ab67894 100644
--- a/src/gtr-actions-file.c
+++ b/src/gtr-actions-file.c
@@ -37,7 +37,6 @@
#include "gtr-file-dialogs.h"
#include "gtr-notebook.h"
#include "gtr-po.h"
-#include "gtr-profile.h"
#include "gtr-statusbar.h"
#include "gtr-tab.h"
#include "gtr-utils.h"
@@ -741,49 +740,6 @@ close_all_documents (GtrWindow * window, gboolean logout_mode)
void
gtr_file_quit (GtkAction * action, GtrWindow * window)
{
- GList *profiles_list = NULL;
- gchar *config_folder;
- gchar *filename, *filename_temp;
- GFile *file, *file_temp;
- gint r;
-
- config_folder = gtr_dirs_get_user_config_dir ();
- filename = g_build_filename (config_folder, "profiles.xml", NULL);
- g_free (config_folder);
- filename_temp = g_build_filename (g_get_tmp_dir (), "profiles.xml", NULL);
-
- file = g_file_new_for_path (filename);
- file_temp = g_file_new_for_path (filename_temp);
-
- profiles_list = gtr_application_get_profiles (GTR_APP);
-
- if (profiles_list != NULL)
- {
- if (g_file_query_exists (file_temp, NULL))
- {
- r = gtr_profile_save_profiles_in_xml (filename_temp);
- }
- else
- {
- g_file_create (file_temp, G_FILE_CREATE_NONE, NULL, NULL);
- r = gtr_profile_save_profiles_in_xml (filename_temp);
- }
- if (r != -1)
- {
- g_file_move (file_temp,
- file, G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, NULL);
- }
- else
- {
- g_warning (_
- ("Failed to write profile data into profiles file '%s'"),
- filename);
- }
- }
-
- g_object_unref (file_temp);
- g_object_unref (file);
-
g_object_set_data (G_OBJECT (window),
GTR_IS_CLOSING_ALL, GINT_TO_POINTER (1));
diff --git a/src/gtr-dirs.h b/src/gtr-dirs.h
index 71f2247..276b576 100644
--- a/src/gtr-dirs.h
+++ b/src/gtr-dirs.h
@@ -26,7 +26,9 @@
#include <glib.h>
-G_BEGIN_DECLS gchar * gtr_dirs_get_user_config_dir (void);
+G_BEGIN_DECLS
+
+gchar *gtr_dirs_get_user_config_dir (void);
gchar *gtr_dirs_get_user_cache_dir (void);
diff --git a/src/gtr-header.c b/src/gtr-header.c
index 39ac129..fc4f5ca 100644
--- a/src/gtr-header.c
+++ b/src/gtr-header.c
@@ -26,6 +26,7 @@
#include "gtr-header.h"
#include "gtr-prefs-manager.h"
#include "gtr-profile.h"
+#include "gtr-profile-manager.h"
#include "gtr-utils.h"
#include <glib.h>
@@ -71,12 +72,16 @@ parse_nplurals (GtrHeader * header)
if (gtr_prefs_manager_get_use_profile_values () || !plural_forms)
{
const gchar *plural_form = NULL;
+ GtrProfileManager *prof_manager;
GtrProfile *profile;
- profile = gtr_application_get_active_profile (GTR_APP);
+ /* TODO: Manage this also per document */
+ prof_manager = gtr_profile_manager_get_default ();
+ profile = gtr_profile_manager_get_active_profile (prof_manager);
+ g_object_unref (prof_manager);
if (profile)
- plural_form = gtr_profile_get_plurals (profile);
+ plural_form = gtr_profile_get_plural_forms (profile);
else if (!plural_forms)
return;
@@ -493,11 +498,11 @@ gtr_header_get_nplurals (GtrHeader * header)
}
static void
-set_profile_values (GtrHeader * header)
+set_profile_values (GtrHeader *header, GtrProfileManager *prof_manager)
{
GtrProfile *active_profile;
- active_profile = gtr_application_get_active_profile (GTR_APP);
+ active_profile = gtr_profile_manager_get_active_profile (prof_manager);
if (gtr_prefs_manager_get_use_profile_values () && active_profile != NULL)
{
@@ -513,7 +518,7 @@ set_profile_values (GtrHeader * header)
gtr_header_set_encoding (header,
gtr_profile_get_encoding (active_profile));
gtr_header_set_plural_forms (header,
- gtr_profile_get_plurals (active_profile));
+ gtr_profile_get_plural_forms (active_profile));
}
}
@@ -538,7 +543,8 @@ update_po_date (GtrHeader * header)
}
static void
-update_comments (GtrHeader * header, const gchar * comments)
+update_comments (GtrHeader *header, const gchar *comments,
+ GtrProfileManager *prof_manager)
{
GtrProfile *active_profile;
GString *new_comments;
@@ -549,7 +555,7 @@ update_comments (GtrHeader * header, const gchar * comments)
gchar *current_year;
gint i;
- active_profile = gtr_application_get_active_profile (GTR_APP);
+ active_profile = gtr_profile_manager_get_active_profile (prof_manager);
current_year = gtr_utils_get_current_year ();
/* Save the previous translator to update the header's comment */
@@ -637,10 +643,13 @@ add_default_comments (GtrHeader * header)
void
gtr_header_update_header (GtrHeader * header)
{
+ GtrProfileManager *prof_manager;
const gchar *comments;
+ prof_manager = gtr_profile_manager_get_default ();
+
/* If needed update the header with the profile values */
- set_profile_values (header);
+ set_profile_values (header, prof_manager);
/* Update the po date */
update_po_date (header);
@@ -649,7 +658,9 @@ gtr_header_update_header (GtrHeader * header)
comments = gtr_header_get_comments (header);
if (comments != NULL)
- update_comments (header, comments);
+ update_comments (header, comments, prof_manager);
else
add_default_comments (header);
+
+ g_object_unref (prof_manager);
}
diff --git a/src/gtr-header.h b/src/gtr-header.h
index 8b41970..27c587f 100644
--- a/src/gtr-header.h
+++ b/src/gtr-header.h
@@ -29,6 +29,8 @@
#include "gtr-msg.h"
+G_BEGIN_DECLS
+
/*
* Utility Macros
*/
@@ -125,4 +127,6 @@ gtr_header_get_type (void)
void gtr_header_update_header (GtrHeader * header);
+G_END_DECLS
+
#endif /* __HEADER_H__ */
diff --git a/src/gtr-profile-manager.c b/src/gtr-profile-manager.c
index fcaf774..5e54250 100644
--- a/src/gtr-profile-manager.c
+++ b/src/gtr-profile-manager.c
@@ -211,58 +211,6 @@ load_profiles (GtrProfileManager *manager)
}
static void
-gtr_profile_manager_init (GtrProfileManager *manager)
-{
- manager->priv = GTR_PROFILE_MANAGER_GET_PRIVATE (manager);
-
- manager->priv->profiles = NULL;
- manager->priv->active_profile = NULL;
-
- load_profiles (manager);
-}
-
-GtrProfileManager *
-gtr_profile_manager_get_default ()
-{
- static GtrProfileManager *manager = NULL;
-
- if (manager == NULL)
- {
- manager = g_object_new (GTR_TYPE_PROFILE_MANAGER, NULL);
- return manager;
- }
-
- return g_object_ref (manager);
-}
-
-GSList *
-gtr_profile_manager_get_profiles (GtrProfileManager *manager)
-{
- g_return_val_if_fail (GTR_IS_PROFILE_MANAGER (manager), NULL);
-
- return manager->priv->profiles;
-}
-
-GtrProfile *
-gtr_profile_manager_get_active_profile (GtrProfileManager *manager)
-{
- g_return_val_if_fail (GTR_IS_PROFILE_MANAGER (manager), NULL);
-
- return manager->priv->active_profile;
-}
-
-void
-gtr_profile_manager_add_profile (GtrProfileManager *manager,
- GtrProfile *profile)
-{
- g_return_if_fail (GTR_IS_PROFILE_MANAGER (manager));
- g_return_if_fail (profile != NULL);
-
- manager->priv->profiles = g_slist_append (manager->priv->profiles,
- profile);
-}
-
-static void
save_profile (GtrProfileManager *manager,
GtrProfile *profile,
xmlNodePtr parent)
@@ -294,8 +242,8 @@ save_profile (GtrProfileManager *manager,
(const xmlChar *)gtr_profile_get_plural_forms (profile));
}
-void
-gtr_profile_manager_save (GtrProfileManager *manager)
+static void
+save_profiles (GtrProfileManager *manager)
{
xmlDocPtr doc;
xmlNodePtr root;
@@ -335,3 +283,108 @@ gtr_profile_manager_save (GtrProfileManager *manager)
xmlFreeDoc (doc);
}
+
+static void
+gtr_profile_manager_init (GtrProfileManager *manager)
+{
+ manager->priv = GTR_PROFILE_MANAGER_GET_PRIVATE (manager);
+
+ manager->priv->profiles = NULL;
+ manager->priv->active_profile = NULL;
+
+ load_profiles (manager);
+}
+
+GtrProfileManager *
+gtr_profile_manager_get_default ()
+{
+ static GtrProfileManager *manager = NULL;
+
+ if (manager == NULL)
+ {
+ manager = g_object_new (GTR_TYPE_PROFILE_MANAGER, NULL);
+ return manager;
+ }
+
+ return g_object_ref (manager);
+}
+
+GSList *
+gtr_profile_manager_get_profiles (GtrProfileManager *manager)
+{
+ g_return_val_if_fail (GTR_IS_PROFILE_MANAGER (manager), NULL);
+
+ return manager->priv->profiles;
+}
+
+GtrProfile *
+gtr_profile_manager_get_active_profile (GtrProfileManager *manager)
+{
+ g_return_val_if_fail (GTR_IS_PROFILE_MANAGER (manager), NULL);
+
+ return manager->priv->active_profile;
+}
+
+void
+gtr_profile_manager_set_active_profile (GtrProfileManager *manager,
+ GtrProfile *profile)
+{
+ g_return_if_fail (GTR_IS_PROFILE_MANAGER (manager));
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+
+ manager->priv->active_profile = profile;
+ save_profiles (manager);
+}
+
+void
+gtr_profile_manager_add_profile (GtrProfileManager *manager,
+ GtrProfile *profile)
+{
+ g_return_if_fail (GTR_IS_PROFILE_MANAGER (manager));
+ g_return_if_fail (profile != NULL);
+
+ if (manager->priv->profiles == NULL)
+ manager->priv->active_profile = profile;
+
+ manager->priv->profiles = g_slist_append (manager->priv->profiles,
+ profile);
+
+ save_profiles (manager);
+}
+
+void
+gtr_profile_manager_remove_profile (GtrProfileManager *manager,
+ GtrProfile *profile)
+{
+ g_return_if_fail (GTR_IS_PROFILE_MANAGER (manager));
+ g_return_if_fail (profile != NULL);
+
+ manager->priv->profiles = g_slist_remove (manager->priv->profiles,
+ profile);
+
+ save_profiles (manager);
+}
+
+void
+gtr_profile_manager_modify_profile (GtrProfileManager *manager,
+ GtrProfile *old_profile,
+ GtrProfile *new_profile)
+{
+ GSList *p;
+
+ g_return_if_fail (GTR_IS_PROFILE_MANAGER (manager));
+ g_return_if_fail (old_profile != NULL);
+ g_return_if_fail (new_profile != NULL);
+
+ p = g_slist_find (manager->priv->profiles,
+ old_profile);
+
+ p->data = new_profile;
+
+ if (manager->priv->active_profile == old_profile)
+ manager->priv->active_profile = new_profile;
+
+ g_object_unref (old_profile);
+
+ save_profiles (manager);
+}
diff --git a/src/gtr-profile-manager.h b/src/gtr-profile-manager.h
index 3f1ae03..a655399 100644
--- a/src/gtr-profile-manager.h
+++ b/src/gtr-profile-manager.h
@@ -59,10 +59,18 @@ GSList *gtr_profile_manager_get_profiles (GtrProfileManager
GtrProfile *gtr_profile_manager_get_active_profile (GtrProfileManager *manager);
+void gtr_profile_manager_set_active_profile (GtrProfileManager *manager,
+ GtrProfile *profile);
+
void gtr_profile_manager_add_profile (GtrProfileManager *manager,
GtrProfile *profile);
-void gtr_profile_manager_save (GtrProfileManager *manager);
+void gtr_profile_manager_remove_profile (GtrProfileManager *manager,
+ GtrProfile *profile);
+
+void gtr_profile_manager_modify_profile (GtrProfileManager *manager,
+ GtrProfile *old_profile,
+ GtrProfile *new_profile);
G_END_DECLS
diff --git a/src/gtr-profile.c b/src/gtr-profile.c
index c13673c..23f3141 100644
--- a/src/gtr-profile.c
+++ b/src/gtr-profile.c
@@ -1,12 +1,12 @@
/*
* (C) 2008 Pablo Sanxiao <psanxiao gmail com>
* Igalia
- *
+ *
* gtranslator is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* gtranslator is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -18,6 +18,7 @@
*
* Authors:
* Pablo Sanxiao <psanxiao gmail com>
+ * Ignacio Casal Quinteiro <icq gnome org>
*/
#include "gtr-application.h"
@@ -26,78 +27,50 @@
#include "gtr-utils.h"
#include <glib.h>
-#include <glib-object.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#ifdef G_OS_WIN32
-#define SAVE_DATADIR DATADIR
-#undef DATADIR
-#include <winsock2.h>
-#define DATADIR SAVE_DATADIR
-#undef SAVE_DATADIR
-#else
-#include <sys/socket.h>
-#endif
-
#define GTR_PROFILE_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE ( \
- (object), \
- GTR_TYPE_PROFILE, \
- GtrProfilePrivate))
+ (object), \
+ GTR_TYPE_PROFILE, \
+ GtrProfilePrivate))
G_DEFINE_TYPE (GtrProfile, gtr_profile, G_TYPE_OBJECT)
- struct _GtrProfilePrivate
- {
- /*
- * Identify the profile
- */
- gchar *name;
-
- /*
- * Translator's information
- */
- gchar *author_name;
- gchar *author_email;
-
- /*
- * Complete language name
- */
- gchar *language_name;
-
- /*
- * Language code. Example: "en" -> English
- */
- gchar *language_code;
-
- /*
- * Set of characters. Example: UTF-8
- */
- gchar *charset;
-
- /*
- * Encoding. Example: 8 bits
- */
- gchar *encoding;
-
- /*
- * Email of the group of translation
- */
- gchar *group_email;
-
- /*
- * Plural forms
- */
- gchar *plurals;
- };
-
- static void gtr_profile_init (GtrProfile * profile)
+
+struct _GtrProfilePrivate
+{
+ /* Identify the profile */
+ gchar *name;
+
+ /* Translator's information */
+ gchar *author_name;
+ gchar *author_email;
+
+ /* Complete language name */
+ gchar *language_name;
+
+ /* Language code. Example: "en" -> English */
+ gchar *language_code;
+
+ /* Set of characters. Example: UTF-8 */
+ gchar *charset;
+
+ /* Encoding. Example: 8 bits */
+ gchar *encoding;
+
+ /* Email of the group of translation */
+ gchar *group_email;
+
+ /* Plural forms */
+ gchar *plural_forms;
+};
+
+static void
+gtr_profile_init (GtrProfile *profile)
{
profile->priv = GTR_PROFILE_GET_PRIVATE (profile);
}
static void
-gtr_profile_finalize (GObject * object)
+gtr_profile_finalize (GObject *object)
{
GtrProfile *profile = GTR_PROFILE (object);
@@ -109,13 +82,13 @@ gtr_profile_finalize (GObject * object)
g_free (profile->priv->charset);
g_free (profile->priv->encoding);
g_free (profile->priv->group_email);
- g_free (profile->priv->plurals);
+ g_free (profile->priv->plural_forms);
G_OBJECT_CLASS (gtr_profile_parent_class)->finalize (object);
}
static void
-gtr_profile_class_init (GtrProfileClass * klass)
+gtr_profile_class_init (GtrProfileClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -131,281 +104,176 @@ gtr_profile_class_init (GtrProfileClass * klass)
GtrProfile *
gtr_profile_new (void)
{
- GtrProfile *profile;
-
- profile = g_object_new (GTR_TYPE_PROFILE, NULL);
-
- return profile;
+ return g_object_new (GTR_TYPE_PROFILE, NULL);
}
const gchar *
-gtr_profile_get_name (GtrProfile * profile)
+gtr_profile_get_name (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->name;
}
void
-gtr_profile_set_name (GtrProfile * profile, const gchar * data)
+gtr_profile_set_name (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->name)
- g_free (profile->priv->name);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->name);
profile->priv->name = g_strdup (data);
}
const gchar *
-gtr_profile_get_author_name (GtrProfile * profile)
+gtr_profile_get_author_name (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->author_name;
}
void
-gtr_profile_set_author_name (GtrProfile * profile, const gchar * data)
+gtr_profile_set_author_name (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->author_name)
- g_free (profile->priv->author_name);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->author_name);
profile->priv->author_name = g_strdup (data);
}
const gchar *
-gtr_profile_get_author_email (GtrProfile * profile)
+gtr_profile_get_author_email (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->author_email;
}
void
-gtr_profile_set_author_email (GtrProfile * profile, const gchar * data)
+gtr_profile_set_author_email (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->author_email)
- g_free (profile->priv->author_email);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->author_email);
profile->priv->author_email = g_strdup (data);
}
const gchar *
-gtr_profile_get_language_name (GtrProfile * profile)
+gtr_profile_get_language_name (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->language_name;
}
void
-gtr_profile_set_language_name (GtrProfile * profile, const gchar * data)
+gtr_profile_set_language_name (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->language_name)
- g_free (profile->priv->language_name);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->language_name);
profile->priv->language_name = g_strdup (data);
}
const gchar *
-gtr_profile_get_language_code (GtrProfile * profile)
+gtr_profile_get_language_code (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->language_code;
}
void
-gtr_profile_set_language_code (GtrProfile * profile, const gchar * data)
+gtr_profile_set_language_code (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->language_code)
- g_free (profile->priv->language_code);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->language_code);
profile->priv->language_code = g_strdup (data);
}
const gchar *
-gtr_profile_get_charset (GtrProfile * profile)
+gtr_profile_get_charset (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->charset;
}
void
-gtr_profile_set_charset (GtrProfile * profile, const gchar * data)
+gtr_profile_set_charset (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->charset)
- g_free (profile->priv->charset);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->charset);
profile->priv->charset = g_strdup (data);
}
const gchar *
-gtr_profile_get_encoding (GtrProfile * profile)
+gtr_profile_get_encoding (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->encoding;
}
void
-gtr_profile_set_encoding (GtrProfile * profile, const gchar * data)
+gtr_profile_set_encoding (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->encoding)
- g_free (profile->priv->encoding);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->encoding);
profile->priv->encoding = g_strdup (data);
}
const gchar *
-gtr_profile_get_group_email (GtrProfile * profile)
+gtr_profile_get_group_email (GtrProfile *profile)
{
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
+
return profile->priv->group_email;
}
void
-gtr_profile_set_group_email (GtrProfile * profile, const gchar * data)
+gtr_profile_set_group_email (GtrProfile *profile,
+ const gchar *data)
{
- if (profile->priv->group_email)
- g_free (profile->priv->group_email);
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
+
+ g_free (profile->priv->group_email);
profile->priv->group_email = g_strdup (data);
}
const gchar *
-gtr_profile_get_plurals (GtrProfile * profile)
+gtr_profile_get_plural_forms (GtrProfile *profile)
{
- return profile->priv->plurals;
-}
+ g_return_val_if_fail (GTR_IS_PROFILE (profile), NULL);
-void
-gtr_profile_set_plurals (GtrProfile * profile, const gchar * data)
-{
- if (profile->priv->plurals)
- g_free (profile->priv->plurals);
- profile->priv->plurals = g_strdup (data);
+ return profile->priv->plural_forms;
}
-/**
- * gtr_profile_xml_new_entry:
- * @doc: a #xmlDocPtr.
- * @profile: a #GtrProfile object.
- *
- * This function create a new #xmlNodePtr entry into #xmlDocPtr.
- *
- */
void
-gtr_profile_xml_new_entry (xmlDocPtr doc, GtrProfile * profile)
-{
- xmlNodePtr root;
- xmlNodePtr profile_node;
-
- root = xmlDocGetRootElement (doc);
- profile_node = xmlNewChild (root, NULL, (const xmlChar *)"profile", NULL);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"profile_name", (const xmlChar *)profile->priv->name);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"author_name",
- (const xmlChar *)profile->priv->author_name);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"author_email",
- (const xmlChar *)profile->priv->author_email);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"language_name",
- (const xmlChar *)profile->priv->language_name);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"language_code",
- (const xmlChar *)profile->priv->language_code);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"charset", (const xmlChar *)profile->priv->charset);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"encoding", (const xmlChar *)profile->priv->encoding);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"group_email",
- (const xmlChar *)profile->priv->group_email);
- xmlNewTextChild (profile_node, NULL, (const xmlChar *)"plurals", (const xmlChar *)profile->priv->plurals);
-}
-
-/**
- * gtr_profile_xml_get_entry:
- * @child: a #xmlNodePtr.
- *
- * This function get the values of the #xmlNodePtr and save them into
- * a #GtrProfile object.
- *
- * Returns: a #GtrProfile object.
- */
-GtrProfile *
-gtr_profile_xml_get_entry (xmlNodePtr child)
+gtr_profile_set_plural_forms (GtrProfile *profile,
+ const gchar *data)
{
- xmlNodePtr node;
- GtrProfile *profile;
-
- profile = gtr_profile_new ();
-
- node = child->xmlChildrenNode;
-
- profile->priv->name = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->author_name = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->author_email = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->language_name = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->language_code = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->charset = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->encoding = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->group_email = (gchar *)xmlNodeGetContent (node);
- node = node->next;
- profile->priv->plurals = (gchar *)xmlNodeGetContent (node);
-
- return profile;
-}
-
-/**
- * gtr_profile_get_profiles_from_xml_file:
- * @filename: a filename path.
- *
- * This function get the profiles saved in a xml file
- * and return a #GList of #GtrProfile objects.
- *
- * returns: a #GList
- */
-GList *
-gtr_profile_get_profiles_from_xml_file (gchar * filename)
-{
- GList *profiles_list = NULL;
- GtrProfile *profile;
- xmlNodePtr root, child, active;
- xmlDocPtr doc;
- gchar *active_profile;
- GList *l;
-
- doc = gtr_xml_open_file (filename);
-
- root = xmlDocGetRootElement (doc);
- child = root->xmlChildrenNode;
- active = child->xmlChildrenNode;
-
- active_profile = (gchar *)xmlNodeGetContent (active);
- child = child->next;
-
- while (child != NULL)
- {
- profile = gtr_profile_xml_get_entry (child);
- profiles_list = g_list_append (profiles_list, profile);
- child = child->next;
- }
-
- for (l = profiles_list; l; l = l->next)
- {
- GtrProfile *profile;
- profile = (GtrProfile *) l->data;
- if (!strcmp (gtr_profile_get_name (profile), active_profile))
- gtr_application_set_active_profile (GTR_APP, profile);
- }
-
- return profiles_list;
-}
-
-gint
-gtr_profile_save_profiles_in_xml (gchar * filename)
-{
-
- xmlNodePtr root;
- xmlDocPtr doc;
- GList *profiles_list, *l;
- GtrProfile *active_profile;
-
- doc = gtr_xml_new_doc ("list_of_profiles");
-
- profiles_list = gtr_application_get_profiles (GTR_APP);
- active_profile = gtr_application_get_active_profile (GTR_APP);
-
- root = xmlDocGetRootElement (doc);
-
- xmlNewChild (root, NULL, (const xmlChar *)"active", (const xmlChar *)gtr_profile_get_name (active_profile));
-
- for (l = profiles_list; l; l = l->next)
- {
- GtrProfile *profile;
- profile = (GtrProfile *) l->data;
- gtr_profile_xml_new_entry (doc, profile);
- }
+ g_return_if_fail (GTR_IS_PROFILE (profile));
+ g_return_if_fail (data != NULL);
- return xmlSaveFile (filename, doc);
+ g_free (profile->priv->plural_forms);
+ profile->priv->plural_forms = g_strdup (data);
}
diff --git a/src/gtr-profile.h b/src/gtr-profile.h
index 78cd73b..7772b0b 100644
--- a/src/gtr-profile.h
+++ b/src/gtr-profile.h
@@ -25,7 +25,6 @@
#include <glib.h>
#include <glib-object.h>
-#include <libxml/tree.h>
/*
* Utility Macros
@@ -66,55 +65,44 @@ struct _GtrProfileClass
/*
* Public methods
*/
-GType
-gtr_profile_get_type (void)
- G_GNUC_CONST;
+GType gtr_profile_get_type (void)G_GNUC_CONST;
- GType gtr_profile_register_type (GTypeModule * module);
+GtrProfile *gtr_profile_new (void);
- GtrProfile *gtr_profile_new (void);
+const gchar *gtr_profile_get_name (GtrProfile *profile);
+void gtr_profile_set_name (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_name (GtrProfile * profile);
- void gtr_profile_set_name (GtrProfile * profile, const gchar * data);
+const gchar *gtr_profile_get_author_name (GtrProfile *profile);
+void gtr_profile_set_author_name (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_author_name (GtrProfile * profile);
- void
- gtr_profile_set_author_name (GtrProfile * profile, const gchar * data);
+const gchar *gtr_profile_get_author_email (GtrProfile *profile);
+void gtr_profile_set_author_email (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_author_email (GtrProfile * profile);
- void
- gtr_profile_set_author_email (GtrProfile * profile,
- const gchar * data);
+const gchar *gtr_profile_get_language_name (GtrProfile *profile);
+void gtr_profile_set_language_name (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_language_name (GtrProfile * profile);
- void
- gtr_profile_set_language_name (GtrProfile * profile,
- const gchar * data);
+const gchar *gtr_profile_get_language_code (GtrProfile *profile);
+void gtr_profile_set_language_code (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_language_code (GtrProfile * profile);
- void
- gtr_profile_set_language_code (GtrProfile * profile,
- const gchar * data);
+const gchar *gtr_profile_get_charset (GtrProfile *profile);
+void gtr_profile_set_charset (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_charset (GtrProfile * profile);
- void gtr_profile_set_charset (GtrProfile * profile, const gchar * data);
+const gchar *gtr_profile_get_encoding (GtrProfile *profile);
+void gtr_profile_set_encoding (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_encoding (GtrProfile * profile);
- void gtr_profile_set_encoding (GtrProfile * profile, const gchar * data);
+const gchar *gtr_profile_get_group_email (GtrProfile *profile);
+void gtr_profile_set_group_email (GtrProfile *profile,
+ const gchar *data);
- const gchar *gtr_profile_get_group_email (GtrProfile * profile);
- void
- gtr_profile_set_group_email (GtrProfile * profile, const gchar * data);
-
- const gchar *gtr_profile_get_plurals (GtrProfile * profile);
- void gtr_profile_set_plurals (GtrProfile * profile, const gchar * data);
-
- void gtr_profile_xml_new_entry (xmlDocPtr doc, GtrProfile * profile);
- GtrProfile *gtr_profile_xml_get_entry (xmlNodePtr child);
-
- GList *gtr_profile_get_profiles_from_xml_file (gchar * filename);
-
-gint
-gtr_profile_save_profiles_in_xml (gchar * filename);
+const gchar *gtr_profile_get_plural_forms (GtrProfile *profile);
+void gtr_profile_set_plural_forms (GtrProfile *profile,
+ const gchar *data);
#endif /* __PROFILE_H__ */
diff --git a/src/gtr-window.c b/src/gtr-window.c
index 41f07a4..d754b58 100644
--- a/src/gtr-window.c
+++ b/src/gtr-window.c
@@ -37,6 +37,7 @@
#include "gtr-statusbar.h"
#include "gtr-utils.h"
#include "gtr-window.h"
+#include "gtr-profile-manager.h"
#include "egg-toolbars-model.h"
#include "egg-toolbar-editor.h"
@@ -103,6 +104,8 @@ struct _GtrWindowPrivate
gint height;
GdkWindowState window_state;
+ GtrProfileManager *prof_manager;
+
gboolean destroy_has_run : 1;
};
@@ -1532,6 +1535,7 @@ gtr_window_init (GtrWindow * window)
window->priv = GTR_WINDOW_GET_PRIVATE (window);
window->priv->destroy_has_run = FALSE;
+ window->priv->prof_manager = gtr_profile_manager_get_default ();
gtr_window_draw (window);
@@ -1607,6 +1611,12 @@ gtr_window_dispose (GObject * object)
priv->action_group = NULL;
}
+ if (priv->prof_manager != NULL)
+ {
+ g_object_unref (priv->prof_manager);
+ priv->prof_manager = NULL;
+ }
+
/* Now that there have broken some reference loops,
* force collection again.
*/
diff --git a/src/main.c b/src/main.c
index 8ef58bf..3d84067 100644
--- a/src/main.c
+++ b/src/main.c
@@ -223,10 +223,6 @@ main (gint argc, gchar * argv[])
GtrWindow *window;
GSList *file_list = NULL;
GOptionContext *context;
- gchar *filename;
- gchar *config_folder;
- GList *profiles_list = NULL;
- GFile *file;
gchar *pixmaps_dir;
gchar **uris;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]