def __init__(self, tab_index, tab_name, active_flag):
        '''
        init docs
        '''
        # Init.
        gtk.Button.__init__(self)
        self.tab_index = tab_index
        self.tab_name = tab_name
        self.tab_name_size = 10
        self.tab_padding_x = 10
        self.tab_padding_y = 0
        (self.tab_name_width,
         self.tab_name_height) = get_content_size(self.tab_name)
        self.tab_width = self.tab_name_width + self.tab_padding_x * 2
        self.tab_height = self.tab_name_height + self.tab_padding_y * 2
        self.active_flag = active_flag

        self.set_size_request(self.tab_width, RANK_TAB_HEIGHT)

        self.connect("expose-event", self.expose_rank_tab)
        self.connect("motion-notify-event", self.motion_rank_tab)
        self.connect("clicked", self.button_press_rank_tab)
        self.connect("leave-notify-event", self.leave_rank_tab)

        global_event.register_event("click-rank-tab", self.click_rank_tab)
Exemple #2
0
    def __init__(self, data_manager):
        '''
        init docs
        '''
        # Init.
        gtk.VBox.__init__(self)
        self.data_manager = data_manager

        self.keywords = []
        self.all_pkg_names = []
        self.message_bar = MessageBar(18)

        self.content_box = gtk.VBox()

        self.treeview = TreeView(enable_drag_drop=False, expand_column=0)
        global_event.register_event("delete-search-page-items", self.treeview.delete_items)

        self.cute_message_image = gtk.VBox()
        self.cute_message_pixbuf = utils.get_common_locale_image_pixbuf("info", "noresult.png")
        self.cute_message_image.connect("expose-event", self.expose_cute_message_image)

        self.content_box.pack_start(self.message_bar, False, False)
        self.content_box.pack_start(self.treeview)

        self.loading_box = LoadingBox()

        self.pack_start(self.loading_box, True, True)

        self.treeview.connect("items-change", self.update_message_bar)
        self.treeview.draw_mask = self.draw_mask
    def __init__(self, data_manager):
        # Init.
        gtk.VBox.__init__(self)
        self.data_manager = data_manager

        self.tab_box = gtk.HBox()
        self.tab_box.set_size_request(-1, RANK_TAB_HEIGHT)
        self.tab_box.set_spacing(1)
        self.tab_box_align = gtk.Alignment()
        self.tab_box_align.set(1, 0, 0, 0)
        self.tab_box_align.set_padding(3, 9, 25, 48)
        for (tab_index, tab_name) in enumerate([_("Top 25 weekly"), _("Top 25 monthly"), _("Top 25 totally")]):
            self.tab_box.pack_start(RankTab(tab_index, tab_name, tab_index == 0), False, False)

        self.page_box = gtk.VBox()
        self.page_align = gtk.Alignment()
        self.page_align.set(0.5, 0.5, 1, 1)
        self.page_align.set_padding(0, 0, 15, 15)

        self.week_rank_icon_view = IconView()
        self.week_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.week_rank_icon_view.draw_mask = self.draw_mask

        self.month_rank_icon_view = IconView()
        self.month_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.month_rank_icon_view.draw_mask = self.draw_mask

        self.all_rank_icon_view = IconView()
        self.all_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.all_rank_icon_view.draw_mask = self.draw_mask

        self.week_rank_icon_view_scrlledwindow.add_child(self.week_rank_icon_view)
        self.month_rank_icon_view_scrlledwindow.add_child(self.month_rank_icon_view)
        self.all_rank_icon_view_scrlledwindow.add_child(self.all_rank_icon_view)

        self.tab_box_align.add(self.tab_box)
        self.page_box.pack_start(self.page_align)

        self.pack_start(self.tab_box_align, False, False)
        self.pack_start(self.page_box, True, True)

        self.loading = LoadingBox()

        self.view_list =  [
            ('week', self.week_rank_icon_view, self.week_rank_icon_view_scrlledwindow),
            ('month', self.month_rank_icon_view, self.month_rank_icon_view_scrlledwindow),
            ('all', self.all_rank_icon_view, self.all_rank_icon_view_scrlledwindow)]

        self.pkg_names = []

        self.show_flag = None
        self.all_show_flag = ['week', 'month', 'all']

        global_event.register_event("update-rank-page", self.update_rank_page)

        gtk.timeout_add(300, self.get_pkgs_status)

        global_event.emit("update-rank-page", 0)
Exemple #4
0
 def start_loading(self):
     global_event.register_event('download-app-info-finish',
                                 self.app_info_download_finish)
     FetchInfo(self.appid).start()
     self.swf_save_path = os.path.expanduser(
         "~/.cache/deepin-game-center/downloads/%s/%s" %
         (self.appid, os.path.split(self.swf_url)[1]))
     if os.path.exists(self.swf_save_path):
         gtk.timeout_add(200, lambda: self.load_game())
     else:
         gtk.timeout_add(200, self.show_loading_page)
 def start_loading(self):
     global_event.register_event('download-app-info-finish', 
             self.app_info_download_finish)
     FetchInfo(self.appid).start()
     self.swf_save_path = os.path.expanduser(
             "~/.cache/deepin-game-center/downloads/%s/%s" % (
                 self.appid, 
                 os.path.split(self.swf_url)[1])
             )
     if os.path.exists(self.swf_save_path):
         gtk.timeout_add(200, lambda:self.load_game())
     else:
         gtk.timeout_add(200, self.show_loading_page)
Exemple #6
0
    def __init__(self):
        '''
        init docs
        '''
        gtk.VBox.__init__(self)
        self.scrolled_window = ScrolledWindow()

        self.iconview = IconView()
        self.iconview.draw_mask = self.draw_mask

        self.scrolled_window.add_child(self.iconview)
        self.pack_start(self.scrolled_window, True, True)

        global_event.register_event('download-album-infos-finish', self.update_item)
 def __init__(self, data_manager, recommend_status):
     '''
     init docs
     '''
     TreeItem.__init__(self)
     self.name = _("Home")
     self.data_manager = data_manager
     self.recommend_status = recommend_status
     
     self.page_cache = {}
     self.page_name = ['recommend', 'album', 'download_rank']
     
     self.init_recommend_page()
     global_event.register_event('download-home-infos-finish', self.update_home_page)
Exemple #8
0
    def __init__(self):
        '''
        init docs
        '''
        gtk.VBox.__init__(self)
        self.scrolled_window = ScrolledWindow()

        self.iconview = IconView()
        self.iconview.draw_mask = self.draw_mask

        self.scrolled_window.add_child(self.iconview)
        self.pack_start(self.scrolled_window, True, True)

        global_event.register_event('download-album-infos-finish',
                                    self.update_item)
Exemple #9
0
    def __init__(self, data_manager, recommend_status):
        '''
        init docs
        '''
        TreeItem.__init__(self)
        self.name = _("Home")
        self.data_manager = data_manager
        self.recommend_status = recommend_status

        self.page_cache = {}
        self.page_name = ['recommend', 'album', 'download_rank']

        self.init_recommend_page()
        global_event.register_event('download-home-infos-finish',
                                    self.update_home_page)
    def __init__(self):
        super(GuideBox, self).__init__()

        self.scrolled_window = ScrolledWindow()
        self.backgroundbox = BackgroundBox()
        self.backgroundbox.draw_mask = self.draw_mask

        self.guide_pixbuf = utils.get_common_image_pixbuf('guide.png')

        self.top_title = gtk.HBox()

        self.top_left_icon = gtk.VBox()
        self.top_left_icon.set_size_request(self.guide_pixbuf.get_width(),
                                            self.guide_pixbuf.get_height())
        self.top_left_icon.connect('expose-event', self.expose_top_left_icon)
        top_left_icon_align = gtk.Alignment(0.5, 0.5, 0, 0)
        top_left_icon_align.set_padding(15, 3, 13, 3)
        top_left_icon_align.add(self.top_left_icon)

        self.top_right_text = Label(
            _("Introduction"), ui_theme.get_color('label_select_background'),
            14)
        top_right_text_align = gtk.Alignment(0.5, 0.5, 0, 0)
        top_right_text_align.set_padding(18, 3, 3, 3)
        top_right_text_align.add(self.top_right_text)

        self.top_title.pack_start(top_left_icon_align, False, False)
        self.top_title.pack_start(top_right_text_align, False, False)

        self.content_box = gtk.VBox()
        self.guide_label = Label('',
                                 enable_select=False,
                                 wrap_width=200,
                                 text_size=9,
                                 text_color=DynamicColor('#808080'))
        guide_label_align = gtk.Alignment(0.5, 0.5, 1, 1)
        guide_label_align.set_padding(5, 5, 10, 10)
        guide_label_align.add(self.guide_label)
        self.content_box.pack_start(guide_label_align, False, False)

        self.backgroundbox.pack_start(self.top_title, False, False)
        self.backgroundbox.pack_start(self.content_box)

        self.scrolled_window.add_child(self.backgroundbox)
        self.add(self.scrolled_window)

        global_event.register_event('download-app-info-finish',
                                    self.update_content)
    def __init__(self, hide_callback=None):
        self.hide_callback = hide_callback
        self.dialog_width = 330
        DialogBox.__init__(
            self,
            title="",
            default_width=self.dialog_width,
            default_height=145,
            mask_type=0,
            close_callback=self.close_action,
            modal=True,
            window_hint=gtk.gdk.WINDOW_TYPE_HINT_DIALOG,
            window_pos=None,
            skip_taskbar_hint=True,
            resizable=False,
            window_type=gtk.WINDOW_TOPLEVEL,
        )

        self.waiting_animation = gtk.VBox()
        self.waiting_animation.set_size_request(36, 36)
        self.waiting_bg_pixbuf = utils.get_common_image_pixbuf(
            "waiting/waiting_bg.png")
        self.waiting_fg_pixbuf = utils.get_common_image_pixbuf(
            "waiting/waiting_fg.png")
        self.waiting_animation.connect("expose-event", self.expose_waiting)
        self.counter = 1
        self.factor = math.pi / 10
        gtk.timeout_add(50, self.on_timer)

        self.label = Label(
            _("Speed testing will finish only after one minute, please wait."),
            text_size=10,
            wrap_width=self.dialog_width - 36 - 60,
        )

        self.waiting_hbox = gtk.HBox()
        self.waiting_hbox.pack_start(self.waiting_animation, False, False)
        self.waiting_hbox.pack_start(self.label, False, False)

        self.center_align = gtk.Alignment()
        self.center_align.set(0.5, 0.5, 0, 0)
        self.center_align.set_padding(0, 0, 8, 8)
        self.body_box.add(self.center_align)

        global_event.register_event("mirror-test-finished", self.show_result)
 def __init__(self, pkg_cache):
     '''
     init docs
     '''
     MissionThreadPool.__init__(
         self, 
         1,
         1,
         self.clean_action,
         )
     
     self.pkg_cache = pkg_cache
     self.install_action_dict = {}
     self.uninstall_action_dict = {}
     self.upgrade_action_dict = {}
     
     global_event.register_event("action-start", self.start_action)
     global_event.register_event("action-update", self.update_action)
Exemple #13
0
    def __init__(self):
        PreferenceDialog.__init__(self, 566, 488)

        self.waiting_dialog = WaitingDialog()
        self.waiting_dialog.set_transient_for(self)

        preference_items = []
        self.general_box = GeneralBox()
        preference_items.append((_("General"), self.general_box))
        #if len(all_mirrors) > 0:
            #self.mirrors_box = MirrorsBox()
            #preference_items.append((_("Mirrors"), self.mirrors_box))
        self.about_box = AboutBox()
        preference_items.append((_("About"), self.about_box))
        self.set_preference_items(preference_items)

        global_event.register_event("toggle-waiting-dialog", self.handle_toggle_waiting_dialog)
        global_event.register_event("mirror-backend-changed", self.handle_after_mirror_changed)
Exemple #14
0
    def __init__(self):
        PreferenceDialog.__init__(self, 566, 488)

        self.waiting_dialog = WaitingDialog()
        self.waiting_dialog.set_transient_for(self)

        self.general_box = GeneralBox()
        self.mirrors_box = MirrorsBox()
        self.about_box = AboutBox()

        self.set_preference_items([
            (_("General"), self.general_box),
            (_("Mirrors"), self.mirrors_box),
            (_("About"), self.about_box),
            ])

        global_event.register_event("toggle-waiting-dialog", self.handle_toggle_waiting_dialog)
        global_event.register_event("mirror-backend-changed", self.handle_after_mirror_changed)
    def __init__(self, hide_callback=None):
        self.hide_callback = hide_callback
        self.dialog_width = 330
        DialogBox.__init__(
                self,
                title="",
                default_width=self.dialog_width,
                default_height=145,
                mask_type=0,
                close_callback=self.close_action,
                modal=True,
                window_hint=gtk.gdk.WINDOW_TYPE_HINT_DIALOG,
                window_pos=None,
                skip_taskbar_hint=True,
                resizable=False,
                window_type=gtk.WINDOW_TOPLEVEL,
                )

        self.waiting_animation = gtk.VBox()
        self.waiting_animation.set_size_request(36, 36)
        self.waiting_bg_pixbuf = utils.get_common_image_pixbuf("waiting/waiting_bg.png")
        self.waiting_fg_pixbuf = utils.get_common_image_pixbuf("waiting/waiting_fg.png")
        self.waiting_animation.connect("expose-event", self.expose_waiting)
        self.counter = 1
        self.factor = math.pi/10
        gtk.timeout_add(50, self.on_timer)

        self.label = Label(
            _("Speed testing will finish only after one minute, please wait."),
            text_size=10,
            wrap_width=self.dialog_width- 36 - 60,
            )

        self.waiting_hbox = gtk.HBox()
        self.waiting_hbox.pack_start(self.waiting_animation, False, False)
        self.waiting_hbox.pack_start(self.label, False, False)

        self.center_align = gtk.Alignment()
        self.center_align.set(0.5, 0.5, 0, 0)
        self.center_align.set_padding(0, 0, 8, 8)
        self.body_box.add(self.center_align)

        global_event.register_event("mirror-test-finished", self.show_result)
Exemple #16
0
    def __init__(self, data_manager):
        '''
        init docs
        '''
        # Init.
        gtk.VBox.__init__(self)
        self.in_detail_view = False
        self.data_manager = data_manager

        self.album_summary_align = gtk.Alignment()
        self.album_summary_align.set(0.5, 0.5, 1, 1)
        self.album_summary_align.set_padding(0, 0, 0, 10)

        self.album_detail_align = gtk.Alignment()
        self.album_detail_align.set(0.5, 0.5, 1, 1)
        self.album_detail_align.set_padding(5, 0, 0, 10)

        self.album_summary_view = AlbumSummaryView()
        self.loading_box = LoadingBox()
        self.network_failed_box = NetworkConnectFailed(
            self.check_network_connection)

        container_remove_all(self)
        self.add(self.loading_box)

        self.check_network_connection()
        global_event.register_event("switch-to-album-detail-view",
                                    self.switch_to_album_detail_view)
        global_event.register_event('switch-to-album-summary-view',
                                    self.switch_to_album_summary_view)
        global_event.register_event('switch-to-network-problem-view',
                                    self.switch_to_network_problem_view)
    def __init__(self):
        super(GuideBox, self).__init__()

        self.scrolled_window = ScrolledWindow()
        self.backgroundbox = BackgroundBox()
        self.backgroundbox.draw_mask = self.draw_mask

        self.guide_pixbuf = utils.get_common_image_pixbuf('guide.png')

        self.top_title = gtk.HBox()

        self.top_left_icon = gtk.VBox()
        self.top_left_icon.set_size_request(self.guide_pixbuf.get_width(), self.guide_pixbuf.get_height())
        self.top_left_icon.connect('expose-event', self.expose_top_left_icon)
        top_left_icon_align = gtk.Alignment(0.5, 0.5, 0, 0)
        top_left_icon_align.set_padding(15, 3, 13, 3)
        top_left_icon_align.add(self.top_left_icon)

        self.top_right_text = Label(_("Introduction"), ui_theme.get_color('label_select_background'), 14)
        top_right_text_align = gtk.Alignment(0.5, 0.5, 0, 0)
        top_right_text_align.set_padding(18, 3, 3, 3)
        top_right_text_align.add(self.top_right_text)

        self.top_title.pack_start(top_left_icon_align, False, False)
        self.top_title.pack_start(top_right_text_align, False, False)

        self.content_box = gtk.VBox()
        self.guide_label = Label('', enable_select=False, wrap_width=200, text_size=9, text_color=DynamicColor('#808080'))
        guide_label_align = gtk.Alignment(0.5, 0.5, 1, 1)
        guide_label_align.set_padding(5, 5, 10, 10)
        guide_label_align.add(self.guide_label)
        self.content_box.pack_start(guide_label_align, False, False)

        self.backgroundbox.pack_start(self.top_title, False, False)
        self.backgroundbox.pack_start(self.content_box)

        self.scrolled_window.add_child(self.backgroundbox)
        self.add(self.scrolled_window)

        global_event.register_event('download-app-info-finish', self.update_content)
    def create_mirror_select_table(self):
        vbox = gtk.VBox()
        vbox.set_size_request(423, -1)
        main_table = gtk.Table(2, 2)
        main_table.set_row_spacings(CONTENT_ROW_SPACING)
        
        dir_title_label = Label(_("Select mirror"))
        dir_title_label.set_size_request(423, 12)
        label_align = gtk.Alignment()
        label_align.set_padding(0, 0, 10, 0)
        label_align.add(dir_title_label)

        self.mirrors_dir = os.path.join(get_parent_dir(__file__, 2), 'mirrors')
        self.current_mirror_hostname = utils.get_current_mirror_hostname()
        self.mirror_items = self.get_mirror_items()
        self.mirror_view = TreeView(self.mirror_items,
                                enable_drag_drop=False,
                                enable_multiple_select=False,
                                #mask_bound_height=0,
                             )
        self.mirror_view.set_expand_column(1)
        self.mirror_view.set_size_request(-1, len(self.mirror_view.visible_items) * self.mirror_view.visible_items[0].get_height())
        self.mirror_view.draw_mask = self.mirror_treeview_draw_mask
        #self.display_current_mirror()

        self.mirror_test_progressbar = ProgressBar()

        main_table.attach(label_align, 0, 2, 0, 1, yoptions=gtk.FILL, xpadding=8)
        main_table.attach(create_separator_box(), 0, 2, 1, 2, yoptions=gtk.FILL)
        
        title = _("Select best mirror")
        info_message = _("Please wait. The process will take 30 seconds or more depending on your network connection")
        self.select_best_mirror_dialog = WaitingDialog(title, info_message, self.cancel_mirror_test)
        global_event.register_event("mirror-changed", self.mirror_changed_handler)
        global_event.register_event("update-list-finish", self.update_list_finish_handler)

        vbox.pack_start(main_table, False, False)
        vbox.pack_start(self.mirror_view, False, False)

        return vbox
Exemple #19
0
    def __init__(self, data_manager):
        '''
        init docs
        '''
        # Init.
        gtk.VBox.__init__(self)
        self.in_detail_view = False
        self.data_manager = data_manager

        self.album_summary_align = gtk.Alignment()
        self.album_summary_align.set(0.5, 0.5, 1, 1)
        self.album_summary_align.set_padding(0, 0, 0, 10)

        self.album_detail_align = gtk.Alignment()
        self.album_detail_align.set(0.5, 0.5, 1, 1)
        self.album_detail_align.set_padding(5, 0, 0, 10)

        self.album_summary_view = AlbumSummaryView()
        self.loading_box = LoadingBox()
        self.network_failed_box = NetworkConnectFailed(self.check_network_connection)

        container_remove_all(self)
        self.add(self.loading_box)

        self.check_network_connection()
        global_event.register_event("switch-to-album-detail-view", self.switch_to_album_detail_view)
        global_event.register_event('switch-to-album-summary-view', self.switch_to_album_summary_view)
        global_event.register_event('switch-to-network-problem-view', self.switch_to_network_problem_view)
    def __init__(self, bus_interface, data_manager):
        '''
        init docs
        '''
        # Init.
        gtk.VBox.__init__(self)
        self.bus_interface = bus_interface
        self.data_manager = data_manager

        self.search_flag = False
        self.uninstall_change_items = {"add": [], "delete": []}

        ### init UI widgets
        self.message_bar = MessageBar(32)
        self.message_bar.search_entry.entry.connect("changed", self.search_cb)
        self.message_bar.search_button.connect("clicked", self.search_cb)

        self.top_hbox = gtk.HBox()
        self.top_hbox.pack_start(self.message_bar)

        self.treeview = TreeView(enable_drag_drop=False)
        self.treeview.set_expand_column(0)
        self.treeview.connect("items-change", self.update_message_bar)

        self.loading_box = LoadingBox()
        self.loading_box_align = create_align((0.5, 0.5, 1, 1),
                                              (10, 10, 10, 10))
        self.loading_box_align.add(self.loading_box)
        ### init UI widgets

        self.white_kernel_pkg_names = self.get_white_kernel_pkg_names()

        global_event.register_event("uninstall-items-filtered",
                                    self.load_uninstall_items)
        self.show_loading_page()
        self.fetch_uninstall_info()

        self.treeview.draw_mask = self.draw_mask
    def __init__(self, tab_index, tab_name, active_flag):
        '''
        init docs
        '''
        # Init.
        gtk.Button.__init__(self)
        self.tab_index = tab_index
        self.tab_name = tab_name
        self.tab_name_size = 10
        self.tab_padding_x = 10
        self.tab_padding_y = 0
        (self.tab_name_width, self.tab_name_height) = get_content_size(self.tab_name)
        self.tab_width = self.tab_name_width + self.tab_padding_x * 2
        self.tab_height = self.tab_name_height + self.tab_padding_y * 2
        self.active_flag = active_flag

        self.set_size_request(self.tab_width, RANK_TAB_HEIGHT)

        self.connect("expose-event", self.expose_rank_tab)
        self.connect("motion-notify-event", self.motion_rank_tab)
        self.connect("clicked", self.button_press_rank_tab)
        self.connect("leave-notify-event", self.leave_rank_tab)

        global_event.register_event("click-rank-tab", self.click_rank_tab)
    def __init__(self, bus_interface, data_manager):
        '''
        init docs
        '''
        # Init.
        gtk.VBox.__init__(self)
        self.bus_interface = bus_interface
        self.data_manager = data_manager

        self.search_flag = False
        self.uninstall_change_items = {"add": [], "delete": []}

        ### init UI widgets
        self.message_bar = MessageBar(32)
        self.message_bar.search_entry.entry.connect("changed", self.search_cb)
        self.message_bar.search_button.connect("clicked", self.search_cb)

        self.top_hbox = gtk.HBox()
        self.top_hbox.pack_start(self.message_bar)

        self.treeview = TreeView(enable_drag_drop=False)
        self.treeview.set_expand_column(0)
        self.treeview.connect("items-change", self.update_message_bar)

        self.loading_box = LoadingBox()
        self.loading_box_align = create_align((0.5, 0.5, 1, 1), (10, 10, 10, 10))
        self.loading_box_align.add(self.loading_box)
        ### init UI widgets

        self.white_kernel_pkg_names = self.get_white_kernel_pkg_names()

        global_event.register_event("uninstall-items-filtered", self.load_uninstall_items)
        self.show_loading_page()
        self.fetch_uninstall_info()

        self.treeview.draw_mask = self.draw_mask
Exemple #23
0
    def __init__(self):
        BaseBox.__init__(self)

        self.current_mirror_item = None

        self.select_best_mirror_button_texts = {
                "normal": _("Select the best mirror"),
                "wait": _("Waiting"),
                "success": _("Successfully")
                }

        self.main_box.pack_start(self.create_mirror_select_table(), True, True)
        self.main_box.pack_start(self.create_source_update_frequency_table(), False, True)
        self.mirror_test_obj = None

        global_event.register_event("mirror-test-finished", self.finish_mirror_test)
        global_event.register_event("cancel-mirror-test", self.cancel_mirror_test)
        global_event.register_event("mirror-backend-changed", self.mirror_changed_handler)
Exemple #24
0
    def __init__(self):
        BaseBox.__init__(self)

        self.current_mirror_item = None

        self.select_best_mirror_button_texts = {
                "normal": _("Select the best mirror"),
                "wait": _("Waiting"),
                "success": _("Successfully")
                }

        self.main_box.pack_start(self.create_mirror_select_table(), True, True)
        self.main_box.pack_start(self.create_source_update_frequency_table(), False, True)
        self.mirror_test_obj = None

        global_event.register_event("mirror-test-finished", self.finish_mirror_test)
        global_event.register_event("cancel-mirror-test", self.cancel_mirror_test)
        global_event.register_event("mirror-backend-changed", self.mirror_changed_handler)
Exemple #25
0
    def __init__(self, data_manager):
        '''
        init docs
        '''
        gtk.HBox.__init__(self)
        self.data_manager = data_manager
        self.pkg_name = None
        self.alias_name = ""
        self.pkg_pixbuf = None
        self.pkg_star_view = None

        self.left_view_box = gtk.VBox()
        self.left_view_box.set_size_request(self.LEFT_INFO_WIDTH, - 1)

        self.left_logo_box = gtk.VBox()
        self.left_logo_box.set_size_request(-1, 90)

        self.star_box = gtk.HBox()
        self.star_align = gtk.Alignment(0.4, 0.5, 0, 0)
        self.star_align.set_padding(0, 5, 0, 0)
        self.star_align.add(self.star_box)

        self.left_action_box = gtk.HBox()
        self.left_action_align = gtk.Alignment()
        self.left_action_align.set(0.5, 0.5, 0, 0)
        self.left_action_align.set_padding(0, 30, 0, 0)
        self.left_action_align.add(self.left_action_box)

        self.left_label_table = gtk.Table(4, 1)
        self.left_label_table.set_row_spacings(4)

        self.left_label_align = gtk.Alignment()
        self.left_label_align.set(0.0, 0.5, 0, 0)
        self.left_label_align.set_padding(0, 0, 14, 0)

        self.left_category_name_label = Label()
        self.left_category_label = Label(hover_color=app_theme.get_color("homepage_hover"))
        self.left_category_label.set_clickable()
        self.left_category_label_align = gtk.Alignment()
        self.left_category_label_align.set(0.0, 0.5, 0, 0)
        self.left_category_label_align.add(self.left_category_label)
        self.left_category_label_box = gtk.HBox()
        self.left_category_label_box.pack_start(self.left_category_name_label, False, False)
        self.left_category_label_box.pack_start(self.left_category_label_align, True, True)
        self.left_category_box = gtk.VBox()
        self.left_version_label = Label(label_width=136)
        show_label_tooltip(self.left_version_label)
        self.left_version_label.set_ellipsize(pango.ELLIPSIZE_END)
        self.left_download_label = Label()
        self.left_size_label = Label()

        self.left_homepage_box = gtk.HBox()
        self.left_homepage_box_align = gtk.Alignment()
        self.left_homepage_box_align.set(0.0, 0.5, 0, 0)
        self.left_homepage_box_align.add(self.left_homepage_box)

        self.left_recommend_box = gtk.VBox()
        self.left_recommend_box_align = gtk.Alignment()
        self.left_recommend_box_align.set(0.0, 0.0, 0, 0)
        self.left_recommend_box_align.set_padding(30, 0, 14, 0)
        self.left_recommend_box_align.add(self.left_recommend_box)

        self.left_recommend_label = Label(_("Popular recommendations"))

        self.right_info_box = gtk.VBox()
        self.scrolled_window = ScrolledWindow(0, 0)
        self.right_view_box = gtk.VBox()

        self.right_top_box = gtk.HBox()
        self.right_top_box.set_size_request(-1, self.RIGHT_TITLE_BOX_HEIGHT)
        self.right_desc_box = gtk.VBox()
        self.right_slide_box = gtk.VBox()
        self.right_comment_box = gtk.VBox()

        self.right_title_box = gtk.VBox()

        self.return_button = ImageButton(
            app_theme.get_pixbuf("detail/normal.png"),
            app_theme.get_pixbuf("detail/hover.png"),
            app_theme.get_pixbuf("detail/press.png"),
            )
        self.return_align = gtk.Alignment()
        self.return_align.set(0.5, 0.5, 1, 1)
        self.return_align.set_padding(self.ALIAS_NAME_PADDING_Y, 0, 0, self.RIGHT_INFO_PADDING_X)
        self.return_align.add(self.return_button)

        self.return_button.connect("clicked", lambda w: global_event.emit("switch-from-detail-page"))

        self.right_top_box.pack_start(self.right_title_box, True, True)
        self.right_top_box.pack_start(self.return_align, False, False)

        self.right_view_box.pack_start(self.right_top_box, False, False)
        self.right_view_box.pack_start(self.right_desc_box, False, False)
        self.right_view_box.pack_start(self.right_slide_box, False, False)
        self.right_view_box.pack_start(self.right_comment_box, False, False)
        self.scrolled_window.add_child(self.right_view_box)

        self.left_view_box.pack_start(self.left_logo_box, False, False)
        self.left_view_box.pack_start(self.star_align, False, False)
        self.left_view_box.pack_start(self.left_action_align, False, False)
        self.left_label_table.attach(self.left_category_box, 0, 1, 0, 1)
        self.left_label_table.attach(self.left_version_label, 0, 1, 1, 2)
        self.left_label_table.attach(self.left_size_label, 0, 1, 2, 3)
        self.left_label_table.attach(self.left_download_label, 0, 1, 3, 4)
        self.left_label_table.attach(self.left_homepage_box_align, 0, 1, 4, 5)
        self.left_label_align.add(self.left_label_table)
        self.left_view_box.pack_start(self.left_label_align, False, False)
        self.left_view_box.pack_start(self.left_recommend_box_align, False, False)
        self.right_info_box.pack_start(self.scrolled_window, True, True)
        self.pack_start(self.left_view_box, False, False)
        self.pack_start(self.right_info_box, True, True)

        self.left_view_box.connect("expose-event", self.expose_left_view)
        self.right_view_box.connect("expose-event", self.expose_right_view)
        self.left_logo_box.connect("expose-event", self.expose_left_logo_box)
        self.right_top_box.connect("expose-event", self.expose_right_top_box)
        self.right_title_box.connect("expose-event", self.expose_right_title_box)
        self.connect("hierarchy-changed", self.hierarchy_change)

        self.left_category_label.connect("button-press-event", lambda w, e: self.jump_to_category())

        global_event.register_event("download-screenshot-finish", self.download_screenshot_finish)

        self.loading_label = Label(_("Loading comments..."))
        self.loading_label_align = gtk.Alignment(0.5, 0, 0, 0)
        self.loading_label_align.add(self.loading_label)
        self.loading_label_align.set_padding(10, 0, 0, 0)

        self.update_pkg_time = 0
        self.update_pkg_interval = 0.2 # in seconds
    global cursor_postion
    global timeout_tooltip_action_id
    if new_cursor_postion != cursor_postion and new_cursor_postion == "name":
        if timeout_tooltip_action_id:
            gobject.source_remove(timeout_tooltip_action_id)
            timeout_tooltip_action_id = None
        timeout_tooltip_action_id = gobject.timeout_add(1000, timeout_tooltip_action, item)
    elif new_cursor_postion != cursor_postion and new_cursor_postion == 'other':
        if timeout_tooltip_action_id:
            gobject.source_remove(timeout_tooltip_action_id)
            timeout_tooltip_action_id = None
        global_event.emit('hide-pkg-name-tooltip')

    cursor_postion = new_cursor_postion

global_event.register_event("cursor-position-changed", cursor_postion_changed)

def tooltip_aciton(view, item, x, y):
    if item.is_in_name_area(x, y):
        new_cursor_postion = "name"
    else:
        new_cursor_postion = "other"

    global_event.emit("cursor-position-changed", item, new_cursor_postion)

def timeout_tooltip_action(item):
    global_event.emit("show-pkg-name-tooltip", item.alias_name)

    return False

class HomePage(gtk.HBox):
    def init_ui(self):
        self.application = Application()
        self.application.set_default_size(1000, 660)
        self.application.set_skin_preview(get_common_image("frame.png"))
        self.application.set_icon(get_common_image("logo48.png"))
        self.application.add_titlebar(
                ["theme", "menu", "max","min", "close"],
                show_title=False
                )
        self.application.window.set_title(_("Deepin Games"))

        # Init page box.
        self.page_box = gtk.VBox()
        self.page_box.connect('expose-event', self.page_box_render)
        
        # Init page align.
        self.page_align = gtk.Alignment()
        self.page_align.set(0.5, 0.5, 1, 1)
        self.page_align.set_padding(0, 0, 2, 2)
        
        # Append page to switcher.
        self.paned_box = PanedBox(24)
        self.paned_box.add_content_widget(self.page_box)
        self.bottom_tip_bar = BottomTipBar()
        self.bottom_tip_bar.close_button.connect('clicked', lambda w: self.paned_box.bottom_window.hide())
        self.paned_box.add_bottom_widget(self.bottom_tip_bar)

        self.page_align.add(self.paned_box)
        self.application.main_box.pack_start(self.page_align, True, True)
        
        # Init status bar.
        self.statusbar = Statusbar(30)
        status_box = gtk.HBox()

        self.statusbar.status_box.pack_start(status_box, True, True)
        self.application.main_box.pack_start(self.statusbar, False, False)

        self.webview = WebView(COOKIE_FILE)
        webkit.set_web_database_directory_path(CACHE_DIR)
        web_settings = self.webview.get_settings()
        web_settings.set_property("enable-page-cache", True)
        web_settings.set_property("enable-offline-web-application-cache", True)
        #web_settings.set_property("enable-file-access-from-file-uris", True)
        web_settings.set_property("enable-xss-auditor", False)
        web_settings.set_property('enable-universal-access-from-file-uris', True)
        web_settings.set_property("enable-default-context-menu", False)
        self.webview.set_settings(web_settings)
        #self.webview.enable_inspector()
        self.webview.connect('new-window-policy-decision-requested', self.navigation_policy_decision_requested_cb)
        #self.webview.connect('notify::load-status', self.webview_load_status_handler)
        self.webview.connect('notify::title', self.webview_title_changed_handler)
        self.webview.connect('script-alert', self.webview_script_alert_handler)
        self.webview.connect('window-object-cleared', self.webview_window_object_cleared)
        #self.webview.connect('load-progress-changed', self.load_progress)
        
        self.home_url = urllib.basejoin(GAME_CENTER_SERVER_ADDRESS, 'game/?hl=%s' % LANGUAGE)
        self.network_failed_box = NetworkConnectFailed(self.check_network_connection)
        self.check_network_connection()
        #self.page_box.add(self.network_failed_box)

        self.navigatebar = Navigatebar(
                [
                (None, _("Home"), self.show_home_page),
                (None, _("Topics"), self.show_subject_page),
                (None, _("My Games"), self.show_mygame_page),
                ],
                font_size = 11,
                padding_x = 5,
                padding_y = 16,
                vertical=False,
                item_normal_pixbuf=DynamicPixbuf(get_common_image('top/nav_normal.png')),
                item_hover_pixbuf=DynamicPixbuf(get_common_image('top/nav_hover.png')),
                item_press_pixbuf=DynamicPixbuf(get_common_image('top/nav_press.png')),
                )
        self.navigatebar.set_size_request(-1, 56)
        self.navigatebar_align = gtk.Alignment(0, 0, 1, 1)
        self.navigatebar_align.set_padding(0, 0, 4, 0)
        self.navigatebar_align.add(self.navigatebar)
        self.application.titlebar.set_size_request(-1, 56)
        self.application.titlebar.left_box.pack_start(self.navigatebar_align, True, True)
        self.application.window.add_move_event(self.navigatebar)

        self.about_dialog = AboutDialog(_('About us'))
        self.about_dialog.set_transient_for(self.application.window)

        # Init menu.
        #if LANGUAGE == 'en_US':
            #menu_min_width = 185
        #else:
            #menu_min_width = 150

        menu = Menu(
            [
             (None, _("Clear all cached data"), self.clean_download_cache),
             (None, _("See what's new"), lambda : self.show_wizard_win()),
             (None, _("About us"), self.show_about_dialog),
             (None, _("Quit"), lambda: gtk.main_quit()),
             ],
            is_root_menu=True,
            #menu_min_width=menu_min_width,
            )
        self.application.set_menu_callback(
            lambda button:
                menu.show(
                get_widget_root_coordinate(button, WIDGET_POS_BOTTOM_LEFT),
                (button.get_allocation().width, 0)))
        
        self.no_favorite_html_path = os.path.join(static_dir, "error-no-favorite.html")
        self.no_recent_html_path = os.path.join(static_dir, "error-no-recent.html")
        self.mygame_frame_path = os.path.join(static_dir, "mygame-frame.html")
        self.gallery_html_path = os.path.join(static_dir, 'game-mygame.html')

        skin_config.connect('theme-changed', self.theme_changed_handler)
        global_event.register_event('show-message', self.update_message)
    def __init__(self, data_manager):
        # Init.
        gtk.VBox.__init__(self)
        self.data_manager = data_manager

        self.tab_box = gtk.HBox()
        self.tab_box.set_size_request(-1, RANK_TAB_HEIGHT)
        self.tab_box.set_spacing(1)
        self.tab_box_align = gtk.Alignment()
        self.tab_box_align.set(1, 0, 0, 0)
        self.tab_box_align.set_padding(3, 9, 25, 48)
        for (tab_index, tab_name) in enumerate(
            [_("Top 25 weekly"),
             _("Top 25 monthly"),
             _("Top 25 totally")]):
            self.tab_box.pack_start(
                RankTab(tab_index, tab_name, tab_index == 0), False, False)

        self.page_box = gtk.VBox()
        self.page_align = gtk.Alignment()
        self.page_align.set(0.5, 0.5, 1, 1)
        self.page_align.set_padding(0, 0, 15, 15)

        self.week_rank_icon_view = IconView()
        self.week_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.week_rank_icon_view.draw_mask = self.draw_mask

        self.month_rank_icon_view = IconView()
        self.month_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.month_rank_icon_view.draw_mask = self.draw_mask

        self.all_rank_icon_view = IconView()
        self.all_rank_icon_view_scrlledwindow = ScrolledWindow()
        self.all_rank_icon_view.draw_mask = self.draw_mask

        self.week_rank_icon_view_scrlledwindow.add_child(
            self.week_rank_icon_view)
        self.month_rank_icon_view_scrlledwindow.add_child(
            self.month_rank_icon_view)
        self.all_rank_icon_view_scrlledwindow.add_child(
            self.all_rank_icon_view)

        self.tab_box_align.add(self.tab_box)
        self.page_box.pack_start(self.page_align)

        self.pack_start(self.tab_box_align, False, False)
        self.pack_start(self.page_box, True, True)

        self.loading = LoadingBox()

        self.view_list = [('week', self.week_rank_icon_view,
                           self.week_rank_icon_view_scrlledwindow),
                          ('month', self.month_rank_icon_view,
                           self.month_rank_icon_view_scrlledwindow),
                          ('all', self.all_rank_icon_view,
                           self.all_rank_icon_view_scrlledwindow)]

        self.pkg_names = []

        self.show_flag = None
        self.all_show_flag = ['week', 'month', 'all']

        global_event.register_event("update-rank-page", self.update_rank_page)

        gtk.timeout_add(300, self.get_pkgs_status)

        global_event.emit("update-rank-page", 0)
    def __init__(self,
            appid, widget_display=[]):

        Statusbar.__init__(self, 39, )

        self.appid = appid
        self.widget_display = widget_display
        self.widget_main_box = gtk.HBox()

        self.register_widgets = {}

        self.mute_button = ToggleButton(
                app_theme.get_pixbuf('mute/sound_normal.png'),
                app_theme.get_pixbuf('mute/mute_normal.png'),
                app_theme.get_pixbuf('mute/sound_hover.png'),
                app_theme.get_pixbuf('mute/mute_hover.png'),
                app_theme.get_pixbuf('mute/sound_press.png'),
                app_theme.get_pixbuf('mute/mute_press.png'),
                active_button_label = _('Volume'),
                inactive_button_label = _('Mute'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6)
        #self.mute_button.connect('clicked', self.mute_handler)
        mute_button_align = gtk.Alignment()
        mute_button_align.set(0, 0.5, 0, 0)
        mute_button_align.set_padding(3, 6, 3, 3)
        mute_button_align.add(self.mute_button)
        self.register_widgets["mute"] = mute_button_align

        self.favorite_button = ToggleButton(
                app_theme.get_pixbuf('favorite/unfavorite_normal.png'),
                app_theme.get_pixbuf('favorite/favorite_normal.png'),
                app_theme.get_pixbuf('favorite/unfavorite_hover.png'),
                app_theme.get_pixbuf('favorite/favorite_hover.png'),
                app_theme.get_pixbuf('favorite/unfavorite_press.png'),
                app_theme.get_pixbuf('favorite/favorite_press.png'),
                active_button_label = _('Favorite'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6)
        #self.favorite_button.connect('clicked', self.toggle_favorite)
        favorite_button_align = gtk.Alignment()
        favorite_button_align.set(0, 0.5, 0, 0)
        favorite_button_align.set_padding(3, 6, 3, 3)
        favorite_button_align.add(self.favorite_button)
        self.register_widgets['favorite'] = favorite_button_align

        self.replay_button = Button(
                app_theme.get_pixbuf('replay/replay_normal.png'),
                app_theme.get_pixbuf('replay/replay_hover.png'),
                app_theme.get_pixbuf('replay/replay_press.png'),
                button_label = _('Replay'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6)
        #self.replay_button.connect('clicked', self.replay_action)
        replay_button_align = gtk.Alignment()
        replay_button_align.set(0, 0.5, 0, 0)
        replay_button_align.set_padding(3, 6, 3, 3)
        replay_button_align.add(self.replay_button)
        self.register_widgets["replay"] = replay_button_align

        if LANGUAGE == 'en_US':
            more_width = 14
        else:
            more_width = 0
        self.pause_button = ToggleButton(
                app_theme.get_pixbuf('pause/pause_normal.png'),
                app_theme.get_pixbuf('pause/play_normal.png'),
                app_theme.get_pixbuf('pause/pause_hover.png'),
                app_theme.get_pixbuf('pause/play_hover.png'),
                app_theme.get_pixbuf('pause/pause_press.png'),
                app_theme.get_pixbuf('pause/play_press.png'),
                active_button_label = _('Pause'),
                inactive_button_label = _('Continue'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6,
                more_width=more_width)
        #self.pause_button.connect('button-press-event', self.pause_handler)
        pause_button_align = gtk.Alignment()
        pause_button_align.set(0, 0.5, 0, 0)
        pause_button_align.set_padding(3, 6, 10, 3)
        pause_button_align.add(self.pause_button)
        self.register_widgets["pause"] = pause_button_align

        self.fullscreen_button = ToggleButton(
                app_theme.get_pixbuf('fullscreen/fullscreen_normal.png'),
                app_theme.get_pixbuf('fullscreen/unfullscreen_normal.png'),
                app_theme.get_pixbuf('fullscreen/fullscreen_hover.png'),
                app_theme.get_pixbuf('fullscreen/unfullscreen_hover.png'),
                app_theme.get_pixbuf('fullscreen/fullscreen_press.png'),
                app_theme.get_pixbuf('fullscreen/unfullscreen_press.png'),
                active_button_label = _('Fullscreen'),
                inactive_button_label = _('Normal'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6)
        #self.fullscreen_button.connect('clicked', self.fullscreen_action)
        fullscreen_button_align = gtk.Alignment()
        fullscreen_button_align.set(0, 0.5, 0, 0)
        fullscreen_button_align.set_padding(3, 6, 3, 3)
        fullscreen_button_align.add(self.fullscreen_button)
        self.register_widgets["fullscreen"] = fullscreen_button_align

        self.share_button = Button(
                app_theme.get_pixbuf('share/share_normal.png'),
                app_theme.get_pixbuf('share/share_hover.png'),
                app_theme.get_pixbuf('share/share_press.png'),
                button_label = _('Share'),
                draw_background=True,
                padding_edge=10,
                padding_middle=6)
        #self.share_button.connect('clicked', self.share_action)
        share_button_align = gtk.Alignment()
        share_button_align.set(0, 0.5, 0, 0)
        share_button_align.set_padding(3, 6, 3, 3)
        share_button_align.add(self.share_button)
        self.register_widgets["share"] = share_button_align

        star_box = gtk.HBox()
        self.star = StarView()
        self.star.set_star_level(9)
        star_align = gtk.Alignment(0.5, 0.5, 0, 0)
        star_align.set_padding(2, 2, 3, 0)
        star_align.add(self.star)

        self.star_mark = Markbox(5.0, '#ffffff')
        star_mark_align = gtk.Alignment(0.5, 0, 0, 0)
        star_mark_align.set_padding(2, 4, 3, 20)
        star_mark_align.add(self.star_mark)
        
        star_box.pack_start(star_align)
        star_box.pack_start(star_mark_align)
        star_box_align = gtk.Alignment(1, 0.5, 0, 0)
        star_box_align.set_padding(0, 0, 3, 0)
        star_box_align.add(star_box)
        self.register_widgets["star"] = star_box_align

        if "pause" in self.widget_display:
            self.widget_main_box.pack_start(pause_button_align, False, False)
        #if "mute" in self.widget_display:
            #self.widget_main_box.pack_start(mute_button_align, False, False)
        if "replay" in self.widget_display:
            self.widget_main_box.pack_start(replay_button_align, False, False)
        if "favorite" in self.widget_display:
            self.widget_main_box.pack_start(favorite_button_align, False, False)
        if "fullscreen" in self.widget_display:
            self.widget_main_box.pack_start(fullscreen_button_align, False, False)
        if "share" in self.widget_display:
            self.widget_main_box.pack_start(share_button_align, False, False)
        if "star" in self.widget_display:
            self.widget_main_box.pack_end(star_box_align)

        self.status_box.pack_start(self.widget_main_box, True, True)

        self.leave_callback = None
        #self.connect('motion-notify-event', self.leave_event_handler)

        global_event.register_event('download-app-info-finish', self.update_star)
        global_event.register_event('set-star-score-success', self.score_success_handler)
        self.star.connect("button-press-event", self.star_press)

        self.cookie = get_cookie_star(self.appid)
        if self.cookie:
            self.star.set_read_only(True)
    def __init__(self, appid, widget_display=[]):

        Statusbar.__init__(
            self,
            39,
        )

        self.appid = appid
        self.widget_display = widget_display
        self.widget_main_box = gtk.HBox()

        self.register_widgets = {}

        self.mute_button = ToggleButton(
            app_theme.get_pixbuf('mute/sound_normal.png'),
            app_theme.get_pixbuf('mute/mute_normal.png'),
            app_theme.get_pixbuf('mute/sound_hover.png'),
            app_theme.get_pixbuf('mute/mute_hover.png'),
            app_theme.get_pixbuf('mute/sound_press.png'),
            app_theme.get_pixbuf('mute/mute_press.png'),
            active_button_label=_('Volume'),
            inactive_button_label=_('Mute'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6)
        #self.mute_button.connect('clicked', self.mute_handler)
        mute_button_align = gtk.Alignment()
        mute_button_align.set(0, 0.5, 0, 0)
        mute_button_align.set_padding(3, 6, 3, 3)
        mute_button_align.add(self.mute_button)
        self.register_widgets["mute"] = mute_button_align

        self.favorite_button = ToggleButton(
            app_theme.get_pixbuf('favorite/unfavorite_normal.png'),
            app_theme.get_pixbuf('favorite/favorite_normal.png'),
            app_theme.get_pixbuf('favorite/unfavorite_hover.png'),
            app_theme.get_pixbuf('favorite/favorite_hover.png'),
            app_theme.get_pixbuf('favorite/unfavorite_press.png'),
            app_theme.get_pixbuf('favorite/favorite_press.png'),
            active_button_label=_('Favorite'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6)
        #self.favorite_button.connect('clicked', self.toggle_favorite)
        favorite_button_align = gtk.Alignment()
        favorite_button_align.set(0, 0.5, 0, 0)
        favorite_button_align.set_padding(3, 6, 3, 3)
        favorite_button_align.add(self.favorite_button)
        self.register_widgets['favorite'] = favorite_button_align

        self.replay_button = Button(
            app_theme.get_pixbuf('replay/replay_normal.png'),
            app_theme.get_pixbuf('replay/replay_hover.png'),
            app_theme.get_pixbuf('replay/replay_press.png'),
            button_label=_('Replay'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6)
        #self.replay_button.connect('clicked', self.replay_action)
        replay_button_align = gtk.Alignment()
        replay_button_align.set(0, 0.5, 0, 0)
        replay_button_align.set_padding(3, 6, 3, 3)
        replay_button_align.add(self.replay_button)
        self.register_widgets["replay"] = replay_button_align

        if LANGUAGE == 'en_US':
            more_width = 14
        else:
            more_width = 0
        self.pause_button = ToggleButton(
            app_theme.get_pixbuf('pause/pause_normal.png'),
            app_theme.get_pixbuf('pause/play_normal.png'),
            app_theme.get_pixbuf('pause/pause_hover.png'),
            app_theme.get_pixbuf('pause/play_hover.png'),
            app_theme.get_pixbuf('pause/pause_press.png'),
            app_theme.get_pixbuf('pause/play_press.png'),
            active_button_label=_('Pause'),
            inactive_button_label=_('Continue'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6,
            more_width=more_width)
        #self.pause_button.connect('button-press-event', self.pause_handler)
        pause_button_align = gtk.Alignment()
        pause_button_align.set(0, 0.5, 0, 0)
        pause_button_align.set_padding(3, 6, 10, 3)
        pause_button_align.add(self.pause_button)
        self.register_widgets["pause"] = pause_button_align

        self.fullscreen_button = ToggleButton(
            app_theme.get_pixbuf('fullscreen/fullscreen_normal.png'),
            app_theme.get_pixbuf('fullscreen/unfullscreen_normal.png'),
            app_theme.get_pixbuf('fullscreen/fullscreen_hover.png'),
            app_theme.get_pixbuf('fullscreen/unfullscreen_hover.png'),
            app_theme.get_pixbuf('fullscreen/fullscreen_press.png'),
            app_theme.get_pixbuf('fullscreen/unfullscreen_press.png'),
            active_button_label=_('Fullscreen'),
            inactive_button_label=_('Normal'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6)
        #self.fullscreen_button.connect('clicked', self.fullscreen_action)
        fullscreen_button_align = gtk.Alignment()
        fullscreen_button_align.set(0, 0.5, 0, 0)
        fullscreen_button_align.set_padding(3, 6, 3, 3)
        fullscreen_button_align.add(self.fullscreen_button)
        self.register_widgets["fullscreen"] = fullscreen_button_align

        self.share_button = Button(
            app_theme.get_pixbuf('share/share_normal.png'),
            app_theme.get_pixbuf('share/share_hover.png'),
            app_theme.get_pixbuf('share/share_press.png'),
            button_label=_('Share'),
            draw_background=True,
            padding_edge=10,
            padding_middle=6)
        #self.share_button.connect('clicked', self.share_action)
        share_button_align = gtk.Alignment()
        share_button_align.set(0, 0.5, 0, 0)
        share_button_align.set_padding(3, 6, 3, 3)
        share_button_align.add(self.share_button)
        self.register_widgets["share"] = share_button_align

        star_box = gtk.HBox()
        self.star = StarView()
        self.star.set_star_level(9)
        star_align = gtk.Alignment(0.5, 0.5, 0, 0)
        star_align.set_padding(2, 2, 3, 0)
        star_align.add(self.star)

        self.star_mark = Markbox(5.0, '#ffffff')
        star_mark_align = gtk.Alignment(0.5, 0, 0, 0)
        star_mark_align.set_padding(2, 4, 3, 20)
        star_mark_align.add(self.star_mark)

        star_box.pack_start(star_align)
        star_box.pack_start(star_mark_align)
        star_box_align = gtk.Alignment(1, 0.5, 0, 0)
        star_box_align.set_padding(0, 0, 3, 0)
        star_box_align.add(star_box)
        self.register_widgets["star"] = star_box_align

        if "pause" in self.widget_display:
            self.widget_main_box.pack_start(pause_button_align, False, False)
        #if "mute" in self.widget_display:
        #self.widget_main_box.pack_start(mute_button_align, False, False)
        if "replay" in self.widget_display:
            self.widget_main_box.pack_start(replay_button_align, False, False)
        if "favorite" in self.widget_display:
            self.widget_main_box.pack_start(favorite_button_align, False,
                                            False)
        if "fullscreen" in self.widget_display:
            self.widget_main_box.pack_start(fullscreen_button_align, False,
                                            False)
        if "share" in self.widget_display:
            self.widget_main_box.pack_start(share_button_align, False, False)
        if "star" in self.widget_display:
            self.widget_main_box.pack_end(star_box_align)

        self.status_box.pack_start(self.widget_main_box, True, True)

        self.leave_callback = None
        #self.connect('motion-notify-event', self.leave_event_handler)

        global_event.register_event('download-app-info-finish',
                                    self.update_star)
        global_event.register_event('set-star-score-success',
                                    self.score_success_handler)
        self.star.connect("button-press-event", self.star_press)

        self.cookie = get_cookie_star(self.appid)
        if self.cookie:
            self.star.set_read_only(True)
    def init_backend(self):

        # Init detail view.
        self.detail_page = DetailPage(self.data_manager)

        self.page_switcher.append_page(self.detail_page)

        log("Init pages.")

        self.loginfo("Init pages")
        self.upgrade_page = UpgradePage(self.bus_interface, self.data_manager, self.preference_dialog)
        self.uninstall_page = UninstallPage(self.bus_interface, self.data_manager)
        self.install_page = InstallPage(self.bus_interface, self.data_manager)


        log("Handle global event.")

        # Handle global event.
        global_event.register_event("install-pkg", lambda pkg_names: install_pkg(
            self.bus_interface, self.install_page, pkg_names, self.application.window))
        global_event.register_event("upgrade-pkg", self.upgrade_pkgs)
        global_event.register_event("uninstall-pkg", lambda pkg_name, purge_flag: self.uninstall_pkg(pkg_name, purge_flag))
        global_event.register_event("stop-download-pkg", self.bus_interface.stop_download_pkg)
        global_event.register_event("switch-to-detail-page", lambda pkg_name : switch_to_detail_page(self.page_switcher, self.detail_page, pkg_name))
        global_event.register_event("switch-from-detail-page", lambda : switch_from_detail_page(self.page_switcher, self.detail_page, self.page_box))
        global_event.register_event("remove-wait-action", self.bus_interface.RemoveWaitMissions)
        global_event.register_event("remove-wait-download", self.bus_interface.remove_wait_downloads)
        global_event.register_event("request-clear-action-pages", request_clear_action_pages)
        global_event.register_event("request-stop-install-actions", request_stop_install_actions)
        global_event.register_event("request-clear-failed-action", request_clear_failed_action)
        global_event.register_event("update-upgrade-notify-number", lambda number: update_navigatebar_number(self.navigatebar, 1, number))
        global_event.register_event("update-install-notify-number", lambda number: update_navigatebar_number(self.navigatebar, 3, number))
        global_event.register_event("jump-to-category",
                                    lambda first_category_name, second_category_name:
                                    jump_to_category(self.page_switcher,
                                                     self.page_box,
                                                     self.home_page,
                                                     self.detail_page,
                                                     first_category_name,
                                                     second_category_name))
        global_event.register_event("grade-pkg", lambda pkg, star: grade_pkg(self.application.window, pkg, star))
        global_event.register_event("set-cursor", lambda cursor: set_cursor(self.application.window, cursor))
        global_event.register_event("show-message", self.update_status_bar_message)
        global_event.register_event("start-pkg", lambda alias_name, desktop_infos, offset: start_pkg(
            alias_name, desktop_infos, offset, self.application.window))
        global_event.register_event("show-pkg-name-tooltip", lambda pkg_name: show_tooltip(self.application.window, pkg_name))
        global_event.register_event("hide-pkg-name-tooltip", lambda :tool_tip.hide())
        global_event.register_event("update-current-status-pkg-page", update_current_status_pkg_page)
        global_event.register_event('start-change-mirror', self.change_mirror_action)
        global_event.register_event('download-directory-changed', self.set_software_download_dir)
        global_event.register_event('vote-send-success', lambda p: vote_send_success_callback(p, self.application.window))
        global_event.register_event('vote-send-failed', lambda p: vote_send_failed_callback(p, self.application.window))
        global_event.register_event('max-download-number-changed', self.init_download_manager)
        global_event.register_event('update-list-finish', self.update_list_finish)
        global_event.register_event('start-update-list', self.update_list_handler)
        global_event.register_event("upgrade-finish-action", self.upgrade_finish_action)
        global_event.register_event("upload-error-log", self.exec_upload_error_log)

        self.bus_interface.connect_to_signal(
                signal_name="update_signal",
                handler_function=lambda messages: message_handler(messages,
                                         self.bus_interface,
                                         self.upgrade_page,
                                         self.uninstall_page,
                                         self.install_page,
                                         self.home_page,
                                         self.inhibit_obj,
                                         ),
                )
        glib.timeout_add(1000, lambda : clear_action_pages(self.bus_interface, self.upgrade_page, self.uninstall_page, self.install_page))
        glib.timeout_add(1000, lambda : clear_install_stop_list(self.install_page))
        glib.timeout_add(1000, lambda : clear_failed_action(self.install_page, self.upgrade_page))

        #self.init_download_manager()

        #self.request_update_list()
        self.upgrade_page.fetch_upgrade_info(utils.get_backend_running())
Exemple #32
0
    def __init__(self, data_manager):
        '''
        init docs
        '''
        gtk.HBox.__init__(self)
        self.data_manager = data_manager
        self.pkg_name = None
        self.alias_name = ""
        self.pkg_pixbuf = None
        self.pkg_star_view = None

        self.left_view_box = gtk.VBox()
        self.left_view_box.set_size_request(self.LEFT_INFO_WIDTH, -1)

        self.left_logo_box = gtk.VBox()
        self.left_logo_box.set_size_request(-1, 90)

        self.star_box = gtk.HBox()
        self.star_align = gtk.Alignment(0.4, 0.5, 0, 0)
        self.star_align.set_padding(0, 5, 0, 0)
        self.star_align.add(self.star_box)

        self.left_action_box = gtk.HBox()
        self.left_action_align = gtk.Alignment()
        self.left_action_align.set(0.5, 0.5, 0, 0)
        self.left_action_align.set_padding(0, 30, 0, 0)
        self.left_action_align.add(self.left_action_box)

        self.left_label_table = gtk.Table(4, 1)
        self.left_label_table.set_row_spacings(4)

        self.left_label_align = gtk.Alignment()
        self.left_label_align.set(0.0, 0.5, 0, 0)
        self.left_label_align.set_padding(0, 0, 14, 0)

        self.left_category_name_label = Label()
        self.left_category_label = Label(
            hover_color=app_theme.get_color("homepage_hover"))
        self.left_category_label.set_clickable()
        self.left_category_label_align = gtk.Alignment()
        self.left_category_label_align.set(0.0, 0.5, 0, 0)
        self.left_category_label_align.add(self.left_category_label)
        self.left_category_label_box = gtk.HBox()
        self.left_category_label_box.pack_start(self.left_category_name_label,
                                                False, False)
        self.left_category_label_box.pack_start(self.left_category_label_align,
                                                True, True)
        self.left_category_box = gtk.VBox()
        self.left_version_label = Label(label_width=136)
        show_label_tooltip(self.left_version_label)
        self.left_version_label.set_ellipsize(pango.ELLIPSIZE_END)
        self.left_download_label = Label()
        self.left_size_label = Label()

        self.left_homepage_box = gtk.HBox()
        self.left_homepage_box_align = gtk.Alignment()
        self.left_homepage_box_align.set(0.0, 0.5, 0, 0)
        self.left_homepage_box_align.add(self.left_homepage_box)

        self.left_recommend_box = gtk.VBox()
        self.left_recommend_box_align = gtk.Alignment()
        self.left_recommend_box_align.set(0.0, 0.0, 0, 0)
        self.left_recommend_box_align.set_padding(30, 0, 14, 0)
        self.left_recommend_box_align.add(self.left_recommend_box)

        self.left_recommend_label = Label(_("Popular recommendations"))

        self.right_info_box = gtk.VBox()
        self.scrolled_window = ScrolledWindow(0, 0)
        self.right_view_box = gtk.VBox()

        self.right_top_box = gtk.HBox()
        self.right_top_box.set_size_request(-1, self.RIGHT_TITLE_BOX_HEIGHT)
        self.right_desc_box = gtk.VBox()
        self.right_slide_box = gtk.VBox()
        self.right_comment_box = gtk.VBox()

        self.right_title_box = gtk.VBox()

        self.return_button = ImageButton(
            app_theme.get_pixbuf("detail/normal.png"),
            app_theme.get_pixbuf("detail/hover.png"),
            app_theme.get_pixbuf("detail/press.png"),
        )
        self.return_align = gtk.Alignment()
        self.return_align.set(0.5, 0.5, 1, 1)
        self.return_align.set_padding(self.ALIAS_NAME_PADDING_Y, 0, 0,
                                      self.RIGHT_INFO_PADDING_X)
        self.return_align.add(self.return_button)

        self.return_button.connect(
            "clicked", lambda w: global_event.emit("switch-from-detail-page"))

        self.right_top_box.pack_start(self.right_title_box, True, True)
        self.right_top_box.pack_start(self.return_align, False, False)

        self.right_view_box.pack_start(self.right_top_box, False, False)
        self.right_view_box.pack_start(self.right_desc_box, False, False)
        self.right_view_box.pack_start(self.right_slide_box, False, False)
        self.right_view_box.pack_start(self.right_comment_box, False, False)
        self.scrolled_window.add_child(self.right_view_box)

        self.left_view_box.pack_start(self.left_logo_box, False, False)
        self.left_view_box.pack_start(self.star_align, False, False)
        self.left_view_box.pack_start(self.left_action_align, False, False)
        self.left_label_table.attach(self.left_category_box, 0, 1, 0, 1)
        self.left_label_table.attach(self.left_version_label, 0, 1, 1, 2)
        self.left_label_table.attach(self.left_size_label, 0, 1, 2, 3)
        self.left_label_table.attach(self.left_download_label, 0, 1, 3, 4)
        self.left_label_table.attach(self.left_homepage_box_align, 0, 1, 4, 5)
        self.left_label_align.add(self.left_label_table)
        self.left_view_box.pack_start(self.left_label_align, False, False)
        self.left_view_box.pack_start(self.left_recommend_box_align, False,
                                      False)
        self.right_info_box.pack_start(self.scrolled_window, True, True)
        self.pack_start(self.left_view_box, False, False)
        self.pack_start(self.right_info_box, True, True)

        self.left_view_box.connect("expose-event", self.expose_left_view)
        self.right_view_box.connect("expose-event", self.expose_right_view)
        self.left_logo_box.connect("expose-event", self.expose_left_logo_box)
        self.right_top_box.connect("expose-event", self.expose_right_top_box)
        self.right_title_box.connect("expose-event",
                                     self.expose_right_title_box)
        self.connect("hierarchy-changed", self.hierarchy_change)

        self.left_category_label.connect("button-press-event",
                                         lambda w, e: self.jump_to_category())

        global_event.register_event("download-screenshot-finish",
                                    self.download_screenshot_finish)

        self.loading_label = Label(_("Loading comments..."))
        self.loading_label_align = gtk.Alignment(0.5, 0, 0, 0)
        self.loading_label_align.add(self.loading_label)
        self.loading_label_align.set_padding(10, 0, 0, 0)

        self.update_pkg_time = 0
        self.update_pkg_interval = 0.2  # in seconds
    def __init__(self, data_manager, recommend_status):
        '''
        init docs
        '''
        # Init.
        gtk.HBox.__init__(self)
        self.data_manager = data_manager
        self.recommend_status = recommend_status
        
        self.background_box = BackgroundBox()
        self.background_box.draw_mask = self.draw_mask
        self.sidebar_box = gtk.VBox()
        self.page_box = gtk.VBox()
        self.sidebar_box.set_size_request(CATEGORY_VIEW_WIDTH, -1)
        
        self.canopy = gtk.VBox()
        self.canopy.set_size_request(-1, 19)
        
        self.search_align = gtk.Alignment()
        self.search_align.set(0.5, 0.5, 0, 0)
        self.search_align.set_padding(15, 5, 13, 13)
        self.search_align.add(search_entry)
        
        self.in_press = False
        self.press_return = False
        self.press_id = 0
        self.show_timeout_id = None
        self.entry_changed = False
        
        search_entry.entry.connect("changed", self.search_entry_changed)
        search_entry.entry.connect("key-press-event", self.search_entry_key_press)
        search_entry.entry.connect("key-release-event", self.search_entry_key_release)
        search_entry.connect("action-active", lambda entry, search_string: self.show_search_page(search_string))
        search_entry.entry.connect("press-return", lambda entry: self.show_search_page(entry.get_text(), True))
        
        self.recommend_item = RecommendItem(data_manager, self.recommend_status)
       
        category_items = []
        for (index, first_category_name) in enumerate(data_manager.get_first_category()):
            category_items.append(CategoryItem(index+1, first_category_name, data_manager))
        
        self.category_view = TreeView(
            [self.recommend_item] + category_items,
            enable_drag_drop=False,
            enable_multiple_select=False,
            expand_column=0,
            )
        self.category_view.draw_mask = self.draw_mask
        self.category_view.set_size_request(-1, 470)

        self.category_view_align = gtk.Alignment()
        self.category_view_align.set(0.5, 0.5, 1, 1)
        self.category_view_align.set_padding(10, 10, 0, 0)
        self.category_view_align.add(self.category_view)
        
        self.background_box.pack_start(self.canopy, False, False)
        self.background_box.pack_start(self.search_align, True, True)
        self.background_box.pack_end(self.category_view_align, False, False)
        self.sidebar_box.pack_start(self.background_box, False, False)
        
        self.split_line = gtk.VBox()
        self.split_line.set_size_request(1, -1)
        
        self.pack_start(self.sidebar_box, False, False)
        self.pack_start(self.split_line, False, False)
        self.pack_start(self.page_box, True, True)
        
        self.canopy.connect("expose-event", self.expose_canopy)
        self.split_line.connect("expose-event", self.expose_split_line)
        
        global_event.register_event("show-pkg-view", self.show_pkg_view)
        global_event.register_event("category-expand", self.category_expand_handler)
Exemple #34
0
    def __init__(self, system_bus, mainloop):
        # Init dbus service.
        dbus.service.Object.__init__(self, system_bus, DSC_SERVICE_PATH)
        # Init.
        self.mainloop = mainloop
        self.pkg_cache = AptCache()
        self.exit_flag = False
        self.simulate = False
        self.all_upgrade_pkg_names = []
        self.download_dir = "/var/cache/apt/archives"

        self.is_upgrading = False
        self.in_update_list = False

        self.apt_action_pool = AptActionPool(self.pkg_cache)
        self.apt_action_pool.start()

        global_event.register_event('parse-download-error',
                                    self.send_parse_download_error)

        global_event.register_event("action-start", self.action_start)
        global_event.register_event("action-update", self.action_update)
        global_event.register_event("action-finish", self.action_finish)
        global_event.register_event("action-failed", self.action_failed)

        global_event.register_event("download-start", self.download_start)
        global_event.register_event("download-update", self.download_update)
        global_event.register_event("download-finish", self.download_finish)
        global_event.register_event("download-stop", self.download_stop)
        global_event.register_event("download-error", self.download_failed)

        global_event.register_event("update-list-start",
                                    self.update_list_start)
        global_event.register_event("update-list-finish",
                                    self.update_list_finish)
        global_event.register_event("update-list-failed",
                                    self.update_list_failed)
        global_event.register_event("update-list-update",
                                    self.update_list_update)

        self.packages_status = {}

        self.exit_manager = ExitManager(self.mainloop,
                                        self.is_update_list_running,
                                        self.is_download_action_running,
                                        self.is_apt_action_running,
                                        self.have_exit_request)
        self.exit_manager.start()

        self.set_download_dir('/var/cache/apt/archives')
        self.download_manager = DownloadManager(global_event, verbose=True)
Exemple #35
0
    def __init__(self, data_manager, recommend_status):
        '''
        init docs
        '''
        # Init.
        gtk.HBox.__init__(self)
        self.data_manager = data_manager
        self.recommend_status = recommend_status

        self.background_box = BackgroundBox()
        self.background_box.draw_mask = self.draw_mask
        self.sidebar_box = gtk.VBox()
        self.page_box = gtk.VBox()
        self.sidebar_box.set_size_request(CATEGORY_VIEW_WIDTH, -1)

        self.canopy = gtk.VBox()
        self.canopy.set_size_request(-1, 19)

        self.search_align = gtk.Alignment()
        self.search_align.set(0.5, 0.5, 0, 0)
        self.search_align.set_padding(15, 5, 13, 13)
        self.search_align.add(search_entry)

        self.in_press = False
        self.press_return = False
        self.press_id = 0
        self.show_timeout_id = None
        self.entry_changed = False

        search_entry.entry.connect("changed", self.search_entry_changed)
        search_entry.entry.connect("key-press-event",
                                   self.search_entry_key_press)
        search_entry.entry.connect("key-release-event",
                                   self.search_entry_key_release)
        search_entry.connect(
            "action-active",
            lambda entry, search_string: self.show_search_page(search_string))
        search_entry.entry.connect(
            "press-return",
            lambda entry: self.show_search_page(entry.get_text(), True))

        self.recommend_item = RecommendItem(data_manager,
                                            self.recommend_status)

        category_items = []
        for (index, first_category_name) in enumerate(
                data_manager.get_first_category()):
            category_items.append(
                CategoryItem(index + 1, first_category_name, data_manager))

        self.category_view = TreeView(
            [self.recommend_item] + category_items,
            enable_drag_drop=False,
            enable_multiple_select=False,
            expand_column=0,
        )
        self.category_view.draw_mask = self.draw_mask
        self.category_view.set_size_request(-1, 470)

        self.category_view_align = gtk.Alignment()
        self.category_view_align.set(0.5, 0.5, 1, 1)
        self.category_view_align.set_padding(10, 10, 0, 0)
        self.category_view_align.add(self.category_view)

        self.background_box.pack_start(self.canopy, False, False)
        self.background_box.pack_start(self.search_align, True, True)
        self.background_box.pack_end(self.category_view_align, False, False)
        self.sidebar_box.pack_start(self.background_box, False, False)

        self.split_line = gtk.VBox()
        self.split_line.set_size_request(1, -1)

        self.pack_start(self.sidebar_box, False, False)
        self.pack_start(self.split_line, False, False)
        self.pack_start(self.page_box, True, True)

        self.canopy.connect("expose-event", self.expose_canopy)
        self.split_line.connect("expose-event", self.expose_split_line)

        global_event.register_event("show-pkg-view", self.show_pkg_view)
        global_event.register_event("category-expand",
                                    self.category_expand_handler)
Exemple #36
0
    if new_cursor_postion != cursor_postion and new_cursor_postion == "name":
        if timeout_tooltip_action_id:
            gobject.source_remove(timeout_tooltip_action_id)
            timeout_tooltip_action_id = None
        timeout_tooltip_action_id = gobject.timeout_add(
            1000, timeout_tooltip_action, item)
    elif new_cursor_postion != cursor_postion and new_cursor_postion == 'other':
        if timeout_tooltip_action_id:
            gobject.source_remove(timeout_tooltip_action_id)
            timeout_tooltip_action_id = None
        global_event.emit('hide-pkg-name-tooltip')

    cursor_postion = new_cursor_postion


global_event.register_event("cursor-position-changed", cursor_postion_changed)


def tooltip_aciton(view, item, x, y):
    if item.is_in_name_area(x, y):
        new_cursor_postion = "name"
    else:
        new_cursor_postion = "other"

    global_event.emit("cursor-position-changed", item, new_cursor_postion)


def timeout_tooltip_action(item):
    global_event.emit("show-pkg-name-tooltip", item.alias_name)

    return False
    def __init__(self, system_bus, mainloop):
        log("init dbus")
        
        # Init dbus service.
        dbus.service.Object.__init__(self, system_bus, DSC_SERVICE_PATH)
        # Init.
        self.mainloop = mainloop
        self.pkg_cache = AptCache()
        self.exit_flag = False
        self.simulate = False
        self.all_upgrade_pkg_names = []

        self.is_upgrading = False
        self.in_update_list = False
        
        self.apt_action_pool = AptActionPool(self.pkg_cache)
        self.apt_action_pool.start()

        global_event.register_event('parse-download-error', self.send_parse_download_error)

        global_event.register_event("action-start", self.action_start)
        global_event.register_event("action-update", self.action_update)
        global_event.register_event("action-finish", self.action_finish)
        global_event.register_event("action-failed", self.action_failed)
        
        global_event.register_event("download-start", self.download_start)
        global_event.register_event("download-update", self.download_update)
        global_event.register_event("download-finish", self.download_finish)
        global_event.register_event("download-stop", self.download_stop)
        global_event.register_event("download-error", self.download_failed)
        
        global_event.register_event("update-list-start", self.update_list_start)
        global_event.register_event("update-list-finish", self.update_list_finish)
        global_event.register_event("update-list-failed", self.update_list_failed)
        global_event.register_event("update-list-update", self.update_list_update)

        self.packages_status = {}
        
        self.exit_manager = ExitManager(
            self.mainloop,
            self.is_update_list_running,
            self.is_download_action_running,
            self.is_apt_action_running,
            self.have_exit_request)
        self.exit_manager.start()
        
        log("init finish")
        self.set_download_dir('/var/cache/apt/archives')
        self.init_download_manager(5)