def on_enter(self, value=None): if not value: value = 0 if self.container is not None: self.container.clear_widgets() for i in range(int(value)): self.resources.append(ResourceData(1, 1, True)) label = Label(text=str(i + 1) + '.') self.container.add_widget(label) lengthinput = TextInput(multiline=False, input_type='number') lengthinput.bind(text=partial(self.save_length, i)) self.container.add_widget(lengthinput) checkbox = CheckBox(group='sign' + str(i), active=True) checkbox.bind(active=partial(self.on_checkbox_active, True)) checkbox2 = CheckBox(group='sign' + str(i)) checkbox2.bind(active=partial(self.on_checkbox_active, False)) self.container.add_widget(checkbox) self.container.add_widget(checkbox2) amountinput = TextInput(multiline=False, input_type='number') amountinput.bind(text=partial(self.save_amount, i)) self.container.add_widget(amountinput)
def on_close_tab(self, instance, *args): """Event handler to close icon :param instance: tab instance """ self.switch_to(instance) if instance.has_modification: # show a dialog to ask if can close confirm_dlg = ConfirmationDialog("All unsaved changes will be lost.\n" "Do you want to continue?") self._popup = Popup( title="New", content=confirm_dlg, size_hint=(None, None), size=("200pt", "150pt"), auto_dismiss=False ) confirm_dlg.bind(on_ok=partial(self._perform_close_tab, instance), on_cancel=self._popup.dismiss) self._popup.open() else: Clock.schedule_once(partial(self._perform_close_tab, instance))
def keyboard_on_key_down(self, window: Keyboard, keycode: Tuple[int, str], text: str, modifiers: ObservableList) -> Union[None, bool]: """ Captures specific key presses and executes accordingly. """ if keycode[0] in KEYS['enter']: self.validate_cursor_pos() text = self.text[self._cursor_pos - 1:] if text.strip(): Clock.schedule_once(partial(self._run_cmd, text)) else: Clock.schedule_once(self.prompt) elif keycode[0] in KEYS['del', 'backspace']: self.cancel_selection() elif keycode[0] in KEYS['c'] and 'ctrl' in modifiers: self.shell.stop() if self.cursor_index() < self._cursor_pos: return False return super(TerminalInput, self).keyboard_on_key_down(window, keycode, text, modifiers)
def keyboard_on_key_down(self, window, keycode, text, modifiers): code, key = keycode if (code not in (276, 273) and self.cursor_index() < self.prompt_pos) or \ (code == 8 and self.cursor_index() == self.prompt_pos): self.cursor = self.get_cursor_from_index(self.prompt_pos) return if code == 13: self.validate_cursor_pos() text = self.text[self._cursor_pos:] if text.strip().startswith('clear'): self.text = '' self._cursor_pos = 0 self.prompt() return elif text.strip(): Clock.schedule_once(partial(self._run_cmd, text)) else: Clock.schedule_once(self.prompt) elif code in [8, 127]: self.cancel_selection() elif code == 99 and modifiers == ['ctrl']: self.cancel_selection() return super().keyboard_on_key_down(window, keycode, text, modifiers)
def on_close_tab(self, instance, *args): '''Event handler to close icon :param instance: tab instance ''' d = get_designer() if d.popup: return False self.switch_to(instance) if instance.has_modification: # show a dialog to ask if can close confirm_dlg = ConfirmationDialog( 'All unsaved changes will be lost.\n' 'Do you want to continue?') popup = Popup(title='New', content=confirm_dlg, size_hint=(None, None), size=('200pt', '150pt'), auto_dismiss=False) def close_tab(*args): d.close_popup() self._perform_close_tab(instance) confirm_dlg.bind(on_ok=close_tab, on_cancel=d.close_popup) popup.open() d.popup = popup else: Clock.schedule_once(partial(self._perform_close_tab, instance))
def on_close_tab(self, instance, *args): '''Event handler to close icon :param instance: tab instance ''' d = get_designer() if d.popup: return False self.switch_to(instance) if instance.has_modification: # show a dialog to ask if can close confirm_dlg = ConfirmationDialog( 'All unsaved changes will be lost.\n' 'Do you want to continue?') popup = Popup( title='New', content=confirm_dlg, size_hint=(None, None), size=('200pt', '150pt'), auto_dismiss=False) def close_tab(*args): d.close_popup() self._perform_close_tab(instance) confirm_dlg.bind( on_ok=close_tab, on_cancel=d.close_popup) popup.open() d.popup = popup else: Clock.schedule_once(partial(self._perform_close_tab, instance))
def favourites(self): favs = self.kodi.Favourites.GetFavourites(properties=["window", "path", "thumbnail", "windowparameter"]) for fav in favs['result']['favourites']: if 'path' not in fav: continue btn = Button(size_hint=(1, None), height=40) btn.text = fav['title'][:90] if len(fav['title']) > 90 else fav['title'] btn.bind(on_release=partial(self.play_media, fav['path'])) self.ids.favlist.add_widget(btn)
def doit(self): cam = cv2.VideoCapture(0) self.do_vid = True # flag to stop loop while self.do_vid: ret, frame = cam.read() clone = main(frame, self.num_frames) self.num_frames += 1 Clock.schedule_once(partial(self.display_frame, clone))
def draw_static(self, *args): self.ids.meeting_name_label.text = self.meeting.title self.ids.meeting_date_label.text = self.meeting.start_time.strftime( "%A %B %d, %Y") self.ids.meeting_time_label.text = '{} - {}'.format( self.meeting.start_time.strftime("%H:%M"), self.meeting.end_time.strftime("%H:%M")) self.ids.buttons_container.clear_widgets() self.ids.buttons_container.add_widget(Label(size_hint_x=1)) self.ids.buttons_container.add_widget(BackButton()) if self.meeting.available: self.ids.buttons_container.add_widget( EditItemButton( on_press=partial(self.edit_meeting, self.meeting))) self.ids.buttons_container.add_widget( DeleteItemButton(on_press=partial( self.app.root.show_modal, 'Are you sure you want to\ndelete this meeting?', self.delete_meeting))) self.ids.buttons_container.add_widget(Label(size_hint_x=1))
def on_activity_result(self, request_code, result_code, data): import json Logger.info("Android Billing: back from resolution. " "Request code: %s, result code: %s, data: %s" % (request_code, result_code, data)) if request_code == self.RC_BILLING: # response_code = data.getIntExtra("RESPONSE_CODE", 0) purchase_data = data.getStringExtra("INAPP_PURCHASE_DATA") Logger.info("Android Billing: response code %s" % result_code) # data_signature = data.getStringExtra("INAPP_DATA_SIGNATURE") if result_code == self.RESULT_OK: try: if purchase_data: purchase = json.loads(purchase_data) else: purchase = None if not purchase[ 'developerPayload'] == self.developer_payload: Logger.warning( "Android Billing: wrong developer payload. Wait %s, got %s" % (self.developer_payload, purchase['developerPayload'])) return else: Logger.info( "Android Billing: developer payload verified") self.developer_payload = None if purchase: Logger.info( "Android Billing: successful purchase, callbacks..." ) from kivy.clock import Clock from kivy.properties import partial Clock.create_trigger( partial(self.billing_callback, purchase))() except ValueError: Logger.error("Can't parse purchase json data: %s" % purchase_data)
def __init__(self, owner=None, **kwargs): super(SpriteEditorViewer, self).__init__(**kwargs) self.image = SpriteEditorImage(allow_stretch=True, nocache=True, size_hint=(None, None)) self.add_widget(self.image) self.owner: 'SpriteEditorWidget' = owner self.grid = SpriteEditorGrid(owner=self.image, viewer=self, size_hint=(None, None)) self.add_widget(self.grid) self._tool: Generic[Tool] = None self.tool = PanZoomTool() self.selection = RegionSelection(viewer=self) self.add_widget(self.selection) Clock.schedule_interval(partial(self.update_info_callback), 0.05)
def __init__(self, **kwargs): print('PresSPalsh INIT ??????????????????????????') super(PostSplashLoading, self).__init__(**kwargs) MainV.add_to_screen_stack(self, self) print('this is id {}'.format(self.__class__.__name__)) ViewControl.t = 0 # pb = ProgressBar(value=0,max=1000) self.event_trig = Clock.schedule_interval(partial(self.update), 1 / 60) self.event_trig() Cache.register('mycache', limit=10, timeout=None) self.key = 'objectid' instance = self Cache.append('mycache', self.key, instance)
def keyboard_on_key_down(self, window, keycode, text, modifiers): '''Override of _keyboard_on_key_down. ''' if keycode[0] == 13: # Enter -> execute the command self.validate_cursor_pos() text = self.text[self._cursor_pos:] if text.strip(): Clock.schedule_once(partial(self._run_cmd, text)) else: Clock.schedule_once(self.prompt) elif keycode[0] in [8, 127]: self.cancel_selection() elif keycode[0] == 99 and modifiers == ['ctrl']: self.shell.stop() if self.cursor_index() < self._cursor_pos: return False return super(ConsoleInput, self).keyboard_on_key_down(window, keycode, text, modifiers)
def keyboard_on_key_down(self, window, keycode, text, modifiers): '''Override of _keyboard_on_key_down. ''' if keycode[0] == 9 and Completer: # tab, add autocomplete suggestion txt = self.text[self._cursor_pos:] if txt.strip(): suggestion = Completer(self.sh.locals).complete(txt, 0) if suggestion: self.select_text(self._cursor_pos, self._cursor_pos + len(txt)) self.delete_selection() Clock.schedule_once(partial(self.insert_text, suggestion)) return False elif keycode[0] == 13: # For enter self.last_line = self.text[self._cursor_pos:] self.dispatch('on_ready_to_input') return super(InteractiveShellInput, self).keyboard_on_key_down(window, keycode, text, modifiers)
def keyboard_on_key_down(self, window, keycode, text, modifiers): '''Override of _keyboard_on_key_down. ''' if keycode[0] == 9 and Completer: # tab, add autocomplete suggestion txt = self.text[self._cursor_pos:] if txt.strip(): suggestion = Completer(self.sh.locals).complete(txt, 0) if suggestion: self.select_text(self._cursor_pos, self._cursor_pos + len(txt)) self.delete_selection() Clock.schedule_once( partial(self.insert_text, suggestion)) return False elif keycode[0] == 13: # For enter self.last_line = self.text[self._cursor_pos:] self.dispatch('on_ready_to_input') return super(InteractiveShellInput, self).keyboard_on_key_down( window, keycode, text, modifiers)
def on_cancel_button(self, *args): '''Event handler for 'on_release' event of cancel_button. ''' self.cancel_button.bind(on_press=partial(self.dispatch, 'on_cancel'))
def on_current_tab(self, tabbed_panel, *args): '''Event handler to tab selection changes ''' self.show_findmenu(False) Clock.schedule_once(partial(self._selected_content, tabbed_panel))
def on_enter(self): app = App.get_running_app() app.tracker.send_event('purchase', 'screen', 'enter') billing_trigger = Clock.create_trigger( partial(app.initialize_billing, self.add_content)) billing_trigger()
def on_select_button(self, *args): '''Event handler for 'on_release' event of select_button. ''' self.select_button.bind(on_press=partial(self.dispatch, 'on_select'))
def make_calendar(self): popup = Popup() popup.title = 'Calendar' layout = BoxLayout(orientation='vertical') inner_layout_1 = BoxLayout(size_hint=(1, 0.9), orientation='vertical') calendar_selection = GridLayout(cols=4, rows=1, size_hint=(1, 0.1)) prev_month = Button(markup=True, text="<", font_size="30sp", on_release=self.prev_month) next_month = Button(markup=True, text=">", font_size="30sp", on_release=self.next_month) select_month = Factory.SelectMonth() self.month_button = Button(text='{}'.format(vars.month_by_number(self.month)), on_release=select_month.open) for index in range(12): month_options = Button(text='{}'.format(vars.month_by_number(index)), size_hint_y=None, height=40, on_release=partial(self.select_calendar_month, index)) month_options.on_press = select_month.select(self.month_button.text) select_month.add_widget(month_options) select_month.on_select = lambda instance, x: setattr(self.month_button, 'text', x) select_year = Factory.SelectMonth() self.year_button = Button(text="{}".format(self.year), on_release=select_year.open) for index in range(10): year_options = Button(text='{}'.format(int(self.year) + index), size_hint_y=None, height=40, on_release=partial(self.select_calendar_year, index)) year_options.on_press = select_year.select(self.year_button.text) select_month.bind(on_select=lambda instance, x: setattr(self.month_button, 'text', x)) calendar_selection.add_widget(prev_month) calendar_selection.add_widget(self.month_button) calendar_selection.add_widget(self.year_button) calendar_selection.add_widget(next_month) self.calendar_layout = GridLayout(cols=7, rows=8, size_hint=(1, 0.9)) self.create_calendar_table() inner_layout_1.add_widget(calendar_selection) inner_layout_1.add_widget(self.calendar_layout) inner_layout_2 = BoxLayout(size_hint=(1, 0.1), orientation='horizontal') inner_layout_2.add_widget(Button(markup=True, text="cancel", on_release=popup.dismiss)) layout.add_widget(inner_layout_1) layout.add_widget(inner_layout_2) popup.content = layout popup.open()
def test_designer_app(self): from designer.app import DesignerApp d = DesignerApp() d.bind(started=partial(d.stop)) d.run()
def add_row(self, row_data, row_align, cols_size, instance, **kwargs): global counter self.rows += 1 # self.rows = 2 ########################################################## def change_on_press(self): childs = self.parent.children for ch in childs: if ch.id == self.id: print(ch.id) print(len(ch.id)) row_n = 0 if len(ch.id) == 11: row_n = ch.id[4:5] else: row_n = ch.id[4:6] for c in childs: if ('row_' + str(row_n) + '_col_0') == c.id: if c.state == "normal": c.state = "down" else: c.state = "normal" if ('row_' + str(row_n) + '_col_1') == c.id: if c.state == "normal": c.state = "down" else: c.state = "normal" if ('row_' + str(row_n) + '_col_2') == c.id: if c.state == "normal": c.state = "down" else: c.state = "normal" if ('row_' + str(row_n) + '_col_3') == c.id: if c.state == "normal": c.state = "down" else: c.state = "normal" def change_on_release(self): if self.state == "normal": self.state = "down" else: self.state = "normal" ########################################################## n = 0 for item in row_data: cell = CLabel(text=('[color=000000]' + item + '[/color]'), background_normal="background_normal.png", background_down="background_pressed.png", halign=row_align[n], markup=True, on_press=partial(change_on_press), on_release=partial(change_on_release), text_size=(0, None), size_hint_x=cols_size[n], size_hint_y=None, height=40, id=("row_" + str(counter) + "_col_" + str(n))) cell_width = Window.size[0] * cell.size_hint_x cell.text_size = (cell_width - 30, None) cell.texture_update() self.add_widget(cell) n += 1 counter += 1
def __init__(self, **kwargs): super(DesignerContent, self).__init__(**kwargs) self.find_tool.bind(on_close=partial(self.show_findmenu, False)) self.find_tool.bind(on_next=self.find_tool_next) self.find_tool.bind(on_prev=self.find_tool_prev) self.focus_code_input = Clock.create_trigger(self._focus_input)
def initiate_widgets(self, **kwargs): ''' Initiate all the widgets attached to Paging widget. ''' self.database_content = get_running_app().db_content() self.database_content = self.database_content counter = 0 for i in range(0, len(self.database_content)): if self.database_content[i][2] and self.database_content[i][ 6] and self.database_content[i][1]: counter += 1 self.content_length = counter self.total_pages = int(math.ceil(self.content_length / 7.)) self.current_page = 1 self.page_number = "PAGE " + str(self.current_page) + "/" + str( self.total_pages) self.filter = kwargs.get('filters') self.selectable_filter_grid = kwargs.get('grid_class') self.page_label = InfoLabelMedium2(halign='right', valign='bottom', color=(0, 0, 0, 1), text='{}'.format(self.page_number)) box = BoxLayout(orientation='horizontal', padding=(5, 5), spacing=15) prev_but = RectShadowButton(text='Ant.', size_hint_x=.3, color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter)) #box. inner_box = BoxLayout(orientation='horizontal', spacing=15) box.add_widget(prev_but) if self.total_pages <= 7: for i in range(self.total_pages): inner_box.add_widget( RectShadowButton(text=str(i + 1), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial( self.show_page, self.filter))) else: inner_box.add_widget( RectShadowButton(text=str(self.current_page), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) inner_box.add_widget( RectShadowButton(text=str(self.current_page + 1), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) inner_box.add_widget( RectShadowButton(text=str(self.current_page + 2), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) inner_box.add_widget(Label(text='...', color=(0, 0, 0, 1))) inner_box.add_widget( RectShadowButton(text=str(self.total_pages - 2), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) inner_box.add_widget( RectShadowButton(text=str(self.total_pages - 1), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) inner_box.add_widget( RectShadowButton(text=str(self.total_pages), size_hint_x=None, size=(100, self.size[1]), color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter))) box.add_widget(inner_box) next_but = RectShadowButton(text='Sig.', size_hint_x=.3, color=(0, 0, 0, 1), on_release=partial(self.show_page, self.filter)) box.add_widget(next_but) self.add_widget(box) self.add_widget(self.page_label)
def removerCliente(self): id = Principal.idCliente popup = ExclusaoPopup() popup.funcao = partial(self.remover, id) popup.open()
def bind_change_mode_menu_buttons(self): self.bind_back_btn() for button in self.app.view.mode_buttons: button.bind(on_press=partial(self.change_mode_controller))
def bind_change_mode_btn(self): self.app.view.change_mode_btn.bind( on_press=partial(self.choose_mode_controller))
def on_webdebugger(self, *args): """when running from webdebugger""" self.dispatch("on_module", mod="webdebugger", data=[]) Clock.schedule_once(partial(webbrowser.open, "http://localhost:5000/"), 5)
def grrid(self): grid = DataGrid(header, data, body_alignment, col_size) grid.rows = 10 scroll = ScrollView(size_hint=(1, 1), size=(400, 500000), scroll_y=0, pos_hint={ 'center_x': .5, 'center_y': .5 }) scroll.add_widget(grid) scroll.do_scroll_y = True scroll.do_scroll_x = False pp = partial(grid.add_row, ['001', 'Teste', '4.00', '4.00'], body_alignment, col_size) add_row_btn = Button(text="Add Row", on_press=pp) del_row_btn = Button(text="Delete Row", on_press=partial(grid.remove_row, len(header))) upt_row_btn = Button(text="Update Row") slct_all_btn = Button(text="Select All", on_press=partial(grid.select_all)) unslct_all_btn = Button(text="Unselect All", on_press=partial(grid.unselect_all)) show_grid_log = Button(text="Show log", on_press=partial(grid.show_log)) def modal_insert(self): lbl1 = Label(text='ID', id="lbl") lbl2 = Label(text='Nome', id="lbl") lbl3 = Label(text='Preco', id="lbl") lbl4 = Label(text='IVA', id="lbl") txt1 = TextInput(text='000', id="txtinp", input_filter='int') txt2 = TextInput(text='Product Name', id="txtinp") txt3 = TextInput(text='123.45', id="txtinp", input_filter='float') txt4 = TextInput(text='23', id="txtinp", input_filter='int') insertion_grid = GridLayout(cols=2) insertion_grid.add_widget(lbl1) insertion_grid.add_widget(txt1) insertion_grid.add_widget(lbl2) insertion_grid.add_widget(txt2) insertion_grid.add_widget(lbl3) insertion_grid.add_widget(txt3) insertion_grid.add_widget(lbl4) insertion_grid.add_widget(txt4) # create content and assign to the view content = Button(text='Close me!') modal_layout = BoxLayout(orientation="vertical") modal_layout.add_widget(insertion_grid) def insert_def(self): input_list = [] for text_inputs in reversed(self.parent.children[2].children): if text_inputs.id == "txtinp": input_list.append(text_inputs.text) print(input_list) grid.add_row(input_list, body_alignment, col_size, self) # print view # view.dismiss insert_btn = Button(text="Insert", on_press=insert_def) modal_layout.add_widget(insert_btn) modal_layout.add_widget(content) view = ModalView(auto_dismiss=False) view.add_widget(modal_layout) # bind the on_press event of the button to the dismiss function content.bind(on_press=view.dismiss) insert_btn.bind(on_release=view.dismiss) view.open() add_custom_row = Button(text="Add Custom Row", on_press=modal_insert) ### def json_fill(self): for d in data: print(d) self.grid.add_row(d, body_alignment, col_size, self) json_fill_btn = Button(text="JSON fill", on_press=partial(json_fill)) btn_grid = BoxLayout(orientation="vertical") rnk = Button(text=' Rank', size_hint_y=None, height='48dp') rnk1 = Button(text=' Fraction', size_hint_y=None, height='48dp') rnk2 = Button(text=' Predicted', size_hint_y=None, height='48dp') rnk3 = Button(text=' Analog', size_hint_y=None, height='48dp') rnk4 = Button(text=' PopLog', size_hint_y=None, height='48dp') rnk5 = Button(text=' Residual', size_hint_y=None, height='48dp') rnk6 = Button(text=' Settlement Index', size_hint_y=None, height='48dp') rnk7 = Button(text=' Sphere of Influence', size_hint_y=None, height='48dp') backhome = Button(text='back home') btn_grid.add_widget(add_custom_row) btn_grid.add_widget(del_row_btn) btn_grid.add_widget(upt_row_btn) btn_grid.add_widget(slct_all_btn) btn_grid.add_widget(unslct_all_btn) btn_grid.add_widget(rnk) btn_grid.add_widget(rnk1) btn_grid.add_widget(rnk2) btn_grid.add_widget(rnk3) btn_grid.add_widget(rnk4) btn_grid.add_widget(rnk5) btn_grid.add_widget(rnk6) btn_grid.add_widget(rnk7) btn_grid.add_widget(backhome) root = BoxLayout(orientation="horizontal") root.add_widget(scroll) root.add_widget(btn_grid) f = Popup(content=root, title='SETTLEMENT STUDIES') backhome.bind(on_press=f.dismiss) f.open()
def on_webdebugger(self, *args): '''when running from webdebugger''' self.dispatch('on_module', mod='webdebugger', data=[]) Clock.schedule_once(partial(webbrowser.open, 'http://localhost:5000/'), 5)