Skip to content

Commit bbe1ca3

Browse files
committed
gmoccapy -change system dialog to accept halui messages
ok and cancel are used by the system unlock dialog as an example. To do this properly for all dialogs would require some more thought.
1 parent 44ac96f commit bbe1ca3

2 files changed

Lines changed: 62 additions & 13 deletions

File tree

src/emc/usr_intf/gmoccapy/dialogs.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,39 +36,65 @@ class Dialogs(GObject.GObject):
3636

3737
__gsignals__ = {
3838
'play_sound': (GObject.SignalFlags.RUN_FIRST, GObject.TYPE_NONE, (GObject.TYPE_STRING,)),
39+
'system-dialog-result': (GObject.SignalFlags.RUN_FIRST , GObject.TYPE_NONE, (GObject.TYPE_INT,))
3940
}
4041

41-
def __init__(self):
42+
def __init__(self, caller):
4243
GObject.GObject.__init__(self)
44+
self.sys_dialog = self.system_dialog(caller)
45+
46+
def dialog_ext_control(self, answer):
47+
if self.sys_dialog.get_visible():
48+
if answer:
49+
self.sys_dialog.response(Gtk.ResponseType.ACCEPT)
50+
else:
51+
self.sys_dialog.response(Gtk.ResponseType.CANCEL)
4352

4453
# This dialog is for unlocking the system tab
4554
# The unlock code number is defined at the top of the page
4655
def system_dialog(self, caller):
4756
dialog = Gtk.Dialog(_("Enter System Unlock Code"),
4857
caller.widgets.window1,
4958
Gtk.DialogFlags.DESTROY_WITH_PARENT)
59+
dialog.set_modal(True)
5060
label = Gtk.Label(_("Enter System Unlock Code"))
5161
label.modify_font(Pango.FontDescription("sans 20"))
5262
calc = gladevcp.Calculator()
63+
dialog._calc = calc
64+
dialog._caller = caller
5365
dialog.vbox.pack_start(label, False, False, 0)
5466
dialog.vbox.add(calc)
5567
calc.set_value("")
5668
calc.set_property("font", "sans 20")
5769
calc.set_editable(True)
5870
calc.integer_entry_only(True)
5971
calc.num_pad_only(True)
60-
calc.entry.connect("activate", lambda w : dialog.emit("response", Gtk.ResponseType.ACCEPT))
72+
calc.entry.connect("activate", lambda w : self.on_system_response(dialog,Gtk.ResponseType.ACCEPT))
6173
dialog.parse_geometry("360x400")
6274
dialog.set_decorated(True)
63-
dialog.show_all()
75+
dialog.connect("response", self.on_system_response)
76+
return dialog
77+
78+
def show_system_dialog(self):
79+
self.sys_dialog._calc.set_value("")
80+
self.sys_dialog.show_all()
6481
self.emit("play_sound", "alert")
65-
response = dialog.run()
66-
code = calc.get_value()
67-
dialog.destroy()
68-
if response == Gtk.ResponseType.ACCEPT:
69-
if code == int(caller.unlock_code):
70-
return True
71-
return False
82+
83+
def on_system_response(self, dialog, result):
84+
code = dialog._calc.get_value()
85+
print('Code:',code)
86+
rtn = -1
87+
if result == Gtk.ResponseType.ACCEPT:
88+
if code == int(dialog._caller.unlock_code):
89+
print('Yes')
90+
rtn = 1
91+
else:
92+
print('No')
93+
rtn = 0
94+
else:
95+
print('Cancelled')
96+
self.emit('system-dialog-result',rtn)
97+
dialog.hide()
7298

7399
def entry_dialog(self, caller, data = None, header = _("Enter value") , label = _("Enter the value to set"), integer = False):
74100
dialog = Gtk.Dialog(header,

src/emc/usr_intf/gmoccapy/gmoccapy.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,9 @@ def __init__(self, argv):
258258
self.icon_theme.append_search_path(ICON_THEME_DIR)
259259
self.icon_theme.append_search_path(USER_ICON_THEME_DIR)
260260

261-
self.dialogs = dialogs.Dialogs()
261+
self.dialogs = dialogs.Dialogs(caller = self)
262262
self.dialogs.connect("play_sound", self._on_play_sound)
263+
self.dialogs.connect('system-dialog-result', self.system_dialog_return)
263264

264265
# check the arguments given from the command line (Ini file)
265266
self.user_mode = False
@@ -421,6 +422,8 @@ def __init__(self, argv):
421422
self.GSTAT.connect('macro-call-request', lambda w, name: self.request_macro_call(name))
422423
self.GSTAT.connect('cycle-start-request', lambda w, state :self.request_start(state))
423424
self.GSTAT.connect('cycle-pause-request', lambda w, state: self.request_pause(state))
425+
self.GSTAT.connect('ok-request', lambda w, state: self.dialogs.dialog_ext_control(1))
426+
self.GSTAT.connect('cancel-request', lambda w, state: self.dialogs.dialog_ext_control(0))
424427

425428
# get if run from line should be used
426429
self.run_from_line = self.prefs.getpref("run_from_line", "no_run", str)
@@ -4199,8 +4202,9 @@ def on_tbtn_setup_toggled(self, widget, data=None):
41994202
code = True
42004203
# else we ask for the code using the system.dialog
42014204
if self.widgets.rbt_use_unlock.get_active():
4202-
if self.dialogs.system_dialog(self):
4203-
code = True
4205+
self.dialogs.show_system_dialog()
4206+
# we will wait for response
4207+
return
42044208
# Lets see if the user has the right to enter settings
42054209
if code:
42064210
self.widgets.ntb_main.set_current_page(1)
@@ -4253,6 +4257,25 @@ def on_tbtn_setup_toggled(self, widget, data=None):
42534257

42544258
widget.set_image(self.widgets.img_settings)
42554259

4260+
# return code from system dialog
4261+
def system_dialog_return(self,widget,result):
4262+
print(widget,result)
4263+
# Lets see if the user has the right to enter settings
4264+
if result == 1:
4265+
self.widgets.ntb_main.set_current_page(1)
4266+
self.widgets.ntb_setup.set_current_page(0)
4267+
self.widgets.ntb_button.set_current_page(_BB_SETUP)
4268+
#widget.set_image(self.widgets.img_settings_on)
4269+
elif result == 0:
4270+
if self.widgets.rbt_hal_unlock.get_active():
4271+
message = _("Hal Pin is low, Access denied")
4272+
else:
4273+
message = _("wrong code entered, Access denied")
4274+
self.dialogs.warning_dialog(self, _("Just to warn you"), message)
4275+
self.widgets.tbtn_setup.set_active(False)
4276+
#widget.set_image(self.widgets.img_settings)
4277+
4278+
42564279
# Show or hide the user tabs
42574280
def on_tbtn_user_tabs_toggled(self, widget, data=None):
42584281
if widget.get_active():

0 commit comments

Comments
 (0)