From 087c97f5bae17a593db4d0a94ab9638c8c973cdb Mon Sep 17 00:00:00 2001 From: carolineclark Date: Wed, 28 Oct 2015 14:33:32 +0000 Subject: [PATCH] Made character creator button insensitive until changing character --- kano_avatar_gui/CharacterCreator.py | 9 ++++++++- kano_profile_gui/character_screens.py | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/kano_avatar_gui/CharacterCreator.py b/kano_avatar_gui/CharacterCreator.py index 4b477744..408d9073 100644 --- a/kano_avatar_gui/CharacterCreator.py +++ b/kano_avatar_gui/CharacterCreator.py @@ -7,7 +7,7 @@ # import os -from gi.repository import Gtk +from gi.repository import Gtk, GObject from kano_avatar.logic import AvatarCreator, get_avatar_conf from kano_avatar.paths import AVATAR_DEFAULT_LOC, AVATAR_DEFAULT_NAME from kano_avatar_gui.Menu import Menu @@ -25,6 +25,10 @@ class CharacterCreator(Gtk.EventBox): avatar_cr = AvatarCreator(configuration) meny_y_pos = 20 + __gsignals__ = { + 'character_changed': (GObject.SIGNAL_RUN_FIRST, None, ()) + } + def __init__(self, randomise=False, no_sync=False): Gtk.EventBox.__init__(self) @@ -142,6 +146,9 @@ def _update_img(self, widget, selected): displ_img = self.avatar_cr.create_avatar() self._imgbox.set_image(displ_img) + # Emit the character changed signal when the image is updated + self.emit('character_changed') + def disable_buttons(self): self._menu.disable_all_buttons() self.randomise_button.set_sensitive(False) diff --git a/kano_profile_gui/character_screens.py b/kano_profile_gui/character_screens.py index 96169634..3361bdc7 100644 --- a/kano_profile_gui/character_screens.py +++ b/kano_profile_gui/character_screens.py @@ -106,8 +106,14 @@ def __init__(self, win, char_creator): self._win.pack_in_main_content(self.char_creator) self.char_creator.reset_selected_menu_items() - save_changes_button = KanoButton(_("Save changes").upper()) - save_changes_button.connect("clicked", self.save_changes) + self._save_changes_button = KanoButton(_("Save changes").upper()) + self._save_changes_button.connect("clicked", self.save_changes) + self._save_changes_button.set_sensitive(False) + + self.char_creator.connect( + "character_changed", + self._make_button_sensitive + ) discard_changes_button = OrangeButton(_("Discard").upper()) discard_changes_button.connect("clicked", self.discard) @@ -116,7 +122,7 @@ def __init__(self, win, char_creator): button_box = Gtk.ButtonBox() button_box.pack_start(discard_changes_button, False, False, 0) - button_box.pack_start(save_changes_button, False, False, 0) + button_box.pack_start(self._save_changes_button, False, False, 0) button_box.pack_start(empty_label, False, False, 0) self._win.pack_in_bottom_bar(button_box) @@ -140,3 +146,6 @@ def _go_back_to_display_screen(self): self._win.empty_bottom_bar() self._win.menu_bar.enable_buttons() CharacterDisplay(self._win) + + def _make_button_sensitive(self, widget=None): + self._save_changes_button.set_sensitive(True)