def store_clicked(obj): win = StandardWindow("store", "Store") win.autodel = True if obj is None: win.callback_delete_request_add(lambda o: elementary.exit()) bx = Box(win) bx.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND win.resize_object_add(bx) bx.show() gl = Genlist(win) gl.mode = ELM_LIST_COMPRESS gl.callback_selected_add(st_selected) gl.callback_clicked_double_add(st_double_clicked) gl.callback_longpressed_add(st_longpress) gl.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND gl.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL bx.pack_end(gl) gl.show() itc1 = GenlistItemClass() itc1.item_style = "message" st = Store() st.fs_list_func_set(st_store_list) st.fetch_func_set(st_store_fetch) #st.fetch_thread = False #st.unfetch_func_set(st_store_unfetch) st.items_sorted = False st.target_genlist = gl st.filesystem_directory = "." win.size = 480, 800 win.show()
def genlist3_clicked(obj, item=None): win = StandardWindow("Genlist", "Genlist Group test", autodel=True, size=(320, 320)) gl = Genlist(win, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) win.resize_object_add(gl) gl.show() itc_i = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) itc_g = GenlistItemClass(item_style="group_index", text_get_func=glg_text_get, content_get_func=glg_content_get) for i in range(300): if i % 10 == 0: git = gl.item_append(itc_g, i / 10, flags=ELM_GENLIST_ITEM_GROUP) git.select_mode_set(ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) gl.item_append(itc_i, i, git) win.show()
def add_row(self, row): ''' adds a row to the list ''' def gl_text_get(item_data): ''' item data pass through ''' return item_data def gl_content_get(): ''' place holder ''' pass def gl_state_get(): ''' place holder returns false ''' return False def gl_item_sel(gli, _gl, *args, **kwargs): ''' display generic list ''' print("\n---GenlistItem selected---") print(gli) print(_gl) print(args) print(kwargs) print(("item_data: %s" % gli.data_get())) itc = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) for count, item in enumerate(row): self.lists[count].item_append(itc, str(item), func=gl_item_sel)
def genlist_clicked(obj, item=None): win = StandardWindow("Genlist", "Genlist test", autodel=True) bx = Box(win, size_hint_weight=EXPAND_BOTH) win.resize_object_add(bx) bx.show() gl = Genlist(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) gl.callback_selected_add(_gl_selected, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2") gl.callback_clicked_double_add(_gl_clicked_double, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2") gl.callback_longpressed_add(_gl_longpressed, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2") bx.pack_end(gl) gl.show() over = Rectangle(win.evas_get()) over.color_set(0, 0, 0, 0) over.event_callback_add(evas.EVAS_CALLBACK_MOUSE_DOWN, _gl_over_click, gl) over.repeat_events_set(True) over.show() over.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND) win.resize_object_add(over) vbx = Box(win, horizontal=True) bx.pack_end(vbx) vbx.show() itc1 = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) bt_50 = Button(win, text="Go to 50") vbx.pack_end(bt_50) bt_50.show() bt_1500 = Button(win, text="Go to 1500") vbx.pack_end(bt_1500) bt_1500.show() for i in range(0, 2000): gli = gl.item_append(itc1, i, func=gl_item_sel) if i == 50: bt_50._callback_add("clicked", lambda bt, it: it.bring_in(), gli) elif i == 1500: bt_1500._callback_add("clicked", lambda bt, it: it.bring_in(), gli) win.resize(480, 800) win.show()
def add_row(self, row): def gl_text_get(obj, part, item_data): return item_data def gl_content_get(obj, part, data): pass def gl_state_get(obj, part, item_data): return False def gl_item_sel(gli, gl, *args, **kwargs): print("\n---GenlistItem selected---") print(gli) print(gl) print(args) print(kwargs) print(("item_data: %s" % gli.data_get())) itc = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) for count, item in enumerate(row): self.lists[count].item_append(itc, str(item), func=gl_item_sel)
def index_clicked(obj): win = StandardWindow("index", "Index test", autodel=True, size=(320, 480)) if obj is None: win.callback_delete_request_add(lambda o: elementary.exit()) vbox = Box(win, size_hint_weight=EXPAND_BOTH) win.resize_object_add(vbox) vbox.show() # index idx = Index(win, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) idx.callback_delay_changed_add(cb_idx_delay_changed) idx.callback_changed_add(cb_idx_changed) idx.callback_selected_add(cb_idx_selected) win.resize_object_add(idx) idx.show() # genlist itc = GenlistItemClass(item_style="default", text_get_func=gl_text_get) # content_get_func=gl_content_get, # state_get_func=gl_state_get) gl = Genlist(win, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) vbox.pack_end(gl) gl.show() for i in 'ABCDEFGHILMNOPQRSTUVZ': for j in 'acegikmo': gl_item = gl.item_append(itc, i + j) if j == 'a': idx_item = idx.item_append(i, cb_idx_item, gl_item) idx_item.data["gl_item"] = gl_item idx.level_go(0) sep = Separator(win, horizontal=True) vbox.pack_end(sep) sep.show() hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ) vbox.pack_end(hbox) hbox.show() ck = Check(win, text="autohide_disabled") ck.callback_changed_add(lambda ck: idx.autohide_disabled_set(ck.state)) hbox.pack_end(ck) ck.show() ck = Check(win, text="indicator_disabled") ck.callback_changed_add(lambda ck: idx.indicator_disabled_set(ck.state)) hbox.pack_end(ck) ck.show() ck = Check(win, text="horizontal") ck.callback_changed_add(lambda ck: idx.horizontal_set(ck.state)) hbox.pack_end(ck) ck.show() win.show()
def genlist5_clicked(obj, item=None): win = StandardWindow("Genlist", "Genlist iteration test", autodel=True, size=(320, 320)) gl = Genlist(win, homogeneous=True, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) win.resize_object_add(gl) gl.show() itc_i = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) item_count = 10000 t1 = time.time() for i in range(item_count): GenlistItem(itc_i, i).append_to(gl) t2 = time.time() assert (len(gl) == gl.items_count) t3 = time.time() it = gl.first_item while it: d = it.data it = it.next t4 = time.time() assert (d == item_count - 1) t5 = time.time() for it in gl: e = it.data t6 = time.time() assert (e == item_count - 1) assert (it in gl) print("Time to add {0} items:".format(item_count)) print(t2 - t1) print("Time to iterate item data over {0} items using " "it.next:".format(item_count)) print(t4 - t3) print("Time to iterate item data over {0} items using " "a python iterator:".format(item_count)) print(t6 - t5) win.show()
def genlist4_clicked(obj, item=None): win = StandardWindow("Genlist", "Genlist sorted insert test", autodel=True, size=(320, 320)) gl = Genlist(win, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) win.resize_object_add(gl) gl.show() itc_i = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) for i in range(100, -1, -1): GenlistItem(itc_i, i).sorted_insert(gl, gl_comp_func) win.show()
def __init__(self, app): self.app = app GenlistItemClass.__init__(self, item_style='no_icon')
def __init__(self): GenlistItemClass.__init__(self, item_style="group_index")
def __init__(self): GenlistItemClass.__init__(self, item_style="default")
def genlist2_clicked(obj, item=None): win = Window("Genlist", ELM_WIN_BASIC, title="Genlist test 2", autodel=True, size=(320, 320)) bg = Background(win, file=os.path.join(img_path, "plant_01.jpg"), size_hint_weight=EXPAND_BOTH) win.resize_object_add(bg) bg.show() bx = Box(win, size_hint_weight=EXPAND_BOTH) win.resize_object_add(bx) bx.show() gl = Genlist(win, size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH) gl.show() itc1 = GenlistItemClass(item_style="default", text_get_func=gl_text_get, content_get_func=gl_content_get, state_get_func=gl_state_get) gl.item_append(itc1, 1001, func=gl_item_sel) gl.item_append(itc1, 1002, func=gl_item_sel) gl.item_append(itc1, 1003, func=gl_item_sel) gl.item_append(itc1, 1004, func=gl_item_sel) gl.item_append(itc1, 1005, func=gl_item_sel) gl.item_append(itc1, 1006, func=gl_item_sel) gl.item_append(itc1, 1007, func=gl_item_sel) bx.pack_end(gl) bx2 = Box(win, horizontal=True, homogeneous=True, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) def my_gl_first(bt, gl): gli = gl.first_item if gli: gli.show() gli.selected = True bt = Button(win, text="/\\", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_first, gl) bx2.pack_end(bt) bt.show() def my_gl_last(bt, gl): gli = gl.last_item_get() if gli: gli.show() gli.selected = True bt = Button(win, text="\\/", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_last, gl) bx2.pack_end(bt) bt.show() def my_gl_disable(bt, gl): gli = gl.selected_item if gli: gli.disabled = True gli.selected = False gli.update() else: print("no item selected") bt = Button(win, text="#", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_disable, gl) bx2.pack_end(bt) bt.show() def my_gl_update_all(bt, gl): gli = gl.first_item_get() i = 0 while gli: gli.update() print(i) i = i + 1 gli = gli.next_get() bt = Button(win, text="U", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_update_all, gl) bx2.pack_end(bt) bt.show() bx.pack_end(bx2) bx2.show() bx2 = Box(win, horizontal=True, homogeneous=True, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) def my_gl_clear(bt, gl): gl.clear() bt = Button(win, text="X", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_clear, gl) bx2.pack_end(bt) bt.show() class MyGlAdd: i = 0 def my_gl_add(bt, gl, itc1): gl.item_append(itc1, MyGlAdd.i, func=gl_item_sel) MyGlAdd.i = MyGlAdd.i + 1 bt = Button(win, text="+", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_add, gl, itc1) bx2.pack_end(bt) bt.show() def my_gl_del(bt, gl): gli = gl.selected_item_get() if gli: gli.delete() else: print("no item selected") bt = Button(win, text="-", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_del, gl) bx2.pack_end(bt) bt.show() bx.pack_end(bx2) bx2.show() bx2 = Box(win, horizontal=True, homogeneous=True, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) class MyGlInsertBefore: i = 0 def my_gl_insert_before(bt, gl, itc1): gli = gl.selected_item_get() if gli: gl.item_insert_before(itc1, MyGlInsertBefore.i, gli, func=gl_item_sel) MyGlInsertBefore.i = MyGlInsertBefore.i + 1 else: print("no item selected") bt = Button(win, text="+ before", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_insert_before, gl, itc1) bx2.pack_end(bt) bt.show() class MyGlInsertAfter: i = 0 def my_gl_insert_after(bt, gl, itc1): gli = gl.selected_item_get() if gli: gl.item_insert_after(itc1, MyGlInsertAfter.i, gli, func=gl_item_sel) MyGlInsertAfter.i = MyGlInsertAfter.i + 1 else: print("no item selected") bt = Button(win, text="+ after", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_insert_after, gl, itc1) bx2.pack_end(bt) bt.show() def my_gl_flush(bt, gl): def my_gl_flush_delay(): cache_all_flush() Timer(1.2, my_gl_flush_delay) bt = Button(win, text="Flush", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_HORIZ) bt.callback_clicked_add(my_gl_flush, gl) bx2.pack_end(bt) bt.show() bx.pack_end(bx2) bx2.show() win.show()
def __init__(self, session, *args, **kwargs): GenlistItemClass.__init__(self, *args, **kwargs) self.session = session
def __init__(self, app): self.app = app self.prog_popup = None # the window StandardWindow.__init__(self, 'epack', 'Epack') self.autodel_set(True) self.callback_delete_request_add(lambda o: self.app.exit()) ### main table (inside a padding frame) frame = Frame(self, style='pad_small', size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) self.resize_object_add(frame) frame.content = table = Table(frame) frame.show() ### header horiz box self.header_box = Box(self, horizontal=True, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ) table.pack(self.header_box, 0, 0, 3, 1) self.header_box.show() # genlist with archive content (inside a small padding frame) frame = Frame(self, style='pad_small', size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) table.pack(frame, 0, 1, 3, 1) self.file_itc = GenlistItemClass(item_style="no_icon", text_get_func=self._gl_file_text_get) self.fold_itc = GenlistItemClass( item_style="one_icon", text_get_func=self._gl_fold_text_get, content_get_func=self._gl_fold_icon_get) self.file_list = Genlist(frame, homogeneous=True) self.file_list.callback_expand_request_add(self._gl_expand_req_cb) self.file_list.callback_contract_request_add(self._gl_contract_req_cb) self.file_list.callback_expanded_add(self._gl_expanded_cb) self.file_list.callback_contracted_add(self._gl_contracted_cb) frame.content = self.file_list frame.show() # rect hack to force a min size on the genlist r = evas.Rectangle(table.evas, size_hint_min=(250, 250), size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) table.pack(r, 0, 1, 3, 1) # FileSelectorButton self.fsb = DestinationButton(app, self) table.pack(self.fsb, 0, 2, 3, 1) self.fsb.show() sep = Separator(table, horizontal=True, size_hint_weight=EXPAND_HORIZ) table.pack(sep, 0, 3, 3, 1) sep.show() # extract button self.extract_btn = Button(table, text=_('Extract')) self.extract_btn.callback_clicked_add(self.extract_btn_cb) table.pack(self.extract_btn, 0, 4, 1, 2) self.extract_btn.show() sep = Separator(table, horizontal=False) table.pack(sep, 1, 4, 1, 2) sep.show() # delete-archive checkbox self.del_chk = Check(table, text=_('Delete archive after extraction'), size_hint_weight=EXPAND_HORIZ, size_hint_align=(0.0, 1.0)) self.del_chk.callback_changed_add(self.del_check_cb) table.pack(self.del_chk, 2, 4, 1, 1) self.del_chk.show() # create-archive-folder checkbox self.create_folder_chk = Check(table, text=_('Create archive folder'), size_hint_weight=EXPAND_HORIZ, size_hint_align=(0.0, 1.0)) table.pack(self.create_folder_chk, 2, 5, 1, 1) self.create_folder_chk.callback_changed_add( lambda c: self.update_fsb_label()) self.create_folder_chk.show() # set the correct ui state self.update_ui() # show the window self.show()
def st_store_list(info, *args, **kwargs): if info.path.endswith("py"): info.base.item_class = GenlistItemClass(item_style="default") return True else: return False
def __init__(self, app): self.app = app GenlistItemClass.__init__(self, item_style='full')