Ejemplo n.º 1
0
    def __init__(self):
        self.ui = cozy.ui.CozyUI()

        self.builder = Gtk.Builder.new_from_resource(
            "/de/geigi/cozy/timer_popover.ui")

        self.timer_popover = self.builder.get_object("timer_popover")
        self.timer_scale = self.builder.get_object("timer_scale")
        self.timer_label = self.builder.get_object("timer_label")
        self.timer_grid = self.builder.get_object("timer_grid")
        self.chapter_switch = self.builder.get_object("chapter_switch")
        self.chapter_switch.connect("state-set", self.__chapter_switch_changed)
        self.timer_image = self.ui.get_object("timer_image")
        self.min_label = self.builder.get_object("min_label")

        # text formatting
        self.timer_scale.connect("value-changed", self.__on_timer_changed)

        # add marks to timer scale
        for i in range(0, 121, 30):
            self.timer_scale.add_mark(i, Gtk.PositionType.RIGHT, None)

        # initialize timer ui
        self.__on_timer_changed(None)

        player.add_player_listener(self.__player_changed)
Ejemplo n.º 2
0
    def __init__(self):
        self.ui = cozy.ui.CozyUI()
        builder = self.ui.window_builder
        self.name_label = builder.get_object("info_book_label")
        self.author_label = builder.get_object("info_author_label")
        self.download_box = builder.get_object("info_download_box")
        self.download_label = builder.get_object("info_download_label")
        self.download_image = builder.get_object("info_download_image")
        self.download_switch = builder.get_object("info_download_switch")
        self.published_label = builder.get_object("info_published_label")
        self.last_played_label = builder.get_object("info_last_played_label")
        self.total_label = builder.get_object("info_total_label")
        self.remaining_label = builder.get_object("info_remaining_label")
        self.progress_bar = builder.get_object("book_progress_bar")
        self.cover_img = builder.get_object("info_cover_image")
        self.track_list_container = builder.get_object("track_list_container")
        self.published_text = builder.get_object("info_published_text")
        self.remaining_text = builder.get_object("info_remaining_text")
        self.play_book_button = builder.get_object("play_book_button")
        self.play_book_button.connect("clicked", self.__on_play_clicked)
        self.play_img = builder.get_object("play_img1")
        self.pause_img = builder.get_object("pause_img1")
        self.scroller = builder.get_object("book_overview_scroller")
        if Gtk.get_minor_version() > 20:
            self.scroller.props.propagate_natural_height = True

        self.ui.speed.add_listener(self.__ui_changed)
        player.add_player_listener(self.__player_changed)
        Settings().add_listener(self.__settings_changed)
        OfflineCache().add_listener(self.__on_offline_cache_changed)
Ejemplo n.º 3
0
    def __init__(self):
        self.ui = cozy.ui.CozyUI()

        self.builder = Gtk.Builder.new_from_resource(
            "/de/geigi/cozy/playback_speed_popover.ui")

        self.speed_scale = self.builder.get_object("playback_speed_scale")
        self.speed_label = self.builder.get_object("playback_speed_label")
        self.popover = self.builder.get_object("speed_popover")

        self.speed_scale.add_mark(1.0, Gtk.PositionType.RIGHT, None)
        self.speed_scale.set_increments(0.02, 0.05)
        self.speed_scale.connect("value-changed", self.__set_playback_speed)

        player.add_player_listener(self.__player_changed)
Ejemplo n.º 4
0
    def __init_signals(self):
        self.play_button.connect("clicked", self.__on_play_pause_clicked)
        self.prev_button.connect("clicked", self.__on_rewind_clicked)
        self.volume_button.connect("value-changed", self.__on_volume_changed)
        self.remaining_event_box.connect("button-release-event",
                                         self._on_remaining_clicked)

        # init progress scale
        self.progress_scale.connect("value-changed", self.update_ui_time)
        self.progress_scale.connect("button-release-event",
                                    self.__on_progress_clicked)
        self.progress_scale.connect("button-press-event",
                                    self.__on_progress_press)
        self.progress_scale.connect("key-press-event",
                                    self.__on_progress_key_pressed)

        player.add_player_listener(self.__player_changed)
Ejemplo n.º 5
0
    def __init__(self, ui):
        self.ui = ui
        builder = ui.window_builder
        self.name_label = builder.get_object("info_book_label")
        self.author_label = builder.get_object("info_author_label")
        self.published_label = builder.get_object("info_published_label")
        self.last_played_label = builder.get_object("info_last_played_label")
        self.total_label = builder.get_object("info_total_label")
        self.remaining_label = builder.get_object("info_remaining_label")
        self.progress_bar = builder.get_object("book_progress_bar")
        self.cover_img = builder.get_object("info_cover_image")
        self.track_list_container = builder.get_object("track_list_container")
        self.published_text = builder.get_object("info_published_text")
        self.remaining_text = builder.get_object("info_remaining_text")
        self.play_book_button = builder.get_object("play_book_button")
        self.play_book_button.connect("clicked", self.__on_play_clicked)
        self.play_img = builder.get_object("play_img1")
        self.pause_img = builder.get_object("pause_img1")
        self.scroller = builder.get_object("book_overview_scroller")
        if Gtk.get_minor_version() > 20:
            self.scroller.props.propagate_natural_height = True

        self.ui.speed.add_listener(self.__ui_changed)
        player.add_player_listener(self.__player_changed)
Ejemplo n.º 6
0
Archivo: ui.py Proyecto: oleg-krv/cozy
    def __init_window(self):
        """
        Add fields for all ui objects we need to access from code.
        Initialize everything we can't do from glade like events and other stuff.
        """
        log.info("Initialize main window")
        self.window = self.window_builder.get_object("app_window")
        self.window.set_default_size(1100, 700)
        self.window.set_application(self.app)
        self.window.show_all()
        self.window.present()
        self.window.connect("delete-event", self.on_close)
        self.window.connect("drag_data_received", self.__on_drag_data_received)
        self.window.drag_dest_set(
            Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT
            | Gtk.DestDefaults.DROP,
            [Gtk.TargetEntry.new("text/uri-list", 0, 80)], Gdk.DragAction.COPY)
        if not Gtk.get_minor_version() > 18:
            self.window.connect("check-resize", self.__window_resized)

        # hide wip stuff
        self.search_popover = self.search_builder.get_object("search_popover")
        timer_popover = self.timer_builder.get_object("timer_popover")

        self.timer_switch = self.timer_builder.get_object("timer_switch")
        self.timer_scale = self.timer_builder.get_object("timer_scale")
        self.timer_spinner = self.timer_builder.get_object("timer_spinner")
        self.timer_buffer = self.timer_builder.get_object("timer_buffer")
        self.cover_img = self.window_builder.get_object("cover_img")
        self.throbber = self.window_builder.get_object("spinner")
        self.author_box = self.window_builder.get_object("author_box")
        self.reader_box = self.window_builder.get_object("reader_box")
        self.book_box = self.window_builder.get_object("book_box")
        self.book_scroller = self.window_builder.get_object("book_scroller")
        self.sort_stack = self.window_builder.get_object("sort_stack")
        self.sort_box = self.window_builder.get_object("sort_box")
        self.progress_bar = self.window_builder.get_object("progress_bar")
        self.update_progress_bar = self.window_builder.get_object(
            "update_progress_bar")
        self.import_box = self.window_builder.get_object("import_box")
        self.position_box = self.window_builder.get_object("position_box")
        self.location_chooser = self.settings_builder.get_object(
            "location_chooser")
        self.status_stack = self.window_builder.get_object("status_stack")
        self.status_label = self.window_builder.get_object("status_label")
        self.play_button = self.window_builder.get_object("play_button")
        self.prev_button = self.window_builder.get_object("prev_button")
        self.main_stack = self.window_builder.get_object("main_stack")
        self.play_img = self.window_builder.get_object("play_img")
        self.pause_img = self.window_builder.get_object("pause_img")
        self.title_label = self.window_builder.get_object("title_label")
        self.subtitle_label = self.window_builder.get_object("subtitle_label")
        self.progress_scale = self.window_builder.get_object("progress_scale")
        self.current_label = self.window_builder.get_object("current_label")
        self.remaining_label = self.window_builder.get_object(
            "remaining_label")
        self.author_toggle_button = self.window_builder.get_object(
            "author_toggle_button")
        self.reader_toggle_button = self.window_builder.get_object(
            "reader_toggle_button")
        self.no_media_file_chooser = self.window_builder.get_object(
            "no_media_file_chooser")
        self.cover_img_box = self.window_builder.get_object("cover_img_box")
        self.timer_image = self.window_builder.get_object("timer_image")
        self.search_button = self.window_builder.get_object("search_button")
        self.timer_button = self.window_builder.get_object("timer_button")
        self.auto_scan_switch = self.window_builder.get_object(
            "auto_scan_switch")
        self.settings.bind("autoscan", self.auto_scan_switch, "active",
                           Gio.SettingsBindFlags.DEFAULT)

        # get settings window
        self.settings_window = self.settings_builder.get_object(
            "settings_window")
        self.settings_window.set_transient_for(self.window)
        self.settings_window.connect("delete-event", self.hide_window)
        self.init_db_settings()

        # get about dialog
        self.about_dialog = self.about_builder.get_object("about_dialog")
        self.about_dialog.set_transient_for(self.window)
        self.about_dialog.connect("delete-event", self.hide_window)
        self.about_dialog.set_version(self.version)

        # we need to update the database when the audio book location was changed
        folder_chooser = self.settings_builder.get_object("location_chooser")
        folder_chooser.connect("file-set", self.__on_folder_changed)
        self.no_media_file_chooser.connect("file-set",
                                           self.__on_no_media_folder_changed)

        # init popovers
        self.search_button.set_popover(self.search_popover)
        self.timer_button.set_popover(timer_popover)
        self.timer_switch.connect("notify::active",
                                  self.__timer_switch_changed)

        # init playback speed
        self.playback_speed_scale = self.speed_builder.get_object(
            "playback_speed_scale")
        self.playback_speed_scale.add_mark(1.0, Gtk.PositionType.RIGHT, None)
        self.playback_speed_scale.set_increments(0.02, 0.05)
        self.playback_speed_scale.connect("value-changed",
                                          self.__set_playback_speed)
        self.playback_speed_label = self.speed_builder.get_object(
            "playback_speed_label")

        self.playback_speed_button = self.window_builder.get_object(
            "playback_speed_button")
        playback_speed_popover = self.speed_builder.get_object("speed_popover")
        self.playback_speed_button.set_popover(playback_speed_popover)

        # init search
        self.search_book_label = self.search_builder.get_object("book_label")
        self.search_track_label = self.search_builder.get_object("track_label")
        self.search_author_label = self.search_builder.get_object(
            "author_label")
        self.search_reader_label = self.search_builder.get_object(
            "reader_label")
        self.search_reader_box = self.search_builder.get_object(
            "reader_result_box")
        self.search_author_box = self.search_builder.get_object(
            "author_result_box")
        self.search_book_box = self.search_builder.get_object(
            "book_result_box")
        self.search_track_box = self.search_builder.get_object(
            "track_result_box")
        self.search_entry = self.search_builder.get_object("search_entry")
        self.search_scroller = self.search_builder.get_object(
            "search_scroller")
        self.search_book_separator = self.search_builder.get_object(
            "book_separator")
        self.search_author_separator = self.search_builder.get_object(
            "author_separator")
        self.search_reader_separator = self.search_builder.get_object(
            "reader_separator")
        self.search_stack = self.search_builder.get_object("search_stack")

        self.search_entry.connect("search-changed", self.__on_search_changed)

        if Gtk.get_minor_version() > 20:
            self.search_scroller.set_max_content_width(400)
            self.search_scroller.set_max_content_height(600)
            self.search_scroller.set_propagate_natural_height(True)
            self.search_scroller.set_propagate_natural_width(True)

        # add marks to timer scale
        for i in range(0, 181, 15):
            self.timer_scale.add_mark(i, Gtk.PositionType.RIGHT, None)

        # this is required otherwise the timer will not show "min" on start
        self.__init_timer_buffer()
        # timer SpinButton text format
        self.timer_spinner.connect("value-changed", self.__on_timer_changed)
        self.timer_spinner.connect("focus-out-event",
                                   self.__on_timer_focus_out)

        # init progress scale
        self.progress_scale.set_increments(30.0, 60.0)
        self.progress_scale.connect("button-release-event",
                                    self.__on_progress_clicked)
        self.progress_scale.connect("button-press-event",
                                    self.__on_progress_press)
        self.progress_scale.connect("key-press-event",
                                    self.__on_progress_key_pressed)
        self.progress_scale.connect("value-changed", self.__update_ui_time)

        # shortcuts
        self.accel = Gtk.AccelGroup()

        # sorting and filtering
        self.author_box.connect("row-activated", self.__on_listbox_changed)
        self.reader_box.connect("row-activated", self.__on_listbox_changed)
        self.book_box.set_sort_func(self.__sort_books, None, False)
        self.book_box.set_filter_func(self.__filter_books, None, False)
        self.book_box.connect("selected-children-changed",
                              self.__on_book_selec_changed)

        # button actions
        self.play_button.connect("clicked", self.__on_play_pause_clicked)
        self.prev_button.connect("clicked", self.__on_rewind_clicked)
        self.author_toggle_button.connect("toggled", self.__toggle_author)
        self.reader_toggle_button.connect("toggled", self.__toggle_reader)

        # volume button
        self.volume_button = self.window_builder.get_object("volume_button")
        self.volume_button.connect("value-changed", self.__on_volume_changed)

        # hide remaining and current labels
        self.current_label.set_visible(False)
        self.remaining_label.set_visible(False)
        self.progress_scale.set_visible(False)

        # hide throbber
        self.throbber.set_visible(False)

        # menu
        menu = self.menu_builder.get_object("app_menu")
        self.menu_button = self.window_builder.get_object("menu_button")
        self.menu_button.set_menu_model(menu)

        if self.is_elementary:
            self.cover_img_box.props.width_request = 28
            self.cover_img_box.props.height_request = 28
            about_close_button = self.about_builder.get_object(
                "button_box").get_children()[2]
            about_close_button.connect("clicked", self.__about_close_clicked)

        player.add_player_listener(self.__player_changed)
Ejemplo n.º 7
0
    def __init_window(self):
        """
        Add fields for all ui objects we need to access from code.
        Initialize everything we can't do from glade like events and other stuff.
        """
        log.info("Initialize main window")
        self.window = self.window_builder.get_object("app_window")
        self.window.set_default_size(1100, 700)
        self.window.set_application(self.app)
        self.window.show_all()
        self.window.present()
        self.window.connect("delete-event", self.on_close)
        self.window.connect("drag_data_received", self.__on_drag_data_received)
        self.window.drag_dest_set(
            Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT
            | Gtk.DestDefaults.DROP,
            [Gtk.TargetEntry.new("text/uri-list", 0, 80)], Gdk.DragAction.COPY)

        # resizing the progress bar for older gtk versions
        if not Gtk.get_minor_version() > 18:
            self.window.connect("check-resize", self.__window_resized)

        self.author_box = self.window_builder.get_object("author_box")
        self.reader_box = self.window_builder.get_object("reader_box")
        self.book_box = self.window_builder.get_object("book_box")
        self.book_scroller = self.window_builder.get_object("book_scroller")
        self.sort_stack = self.window_builder.get_object("sort_stack")
        self.sort_stack.connect("notify::visible-child",
                                self.__on_sort_stack_changed)
        self.sort_box = self.window_builder.get_object("sort_box")
        self.import_box = self.window_builder.get_object("import_box")
        self.position_box = self.window_builder.get_object("position_box")
        self.main_stack = self.window_builder.get_object("main_stack")
        self.toolbar_revealer = self.window_builder.get_object(
            "toolbar_revealer")
        self.back_button = self.window_builder.get_object("back_button")
        self.back_button.connect("clicked", self.__on_back_clicked)

        self.category_toolbar = self.window_builder.get_object(
            "category_toolbar")

        self.sort_stack_revealer = self.window_builder.get_object(
            "sort_stack_revealer")
        # This fixes a bug where otherwise expand is
        # somehow set to true internally
        # but is still showing false in the inspector
        self.sort_stack_revealer.props.expand = True
        self.sort_stack_revealer.props.expand = False

        self.sort_stack_switcher = self.window_builder.get_object(
            "sort_stack_switcher")
        self.no_media_file_chooser = self.window_builder.get_object(
            "no_media_file_chooser")
        self.no_media_file_chooser.connect("file-set",
                                           self.__on_no_media_folder_changed)
        self.external_switch = self.window_builder.get_object(
            "external_switch")

        self.auto_scan_switch = self.window_builder.get_object(
            "auto_scan_switch")

        # some visual stuff
        self.category_toolbar_separator = self.window_builder.get_object(
            "category_toolbar_separator")
        if tools.is_elementary():
            self.category_toolbar.set_visible(False)

        # get about dialog
        self.about_dialog = self.about_builder.get_object("about_dialog")
        self.about_dialog.set_transient_for(self.window)
        self.about_dialog.connect("delete-event", self.hide_window)
        self.about_dialog.set_version(self.version)

        # shortcuts
        self.accel = Gtk.AccelGroup()

        # sorting and filtering
        self.author_box.connect("row-selected", self.__on_listbox_changed)
        self.reader_box.connect("row-selected", self.__on_listbox_changed)
        self.book_box.set_sort_func(self.__sort_books, None, False)
        self.book_box.set_filter_func(self.__filter_books, None, False)

        try:
            about_close_button = self.about_builder.get_object(
                "button_box").get_children()[2]

            if about_close_button:
                about_close_button.connect("clicked",
                                           self.__about_close_clicked)
        except Exception as e:
            log.info("Not connecting about close button.")

        player.add_player_listener(self.__player_changed)
Ejemplo n.º 8
0
    def __init_window(self):
        """
        Add fields for all ui objects we need to access from code.
        Initialize everything we can't do from glade like events and other stuff.
        """
        log.info("Initialize main window")
        self.window = self.window_builder.get_object("app_window")
        self.window.set_default_size(1100, 700)
        self.window.set_application(self.app)
        self.window.show_all()
        self.window.present()
        self.window.connect("delete-event", self.on_close)
        self.window.connect("drag_data_received", self.__on_drag_data_received)
        self.window.drag_dest_set(
            Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT
            | Gtk.DestDefaults.DROP,
            [Gtk.TargetEntry.new("text/uri-list", 0, 80)], Gdk.DragAction.COPY)

        # resizing the progress bar for older gtk versions
        if not Gtk.get_minor_version() > 18:
            self.window.connect("check-resize", self.__window_resized)

        self.author_box = self.window_builder.get_object("author_box")
        self.reader_box = self.window_builder.get_object("reader_box")
        self.book_box = self.window_builder.get_object("book_box")
        self.book_scroller = self.window_builder.get_object("book_scroller")
        self.sort_stack = self.window_builder.get_object("sort_stack")
        self.sort_box = self.window_builder.get_object("sort_box")
        self.import_box = self.window_builder.get_object("import_box")
        self.position_box = self.window_builder.get_object("position_box")
        self.main_stack = self.window_builder.get_object("main_stack")

        self.author_toggle_button = self.window_builder.get_object(
            "author_toggle_button")
        self.reader_toggle_button = self.window_builder.get_object(
            "reader_toggle_button")
        self.no_media_file_chooser = self.window_builder.get_object(
            "no_media_file_chooser")
        self.no_media_file_chooser.connect("file-set",
                                           self.__on_no_media_folder_changed)

        self.auto_scan_switch = self.window_builder.get_object(
            "auto_scan_switch")

        # get about dialog
        self.about_dialog = self.about_builder.get_object("about_dialog")
        self.about_dialog.set_transient_for(self.window)
        self.about_dialog.connect("delete-event", self.hide_window)
        self.about_dialog.set_version(self.version)

        # shortcuts
        self.accel = Gtk.AccelGroup()

        # sorting and filtering
        self.author_box.connect("row-activated", self.__on_listbox_changed)
        self.reader_box.connect("row-activated", self.__on_listbox_changed)
        self.book_box.set_sort_func(self.__sort_books, None, False)
        self.book_box.set_filter_func(self.__filter_books, None, False)
        self.book_box.connect("selected-children-changed",
                              self.__on_book_selec_changed)

        # button actions
        self.author_toggle_button.connect("toggled", self.__toggle_author)
        self.reader_toggle_button.connect("toggled", self.__toggle_reader)

        try:
            about_close_button = self.about_builder.get_object(
                "button_box").get_children()[2]

            if about_close_button is not None:
                about_close_button.connect("clicked",
                                           self.__about_close_clicked)
        except Exception as e:
            log.info("Not connecting about close button.")

        player.add_player_listener(self.__player_changed)