diff options
author | m32 <mak@trisoft.com.pl> | 2020-02-29 01:59:33 +0300 |
---|---|---|
committer | m32 <mak@trisoft.com.pl> | 2020-02-29 01:59:33 +0300 |
commit | 26fce18f6b8604fdf407f55ad4ee56771a0823f4 (patch) | |
tree | 0adb9d1110df4f9800721f418d1370ed54c8d2f2 /python | |
parent | f9aa68aa765ca37e0904f99c7791ceb88e3528e0 (diff) |
proper dialog size and message handling
Diffstat (limited to 'python')
-rw-r--r-- | python/configs/plug/far2l/ucharmap.py | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/python/configs/plug/far2l/ucharmap.py b/python/configs/plug/far2l/ucharmap.py index 240f7aa5..fe4b0e2b 100644 --- a/python/configs/plug/far2l/ucharmap.py +++ b/python/configs/plug/far2l/ucharmap.py @@ -33,14 +33,15 @@ class Plugin(PluginBase): (self.ffic.DI_DOUBLEBOX, 3, 1, 38, 18, 0, {'Selected':0}, 0, 0, self.s2f("Character Map"), 0), (self.ffic.DI_BUTTON, 7, 17, 12, 18, 0, {'Selected':0}, 1, self.ffic.DIF_DEFAULT + self.ffic.DIF_CENTERGROUP, self.s2f("OK"), 0), (self.ffic.DI_BUTTON, 13, 17, 38, 18, 0, {'Selected':0}, 0, self.ffic.DIF_CENTERGROUP, self.s2f("Cancel"), 0), - (self.ffic.DI_USERCONTROL, 3, 13, 38, 17, 0, {'Selected':0}, 0, self.ffic.DIF_FOCUS, self.ffi.NULL, 0), + (self.ffic.DI_USERCONTROL, 3, 2, 38, 16, 0, {'Selected':0}, 0, self.ffic.DIF_FOCUS, self.ffi.NULL, 0), ] self.cur_row = 0 self.cur_col = 0 self.max_col = 32 self.max_row = len(symbols) // self.max_col - self.first_text_item = 4 + self.first_text_item = len(Items) self.symbols = symbols + self.text = None for i in range(len(symbols)): row = i // self.max_col @@ -51,7 +52,11 @@ class Plugin(PluginBase): def DialogProc(hDlg, Msg, Param1, Param2): if Msg == self.ffic.DN_INITDIALOG: self.Rebuild(hDlg) - elif Msg == self.ffic.DN_KEY: + return self.info.DefDlgProc(hDlg, Msg, Param1, Param2) + elif Msg == self.ffic.DN_BTNCLICK: + return self.info.DefDlgProc(hDlg, Msg, Param1, Param2) + elif Msg == self.ffic.DN_KEY and Param1 == self.first_text_item-1: + #print('key DialogProc(', hDlg, ', DN_KEY,', Param1, ',', Param2, ')') if Param2 == self.ffic.KEY_LEFT: self.cur_col -= 1 elif Param2 == self.ffic.KEY_UP: @@ -61,16 +66,14 @@ class Plugin(PluginBase): elif Param2 == self.ffic.KEY_DOWN: self.cur_row += 1 elif Param2 == self.ffic.KEY_ENTER: - print('DialogProc(', hDlg, ', DN_KEY,', Param1, ',', Param2, ')') offset = self.cur_row*self.max_col+self.cur_col - ch = self.symbols[offset] - print('enter row:', self.cur_row, 'col:', self.cur_col, 'ch=', ch) + self.text = self.symbols[offset] + #print('enter:', offset, 'row:', self.cur_row, 'col:', self.cur_col, 'ch:', self.text) return 0 elif Param2 == self.ffic.KEY_ESC: return 0 else: - print('key DialogProc(', hDlg, ', DN_KEY,', Param1, ',', Param2, ')') - return 1 + return self.info.DefDlgProc(hDlg, Msg, Param1, Param2) if self.cur_col == self.max_col: self.cur_col = 0 elif self.cur_col == -1: @@ -82,23 +85,27 @@ class Plugin(PluginBase): self.Rebuild(hDlg) return 1 elif Msg == self.ffic.DN_MOUSECLICK: - print('DialogProc(', hDlg, ', DN_MOUSECLICK,', Param1, ',', Param2, ')') + #print('mou DialogProc(', hDlg, ', DN_MOUSECLICK,', Param1, ',', Param2, ')') ch = Param1 - self.first_text_item if ch >= 0: + focus = self.info.SendDlgMessage(hDlg, self.ffic.DM_GETFOCUS, 0, 0) + #print('ch=', ch, 'focus:', focus) + if focus != self.first_text_item-1: + self.info.SendDlgMessage(hDlg, self.ffic.DM_SETFOCUS, self.first_text_item-1, 0) self.cur_row = ch // self.max_col self.cur_col = ch % self.max_col self.cur_col = min(max(0, self.cur_col), self.max_col-1) self.cur_row = min(max(0, self.cur_row), self.max_row-1) + offset = self.cur_row*self.max_col+self.cur_col + self.text = self.symbols[offset] self.Rebuild(hDlg) - return 1 - else: - print('click') return 0 return self.info.DefDlgProc(hDlg, Msg, Param1, Param2) fdi = self.ffi.new("struct FarDialogItem []", Items) hDlg = self.info.DialogInit(self.info.ModuleNumber, -1, -1, 42, 20, self.s2f("Character Map"), fdi, len(fdi), 0, 0, DialogProc, 0) res = self.info.DialogRun(hDlg) - if res != -1: + if res == 1: + print('dialog text:', self.text) pass self.info.DialogFree(hDlg) |