Esempio n. 1
0
    def __init__(self, ip: str, name: str, port: int, timeout: int, queryInterval: int,
                 root: py_cui.PyCUI,
                 row: int = 0, col: int = 0,
                 col_span: int = 1, row_span: int = 1,
                 log_fn=lambda *args, **kwargs: print(*args, **kwargs)) -> None:

        TCPQueryData.__init__(self, ip, name, port, timeout, queryInterval)

        self.up = None
        self.log_fn = log_fn

        self.root = root
        self.row = row
        self.column = col
        self.col_span = col_span
        self.row_span = row_span

        self.block_label_status_name = root.add_block_label(
            self.name,
            self.row, self.column,
            column_span=self.col_span, row_span=self.row_span)

        self.label_status = root.add_label(
            self.status_unknown(),
            self.row, self.column,
            column_span=self.col_span, row_span=self.row_span)

        self.label_status.add_text_color_rule(
            '\\+', py_cui.GREEN_ON_BLACK, 'contains')
        self.label_status.add_text_color_rule(
            'x', py_cui.RED_ON_BLACK, 'contains')
Esempio n. 2
0
def is_user_root(window: PyCUI) -> bool:
    if geteuid() == 0:
        LOGGER.write("info", "User is root")
        return True

    window.show_error_popup("Not root :(", "You have to be root or use sudo.")
    LOGGER.write("warning", "User is not root")
    return False
Esempio n. 3
0
    def create_py_cui_master(self) -> PyCUI:
        master: PyCUI = PyCUI(10, 10)
        master.toggle_unicode_borders()
        master.set_title("RecoverPy 1.5.1")
        master.run_on_exit(exit)

        return master
    def __init__(self, ui: py_cui.PyCUI, publisher):
        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.publisher = publisher
        self.id = publisher['id']

        self.info = self.root.add_text_block(
            'Publisher 🕮',
            0,
            0,
            initial_text=publisher['description'],
            column_span=3)
        self.games = self.root.add_scroll_menu('Games 🎲',
                                               1,
                                               0,
                                               row_span=2,
                                               column_span=3)

        self.games.add_key_command(py_cui.keys.KEY_ENTER, self.select_game)

        db = connect()

        games = []
        for game_id, _ in db.get_by_posting('game_publisher', 'publisher',
                                            self.id):
            game = db.get_by_key('games', game_id)
            games.append((game, game_rating(game, db)))

        games = sorted(games, key=lambda x: x[1], reverse=True)

        for game, rating in games:
            item = ListItem(game, f"({rating:.1f}) - {game['name']}")
            self.games.add_item(item)
Esempio n. 5
0
    def __init__(self, ui: py_cui.PyCUI):
        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.menu = self.root.add_scroll_menu('Operation Selection', 1, 1)
        self.menu.add_item_list(
            ['1. Search Games', '2. Search Publishers', '3. Fill Database'])
        self.menu.add_key_command(py_cui.keys.KEY_ENTER, self.select_operation)
    def __init__(self, ui: py_cui.PyCUI):
        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.search_bar = self.root.add_text_box('Search 🔍', 0, 1)
        self.results = self.root.add_scroll_menu('Results 🕮', 1, 1, row_span=2)

        self.search_bar.add_key_command(py_cui.keys.KEY_ENTER, self.search)
        self.results.add_key_command(py_cui.keys.KEY_ENTER,
                                     self.select_publisher)
Esempio n. 7
0
    def __init__(self, ui: py_cui.PyCUI):
        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.queue = queue.Queue()
        self.thread = None

        self.msg = ''

        self.progress_notifier = ProgressNotifier(self.on_message,
                                                  self.on_start_progress,
                                                  self.on_progress,
                                                  self.on_done)

        self.ui.set_on_draw_update_func(self.update)
    def __init__(self, ui: py_cui.PyCUI, mechanics=None, categories=None):
        self.categories = categories or []
        self.mechanics = mechanics or []
        self.reversed = False

        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.search_box = self.root.add_text_box('Search 🔍', 0, 0)
        self.result_list = self.root.add_scroll_menu('Results 🕮',
                                                     2,
                                                     0,
                                                     column_span=2)
        self.result_list.set_help_text('Press "r" to reverse the order')

        self.mechanics_search = self.root.add_text_box('Mechanics 🔍', 0, 1)
        self.mechanics_result = self.root.add_checkbox_menu(
            'Mechanics ⚙️', 0, 2)

        self.categories_search = self.root.add_text_box('Categories 🔍', 1, 2)
        self.categories_result = self.root.add_checkbox_menu(
            'Categories 📚', 2, 2)

        self.search_box.add_key_command(py_cui.keys.KEY_ENTER, self.search)
        self.mechanics_search.add_key_command(py_cui.keys.KEY_ENTER,
                                              self.search_mechanics)
        self.categories_search.add_key_command(py_cui.keys.KEY_ENTER,
                                               self.search_categories)

        self.categories_result.add_key_command(py_cui.keys.KEY_ENTER,
                                               self.select_category)
        self.mechanics_result.add_key_command(py_cui.keys.KEY_ENTER,
                                              self.select_mechanic)

        self.result_list.add_key_command(py_cui.keys.KEY_ENTER,
                                         self.select_result)
        self.result_list.add_key_command(py_cui.keys.KEY_R_LOWER, self.reverse)

        self.current_filter = self.root.add_block_label('Current Filters 📝',
                                                        1,
                                                        0,
                                                        column_span=2,
                                                        center=False)

        self.update_filters_text()
    def __init__(self, ui: py_cui.PyCUI, expansion):
        self.ui = ui
        self.root = ui.create_new_widget_set(3, 3)

        self.expansion = expansion
        self.id = expansion['id']

        self.info = self.root.add_text_block(
            f"Expansion (Year: {self.expansion['year']}) 🕮",
            0,
            0,
            initial_text=expansion['description'],
            row_span=3,
        )

        self.comments = self.root.add_text_block('Comments 💬',
                                                 0,
                                                 1,
                                                 row_span=3,
                                                 column_span=2)

        db = connect()

        text = ''
        total = 0
        count = 0
        for comment in db.get_by_posting('comments', 'expansion', self.id):
            if comment['rating'] != None:
                text += f"{comment['rating']}/10 - "
                total += comment['rating']
                count += 1

            text += comment['text'] + '\n\n'
        text = f'Average Rating: {total/(count or 1)}\n\n{text}'

        self.comments.set_text(text)
Esempio n. 10
0
    def __init__(self, root: py_cui.PyCUI):
        super().__init__(root)

        self.play_btn.command = self._play_cb_space_bar
        self.stop_btn.command = self._on_stop_click
        self.reload_btn.command = self._on_reload_click
        self.next_btn.command = self._on_next_track_click
        # self.prev_btn.command = lambda a=None: None

        self.clear_target = (self.audio_list, self.meta_list, self.info_box)

        # -- UI setup
        add_callback_patch(self.audio_list, self._on_file_click)
        add_callback_patch(self.volume_slider,
                           self.volume_callback,
                           keypress_only=True)
        root.run_on_exit(self._tui_destroy_callback)

        # -- Key binds
        self.audio_list.add_key_command(py_cui.keys.KEY_ENTER,
                                        self._play_cb_enter)
        self.volume_slider.add_key_command(py_cui.keys.KEY_SPACE,
                                           self._play_cb_space_bar)

        for widget in (
                self.audio_list,
                self.info_box,
                self.meta_list,
        ):
            widget.add_key_command(py_cui.keys.KEY_SPACE,
                                   self._play_cb_space_bar)
            widget.add_key_command(py_cui.keys.KEY_LEFT_ARROW,
                                   self._adjust_playback_left)
            widget.add_key_command(py_cui.keys.KEY_RIGHT_ARROW,
                                   self._adjust_playback_right)

        # -- Color rules
        self.info_box.add_text_color_rule("ERR:", py_cui.WHITE_ON_RED,
                                          "startswith")

        self.audio_list.add_text_color_rule(self.symbols["play"],
                                            py_cui.WHITE_ON_YELLOW, "contains")
        self.audio_list.add_text_color_rule(self.symbols["pause"],
                                            py_cui.WHITE_ON_YELLOW, "contains")
        self.audio_list.add_text_color_rule(self.symbols["stop"],
                                            py_cui.WHITE_ON_YELLOW, "contains")
        self.audio_list.add_text_color_rule(r"DIR",
                                            py_cui.CYAN_ON_BLACK,
                                            "startswith",
                                            include_whitespace=False)

        # -- State
        self.player_state: Type[PlayerStates] = AudioUnloaded
        self.initial_volume_position = self.volume_slider.get_slider_value()
        self.global_volume_multiplier = 0.4
        self._digit: int = 0

        # -- Path and stream instance
        self.stream = StreamManager(self.show_progress_wrapper(),
                                    self.play_next)
        self.volume_callback()
        self.path_wrapper = PathWrapper()
        self.current_playing_file: Union[pathlib.Path, None] = None

        # -- Generator instance and states
        self._current_play_generator = None
        self._current_name_cycler = None

        self._on_reload_click()