def __init__(self, column, row, on_update_state_action, parent_viewport, logger): def on_check(button): self.on_change_state(TRUE) self.on_update_state_action(TRUE) def on_uncheck(button): self.on_change_state(FALSE) self.on_update_state_action(FALSE) self.logger = logger self.column, self.row = column, row self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_update_state_action = on_update_state_action self.checked_checkbox_button, self.unchecked_checkbox_button = create_two_state_button( CheckedCheckboxButton(on_click_action=on_uncheck, parent_viewport=self.viewport), UncheckedCheckboxButton(on_click_action=on_check, parent_viewport=self.viewport)) self.buttons = [ self.checked_checkbox_button, self.unchecked_checkbox_button ] self.screen_resolution = (0, 0) self.description_label = None self.is_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, ]
def __init__(self, stage_number, on_buy_stage_action, parent_viewport): def on_buy_shop_stage(button): button.on_deactivate(instant=True) self.on_buy_stage_action(self.stage_number) self.logger = getLogger( f'root.app.game.map.shop.view.cell.{stage_number}') self.is_activated = False self.stage_number = stage_number USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_buy_stage_action = on_buy_stage_action self.data = [] self.screen_resolution = (0, 0) self.parent_viewport = parent_viewport self.viewport = Viewport() self.locked_label = ShopStageLockedLabel(parent_viewport=self.viewport) self.level_placeholder_label = ShopStageLevelPlaceholderLabel( parent_viewport=self.viewport) self.previous_stage_placeholder_label = ShopStagePreviousStagePlaceholderLabel( parent_viewport=self.viewport) self.hourly_profit_description_label = ShopStageHourlyProfitDescriptionLabel( parent_viewport=self.viewport) self.hourly_profit_value_label = ShopStageHourlyProfitValueLabel( parent_viewport=self.viewport) self.storage_capacity_description_label = ShopStageStorageCapacityDescriptionLabel( parent_viewport=self.viewport) self.storage_capacity_value_label = ShopStageStorageCapacityValueLabel( parent_viewport=self.viewport) self.exp_bonus_description_label = ShopStageExpBonusDescriptionLabel( parent_viewport=self.viewport) self.exp_bonus_value_label = ShopStageExpBonusValueLabel( parent_viewport=self.viewport) self.price_label = ShopStagePriceLabel(parent_viewport=self.viewport) self.under_construction_label = ShopStageUnderConstructionLabel( parent_viewport=self.viewport) self.build_button = BuildShopStageButton( on_click_action=on_buy_shop_stage, parent_viewport=self.viewport) self.buttons = [ self.build_button, ] USER_DB_CURSOR.execute('''SELECT money FROM game_progress''') self.money = USER_DB_CURSOR.fetchone()[0] self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, self.locked_label.on_window_resize, self.level_placeholder_label.on_window_resize, self.previous_stage_placeholder_label.on_window_resize, self.hourly_profit_description_label.on_window_resize, self.hourly_profit_value_label.on_window_resize, self.storage_capacity_description_label.on_window_resize, self.storage_capacity_value_label.on_window_resize, self.exp_bonus_description_label.on_window_resize, self.exp_bonus_value_label.on_window_resize, self.price_label.on_window_resize, self.under_construction_label.on_window_resize ]
def __init__(self, contents=None, border=1, step_size=None, scroll_horizontal="auto", scroll_vertical="auto", **kwargs): Table.__init__(self, rows=2, cols=2, padding=[border, 0, 0, border], **kwargs) self.viewport = Viewport(x_align=0, y_align=0) self.interactive, self.can_focus = True, True if step_size: self.step_size = step_siz #: with of the surrounding border in pixels self.border = border #: visibility of the horizontal scroll bar. True for always, False for never and "auto" for auto self.scroll_horizontal = scroll_horizontal #: visibility of the vertical scroll bar. True for always, False for never and "auto" for auto self.scroll_vertical = scroll_vertical #even if we are don't need the scrollbar, do we reserve space for it? self.reserve_space_vertical = False self.reserve_space_horizontal = False #: vertical scroll bar widget self.vscroll = ScrollBar() #: horizontal scroll bar widget self.hscroll = ScrollBar(horizontal=True) self.attach(self.viewport, 0, 1, 0, 1) self.attach(self.vscroll, 1, 2, 0, 1) self.attach(self.hscroll, 0, 1, 1, 2) if contents: if isinstance(contents, graphics.Sprite): contents = [contents] for sprite in contents: self.add_child(sprite) self.connect("on-mouse-scroll", self.__on_mouse_scroll) for bar in (self.vscroll, self.hscroll): self.connect_child(bar, "on-scroll", self.on_scroll) self.connect_child(bar, "on-scroll-step", self.on_scroll_step) self.connect_child(bar, "on-scroll-page", self.on_scroll_page)
def __init__(self, column, row, possible_values_list, on_update_state_action, parent_viewport, logger): def on_increment(button): self.choice_state += 1 self.temp_value_label.on_update_args( self.possible_values_list[self.choice_state]) self.on_update_state_action(self.choice_state) if self.choice_state >= len(self.possible_values_list) - 1: button.on_disable() button.state = 'normal' if self.choice_state > 0: button.paired_button.on_activate(instant=True) def on_decrement(button): self.choice_state -= 1 self.temp_value_label.on_update_args( self.possible_values_list[self.choice_state]) self.on_update_state_action(self.choice_state) if self.choice_state <= 0: button.on_disable() button.state = 'normal' if self.choice_state < len(self.possible_values_list) - 1: button.paired_button.on_activate(instant=True) self.logger = logger self.column, self.row = column, row self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_update_state_action = on_update_state_action self.screen_resolution = (0, 0) self.description_label = None self.temp_value_label = None self.choice_state = None self.possible_values_list = possible_values_list self.increment_button, self.decrement_button = create_two_state_button( IncrementButton(on_click_action=on_increment, parent_viewport=self.viewport), DecrementButton(on_click_action=on_decrement, parent_viewport=self.viewport)) self.buttons = [self.increment_button, self.decrement_button] self.is_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, ]
def __init__( self, map_id, on_buy_map_action, on_switch_map_action, on_set_money_target_action, on_reset_money_target_action, parent_viewport, logger ): def on_set_money_target(button): pass def on_reset_money_target(button): pass def on_buy_map(button): button.on_deactivate() self.on_buy_map_action(self.map_id) def on_switch_map(button): self.on_switch_map_action(self.map_id) self.logger = logger self.is_activated = False self.map_id = map_id self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_buy_map_action = on_buy_map_action self.on_switch_map_action = on_switch_map_action self.on_set_money_target_action = on_set_money_target_action self.on_reset_money_target_action = on_reset_money_target_action self.screen_resolution = (0, 0) USER_DB_CURSOR.execute('''SELECT level, money FROM game_progress''') self.level, self.money = USER_DB_CURSOR.fetchone() self.money_target_activated = False self.opacity = 0 self.build_map_button = BuildMapButton(on_click_action=on_buy_map, parent_viewport=self.viewport) self.switch_map_button = SwitchMapButton(on_click_action=on_switch_map, parent_viewport=self.viewport) self.buttons = [self.build_map_button, self.switch_map_button] self.data = MAP_SWITCHER_STATE_MATRIX[self.map_id] self.locked_label = MapSwitcherCellLockedLabel(parent_viewport=self.viewport) self.level_placeholder_label = MapSwitcherLevelPlaceholderLabel(parent_viewport=self.viewport) self.level_placeholder_label.on_update_args((self.data[MAP_LEVEL_REQUIRED], )) self.unlock_available_label = MapSwitcherUnlockAvailableLabel(parent_viewport=self.viewport) self.unlock_available_label.on_update_args((self.data[MAP_PRICE], )) self.title_label = None self.icon_labels = [] self.on_window_resize_handlers = [ self.on_window_resize, self.locked_label.on_window_resize, self.level_placeholder_label.on_window_resize, self.unlock_available_label.on_window_resize ]
def __init__(self, column, row, parent_viewport, logger): self.logger = logger self.column, self.row = column, row self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.description_label = None self.checkboxes = [] self.buttons = [] self.is_activated = False self.screen_resolution = (0, 0) self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, ]
def __init__(self, controller, logger, child_window=False): self.logger = logger self.child_window = child_window self.is_activated = False self.controller = controller self.viewport = Viewport() self.opacity = 0 self.buttons = [] self.game_progress_notifications = [] self.malfunction_notifications = [] self.on_mouse_press_handlers = [] self.on_mouse_release_handlers = [] self.on_mouse_motion_handlers = [] self.on_mouse_drag_handlers = [] self.on_mouse_leave_handlers = [] self.on_mouse_scroll_handlers = [] self.on_key_press_handlers = [] self.on_text_handlers = [] self.on_window_resize_handlers = [ self.on_window_resize, ] self.on_window_activate_handlers = [ self.on_window_activate, ] self.on_window_show_handlers = [ self.on_window_show, ] self.on_window_deactivate_handlers = [ self.on_window_deactivate, ] self.on_window_hide_handlers = [ self.on_window_hide, ] self.screen_resolution = (0, 0) USER_DB_CURSOR.execute('SELECT current_locale, clock_24h FROM i18n') self.current_locale, self.clock_24h_enabled = USER_DB_CURSOR.fetchone() self.game_progress_notifications_enabled = False self.shader_sprite = None USER_DB_CURSOR.execute('SELECT * FROM notification_settings') self.level_up_notification_enabled, self.feature_unlocked_notification_enabled, \ self.construction_completed_notification_enabled, self.enough_money_notification_enabled, \ self.bonus_expired_notification_enabled, self.shop_storage_notification_enabled,\ self.voice_not_found_notification_enabled = USER_DB_CURSOR.fetchone()
def __init__(self, column, row, on_update_state_action, parent_viewport, logger): self.logger = logger self.column, self.row = column, row self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_update_state_action = on_update_state_action self.screen_resolution = (0, 0) self.description_label = None self.knob = None self.is_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, ] self.on_mouse_motion_handlers = [] self.on_mouse_press_handlers = [] self.on_mouse_release_handlers = [] self.on_mouse_drag_handlers = []
def __init__(self, text="", draw_border=True, valid_chars=None, validate_on_type=True, single_paragraph=True, text_formatter=None, alignment=None, font_desc=None, **kwargs): Bin.__init__(self, **kwargs) self.display_label = graphics.Label(color=self.color) self.viewport = Viewport(self.display_label) self.viewport.connect("on-render", self.__on_viewport_render) self.add_child(self.viewport) self.can_focus = True self.interactive = True self.editable = True #: current cursor position self.cursor_position = None #: start position of the selection self.selection_start = 0 #: end position of the selection self.selection_end = 0 if font_desc is not None: self.font_desc = font_desc self.display_label.font_desc = self.font_desc #: text alignment in the entry self.alignment = alignment #: if True, a border will be drawn around the input element self.draw_border = draw_border #self.connect("on-key-press", self.__on_key_press) self.connect("on-mouse-down", self.__on_mouse_down) self.connect("on-double-click", self.__on_double_click) self.connect("on-triple-click", self.__on_triple_click) self.connect("on-blur", self.__on_blur) self.connect("on-focus", self.__on_focus) self.connect_after("on-render", self.__on_render) self._scene_mouse_move = None self._scene_mouse_up = None self._selection_start_position = None self._letter_positions = [] #: a string, function or regexp or valid chars for the input #: in case of function, it will receive the string to be tested #: as input and expects to receive back a boolean of whether the string #: is valid or not self.valid_chars = valid_chars #: should the content be validate right when typing and invalid version prohibited self.validate_on_type = validate_on_type #: function to style the entry text - change color and such #: the function receives one param - the text, and must return #: processed text back. will be using original text if the function #: does not return anything. #: Note: this function can change only the style, not the actual content #: as the latter will mess up text selection because of off-sync between #: the label value and what is displayed self.text_formatter = text_formatter if text_formatter else self.text_formatter #: should the text input support multiple lines self.single_paragraph = single_paragraph self.update_text(text) self._last_good_value = text # last known good value of the input
def __init__(self, labels=None, tab_position="top", tab_spacing=0, scroll_position=None, show_scroll="auto", scroll_selects_tab=True, **kwargs): Box.__init__(self, horizontal=False, spacing=0, **kwargs) #: list of tabs in the order of appearance self.tabs = [] #: list of pages in the order of appearance self.pages = [] #: container of the pages self.pages_container = self.pages_container_class(padding=1) #: container of tabs. useful if you want to adjust padding/placement self.tabs_container = Group(fill=False, spacing=tab_spacing) self.tabs_container.on_mouse_over = lambda button: False # ignore select-on-drag # viewport so that tabs don't go out of their area self._tabs_viewport = Viewport() self._tabs_viewport.get_min_size = self._tabs_viewport_get_min_size self._tabs_viewport.resize_children = self._tabs_viewport_resize_children self._tabs_viewport.add_child(self.tabs_container) #: wether scroll buttons should select next/previos tab or show the #: next/previos tab out of the view self.scroll_selects_tab = scroll_selects_tab #: container for custom content before tabs self.before_tabs = HBox(expand=False) #: container for custom content after tabs self.after_tabs = HBox(expand=False) #: button to scroll tabs back self.tabs_back = self.scroll_buttons_class("left", expand=False, visible=False, enabled=False, repeat_down_delay=150) self.tabs_back.connect("on-mouse-down", self.on_back_press) #: button to scroll tabs forward self.tabs_forward = self.scroll_buttons_class("right", expand=False, visible=False, enabled=False, repeat_down_delay=150) self.tabs_forward.connect("on-mouse-down", self.on_forward_press) #: the wrapping container that holds also the scroll buttons and everyting self.tabbox = self.tabbox_class(expand=False, expand_vert=False) self.tabbox.get_min_size = self.tabbox_get_min_size self.tabbox.get_height_for_width_size = self.tabbox_get_height_for_width_size self.tabbox.add_child(self.before_tabs, self.tabs_back, self._tabs_viewport, self.tabs_forward, self.after_tabs) #: current page self.current_page = 0 #: tab position: top, right, bottom, left and combinations: "top-right", "left-bottom", etc. self.tab_position = tab_position for label in labels or []: self.add_page(label) #: where to place the scroll buttons on tab overflow. one of "start" #: (both at the start), "end" (both at the end) or "around" (on left #: and right of the tabs) self.scroll_position = scroll_position #: determines when to show scroll buttons. True for always, False for #: never, "auto" for auto appearing and disappearing, and #: "auto_invisible" for going transparent instead of disappearing #: (the latter avoids tab toggle) self.show_scroll = show_scroll
def __init__(self, construction_type, row, on_buy_construction_action, on_set_money_target_action, on_reset_money_target_action, parent_viewport): def on_set_money_target(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.on_set_money_target_action(self.construction_type, self.row, self.entity_number) def on_reset_money_target(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.on_reset_money_target_action() def on_buy_construction(button): button.on_deactivate(instant=True) self.enable_money_target_button.on_deactivate(instant=True) self.disable_money_target_button.on_deactivate(instant=True) self.on_buy_construction_action(self.construction_type, self.row, self.entity_number) self.logger = getLogger( f'root.app.game.map.constructor.view.cell.{construction_type}.{row}' ) self.is_activated = False self.parent_viewport = parent_viewport self.viewport = Viewport() self.construction_type, self.row = construction_type, row USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_buy_construction_action = on_buy_construction_action self.on_set_money_target_action = on_set_money_target_action self.on_reset_money_target_action = on_reset_money_target_action self.entity_number = None self.data = [] self.screen_resolution = (0, 0) self.locked_label = ConstructorLockedLabel( parent_viewport=self.viewport) self.title_label = None self.level_required_label = ConstructorLevelPlaceholderLabel( parent_viewport=self.viewport) self.previous_entity_required_label = None self.environment_required_label = None self.unlock_available_label = None self.under_construction_description_label = UnderConstructionDescriptionLabel( parent_viewport=self.viewport) self.enable_money_target_button, self.disable_money_target_button = create_two_state_button( SetMoneyTargetButton(on_click_action=on_set_money_target, parent_viewport=self.viewport), ResetMoneyTargetButton(on_click_action=on_reset_money_target, parent_viewport=self.viewport)) self.build_button = BuildConstructionButton( on_click_action=on_buy_construction, parent_viewport=self.viewport) self.buttons = [ self.enable_money_target_button, self.disable_money_target_button, self.build_button ] USER_DB_CURSOR.execute('''SELECT money FROM game_progress''') self.money = USER_DB_CURSOR.fetchone()[0] self.money_target_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, self.locked_label.on_window_resize, self.level_required_label.on_window_resize, self.under_construction_description_label.on_window_resize ]