Esempio n. 1
0
 def on_button_press(self, w, e):
     if is_empty_click(w, e):
         w.get_selection().unselect_all()
     active = self.get_selected_bean()
     if active:
         active.type = FTYPE_NOT_UPDATE_INFO_PANEL
     else:
         return None
     
     if is_left_click(e):
         if active.get_status():
             if active.get_status() == DOWNLOAD_STATUS_ALL:
                 self.controls.dm.filter(None, FTreeModel().status[0])
             else:
                 self.controls.dm.filter(active.get_status(), FTreeModel().status[0])
             
     if is_double_left_click(e):
         self.controls.play(active)
     
     if is_rigth_click(e):
         right_click_optimization_for_trees(w, e)
         menu = Popup()
         menu.add_item('Play', Gtk.STOCK_MEDIA_PLAY, self.controls.play, active)
         menu.add_item('Copy to Search Line', Gtk.STOCK_COPY, self.controls.searchPanel.set_search_text, active.text)
         menu.show(e)
Esempio n. 2
0
 def get_bean_from_row(self, row):
     bean = FModel()
     id_dict = FTreeModel().cut().__dict__
     for key in id_dict.keys():
         num = id_dict[key]
         setattr(bean, key, row[num])
     return bean
Esempio n. 3
0
 def get_bean_from_row(self, row):
     bean = FModel()
     id_dict = FTreeModel().cut().__dict__
     for key in id_dict.keys():
         num = id_dict[key]
         setattr(bean, key, row[num])
     return bean
Esempio n. 4
0
 def use_filter(self):
     active = self.get_selected_bean()
     if active:
         if active.get_status() == DOWNLOAD_STATUS_ALL:
             self.dm_list.filter_by_file(None, FTreeModel().status[0])
         else:
             self.dm_list.filter_by_file(active.get_status(),
                                         FTreeModel().status[0])
Esempio n. 5
0
 def restore_rows(self, rows):
     for key in sorted(rows.keys()):
         if len(key) == 1:
             self.model.append(None, FTreeModel.normalize_row(rows[key]))
         else:
             str_path = str(key).replace(', ', ':')
             parent_path = str_path[1:str_path.rfind(':')]
             parent_iter = self.model.get_iter_from_string(parent_path)
             self.model.append(parent_iter,
                               FTreeModel.normalize_row(rows[key]))
Esempio n. 6
0
 def task(row):
     iter = row.iter
     level = self.model.iter_depth(iter)
     text = self.model.get_value(iter, FTreeModel().text[0])
     path = self.model.get_value(iter, FTreeModel().path[0])
     if not path:
         path = ""
     f.write(level * '-' + text + '#' + path + '\n')
     if row.iterchildren():
         for child_row in row.iterchildren():
             task(child_row)
Esempio n. 7
0
 def on_button_press(self, w, e):
     if is_empty_click(w, e):
         w.get_selection().unselect_all()
     if is_double_left_click(e):
         active = self.get_selected_bean()
         if active:
             if active.get_status() == DOWNLOAD_STATUS_ALL:
                 self.dm_list.filter_by_file(None, FTreeModel().status[0])
             else:
                 self.dm_list.filter_by_file(active.get_status(),
                                             FTreeModel().status[0])
Esempio n. 8
0
    def _get_bean_by_path(self, path):
        model = self.model
        path = self.filter_model.convert_path_to_child_path(path)
        iter = model.get_iter(path)

        if iter:
            bean = FModel()
            dt = FTreeModel().__dict__
            for key in dt.keys():
                setattr(bean, key, model.get_value(iter, dt[key][0]))
            return bean
        return None
Esempio n. 9
0
    def set_play_icon_to_bean_to_selected(self):
        for row in self.model:
            row[self.play_icon[0]] = ''

        paths = self.get_selected_bean_paths()
        if not paths:
            return None
        logging.debug("Set play icon to selected bean")
        path = paths[0]
        iter = self.model.get_iter(path)
        self.model.set_value(iter, FTreeModel().play_icon[0], "go-next")
        self.active_UUID = self.model.get_value(iter, FTreeModel().UUID[0])
Esempio n. 10
0
    def _get_bean_by_path(self, path):
        model = self.model
        path = self.filter_model.convert_path_to_child_path(path)
        iter = model.get_iter(path)

        if iter:
            bean = FModel()
            dt = FTreeModel().__dict__
            for key in dt.keys():
                setattr(bean, key, model.get_value(iter, dt[key][0]))
            return bean
        return None
Esempio n. 11
0
 def get_bean_from_model_iter(self, model, iter):
     if not model or not iter:
         return None
     bean = FModel()
     id_dict = FTreeModel().cut().__dict__
     for key in id_dict.keys():
         num = id_dict[key]
         try:
             val = model.get_value(iter, num)
         except GError:
             val = None
         setattr(bean, key, val)
     return bean
Esempio n. 12
0
 def fill_row(self, row_ref, bean):
         if row_ref.valid():
             treerow = self.model[row_ref.get_path()]
             m_dict = FTreeModel().cut().__dict__
             new_dict = dict(zip(m_dict.values(), m_dict.keys()))
             for i, key in enumerate(new_dict.values()):
                 value = getattr(bean, key)
                 if value is None:
                     value = ''
                 elif type(value) in [int, float, long]:
                     value = str(value)
                 if i != self.play_icon[0]:
                     treerow[i] = value
Esempio n. 13
0
 def get_bean_from_model_iter(self, model, iter):
     if not model or not iter:
         return None
     bean = FModel()
     id_dict = FTreeModel().cut().__dict__
     for key in id_dict.keys():
         num = id_dict[key]
         try:
             val = model.get_value(iter, num)
         except GError:
             val = None
         setattr(bean, key, val)
     return bean
Esempio n. 14
0
 def fill_row(self, row_ref, bean):
     if row_ref.valid():
         treerow = self.model[row_ref.get_path()]
         m_dict = FTreeModel().cut().__dict__
         new_dict = dict(zip(m_dict.values(), m_dict.keys()))
         for i, key in enumerate(new_dict.values()):
             value = getattr(bean, key)
             if value is None:
                 value = ''
             elif type(value) in [int, float, long]:
                 value = str(value)
             if i != self.play_icon[0]:
                 treerow[i] = value
Esempio n. 15
0
 def get_row_from_model_iter(self, model, iter):
     attributes = []
     size = len(FTreeModel().__dict__)
     for i in xrange(size):
         value = model.get_value(iter, i)
         attributes.append(value)
     return attributes
Esempio n. 16
0
    def on_load(self):
        if FC().tab_position == "no":
            self.set_tab_no()
        elif FC().tab_position == "left":
            self.set_tab_left()
        else:
            self.set_tab_top()

        for page in range(len(FCache().cache_pl_tab_contents) - 1, -1, -1):
            if not FCache().cache_pl_tab_contents[page]:
                self._append_tab(FCache().tab_pl_names[page])
                continue
            self._append_tab(FCache().tab_pl_names[page])
            model_len = len(FTreeModel().__dict__)
            cache_len = len(FCache().cache_pl_tab_contents[page][0])

            for row in FCache().cache_pl_tab_contents[page]:
                if model_len > cache_len:
                    for i in range(abs(model_len - cache_len)):
                        row.append((None, None))
                elif model_len < cache_len:
                    for i in range(abs(model_len - cache_len)):
                        del row[-1]

                self.get_current_tree().model.append(None, row)

        self.set_current_page(FC().pl_selected_tab)
        self.loaded = True
Esempio n. 17
0
    def get_row_from_bean(self, bean):
        #logging.debug("get_row_from_bean %s" % bean)
        attributes = []
        m_dict = FTreeModel().cut().__dict__
        new_dict = dict (zip(m_dict.values(), m_dict.keys()))

        for key in new_dict.values():
            if not hasattr(bean, key):
                setattr(bean, key, None)

            value = getattr(bean, key)
            if type(value) in [int, float, long]:
                value = str(value)
            attributes.append(value)

        #logging.debug("get_row_from_bean attributes %s" % attributes)
        return attributes
Esempio n. 18
0
    def get_row_from_bean(self, bean):
        #logging.debug("get_row_from_bean %s" % bean)
        attributes = []
        m_dict = FTreeModel().cut().__dict__
        new_dict = dict(zip(m_dict.values(), m_dict.keys()))

        for key in new_dict.values():
            if not hasattr(bean, key):
                setattr(bean, key, None)

            value = getattr(bean, key)
            if type(value) in [int, float, long]:
                value = str(value)
            attributes.append(value)

        #logging.debug("get_row_from_bean attributes %s" % attributes)
        return attributes
Esempio n. 19
0
    def filter_by_file(self, query, column_num=FTreeModel().text[0]):
        self.show_all_lines()

        if query and len(query.strip()) > 0:
            query = query.decode().strip().lower()
            self.file_filter(query, column_num)
            self.expand_all()
        else:
            self.collapse_all()
Esempio n. 20
0
 def update_statistics(self):
     statisctics = self.dm_list.get_status_statisctics()
     all = self.get_all_beans()
     for bean in all:
         status = bean.get_status()
         num = 0
         if status in statisctics:
             num = statisctics[status]
         value = bean.artist + " (%s)" % num
         self.set_bean_column_value(bean, FTreeModel().text[0], value)
Esempio n. 21
0
 def get_next_bean_to_dowload(self):
     all = self.get_all_beans()
     if not all:
         return None
     for bean in all:
         if bean.get_status() == DOWNLOAD_STATUS_ACTIVE:
             self.set_bean_column_value(bean,
                                        FTreeModel().status[0],
                                        DOWNLOAD_STATUS_LOCK)
             return bean
Esempio n. 22
0
 def update_bean(self, bean):
     for row in self.model:
         if row[self.UUID[0]] == bean.UUID:
             dict = FTreeModel().__dict__
             for key in dict:
                 value = getattr(bean, key)
                 if value is None:
                     value = ''
                 row_num = dict[key][0]
                 row[row_num] = value
             break
Esempio n. 23
0
    def __init__(self, controls):
        FilterTreeControls.__init__(self, controls)

        FTreeModel.__init__(self)
        FControl.__init__(self, controls)

        self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
        self.set_enable_tree_lines(True)

        """model config"""
        self.model = MyTreeStore(*FTreeModel().types())

        """filter config"""
        self.filter_model = self.model.filter_new()
        self.filter_model.set_visible_column(self.visible[0])
        self.set_model(self.filter_model)

        """connectors"""
        self.connect("button-press-event", self.on_button_press)
        self.connect("key-release-event", self.on_key_release)
        self.connect("row-expanded", self.on_row_expanded)
        self.connect('button_press_event', self.on_multi_button_press)
        self.connect('button_release_event', self.on_multi_button_release)

        self.count_index = 0

        self.set_reorderable(False)
        self.set_headers_visible(False)

        self.ellipsize_render = Gtk.CellRendererText.new()
        self.ellipsize_render.set_property('ellipsize', Pango.EllipsizeMode.END)

        self.set_type_plain()

        self.active_UUID = -1

        self.defer_select = False

        self.scroll = Gtk.ScrolledWindow()
        self.scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        self.scroll.add(self)
Esempio n. 24
0
    def __init__(self, controls):
        FilterTreeControls.__init__(self, controls)

        FTreeModel.__init__(self)
        FControl.__init__(self, controls)

        self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
        self.set_enable_tree_lines(True)
        """model config"""
        self.model = MyTreeStore(*FTreeModel().types())
        """filter config"""
        self.filter_model = self.model.filter_new()
        self.filter_model.set_visible_column(self.visible[0])
        self.set_model(self.filter_model)
        """connectors"""
        self.connect("button-press-event", self.on_button_press)
        self.connect("key-release-event", self.on_key_release)
        self.connect("row-expanded", self.on_row_expanded)
        self.connect('button_press_event', self.on_multi_button_press)
        self.connect('button_release_event', self.on_multi_button_release)

        self.count_index = 0

        self.set_reorderable(False)
        self.set_headers_visible(False)

        self.ellipsize_render = Gtk.CellRendererText.new()
        self.ellipsize_render.set_property('ellipsize',
                                           Pango.EllipsizeMode.END)

        self.set_type_plain()

        self.active_UUID = -1

        self.defer_select = False

        self.scroll = Gtk.ScrolledWindow()
        self.scroll.set_policy(Gtk.PolicyType.AUTOMATIC,
                               Gtk.PolicyType.AUTOMATIC)
        self.scroll.add(self)
Esempio n. 25
0
    def fill_treerows(self):
        all_extra_rows = {}

        for k, treerow in enumerate(self.model):
            if not treerow[self.time[0]] and treerow[self.is_file[0]]:
                bean = self.get_bean_from_row(treerow)
                full_beans = update_id3_wind_filtering([bean])
                rows_for_add = []
                if len(full_beans) == 1:
                    full_bean = full_beans[0]
                    m_dict = FTreeModel().cut().__dict__
                    new_dict = dict(zip(m_dict.values(), m_dict.keys()))
                    for i, key in enumerate(new_dict.values()):
                        value = getattr(full_bean, key)
                        if value is None:
                            value = ''
                        elif type(value) in [int, float, long]:
                            value = str(value)
                        treerow[i] = value
                else:
                    for n, full_bean in enumerate(full_beans):
                        full_bean.visible = True
                        full_bean.update_uuid()
                        row = self.get_row_from_bean(full_bean)
                        rows_for_add.insert(0, row)
                        if n == 0:
                            treerow[self.font[0]] = 'bold'
                            treerow[self.is_file[0]] = False

                    if rows_for_add:
                        all_extra_rows[k] = rows_for_add

        if all_extra_rows:
            for i in sorted(all_extra_rows.keys(), reverse = True):
                for row in all_extra_rows[i]:
                    self.model.insert_after(None, self.model.get_iter(i), row)
Esempio n. 26
0
    def fill_treerows(self):
        all_extra_rows = {}

        for k, treerow in enumerate(self.model):
            if not treerow[self.time[0]] and treerow[self.is_file[0]]:
                bean = self.get_bean_from_row(treerow)
                full_beans = update_id3_wind_filtering([bean])
                rows_for_add = []
                if len(full_beans) == 1:
                    full_bean = full_beans[0]
                    m_dict = FTreeModel().cut().__dict__
                    new_dict = dict(zip(m_dict.values(), m_dict.keys()))
                    for i, key in enumerate(new_dict.values()):
                        value = getattr(full_bean, key)
                        if value is None:
                            value = ''
                        elif type(value) in [int, float, long]:
                            value = str(value)
                        treerow[i] = value
                else:
                    for n, full_bean in enumerate(full_beans):
                        full_bean.visible = True
                        full_bean.update_uuid()
                        row = self.get_row_from_bean(full_bean)
                        rows_for_add.insert(0, row)
                        if n == 0:
                            treerow[self.font[0]] = 'bold'
                            treerow[self.is_file[0]] = False

                    if rows_for_add:
                        all_extra_rows[k] = rows_for_add

        if all_extra_rows:
            for i in sorted(all_extra_rows.keys(), reverse=True):
                for row in all_extra_rows[i]:
                    self.model.insert_after(None, self.model.get_iter(i), row)
Esempio n. 27
0
    def on_load(self):
        if FC().tab_position == "no":
            self.set_tab_no()
        elif FC().tab_position == "left":
            self.set_tab_left()
        else:
            self.set_tab_top()

        for page in range(len(FCache().cache_pl_tab_contents) - 1, -1, -1):
            if not FCache().cache_pl_tab_contents[page]:
                self._append_tab(FCache().tab_pl_names[page])
                continue
            self._append_tab(FCache().tab_pl_names[page])

            for row in FCache().cache_pl_tab_contents[page]:
                self.get_current_tree().model.append(
                    None, FTreeModel.normalize_row(row))

        self.set_current_page(FC().pl_selected_tab)
        self.loaded = True
Esempio n. 28
0
 def update_status_for_all(self, status):
     beans = self.get_all_beans()
     for bean in beans:
         self.set_bean_column_value(bean, FTreeModel().status[0], status)
Esempio n. 29
0
 def update_status_for_beans(self, beans, status):
     for bean in beans:
         self.set_bean_column_value(bean, FTreeModel().status[0], status)