Reviewers: ,


Please review this at http://codereview.tryton.org/503005/

Affected files:
  M tryton/gui/window/win_form.py


Index: tryton/gui/window/win_form.py
===================================================================

--- a/tryton/gui/window/win_form.py
+++ b/tryton/gui/window/win_form.py
@@ -50,7 +50,7 @@
         self.but_cancel = None
         self.but_ok = None
         self.but_new = None
-        if new:
+        if new or self.save_current:
             icon_cancel = gtk.STOCK_CANCEL
             self.but_cancel = self.win.add_button(icon_cancel,
                     gtk.RESPONSE_CANCEL)
@@ -62,8 +62,18 @@
             self.but_new.set_focus_on_click(False)
self.but_new.set_accel_path('<tryton>/Form/New', self.accel_group)

-        self.but_ok = self.win.add_button(gtk.STOCK_OK,
-            gtk.RESPONSE_OK)
+        if self.save_current:
+            self.but_ok = gtk.Button(_('_Save'))
+            img_save = gtk.Image()
+            img_save.set_from_stock('tryton-save', gtk.ICON_SIZE_BUTTON)
+            self.but_ok.set_image(img_save)
+ self.but_ok.set_accel_path('<tryton>/Form/Save', self.accel_group)
+            self.but_ok.set_can_default(True)
+            self.but_ok.show()
+            self.win.add_action_widget(self.but_ok, gtk.RESPONSE_OK)
+        else:
+            self.but_ok = self.win.add_button(gtk.STOCK_OK,
+                gtk.RESPONSE_OK)
         self.but_ok.set_focus_on_click(False)
         self.but_ok.add_accelerator('clicked', self.accel_group,
             gtk.keysyms.Return, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
@@ -255,6 +265,12 @@
             self.screen.screen_container.alternate_viewport.connect(
                     'key-press-event', self.on_keypress)

+        if self.save_current:
+            self.screen.signal_connect(self, 'record-message',
+                self.activate_save)
+            self.screen.signal_connect(self, 'record-modified',
+                self.activate_save)
+
         self.register()
         self.win.show()

@@ -366,6 +382,12 @@
         line = '(%s/%s)' % (name, signal_data[1])
         self.label.set_text(line)

+    def activate_save(self, *args):
+        modified = self.screen.modified()
+        self.but_ok.props.sensitive = modified
+        self.win.set_default_response(
+            gtk.RESPONSE_OK if modified else gtk.RESPONSE_CANCEL)
+
     def response(self, win, response_id):
         validate = False
         cancel_responses = (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT)



--
[email protected] mailing list

Reply via email to