1import os 2from cudatext import * 3from random import randint 4from .repro_labels import * 5 6def callback_main_close(id_dlg, id_ctl, data='', info=''): 7 print('callback_main_close') 8 9 dlg_proc(id_dlg, DLG_HIDE) 10 11 #hide tab added to sidebar 12 app_proc(PROC_SIDEPANEL_REMOVE, 'Side dialog') 13 app_proc(PROC_SIDEPANEL_ACTIVATE, 'Tree') 14 15def callback_main_menu(id_dlg, id_ctl, data='', info=''): 16 print('callback_main_menu') 17 nctl = dlg_proc(id_dlg, DLG_CTL_FIND, prop='btn_menu') 18 d = dlg_proc(id_dlg, DLG_CTL_PROP_GET, index=nctl) 19 20 nx = d['x'] 21 ny = d['y']+d['h'] 22 nx, ny = dlg_proc(id_dlg, DLG_COORD_LOCAL_TO_SCREEN, index=nx, index2=ny) 23 24 h_menu = menu_proc(0, MENU_CREATE) 25 menu_proc(h_menu, MENU_ADD, command=2700, caption='About1') 26 menu_proc(h_menu, MENU_ADD, command=2700, caption='About2') 27 menu_proc(h_menu, MENU_ADD, command=2700, caption='About3') 28 menu_proc(h_menu, MENU_SHOW, command='%d,%d'%(nx, ny)) 29 30 31class Command: 32 border = True 33 btn_overlay = 0 34 35 def run_modal(self): 36 print('run_modal begin') 37 h = self.init_maindlg() 38 dlg_proc(h, DLG_SHOW_MODAL) 39 self.show_form_prop(h) 40 dlg_proc(h, DLG_FREE) 41 print('run_modal end') 42 43 def run_nonmodal(self): 44 h = self.init_maindlg() 45 dlg_proc(h, DLG_SHOW_NONMODAL) 46 47 def run_dlgcustom(self): 48 dlg_custom('TestDlg', 200, 100, 'type=label\1pos=6,6,200,0\1cap=Test') 49 50 def callback_linklabel_click(self, id_dlg, id_ctl, data='', info=''): 51 msg_box('Linklabel clicked', MB_OK) 52 53 def callback_buttondlg(self, id_dlg, id_ctl, data='', info=''): 54 h = id_dlg 55 n_btn_border = dlg_proc(h, DLG_CTL_FIND, prop='btn_border') 56 n_btn_icon = dlg_proc(h, DLG_CTL_FIND, prop='btn_icon') 57 58 if id_ctl==n_btn_border: 59 self.border = not self.border 60 val = DBORDER_DIALOG if self.border else DBORDER_NONE 61 dlg_proc(h, DLG_PROP_SET, prop={'border': val} ) 62 63 if id_ctl==n_btn_icon: 64 id_btn = dlg_proc(h, DLG_CTL_HANDLE, name='btn_icon') 65 66 #toggle button's checked 67 b = button_proc(id_btn, BTN_GET_CHECKED) 68 button_proc(id_btn, BTN_SET_CHECKED, not b) 69 button_proc(id_btn, BTN_SET_BOLD, not b) 70 71 #set imagelist+icon for button 72 id_imglist = app_proc(PROC_GET_TAB_IMAGELIST, '') 73 button_proc(id_btn, BTN_SET_KIND, BTNKIND_TEXT_ICON_VERT) 74 button_proc(id_btn, BTN_SET_IMAGELIST, id_imglist) 75 button_proc(id_btn, BTN_SET_IMAGEINDEX, int(b)) 76 77 #set overlay text 78 self.btn_overlay+=1 79 button_proc(id_btn, BTN_SET_OVERLAY, self.btn_overlay) 80 81 #set colored lines 82 color1 = 0x00ff00 83 color2 = 0x0000ff 84 button_proc(id_btn, BTN_SET_COLOR_LINE, color1) 85 button_proc(id_btn, BTN_SET_COLOR_LINE2, color2) 86 87 88 def callback_splitter_left(self, id_dlg, id_ctl, data='', info=''): 89 h = id_dlg 90 print('callback_splitter_left') 91 92 def callback_combo_change(self, id_dlg, id_ctl, data='', info=''): 93 94 p = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='c1') 95 text = p['val'] 96 dlg_proc(id_dlg, DLG_PROP_SET, prop={'cap': 'text: '+text}) 97 98 def callback_combo_change2(self, id_dlg, id_ctl, data='', info=''): 99 100 p = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='c2') 101 index = p['val'] 102 dlg_proc(id_dlg, DLG_PROP_SET, prop={'cap': 'index: '+str(index)}) 103 104 def callback_maindlg(self, id_dlg, id_ctl, data='', info=''): 105 print('callback_maindlg(info=%s)' % repr(info)) 106 h = id_dlg 107 108 n_chk_panel = dlg_proc(h, DLG_CTL_FIND, prop='chk_panel') 109 n_edit = dlg_proc(h, DLG_CTL_FIND, prop='edit1') 110 n_btn_cap = dlg_proc(h, DLG_CTL_FIND, prop='btn_caption') 111 n_btn_dlg = dlg_proc(h, DLG_CTL_FIND, prop='btn_dlg') 112 n_btn_paint = dlg_proc(h, DLG_CTL_FIND, prop='btn_paint') 113 n_color = dlg_proc(h, DLG_CTL_FIND, prop='color') 114 n_chk_dock = dlg_proc(h, DLG_CTL_FIND, prop='chk_dock') 115 116 if id_ctl==n_chk_panel: 117 d = dlg_proc(h, DLG_CTL_PROP_GET, index=n_color) 118 dlg_proc(h, DLG_CTL_PROP_SET, index=n_color, prop={'vis': not d['vis']} ) 119 120 if id_ctl==n_btn_cap: 121 d = dlg_proc(h, DLG_CTL_PROP_GET, index=n_edit) 122 dlg_proc(h, DLG_PROP_SET, prop={'cap': 'entered: '+d['val'] } ) 123 124 if id_ctl==n_btn_dlg: 125 hh = self.init_tempdlg() 126 docked = dlg_proc(h, DLG_CTL_PROP_GET, index=n_chk_dock)['val'] == '1' 127 if docked: 128 dlg_proc(hh, DLG_DOCK, prop='R', index=h) 129 dlg_proc(hh, DLG_SHOW_NONMODAL) 130 else: 131 dlg_proc(hh, DLG_SHOW_MODAL) 132 133 134 def callback_listbox_click_x(self, id_dlg, id_ctl, data='', info=''): 135 136 index_sel = listbox_proc(self.id_listbox, LISTBOX_GET_SEL) 137 print('listbox: x clicked for item %d'%index_sel) 138 139 def callback_listbox_click_header(self, id_dlg, id_ctl, data='', info=''): 140 141 print('listbox: header clicked for column %d'%data) 142 143 def callback_listbox_drawitem(self, id_dlg, id_ctl, data='', info=''): 144 145 #print('listbox on_draw_item, data:', data) 146 id_canvas = data['canvas'] 147 index = data['index'] 148 rect = data['rect'] 149 index_sel = listbox_proc(self.id_listbox, LISTBOX_GET_SEL) 150 151 show_x = listbox_proc(self.id_listbox, LISTBOX_GET_SHOW_X)>0 152 inc_x = 14 if show_x else 0 153 154 #set bold for each 5th 155 if index%5==0: 156 style = FONT_B + FONT_I 157 color = 0xB00000 158 else: 159 style = 0 160 color = 0 161 canvas_proc(id_canvas, CANVAS_SET_FONT, text='default', color=color, style=style) 162 163 if index==index_sel: 164 back_color = 0x806000+(0xF<<index) 165 if back_color>0xFFFF00: 166 back_color = 0xFFFF00 167 canvas_proc(id_canvas, CANVAS_SET_BRUSH, color=back_color, style=BRUSH_SOLID) 168 canvas_proc(id_canvas, CANVAS_SET_PEN, color=0x00F0F0, size=1, style=PEN_STYLE_SOLID) 169 canvas_proc(id_canvas, CANVAS_RECT, x=rect[0], y=rect[1], x2=rect[2], y2=rect[3]) 170 else: 171 canvas_proc(id_canvas, CANVAS_SET_BRUSH, color=0x6060D0, style=BRUSH_SOLID) 172 canvas_proc(id_canvas, CANVAS_RECT_FILL, x=rect[0], y=rect[1], x2=rect[2], y2=rect[3]) 173 174 canvas_proc(id_canvas, CANVAS_TEXT, 175 text='item index %d'%index, 176 x=rect[0] + 20 + index*4 + inc_x, 177 y=rect[1] + 2 ) 178 179 #this imagelist has 2 test icons: 0, 1 180 img_list = app_proc(PROC_GET_TAB_IMAGELIST, '') 181 imagelist_proc(img_list, IMAGELIST_PAINT, (id_canvas, rect[0]+inc_x, rect[1], index%2)) 182 183 184 def callback_listbox_check(self, id_dlg, id_ctl, data='', info=''): 185 186 print('listbox option "owner" click') 187 prop = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='chk_owner') 188 chk = prop['val'] == '1' 189 190 listbox_proc(self.id_listbox, LISTBOX_SET_DRAWN, index=(1 if chk else 0)) 191 192 def callback_listbox_check_x(self, id_dlg, id_ctl, data='', info=''): 193 194 val = listbox_proc(self.id_listbox, LISTBOX_GET_SHOW_X) 195 val = (val+1)%3 # possible values: 0..2 196 listbox_proc(self.id_listbox, LISTBOX_SET_SHOW_X, index=val) 197 listbox_proc(self.id_listbox, LISTBOX_SET_HOTTRACK, index=(1 if val>0 else 0)) 198 199 200 def callback_listbox_columns(self, id_dlg, id_ctl, data='', info=''): 201 202 print('listbox columns click') 203 204 listbox_proc(self.id_listbox, LISTBOX_SET_COLUMN_SEP, text='|') 205 cols = listbox_proc(self.id_listbox, LISTBOX_GET_COLUMNS) 206 print('listbox columns:', cols) 207 if not cols: 208 listbox_proc(self.id_listbox, LISTBOX_SET_COLUMNS, text=[-50,30,0]) 209 else: 210 listbox_proc(self.id_listbox, LISTBOX_SET_COLUMNS, text=[]) 211 212 213 def callback_editor_on_change(self, id_dlg, id_ctl, data='', info=''): 214 215 print('editor on_change') 216 217 def callback_editor_on_caret(self, id_dlg, id_ctl, data='', info=''): 218 219 print('editor on_caret') 220 221 def callback_editor_on_scroll(self, id_dlg, id_ctl, data='', info=''): 222 223 print('editor on_scroll') 224 225 def callback_editor_on_paste(self, id_dlg, id_ctl, data='', info=''): 226 227 print('editor on_paste', data) 228 229 def callback_editor_on_menu(self, id_dlg, id_ctl, data='', info=''): 230 231 msg_box('Event handler on_menu blocked std context menu', MB_OK) 232 return False 233 234 def callback_editor_on_click_gutter(self, id_dlg, id_ctl, data='', info=''): 235 236 print('editor on_click_gutter', data) 237 238 def callback_editor_on_click_gap(self, id_dlg, id_ctl, data='', info=''): 239 240 print('editor on_click_gap', data) 241 242 def callback_editor_on_click_link(self, id_dlg, id_ctl, data='', info=''): 243 244 print('editor on_click_link', data) 245 246 def callback_editor_on_key_down(self, id_dlg, id_ctl, data='', info=''): 247 248 print('editor on_key_down', data) 249 250 def callback_editor_on_key_up(self, id_dlg, id_ctl, data='', info=''): 251 252 print('editor on_key_up', data) 253 254 255 def do_paint_mark(self, id_dlg, id_ctl): 256 print('do_paint_mark') 257 258 #paint circle of randon color 259 n = randint(0, 0xfffff) 260 canvas_id = dlg_proc(id_dlg, DLG_CTL_HANDLE, name='paint') 261 canvas_proc(canvas_id, CANVAS_SET_PEN, color=0xA0) 262 canvas_proc(canvas_id, CANVAS_SET_BRUSH, color=n+0xA0FF00) 263 canvas_proc(canvas_id, CANVAS_RECT, x=0, y=0, x2=50, y2=50) 264 canvas_proc(canvas_id, CANVAS_SET_BRUSH, color=n+0xA0A0) 265 canvas_proc(canvas_id, CANVAS_ELLIPSE, x=0, y=0, x2=50, y2=50) 266 267 #paint 2 first icons of standard file-tabs imagelist 268 il = app_proc(PROC_GET_TAB_IMAGELIST, '') 269 imagelist_proc(il, IMAGELIST_PAINT, (canvas_id, 0, 0, 0)) 270 imagelist_proc(il, IMAGELIST_PAINT, (canvas_id, 16, 16, 1)) 271 272 def callback_maindlg_paint_click(self, id_dlg, id_ctl, data='', info=''): 273 self.do_paint_mark(id_dlg, id_ctl) 274 275 def callback_maindlg_pos_save(self, id_dlg, id_ctl, data='', info=''): 276 self.pos_str = dlg_proc(id_dlg, DLG_POS_GET_STR) 277 278 def callback_maindlg_pos_load(self, id_dlg, id_ctl, data='', info=''): 279 if hasattr(self, 'pos_str'): 280 dlg_proc(id_dlg, DLG_POS_SET_FROM_STR, self.pos_str) 281 282 def callback_maindlg_setprops(self, id_dlg, id_ctl, data='', info=''): 283 res = dlg_input_ex(2, 284 'Set sidebar icon props', 285 'ImageIndex:', 286 '0', 287 'Hint:', 288 'test_panel') 289 if res is None: return 290 index = str(res[0]) 291 title = res[1] 292 print('set sidebar props:', index, title) 293 app_proc(PROC_SIDEPANEL_SET_PROP, ('Side dialog', index, title)) 294 295 def callback_tempdlg_on_key_down(self, id_dlg, id_ctl, data='', info=''): 296 print('callback_tempdlg_on_key_down') 297 298 state = data 299 #was needed before Cud 1.55.2: 300 #state = app_proc(PROC_GET_KEYSTATE, '') 301 str_key =\ 302 ('Meta+' if 'm' in state else '')+\ 303 ('Ctrl+' if 'c' in state else '')+\ 304 ('Alt+' if 'a' in state else '')+\ 305 ('Shift+' if 's' in state else '')+\ 306 app_proc(PROC_HOTKEY_INT_TO_STR, str(id_ctl)) 307 308 n_info = dlg_proc(id_dlg, DLG_CTL_FIND, 'label_info') 309 dlg_proc(id_dlg, DLG_CTL_PROP_SET, index=n_info, prop={'cap': 'keypress: '+str_key }) 310 return True 311 312 def callback_tempdlg_on_close_query(self, id_dlg, id_ctl, data='', info=''): 313 print('callback_tempdlg_on_close_query') 314 n_canclose = dlg_proc(id_dlg, DLG_CTL_FIND, 'chk_canclose') 315 d = dlg_proc(id_dlg, DLG_CTL_PROP_GET, index=n_canclose) 316 return d['val']=='1' 317 318 def callback_tempdlg(self, id_dlg, id_ctl, data='', info=''): 319 print('callback_tempdlg') 320 321 n_close = dlg_proc(id_dlg, DLG_CTL_FIND, 'btn_close') 322 n_clone = dlg_proc(id_dlg, DLG_CTL_FIND, 'btn_clonedlg') 323 324 if id_ctl==n_close: 325 dlg_proc(id_dlg, DLG_HIDE) 326 327 if id_ctl==n_clone: 328 print(' tempdlg begin') 329 d = dlg_proc(id_dlg, DLG_PROP_GET) 330 hh = self.init_tempdlg(d['x']+20, d['y']+20) 331 dlg_proc(hh, DLG_SHOW_MODAL) 332 dlg_proc(hh, DLG_FREE) 333 print(' tempdlg end') 334 335 336 def callback_statusbar_click(self, id_dlg, id_ctl, data='', info=''): 337 print('callback_statusbar_click: id_dlg={}; id_ctl={}; data={}; info={};'.format( 338 id_dlg, id_ctl, data, info)) 339 340 def callback_toolbar_menu(self, id_dlg, id_ctl, data='', info=''): 341 print('callback_toolbar_menu') 342 id_bar = dlg_proc(id_dlg, DLG_CTL_HANDLE, name='tb') 343 cnt = toolbar_proc(id_bar, TOOLBAR_GET_COUNT) 344 index = toolbar_proc(id_bar, TOOLBAR_GET_INDEX_HOVERED) 345 print('buttons count: %d, index hovered: %d'%(cnt, index)) 346 347 def init_buttondlg(self): 348 h=dlg_proc(0, DLG_CREATE) 349 dlg_proc(h, DLG_PROP_SET, prop={ 350 'cap': 'button test', 351 'w': 400, 352 'h': 300, 353 'w_min': 200, 354 'h_min': 250 355 }) 356 357 n=dlg_proc(h, DLG_CTL_ADD, 'button_ex') 358 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 359 'name': 'btn_border', 360 'cap':'toggle window border', 361 'x': 10, 362 'y': 20, 363 'w': 200, 364 'on_change': 'cuda_testing_dlg_proc.callback_buttondlg' 365 }) 366 367 n=dlg_proc(h, DLG_CTL_ADD, 'button_ex') 368 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 369 'name': 'btn_icon', 370 'cap':'toggle bold/icon/overlay', 371 'x': 10, 372 'y': 50, 373 'w': 200, 374 'h': 50, 375 'on_change': 'cuda_testing_dlg_proc.callback_buttondlg' 376 }) 377 378 return h 379 380 def init_splitterdlg(self): 381 h=dlg_proc(0, DLG_CREATE) 382 dlg_proc(h, DLG_PROP_SET, prop={ 383 'cap': 'splitter test', 384 'w': 650, 385 'h': 400, 386 'border': DBORDER_SIZE, 387 }) 388 389 n=dlg_proc(h, DLG_CTL_ADD, 'panel') 390 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 391 'name': 'panel_L', 392 'cap': 'panel_L', 393 'x': 0, 394 'y': 0, 395 'w': 200, 396 'w_min': 150, 397 'align': ALIGN_LEFT, 398 'color': 0x60c060, 399 }) 400 401 n=dlg_proc(h, DLG_CTL_ADD, 'panel') 402 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 403 'name': 'panel_R', 404 'cap': 'panel_R', 405 'x': 400, 406 'y': 0, 407 'w': 200, 408 'align': ALIGN_RIGHT, 409 'color': 0xd08060 410 }) 411 412 n=dlg_proc(h, DLG_CTL_ADD, 'panel') 413 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 414 'name': 'panel_B', 415 'cap': 'panel_B', 416 'x': 0, 417 'y': 0, 418 'h': 100, 419 'align': ALIGN_BOTTOM, 420 'color': 0xa0e080 421 }) 422 423 n=dlg_proc(h, DLG_CTL_ADD, 'panel') 424 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 425 'name': 'panel_LL', 426 'cap': 'LL', 427 'x': 150, 428 'y': 100, 429 'w': 60, 430 'h': 60, 431 'p': 'panel_L', 432 'a_l': None, 433 'a_t': ('','-'), 434 'a_r': ('',']'), 435 'color': 0x8080b0 436 }) 437 438 n=dlg_proc(h, DLG_CTL_ADD, 'splitter') 439 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 440 'name': 'sp_L', 441 'x': 210, 442 'y': 0, 443 'align': ALIGN_LEFT, 444 'ex0': True, 445 'ex1': True, 446 'act': True, 447 'color': 0xff, 448 'on_change': self.callback_splitter_left, 449 }) 450 451 n=dlg_proc(h, DLG_CTL_ADD, 'splitter') 452 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 453 'name': 'sp_R', 454 'x': 220, 455 'y': 0, 456 'align': ALIGN_RIGHT, 457 'ex0': True, 458 'ex1': True, 459 'color': 0xff, 460 }) 461 462 n=dlg_proc(h, DLG_CTL_ADD, 'splitter') 463 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 464 'name': 'sp_B', 465 'x': 0, 466 'y': 0, 467 'align': ALIGN_BOTTOM, 468 'ex0': True, 469 'ex1': True, 470 }) 471 472 return h 473 474 def init_maindlg(self): 475 h=dlg_proc(0, DLG_CREATE) 476 dlg_proc(h, DLG_PROP_SET, prop={ 477 'cap': 'main dlg', 478 'x': 100, 479 'y': 50, 480 'w': 400, 481 'h': 380, 482 'w_min': 200, 483 'h_min': 300, 484 'border': DBORDER_SIZE, 485 'topmost': True, 486 }) 487 488 n=dlg_proc(h, DLG_CTL_ADD, 'label') 489 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 490 'name': 'label0', 491 'cap': 'label', 492 'x': 10, 493 'y': 10, 494 'w': 50, 495 'tag': 'some_tag', 496 }) 497 498 n=dlg_proc(h, DLG_CTL_ADD, 'check') 499 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 500 'name': 'chk_panel', 501 'cap': 'show panel', 502 'val': True, 503 'x': 60, 504 'y': 8, 505 'w': 200, 506 'act': True, 507 'on_change': 'cuda_testing_dlg_proc.callback_maindlg' 508 }) 509 510 n=dlg_proc(h, DLG_CTL_ADD, 'edit') 511 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 512 'name': 'edit1', 513 'val':'edit1', 514 'x': 10, 515 'y': 30, 516 'w': 200, 517 }) 518 519 n=dlg_proc(h, DLG_CTL_ADD, 'button') 520 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 521 'name': 'btn_caption', 522 'cap': 'upd caption', 523 'x': 10, 524 'y': 60, 525 'w': 100, 526 'on_change': 'cuda_testing_dlg_proc.callback_maindlg' 527 }) 528 529 n=dlg_proc(h, DLG_CTL_ADD, 'button') 530 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 531 'name': 'btn_move', 532 'cap': 'move button', 533 'x': 120, 534 'y': 60, 535 'w': 100, 536 'on_change': 'cuda_testing_dlg_proc.callback_main_movebtn' 537 }) 538 539 n=dlg_proc(h, DLG_CTL_ADD, 'colorpanel') 540 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 541 'name': 'color', 542 'cap': ' ', 543 'x': 380, 544 'y': 5, 545 'w': 15, 546 'h': 290, 547 'ex0': 1, 548 'ex1': 0xc0f0f0, 549 'on_mouse_enter': lambda id_dlg, id_ctl, data='', info='': print('panel on_mouse_enter'), 550 'on_mouse_exit': lambda id_dlg, id_ctl, data='', info='': print('panel on_mouse_exit'), 551 'on_mouse_down': lambda id_dlg, id_ctl, data='', info='': print('panel on_mouse_down', data), 552 'on_mouse_up': lambda id_dlg, id_ctl, data='', info='': print('panel on_mouse_up', data), 553 }) 554 #anchors of colorpanel 555 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 556 'a_l': None, 557 'a_r': ('', ']'), 558 'a_b': ('', ']'), 559 'sp_a': 6, 560 }) 561 562 n=dlg_proc(h, DLG_CTL_ADD, 'button') 563 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 564 'name': 'btn_x_panel', 565 'cap': '?', 566 'x': 0, 567 'y': 0, 568 'w': 15, 569 'h': 15, 570 'p': 'color', 571 'a_t': ('color', '-'), 572 'on_change': 'cuda_testing_dlg_proc.callback_maindlg' 573 }) 574 575 n=dlg_proc(h, DLG_CTL_ADD, 'button') 576 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 577 'name': 'btn_dlg', 578 'cap': 'temp dlg', 579 'x': 10, 580 'y': 200, 581 'w': 100, 582 'on_change': 'cuda_testing_dlg_proc.callback_maindlg' 583 }) 584 585 n=dlg_proc(h, DLG_CTL_ADD, 'button') 586 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 587 'name': 'btn_menu', 588 'cap': 'menu here', 589 'x': 10, 590 'y': 230, 591 'w': 100, 592 'on_change': callback_main_menu 593 }) 594 595 n=dlg_proc(h, DLG_CTL_ADD, 'button') 596 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 597 'name': 'btn_paint', 598 'cap': 'paint here', 599 'x': 10, 600 'y': 260, 601 'w': 100, 602 'on_change': self.callback_maindlg_paint_click 603 }) 604 605 n=dlg_proc(h, DLG_CTL_ADD, 'button') 606 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 607 'name': 'btn_pos_save', 608 'cap': 'pos: to str', 609 'x': 10, 610 'y': 290, 611 'w': 100, 612 'on_change': self.callback_maindlg_pos_save 613 }) 614 615 n=dlg_proc(h, DLG_CTL_ADD, 'button') 616 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 617 'name': 'btn_pos_load', 618 'cap': 'pos: from str', 619 'x': 10, 620 'y': 320, 621 'w': 100, 622 'on_change': self.callback_maindlg_pos_load 623 }) 624 625 n=dlg_proc(h, DLG_CTL_ADD, 'button') 626 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 627 'name': 'btn_setprops', 628 'cap': 'sidebar icon...', 629 'x': 10, 630 'y': 350, 631 'w': 100, 632 'on_change': self.callback_maindlg_setprops 633 }) 634 635 n=dlg_proc(h, DLG_CTL_ADD, 'button') 636 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 637 'name': 'btn_callbk', 638 'cap': 'complex callback', 639 'x': 120, 640 'y': 200, 641 'w': 120, 642 'on_change': 'module=cuda_testing_dlg_proc.testcall;func=callback_main_complex;info=1234;' 643 }) 644 645 n=dlg_proc(h, DLG_CTL_ADD, 'button') 646 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 647 'name': 'btn_ok', 648 'cap': 'close', 649 'x': 120, 650 'y': 230, 651 'w': 120, 652 'on_change': callback_main_close 653 }) 654 655 n=dlg_proc(h, DLG_CTL_ADD, 'linklabel') 656 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 657 'name': 'link1', 658 'cap': 'linklabel', 659 'x': 10, 660 'y': 150, 661 'w': 120, 662 'on_click': self.callback_linklabel_click 663 }) 664 665 n=dlg_proc(h, DLG_CTL_ADD, 'check') 666 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 667 'name': 'chk_dock', 668 'cap': 'temp dlg: docked', 669 'x': 10, 670 'y': 170, 671 'w': 120 672 }) 673 674 #test for live callback 675 n=dlg_proc(h, DLG_CTL_ADD, 'paintbox') 676 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 677 'name': 'paint', 678 'x': 250, 679 'y': 200, 680 'w': 60, 681 'h': 60, 682 'on_click': self.callback_maindlg_paint_click 683 }) 684 685 nfocus = dlg_proc(h, DLG_CTL_FIND, 'edit1') 686 dlg_proc(h, DLG_CTL_FOCUS, index=nfocus) 687 return h 688 689 690 def show_form_prop(self, h): 691 res = dlg_proc(h, DLG_PROP_GET) 692 print('form prop:', res) 693 694 cnt = dlg_proc(h, DLG_CTL_COUNT) 695 for n in range(cnt): 696 res = dlg_proc(h, DLG_CTL_PROP_GET, index=n) 697 print('c%d:'%n, res) 698 699 700 def init_listdlg(self): 701 702 h=dlg_proc(0, DLG_CREATE) 703 dlg_proc(h, DLG_PROP_SET, prop={ 704 'cap': 'listbox test', 705 'w': 420, 706 'h': 300 707 }) 708 709 n=dlg_proc(h, DLG_CTL_ADD, 'listbox_ex') 710 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 711 'name': 'list1', 712 'x': 10, 713 'y': 10, 714 'w': 400, 715 'h': 200, 716 'on_click_x': self.callback_listbox_click_x, 717 'on_click_header': self.callback_listbox_click_header, 718 'on_draw_item': self.callback_listbox_drawitem, 719 }) 720 721 h_list = dlg_proc(h, DLG_CTL_HANDLE, index=n) 722 self.id_listbox = h_list 723 724 for i in range(40): 725 listbox_proc(h_list, LISTBOX_ADD, index=-1, text='first-%d|2-%d|3-%d'%(i,i,i)) 726 listbox_proc(h_list, LISTBOX_SET_SEL, index=2) 727 listbox_proc(h_list, LISTBOX_SET_ITEM_H, index=28) 728 listbox_proc(h_list, LISTBOX_SET_DRAWN, index=1) 729 listbox_proc(h_list, LISTBOX_SET_HEADER, text='header0|header1|header2') 730 731 n=dlg_proc(h, DLG_CTL_ADD, 'check') 732 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 733 'name': 'chk_owner', 734 'cap': 'Owner-drawn listbox', 735 'x': 10, 736 'y': 220, 737 'w': 200, 738 'val': True, 739 'act': True, 740 'on_change': self.callback_listbox_check, 741 }) 742 743 n=dlg_proc(h, DLG_CTL_ADD, 'button') 744 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 745 'name': 'btn_columns', 746 'cap': 'Make columns', 747 'x': 10, 748 'y': 250, 749 'w': 120, 750 'on_change': self.callback_listbox_columns, 751 }) 752 753 n=dlg_proc(h, DLG_CTL_ADD, 'button') 754 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 755 'name': 'btn_x', 756 'cap': 'Toggle x marks', 757 'x': 130, 758 'y': 250, 759 'w': 140, 760 'on_change': self.callback_listbox_check_x, 761 }) 762 763 return h 764 765 766 def init_combo_dlg(self): 767 768 h=dlg_proc(0, DLG_CREATE) 769 dlg_proc(h, DLG_PROP_SET, prop={ 770 'cap': 'combo test', 771 'w': 420, 772 'h': 300 773 }) 774 775 n=dlg_proc(h, DLG_CTL_ADD, 'combo') 776 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 777 'name': 'c1', 778 'x': 10, 779 'y': 10, 780 'w': 400, 781 'items': '\t'.join(['Aaa', 'Bbb', 'Ccc', 'Ddd']), 782 'val': 'init text', 783 'act': True, # for on_change 784 'on_change': self.callback_combo_change, 785 }) 786 787 n=dlg_proc(h, DLG_CTL_ADD, 'combo_ro') 788 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 789 'name': 'c2', 790 'x': 10, 791 'y': 80, 792 'w': 400, 793 'items': '\t'.join(['Aaaaa', 'Bbbbb', 'Ccccc', 'Ddddd']), 794 'val': 1, 795 'act': True, # for on_change 796 'on_change': self.callback_combo_change2, 797 }) 798 799 return h 800 801 802 def init_tempdlg(self, x=150, y=150): 803 h=dlg_proc(0, DLG_CREATE) 804 dlg_proc(h, DLG_PROP_SET, prop={ 805 'cap': 'temp dlg', 806 'x': x, 807 'y': y, 808 'w': 300, 809 'h': 200, 810 'color': 0xc0c0c0, 811 'on_key_down': 'cuda_testing_dlg_proc.callback_tempdlg_on_key_down', 812 'on_close_query': 'cuda_testing_dlg_proc.callback_tempdlg_on_close_query', 813 }) 814 815 n=dlg_proc(h, DLG_CTL_ADD, 'button') 816 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 817 'name': 'btn_close', 818 'cap': 'close', 819 'x': 20, 820 'y': 20, 821 'w': 100, 822 'on_change': 'cuda_testing_dlg_proc.callback_tempdlg' 823 }) 824 825 n=dlg_proc(h, DLG_CTL_ADD, 'button') 826 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 827 'name': 'btn_clonedlg', 828 'cap': 'clone dlg', 829 'x': 20, 830 'y': 50, 831 'w': 100, 832 'on_change': 'cuda_testing_dlg_proc.callback_tempdlg' 833 }) 834 835 n=dlg_proc(h, DLG_CTL_ADD, 'check') 836 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 837 'name': 'chk_canclose', 838 'cap': 'can close form', 839 'x': 20, 840 'y': 80, 841 'w': 100, 842 'val': True 843 }) 844 845 n=dlg_proc(h, DLG_CTL_ADD, 'label') 846 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 847 'name': 'label_info', 848 'cap': '(shows key press)', 849 'x': 20, 850 'y': 160, 851 'w': 100 852 }) 853 854 return h 855 856 857 def do_editor_gap(self, ed, num): 858 859 id_bitmap, id_canvas = ed.gap(GAP_MAKE_BITMAP, 600, 50) 860 canvas_proc(id_canvas, CANVAS_SET_BRUSH, color=0xa0ffa0) 861 canvas_proc(id_canvas, CANVAS_SET_ANTIALIAS, style=ANTIALIAS_ON) 862 canvas_proc(id_canvas, CANVAS_POLYGON, '200,0,300,30,200,49') 863 canvas_proc(id_canvas, CANVAS_SET_BRUSH, color=0xffffff, style=BRUSH_CLEAR) 864 canvas_proc(id_canvas, CANVAS_TEXT, x=230, y=10, text='gap %d'%(num+1)) 865 canvas_proc(id_canvas, CANVAS_SET_BRUSH, color=0xffffff, style=BRUSH_SOLID) 866 ed.gap(GAP_ADD, num, id_bitmap, tag=10) 867 868 869 def init_editor_dlg(self): 870 871 h=dlg_proc(0, DLG_CREATE) 872 dlg_proc(h, DLG_PROP_SET, prop={ 873 'cap': 'editor test', 874 'w': 750, 875 'h': 520 876 }) 877 878 n=dlg_proc(h, DLG_CTL_ADD, 'editor') 879 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 880 'name': 'ed_main', 881 'align': ALIGN_TOP, 882 'sp_a': 6, 883 'h': 350, 884 'on_change': self.callback_editor_on_change, 885 'on_caret': self.callback_editor_on_caret, 886 'on_scroll': self.callback_editor_on_scroll, 887 'on_key_down': self.callback_editor_on_key_down, 888 'on_key_up': self.callback_editor_on_key_up, 889 'on_click_gutter': self.callback_editor_on_click_gutter, 890 'on_click_gap': self.callback_editor_on_click_gap, 891 'on_click_link': self.callback_editor_on_click_link, 892 'on_paste': self.callback_editor_on_paste, 893 'on_menu': self.callback_editor_on_menu, 894 }) 895 896 h_editor = dlg_proc(h, DLG_CTL_HANDLE, name='ed_main') 897 ed0 = Editor(h_editor) 898 ed0.set_text_all( 899r"""#include <stdio.h> 900 901int main(int argc, char *argv[]) 902{ 903 printf("Hello.\n"); 904 return 0; 905} 906 907/* clickable links: www.test.com , https://yahoo.com */ 908""") 909 #ed0.set_caret(0, 3, 0, 2) 910 #ed0.set_prop(PROP_CARET_SHAPE, 2) 911 ed0.set_prop(PROP_MINIMAP, True) 912 ed0.set_prop(PROP_LEXER_FILE, 'C++') 913 self.do_editor_gap(ed0, 2) 914 915 #----------------------------------------- 916 idc=dlg_proc(h, DLG_CTL_ADD,"editor_edit"); 917 dlg_proc(h, DLG_CTL_PROP_SET, index=idc, prop={ 918 'name':'ed_edit', 'x':5, 'y':370, 'w':200, 'h':26 919 }) 920 eh=dlg_proc(h, DLG_CTL_HANDLE, name='ed_edit') 921 e1=Editor(eh) 922 e1.set_prop(PROP_COMBO_ITEMS, '\n'.join(('aa','bb','ee')) ) 923 e1.set_text_all('editor_edit') 924 925 #----------------------------------------- 926 idc=dlg_proc(h, DLG_CTL_ADD,"editor_combo"); 927 dlg_proc(h, DLG_CTL_PROP_SET, index=idc, prop={ 928 'name':'ed_combo', 'x':5, 'y':400, 'w':200, 'h':26 929 }) 930 931 eh=dlg_proc(h, DLG_CTL_HANDLE, name='ed_combo') 932 e2=Editor(eh) 933 e2.set_prop(PROP_COMBO_ITEMS, '\n'.join(('aa','bb','dd')) ) 934 e2.set_text_all('editor_combo') 935 936 dlg_proc(h, DLG_CTL_FOCUS, name='ed_main') 937 938 return h 939 940 941 def callback_main_movebtn(self, id_dlg, id_ctl): 942 print('callback_main_movebtn') 943 d = dlg_proc(id_dlg, DLG_CTL_PROP_GET, index=id_ctl) 944 dlg_proc(id_dlg, DLG_CTL_PROP_SET, index=id_ctl, prop={'x': d['x']+10, 'y': d['y']+8 } ) 945 946 947 def test_pages(self): 948 id = dlg_proc(0, DLG_CREATE) 949 950 dlg_proc(id, DLG_PROP_SET, { 951 'w': 400, 952 'h': 300, 953 'cap': 'Test type=pages, tabs' 954 }) 955 956 n = dlg_proc(id, DLG_CTL_ADD, 'pages') 957 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 958 'name': 'mypages', 959 'x': 10, 960 'y': 10, 961 'w': 380, 962 'h': 140, 963 'items': '\t'.join(['page-A', 'page-B', 'page-C']), 964 'on_change': self.callback_pages_on_change, 965 'act': True, 966 }) 967 968 n = dlg_proc(id, DLG_CTL_ADD, 'tabs') 969 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 970 'name': 'mytabs', 971 'x': 10, 972 'y': 160, 973 'w': 380, 974 'h': 50, 975 'items': '\t'.join(['tab-1', 'tab-2', 'tab-3']), 976 'on_change': self.callback_tabs_on_change, 977 'act': True, 978 }) 979 980 n = dlg_proc(id, DLG_CTL_ADD, 'label') 981 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 982 'name': 'tab_label', 983 'x': 10, 984 'y': 220, 985 'w': 300, 986 'cap': '(tabs not clicked)', 987 }) 988 989 n = dlg_proc(id, DLG_CTL_ADD, 'check') 990 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 991 'name': 'check0', 992 'x': 10, 993 'y': 10, 994 'w': 300, 995 'cap': 'check-A', 996 'p':'mypages.0' 997 }) 998 999 n = dlg_proc(id, DLG_CTL_ADD, 'button') 1000 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1001 'name': 'btn_a', 1002 'x': 10, 1003 'y': 40, 1004 'w': 150, 1005 'cap': 'toggle check-A', 1006 'p':'mypages.0', 1007 'on_change': self.callback_pages_button_a, 1008 }) 1009 1010 n = dlg_proc(id, DLG_CTL_ADD, 'check') 1011 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1012 'name': 'check1', 1013 'x': 20, 1014 'y': 20, 1015 'w': 300, 1016 'cap': 'check-B', 1017 'p': 'mypages.1' 1018 }) 1019 1020 n = dlg_proc(id, DLG_CTL_ADD, 'label') 1021 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1022 'name': 'lab_b', 1023 'x': 20, 1024 'y': 50, 1025 'w': 300, 1026 'cap': 'label-B', 1027 'p': 'mypages.1' 1028 }) 1029 n = dlg_proc(id, DLG_CTL_ADD, 'label') 1030 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1031 'name': 'lab_c', 1032 'x': 20, 1033 'y': 50, 1034 'w': 300, 1035 'cap': 'label-C', 1036 'p': 'mypages.2' 1037 }) 1038 1039 dlg_proc(id, DLG_SHOW_MODAL) 1040 dlg_proc(id, DLG_FREE) 1041 1042 def test_toolbar(self): 1043 dir_icons = os.path.join(app_path(APP_DIR_DATA), 'sideicons', 'octicons_20x20') 1044 fn_icon1 = os.path.join(dir_icons, 'console.png') 1045 fn_icon2 = os.path.join(dir_icons, 'find.png') 1046 print('icon1:', fn_icon1) 1047 print('icon2:', fn_icon2) 1048 1049 id = dlg_proc(0, DLG_CREATE) 1050 1051 dlg_proc(id, DLG_PROP_SET, { 1052 'w': 500, 1053 'h': 300, 1054 'cap': 'Test type=toolbar/statusbar', 1055 'border': DBORDER_SIZE, 1056 }) 1057 1058 #------------ 1059 n = dlg_proc(id, DLG_CTL_ADD, 'toolbar') 1060 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1061 'name': 'tb', 1062 'x': 0, 1063 'y': 0, 1064 'w': 20, 1065 'h': 40, 1066 'align': ALIGN_TOP, 1067 'color': 0x80B080, 1068 'on_menu': self.callback_toolbar_menu, 1069 }) 1070 1071 tb_id = dlg_proc(id, DLG_CTL_HANDLE, index=n) 1072 1073 imglist_id = toolbar_proc(tb_id, TOOLBAR_GET_IMAGELIST) 1074 imagelist_proc(imglist_id, IMAGELIST_SET_SIZE, value=(20,20)) 1075 icon1 = imagelist_proc(imglist_id, IMAGELIST_ADD, value=fn_icon1) 1076 icon2 = imagelist_proc(imglist_id, IMAGELIST_ADD, value=fn_icon2) 1077 print('icon indexes:', icon1, icon2) 1078 1079 toolbar_proc(tb_id, TOOLBAR_ADD_ITEM) 1080 count = toolbar_proc(tb_id, TOOLBAR_GET_COUNT) 1081 btn_id = toolbar_proc(tb_id, TOOLBAR_GET_BUTTON_HANDLE, index=count-1) 1082 button_proc(btn_id, BTN_SET_KIND, BTNKIND_TEXT_ICON_HORZ) 1083 button_proc(btn_id, BTN_SET_TEXT, 'About') 1084 button_proc(btn_id, BTN_SET_IMAGELIST, imglist_id) 1085 button_proc(btn_id, BTN_SET_IMAGEINDEX, icon1) 1086 button_proc(btn_id, BTN_SET_DATA1, self.show_about) 1087 1088 toolbar_proc(tb_id, TOOLBAR_ADD_ITEM) 1089 count = toolbar_proc(tb_id, TOOLBAR_GET_COUNT) 1090 btn_id = toolbar_proc(tb_id, TOOLBAR_GET_BUTTON_HANDLE, index=count-1) 1091 button_proc(btn_id, BTN_SET_KIND, BTNKIND_TEXT_ICON_HORZ) 1092 button_proc(btn_id, BTN_SET_TEXT, 'Hotkey help') 1093 button_proc(btn_id, BTN_SET_IMAGELIST, imglist_id) 1094 button_proc(btn_id, BTN_SET_IMAGEINDEX, icon2) 1095 button_proc(btn_id, BTN_SET_DATA1, 2707) 1096 1097 toolbar_proc(tb_id, TOOLBAR_ADD_ITEM) 1098 count = toolbar_proc(tb_id, TOOLBAR_GET_COUNT) 1099 btn_id = toolbar_proc(tb_id, TOOLBAR_GET_BUTTON_HANDLE, index=count-1) 1100 button_proc(btn_id, BTN_SET_KIND, BTNKIND_TEXT_CHOICE) 1101 button_proc(btn_id, BTN_SET_TEXT, '???') 1102 button_proc(btn_id, BTN_SET_ARROW, True) 1103 button_proc(btn_id, BTN_SET_ITEMS, '\n'.join(['choice-aa', 'choice-bbbb', 'choice-cccc', 'choice-ddd'])) 1104 button_proc(btn_id, BTN_SET_ITEMINDEX, 3) 1105 button_proc(btn_id, BTN_SET_WIDTH, 150) 1106 button_proc(btn_id, BTN_SET_DATA1, lambda: print('choice in menu')) 1107 1108 toolbar_proc(tb_id, TOOLBAR_UPDATE) 1109 1110 #---------- 1111 n = dlg_proc(id, DLG_CTL_ADD, 'statusbar') 1112 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1113 'name': 'sb', 1114 'x': 0, 1115 'y': 0, 1116 'w': 20, 1117 'h': 28, 1118 'align': ALIGN_BOTTOM, 1119 'color': 0x40A0A0, 1120 }) 1121 1122 sb_id = dlg_proc(id, DLG_CTL_HANDLE, index=n) 1123 statusbar_proc(sb_id, STATUSBAR_SET_IMAGELIST, value=imglist_id) 1124 statusbar_proc(sb_id, STATUSBAR_ADD_CELL, tag=11) 1125 statusbar_proc(sb_id, STATUSBAR_ADD_CELL, tag=22) 1126 statusbar_proc(sb_id, STATUSBAR_ADD_CELL, tag=33) 1127 1128 statusbar_proc(sb_id, STATUSBAR_SET_CELL_CALLBACK, tag=33, value= 1129 'module=cuda_testing_dlg_proc;cmd=callback_statusbar_click;') 1130 1131 statusbar_proc(sb_id, STATUSBAR_SET_CELL_SIZE, tag=11, value=150) 1132 statusbar_proc(sb_id, STATUSBAR_SET_CELL_COLOR_BACK, tag=11, value=0xff00) 1133 statusbar_proc(sb_id, STATUSBAR_SET_CELL_COLOR_FONT, tag=11, value=0xff) 1134 statusbar_proc(sb_id, STATUSBAR_SET_CELL_TEXT, tag=11, value='cell-a') 1135 statusbar_proc(sb_id, STATUSBAR_SET_CELL_HINT, tag=11, value='hint for cell-a') 1136 statusbar_proc(sb_id, STATUSBAR_SET_CELL_IMAGEINDEX, tag=11, value=icon1) 1137 statusbar_proc(sb_id, STATUSBAR_SET_CELL_FONT_NAME, tag=11, value='Courier') 1138 statusbar_proc(sb_id, STATUSBAR_SET_CELL_FONT_SIZE, tag=11, value=18) 1139 1140 statusbar_proc(sb_id, STATUSBAR_SET_CELL_SIZE, tag=22, value=50) 1141 statusbar_proc(sb_id, STATUSBAR_SET_CELL_COLOR_BACK, tag=22, value=0xffff) 1142 statusbar_proc(sb_id, STATUSBAR_SET_CELL_COLOR_FONT, tag=22, value=0xff00) 1143 statusbar_proc(sb_id, STATUSBAR_SET_CELL_TEXT, tag=22, value='cell-b') 1144 statusbar_proc(sb_id, STATUSBAR_SET_CELL_HINT, tag=22, value='hint for cell-b') 1145 1146 statusbar_proc(sb_id, STATUSBAR_SET_CELL_SIZE, tag=33, value=150) 1147 statusbar_proc(sb_id, STATUSBAR_SET_CELL_TEXT, tag=33, value='cell-c') 1148 statusbar_proc(sb_id, STATUSBAR_SET_CELL_IMAGEINDEX, tag=33, value=icon2) 1149 statusbar_proc(sb_id, STATUSBAR_SET_CELL_ALIGN, tag=33, value='R') 1150 1151 1152 #---------- 1153 dlg_proc(id, DLG_SHOW_MODAL) 1154 dlg_proc(id, DLG_FREE) 1155 1156 1157 def test_treeview(self): 1158 id = dlg_proc(0, DLG_CREATE) 1159 1160 dlg_proc(id, DLG_PROP_SET, { 1161 'w': 400, 1162 'h': 300, 1163 'cap': 'Test type=treeview' 1164 }) 1165 1166 n = dlg_proc(id, DLG_CTL_ADD, 'treeview') 1167 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1168 'name': 'my', 1169 'x': 10, 1170 'y': 10, 1171 'w': 380, 1172 'h': 280, 1173 'on_fold': self.callback_treeview_on_fold, 1174 'on_unfold': self.callback_treeview_on_unfold, 1175 'on_click_dbl': self.callback_treeview_on_click_dbl, 1176 }) 1177 1178 self.h_tree = dlg_proc(id, DLG_CTL_HANDLE, index=n) 1179 tree_proc(self.h_tree, TREE_THEME) 1180 1181 item0a = tree_proc(self.h_tree, TREE_ITEM_ADD, id_item=0, index=-1, text='item 0a') 1182 item0b = tree_proc(self.h_tree, TREE_ITEM_ADD, id_item=0, index=-1, text='item 0b') 1183 item1a = tree_proc(self.h_tree, TREE_ITEM_ADD, id_item=item0a, index=-1, text='sub item 1a') 1184 item1b = tree_proc(self.h_tree, TREE_ITEM_ADD, id_item=item0a, index=-1, text='sub item 1b') 1185 item2a = tree_proc(self.h_tree, TREE_ITEM_ADD, id_item=item1a, index=-1, text='sub item 2a') 1186 1187 tree_proc(self.h_tree, TREE_ITEM_UNFOLD_DEEP, id_item=0) 1188 1189 #test get/set range 1190 rng = (2,2,5,5) 1191 tree_proc(self.h_tree, TREE_ITEM_SET_RANGE, id_item=item1a, text=rng) 1192 rng2 = tree_proc(self.h_tree, TREE_ITEM_GET_RANGE, id_item=item1a) 1193 print('Test get/set range: '+('ok' if rng==rng2 else 'failed')) 1194 1195 dlg_proc(id, DLG_SHOW_MODAL) 1196 dlg_proc(id, DLG_FREE) 1197 1198 1199 def callback_treeview_on_fold(self, id_dlg, id_ctl, data='', info=''): 1200 prop = tree_proc(self.h_tree, TREE_ITEM_GET_PROPS, id_item=data) 1201 print('callback_treeview_on_unfold,', 'item:', prop) 1202 1203 def callback_treeview_on_unfold(self, id_dlg, id_ctl, data='', info=''): 1204 prop = tree_proc(self.h_tree, TREE_ITEM_GET_PROPS, id_item=data) 1205 print('callback_treeview_on_unfold,', 'item:', prop) 1206 1207 def callback_treeview_on_click_dbl(self, id_dlg, id_ctl, data='', info=''): 1208 print('callback_treeview_on_click_dbl') 1209 1210 def callback_pages_button_a(self, id_dlg, id_ctl, data='', info=''): 1211 prop = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='check0') 1212 new_val = not (prop['val']=='1') 1213 dlg_proc(id_dlg, DLG_CTL_PROP_SET, name='check0', prop={ 1214 'val': new_val 1215 }) 1216 1217 def callback_pages_on_change(self, id_dlg, id_ctl, data='', info=''): 1218 print('pages on_change') 1219 prop = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='mypages') 1220 print('tab hovered:', prop['tab_hovered']) 1221 1222 def callback_tabs_on_change(self, id_dlg, id_ctl, data='', info=''): 1223 print('tabs on_change') 1224 prop = dlg_proc(id_dlg, DLG_CTL_PROP_GET, name='mytabs') 1225 print('tab hovered:', prop['tab_hovered']) 1226 1227 n = int(prop['val']) 1228 dlg_proc(id_dlg, DLG_CTL_PROP_SET, name='tab_label', prop={ 1229 'cap': '(clicked tab-'+str(n+1)+')', 1230 }) 1231 1232 def test_sidepanel(self): 1233 print('test_sidepanel') 1234 title = 'Side dialog' 1235 id_dlg = self.init_maindlg() 1236 icon_name = 'project.png' 1237 1238 app_proc(PROC_SIDEPANEL_ADD_DIALOG, (title, id_dlg, icon_name) ) 1239 app_proc(PROC_SIDEPANEL_ACTIVATE, title) 1240 1241 def show_about(self): 1242 ed.cmd(2700) 1243 1244 def test_btn(self): 1245 h = self.init_buttondlg() 1246 dlg_proc(h, DLG_SHOW_MODAL) 1247 dlg_proc(h, DLG_FREE) 1248 1249 def test_splitter(self): 1250 h = self.init_splitterdlg() 1251 dlg_proc(h, DLG_SHOW_MODAL) 1252 dlg_proc(h, DLG_FREE) 1253 1254 def test_listbox(self): 1255 h = self.init_listdlg() 1256 dlg_proc(h, DLG_SHOW_MODAL) 1257 dlg_proc(h, DLG_FREE) 1258 1259 def test_editor(self): 1260 h = self.init_editor_dlg() 1261 dlg_proc(h, DLG_SHOW_MODAL) 1262 dlg_proc(h, DLG_FREE) 1263 1264 def test_combo(self): 1265 h = self.init_combo_dlg() 1266 dlg_proc(h, DLG_SHOW_MODAL) 1267 dlg_proc(h, DLG_FREE) 1268 1269 1270 def test_listview(self): 1271 self.click_num = 0 1272 self.click_col = -1 1273 1274 def when_click_header(id_dlg, id_ctl, data): 1275 self.click_num = 1 if self.click_col != data else (self.click_num+1)%3 1276 self.click_col = data 1277 cols_s = dlg_proc(id_dlg, DLG_CTL_PROP_GET, index=id_ctl)['columns'] 1278 cols_i = [c.split('\r') for c in cols_s.split('\t')] 1279 cols_i[self.click_col][0] = cols_i[self.click_col][0].strip('+-') 1280 cols_i[self.click_col][0] += '++' if self.click_num==1 else '--' if self.click_num==2 else '' 1281 dlg_proc(id_dlg, DLG_CTL_PROP_SET, index=id_ctl, prop={ 1282 'columns': '\t'.join(['\r'.join(c) for c in cols_i]) 1283 }) 1284 1285 id = dlg_proc(0, DLG_CREATE) 1286 1287 dlg_proc(id, DLG_PROP_SET, { 1288 'w': 500, 1289 'h': 400, 1290 'cap': 'Test type=listview', 1291 'border': DBORDER_SIZE, 1292 }) 1293 1294 n = dlg_proc(id, DLG_CTL_ADD, 'listview') 1295 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1296 'name': 'my', 1297 'align': ALIGN_CLIENT, 1298 'sp_a': 10, 1299 'items': '1\r2\r3\tcell00\rcell01\rcell02\tcell10\rcell11\rcell12\tcell20\rcell21\rcell22', 1300 'val': 1, 1301 'columns': '\t'.join([ 1302 '\r'.join(['aaa', '200', '180', '210', 'C']), 1303 '\r'.join(['bbb', '100', '', '', 'R']), 1304 '\r'.join(['ccc', '100', '', '', 'R']), 1305 ]), 1306 'on_click_header': when_click_header 1307 }) 1308 1309 #after ListView creation, get its ImageList handles 1310 props = dlg_proc(id, DLG_CTL_PROP_GET, index=n) 1311 id_listview1 = props['imagelist_small'] 1312 id_listview2 = props['imagelist_large'] 1313 1314 dir_icons = os.path.join(app_path(APP_DIR_DATA), 'sideicons', 'octicons_20x20') 1315 fn_icon1 = os.path.join(dir_icons, 'console.png') 1316 fn_icon2 = os.path.join(dir_icons, 'find.png') 1317 print('icon1:', fn_icon1) 1318 print('icon2:', fn_icon2) 1319 1320 imagelist_proc(id_listview1, IMAGELIST_SET_SIZE, value=(20,20)) 1321 icon1 = imagelist_proc(id_listview1, IMAGELIST_ADD, value=fn_icon1) 1322 icon2 = imagelist_proc(id_listview1, IMAGELIST_ADD, value=fn_icon2) 1323 print('icon indexes:', icon1, icon2) 1324 1325 dlg_proc(id, DLG_CTL_PROP_SET, index=n, prop={ 1326 'imageindexes': '\t'.join([str(icon1), str(icon2)]) 1327 }) 1328 props = dlg_proc(id, DLG_CTL_PROP_GET, index=n) 1329 print('Listview props:', props) 1330 1331 #s = dlg_proc(id, DLG_CTL_PROP_GET, index=n)['columns'] 1332 #print(repr(s)) 1333 1334 dlg_proc(id, DLG_SHOW_MODAL) 1335 dlg_proc(id, DLG_FREE) 1336 1337 def test_scrollbox(self): 1338 h=dlg_proc(0, DLG_CREATE) 1339 dlg_proc(h, DLG_PROP_SET, prop={ 1340 'cap': 'scrollbox test', 1341 'w': 400, 1342 'h': 300, 1343 'w_min': 200, 1344 'h_min': 250 1345 }) 1346 1347 n=dlg_proc(h, DLG_CTL_ADD, 'scrollbox') 1348 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 1349 'name': 'p_main', 1350 'cap': 'scrollbox1', 1351 'color': 0xff00, 1352 'x': 10, 1353 'y': 20, 1354 'w': 200, 1355 'h': 100, 1356 }) 1357 1358 n=dlg_proc(h, DLG_CTL_ADD, 'panel') 1359 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 1360 'name': 'p_child', 1361 'p': 'p_main', 1362 'cap': 'panel1', 1363 'color': 0xff0000, 1364 'x': 10, 1365 'y': 10, 1366 'w': 150, 1367 'h': 200, 1368 }) 1369 1370 n=dlg_proc(h, DLG_CTL_ADD, 'button') 1371 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 1372 'name': 'btn_1', 1373 'cap': 'button1', 1374 'p': 'p_child', 1375 'x': 50, 1376 'y': 50, 1377 'w': 80, 1378 }) 1379 1380 n=dlg_proc(h, DLG_CTL_ADD, 'button') 1381 dlg_proc(h, DLG_CTL_PROP_SET, index=n, prop={ 1382 'name': 'btn_2', 1383 'cap': 'button2', 1384 'p': 'p_child', 1385 'x': 50, 1386 'y': 100, 1387 'w': 80, 1388 }) 1389 1390 dlg_proc(h, DLG_SHOW_MODAL) 1391 dlg_free(h) 1392 1393 1394 def test_labels_render(self): 1395 test_labels_render() 1396