From b6d975a32ee9e821d963e1c9ed64037ad8f9d4a3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pekka=20Geh=C3=B6r?= Date: Fri, 16 Jan 2009 09:31:55 +0200 Subject: [PATCH] added a few amendments --- irreco/src/core/irreco_background_creator_dlg.c | 47 +++++++++++-- irreco/src/core/irreco_button_creator_dlg.c | 88 ++++++++++++++++++------- 2 files changed, 107 insertions(+), 28 deletions(-) diff --git a/irreco/src/core/irreco_background_creator_dlg.c b/irreco/src/core/irreco_background_creator_dlg.c index 1e547c11..183c2fa9 100644 --- a/irreco/src/core/irreco_background_creator_dlg.c +++ b/irreco/src/core/irreco_background_creator_dlg.c @@ -325,7 +325,21 @@ static void _select_image(GtkButton *button, IrrecoBackgroundCreatorDlg *self) gtk_widget_destroy(file_dlg); IRRECO_RETURN } +gboolean +irreco_background_creator_dlg_check_details(IrrecoBackgroundCreatorDlg *self) +{ + gboolean rvalue = TRUE; + IRRECO_ENTER + /*check that it is not the same name button*/ + if (irreco_string_table_exists (self->theme->backgrounds, + gtk_entry_get_text(GTK_ENTRY(self->entry_name)))) { + irreco_error_dlg(GTK_WINDOW(self), + "Background has already existed"); + rvalue = FALSE; + } + IRRECO_RETURN_BOOL(rvalue); +} /** @} */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ @@ -345,7 +359,7 @@ gboolean irreco_background_creator_dlg_run(IrrecoData *irreco_data, gint response; gboolean loop = TRUE; gboolean rvalue = FALSE; - + gboolean edit = FALSE; IRRECO_ENTER self = (IrrecoBackgroundCreatorDlg*)irreco_background_creator_dlg_create( @@ -361,6 +375,7 @@ gboolean irreco_background_creator_dlg_run(IrrecoData *irreco_data, /* Sets the bg details */ _set_bg_details(self, irreco_theme, bg); + edit = TRUE; } do { @@ -368,14 +383,33 @@ gboolean irreco_background_creator_dlg_run(IrrecoData *irreco_data, switch (response) { case GTK_RESPONSE_OK: - irreco_theme_bg_set(bg, + if (edit) { + irreco_theme_bg_set(bg, gtk_entry_get_text(GTK_ENTRY( self->entry_name)), self->filename->str); - irreco_theme_bg_print(bg); - loop = FALSE; - rvalue = TRUE; - + irreco_theme_bg_print(bg); + loop = FALSE; + rvalue = TRUE; + + } else { + /* Check button name */ + if (irreco_background_creator_dlg_check_details( + self)) { + irreco_theme_bg_set(bg, + gtk_entry_get_text( + GTK_ENTRY( + self->entry_name)), + self->filename->str); + irreco_theme_bg_print(bg); + loop = FALSE; + rvalue = TRUE; + } else { + rvalue = FALSE; + loop = TRUE; + } + + } break; case GTK_RESPONSE_CANCEL: IRRECO_DEBUG("GTK_RESPONSE_CANCEL\n"); @@ -409,6 +443,7 @@ _set_bg_details(IrrecoBackgroundCreatorDlg *self, IrrecoTheme *irreco_theme, /* Set button label */ gtk_button_set_label(GTK_BUTTON(self->add_button), "Save"); gtk_window_set_title(GTK_WINDOW(self), _("Edit Background")); + gtk_widget_set_sensitive(self->entry_name, FALSE); IRRECO_RETURN } diff --git a/irreco/src/core/irreco_button_creator_dlg.c b/irreco/src/core/irreco_button_creator_dlg.c index 45abb6c0..3e4f4986 100644 --- a/irreco/src/core/irreco_button_creator_dlg.c +++ b/irreco/src/core/irreco_button_creator_dlg.c @@ -49,7 +49,8 @@ #define IRRECO_BUTTON_PREVIEW_WIDHT (IRRECO_SCREEN_WIDTH/5) #define IRRECO_BUTTON_PREVIEW_HEIGHT (IRRECO_SCREEN_HEIGHT/5) -#define BUTTON_LIST_DIR "/media/mmc2/irreco/.button_list.conf" +/*#define BUTTON_LIST_DIR "/usr/lib/irreco/buttonnames/button_list.conf"*/ +#define BUTTON_LIST_DIR (BUTTONLIST"button_list.conf") /** Loader states. */ enum { @@ -459,20 +460,23 @@ static void fill_buttons_combobox(IrrecoButtonCreatorDlg *self) GError *error = NULL; IRRECO_ENTER - button_list = g_key_file_new(); - g_key_file_load_from_file(button_list, BUTTON_LIST_DIR, - G_KEY_FILE_NONE, &error); - keys = g_key_file_get_keys(button_list, "button-names", &length, - &error); - for(i=0; icombobox_name), - g_key_file_get_string(button_list, - "button-names", keys[i], &error)); - } - g_key_file_free(button_list); + if (irreco_file_exists(BUTTON_LIST_DIR)) { + button_list = g_key_file_new(); + g_key_file_load_from_file(button_list, BUTTON_LIST_DIR, + G_KEY_FILE_NONE, &error); + keys = g_key_file_get_keys(button_list, "button-names", &length, + &error); + for(i=0; icombobox_name), + g_key_file_get_string(button_list, + "button-names", keys[i], &error)); + } + g_key_file_free(button_list); + } if(keys != NULL) g_free(keys); + IRRECO_RETURN } @@ -483,8 +487,6 @@ _unbutton_size_changed(GtkSpinButton *spinbutton, IrrecoButtonCreatorDlg*self) IRRECO_ENTER - IRRECO_PRINTF("PATH: %s\n", self->unpressed_path->str); - _draw_preview_image(GTK_BUTTON(self->text_format_up), self, image_path->str); @@ -498,8 +500,6 @@ _button_size_changed(GtkSpinButton *spinbutton, IrrecoButtonCreatorDlg*self) IRRECO_ENTER - IRRECO_PRINTF("PATH: %s\n", self->unpressed_path->str); - _draw_preview_image(GTK_BUTTON(self->text_format_down), self, image_path->str); @@ -653,8 +653,6 @@ static void _select_image(GtkButton *button, IrrecoButtonCreatorDlg *self) irreco_error_dlg_printf(GTK_WINDOW(file_dlg), _("Cannot open image \"%s\""), basename); - IRRECO_PRINTF("Image invalid.\n"); - g_free(basename); g_free(filename); } @@ -663,7 +661,34 @@ static void _select_image(GtkButton *button, IrrecoButtonCreatorDlg *self) gtk_widget_destroy(file_dlg); IRRECO_RETURN } +gboolean irreco_button_creator_dlg_check_details(IrrecoButtonCreatorDlg *self) +{ + gboolean rvalue = TRUE; + gchar *name = NULL; + gchar *style_name = NULL; + IRRECO_ENTER + name = gtk_combo_box_get_active_text(GTK_COMBO_BOX( + self->combobox_name)); + style_name = g_strconcat(self->theme->name->str ,"/", name, NULL); + /*check that it is not the same name button*/ + if (irreco_string_table_exists (self->theme->buttons, name)) { + irreco_error_dlg(GTK_WINDOW(self), + "Button has already existed"); + rvalue = FALSE; + } else if (irreco_string_table_exists(self->theme->buttons, + style_name)) { + irreco_error_dlg(GTK_WINDOW(self), + "Button has already existed"); + rvalue = FALSE; + } + if (g_utf8_strlen(name, 1) ==0) { + irreco_error_dlg(GTK_WINDOW(self), + "Set Button name"); + rvalue = FALSE; + } + IRRECO_RETURN_BOOL(rvalue); +} /** @} */ /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ @@ -683,6 +708,7 @@ gboolean irreco_button_creator_dlg_run(IrrecoData *irreco_data, gint response; gboolean loop = TRUE; gboolean rvalue = FALSE; + gboolean edit = FALSE; IRRECO_ENTER self = (IrrecoButtonCreatorDlg*)irreco_button_creator_dlg_new( @@ -694,6 +720,8 @@ gboolean irreco_button_creator_dlg_run(IrrecoData *irreco_data, if (g_utf8_strlen(button->name->str, 1) >0) { /* Sets the button details */ _set_button_details(self, irreco_theme, button); + edit = TRUE; + } do { @@ -701,11 +729,26 @@ gboolean irreco_button_creator_dlg_run(IrrecoData *irreco_data, switch (response) { case GTK_RESPONSE_OK: - _set_new_button_details(self, button); + if (edit) { + _set_new_button_details(self, button); + irreco_theme_button_print(button); + rvalue = TRUE; + loop = FALSE; + + + } else { + /* Check button name */ + if (irreco_button_creator_dlg_check_details(self)) { + _set_new_button_details(self, button); + irreco_theme_button_print(button); + rvalue = TRUE; + loop = FALSE; + } else { + rvalue = FALSE; + loop = TRUE; + } - irreco_theme_button_print(button); - rvalue = TRUE; - loop = FALSE; + } break; case GTK_RESPONSE_CANCEL: @@ -770,6 +813,7 @@ _set_button_details(IrrecoButtonCreatorDlg *self, IrrecoTheme *irreco_theme, /* Set button label & windown title */ gtk_button_set_label(GTK_BUTTON(self->add_button), "Save"); gtk_window_set_title(GTK_WINDOW(self), _("Edit Button")); + gtk_widget_set_sensitive(self->combobox_name, FALSE); IRRECO_RETURN -- 2.11.4.GIT