def simple_api_item_widget(): r""" Very simple example of basic APIItemWidget widget with CustomAPI CommandLine: python -m wbia.guitool.api_item_widget --test-simple_api_item_widget python -m wbia.guitool.api_item_widget --test-simple_api_item_widget --show Example: >>> # ENABLE_DOCTEST >>> # xdoctest: +REQUIRES(--gui) >>> from wbia.guitool.api_item_widget import * # NOQA >>> import wbia.guitool as gt >>> gt.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_api_item_widget() >>> # xdoctest: +REQUIRES(--show) >>> ut.quit_if_noshow() >>> wgt.show() >>> gt.qtapp_loop(wgt, frequency=100) """ import wbia.guitool as gt gt.ensure_qapp() col_getter_dict = { 'col1': [1, 2, 3], 'col2': ['a', 'b', 'c'], 'col3': ['e', 'f', 'g'], } sortby = 'col1' # col_display_role_func_dict = { # 'col1': lambda x: 'banana %d' % ((x * 100 % 23)), # } api = gt.CustomAPI( col_getter_dict=col_getter_dict, # col_display_role_func_dict=col_display_role_func_dict, editable_colnames=['col3'], sortby=sortby, ) headers = api.make_headers(tblnice='Simple Example') wgt = gt.APIItemWidget() wgt.change_headers(headers) # gt.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) # for testing wgt.menubar = gt.newMenubar(wgt) wgt.menuFile = wgt.menubar.newMenu('Dev') def wgt_embed(wgt): view = wgt.view # NOQA import utool utool.embed() ut.inject_func_as_method(wgt, wgt_embed) wgt.menuFile.newAction(triggered=wgt.wgt_embed) return wgt
def simple_api_tree_widget(): r""" Minimal example of a tree based api widget CommandLine: python -m wbia.guitool.api_item_widget --test-simple_api_tree_widget python -m wbia.guitool.api_item_widget --test-simple_api_tree_widget --show Example: >>> # ENABLE_DOCTEST >>> # xdoctest: +REQUIRES(--gui) >>> from wbia.guitool.api_item_widget import * # NOQA >>> import wbia.guitool >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_api_tree_widget() >>> # xdoctest: +REQUIRES(--show) >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100) """ guitool.ensure_qapp() col_name_list = ['name', 'num_annots', 'annots'] col_getter_dict = { 'name': ['fred', 'sue', 'tom', 'mary', 'paul'], 'num_annots': [2, 1, 3, 5, 1], } # make consistent data grouped_data = [ [col_getter_dict['name'][index] + '-' + str(i) for i in range(num)] for index, num in enumerate(col_getter_dict['num_annots']) ] flat_data, reverse_list = ut.invertible_flatten1(grouped_data) col_getter_dict['annots'] = flat_data iders = [list(range(len(col_getter_dict['name']))), reverse_list] col_level_dict = { 'name': 0, 'num_annots': 0, 'annots': 1, } sortby = 'name' api = guitool.CustomAPI( col_name_list=col_name_list, col_getter_dict=col_getter_dict, sortby=sortby, iders=iders, col_level_dict=col_level_dict, ) headers = api.make_headers(tblnice='Tree Example') wgt = guitool.APIItemWidget(view_class=APITreeView) wgt.change_headers(headers) # guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def testdata_tree_view(): r""" CommandLine: python -m wbia.guitool.api_tree_view testdata_tree_view python -m wbia.guitool.api_tree_view testdata_tree_view --show Example: >>> # DISABLE_DOCTEST >>> # xdoctest: +REQUIRES(--gui) >>> import wbia.guitool as gt >>> from wbia.guitool.api_tree_view import * # NOQA >>> wgt = testdata_tree_view() >>> view = wgt.view >>> rows = view.selectedRows() >>> print('rows = %r' % (rows,)) >>> # xdoctest: +REQUIRES(--show) >>> ut.quit_if_noshow() >>> gt.qtapp_loop(qwin=wgt) """ import wbia.guitool as gt gt.ensure_qapp() col_name_list = ['name', 'num_annots', 'annots'] col_getter_dict = { 'name': ['fred', 'sue', 'tom', 'mary', 'paul'], 'num_annots': [2, 1, 3, 5, 1], } # make consistent data grouped_data = [[ col_getter_dict['name'][index] + '-' + str(i) for i in range(num) ] for index, num in enumerate(col_getter_dict['num_annots'])] flat_data, reverse_list = ut.invertible_flatten1(grouped_data) col_getter_dict['annots'] = flat_data iders = [list(range(len(col_getter_dict['name']))), reverse_list] col_level_dict = { 'name': 0, 'num_annots': 0, 'annots': 1, } sortby = 'name' api = gt.CustomAPI( col_name_list=col_name_list, col_getter_dict=col_getter_dict, sortby=sortby, iders=iders, col_level_dict=col_level_dict, ) headers = api.make_headers(tblnice='Tree Example') wgt = gt.APIItemWidget(view_class=APITreeView) wgt.change_headers(headers) wgt.menubar = gt.newMenubar(wgt) wgt.menuFile = wgt.menubar.newMenu('Dev') def wgt_embed(wgt): view = wgt.view # NOQA import utool utool.embed() ut.inject_func_as_method(wgt, wgt_embed) wgt.menuFile.newAction(triggered=wgt.wgt_embed) return wgt
def simple_thumbnail_widget(): r""" Very simple example to test thumbnails CommandLine: python -m wbia.guitool.api_thumb_delegate --test-simple_thumbnail_widget --show --verbthumb python -m wbia.guitool.api_thumb_delegate --test-simple_thumbnail_widget --show --tb Example: >>> # GUI_DOCTEST >>> # xdoctest: +REQUIRES(--gui) >>> from wbia.guitool.api_thumb_delegate import * # NOQA >>> import wbia.guitool >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_thumbnail_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100) """ from wbia import guitool guitool.ensure_qapp() col_name_list = ['rowid', 'image_name', 'thumb'] col_types_dict = { 'thumb': 'PIXMAP', } guitool_test_thumbdir = ut.ensure_app_resource_dir('guitool', 'thumbs') ut.delete(guitool_test_thumbdir) ut.ensuredir(guitool_test_thumbdir) import vtool as vt from os.path import join # imgname_list = sorted(ut.TESTIMG_URL_DICT.keys()) imgname_list = ['carl.jpg', 'lena.png', 'patsy.jpg'] imgname_list += ['doesnotexist.jpg'] num_imgs = list(range(len(imgname_list))) # num_imgs = list(range(500)) def thread_func(would_be, id_): from vtool.fontdemo import get_text_test_img get_text_test_img(id_) def thumb_getter(id_, thumbsize=128): """ Thumb getters must conform to thumbtup structure """ if id_ not in imgname_list: return { 'fpath': id_ + '.jpg', 'thread_func': thread_func, 'main_func': lambda: (id_, ), } # print(id_) if id_ == 'doesnotexist.jpg': return None img_path = None img_size = (100, 100) else: img_path = ut.grab_test_imgpath(id_, verbose=False) img_size = vt.open_image_size(img_path) thumb_path = join(guitool_test_thumbdir, ut.hashstr(str(img_path)) + '.jpg') if id_ == 'carl.jpg': bbox_list = [(10, 10, 200, 200)] theta_list = [0] elif id_ == 'lena.png': # bbox_list = [(10, 10, 200, 200)] bbox_list = [None] theta_list = [None] else: bbox_list = [] theta_list = [] interest_list = [False] thumbtup = (thumb_path, img_path, img_size, bbox_list, theta_list, interest_list) # print('thumbtup = %r' % (thumbtup,)) return thumbtup # return None def imgname_getter(rowid): if rowid < len(imgname_list): return imgname_list[rowid] else: return str(rowid) col_getter_dict = { 'rowid': num_imgs, 'image_name': imgname_getter, 'thumb': thumb_getter, } col_ider_dict = { 'thumb': 'image_name', } col_setter_dict = {} editable_colnames = [] sortby = 'rowid' def get_thumb_size(): return 128 # get_thumb_size = lambda: 128 # NOQA col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict, ) headers = api.make_headers(tblnice='Utool Test Images') wgt = guitool.APIItemWidget() wgt.change_headers(headers) wgt.resize(600, 400) # guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt
def simple_thumbnail_widget(): r""" Very simple example to test thumbnails CommandLine: python -m wbia.guitool.api_item_model --test-simple_thumbnail_widget --show Example: >>> # ENABLE_DOCTEST >>> # xdoctest: +REQUIRES(--gui) >>> import wbia.guitool as guitool >>> from wbia.guitool.api_item_model import * # NOQA >>> guitool.ensure_qapp() # must be ensured before any embeding >>> wgt = simple_thumbnail_widget() >>> ut.quit_if_noshow() >>> wgt.show() >>> guitool.qtapp_loop(wgt, frequency=100, init_signals=True) """ import wbia.guitool as guitool guitool.ensure_qapp() col_name_list = ['rowid', 'image_name', 'thumb'] col_types_dict = { 'thumb': 'PIXMAP', } def thumb_getter(id_, thumbsize=128): """ Thumb getters must conform to thumbtup structure """ # logger.info(id_) return ut.grab_test_imgpath(id_) # return None col_getter_dict = { 'rowid': [1, 2, 3], 'image_name': ['lena.png', 'carl.jpg', 'patsy.jpg'], 'thumb': thumb_getter, } col_ider_dict = { 'thumb': 'image_name', } col_setter_dict = {} editable_colnames = [] sortby = 'rowid' def get_thumb_size(): return 128 col_width_dict = {} col_bgrole_dict = {} api = guitool.CustomAPI( col_name_list, col_types_dict, col_getter_dict, col_bgrole_dict, col_ider_dict, col_setter_dict, editable_colnames, sortby, get_thumb_size, True, col_width_dict, ) headers = api.make_headers(tblnice='Simple Example') wgt = guitool.APIItemWidget() wgt.change_headers(headers) # guitool.qtapp_loop(qwin=wgt, ipy=ipy, frequency=loop_freq) return wgt