예제 #1
0
파일: model.py 프로젝트: flow-edge/ess
 def columnCount(self, parent: QModelIndex = ...) -> int:
     column_count_arg_in = {"parent": parent}
     logging.debug("columnCount")
     logging.debug(column_count_arg_in)
     if parent.isValid():
         logging.debug({"return": parent.internalPointer().column_count()})
         return parent.internalPointer().column_count()
     logging.debug({"return": self.__root.column_count()})
     return self.__root.column_count()
예제 #2
0
파일: model.py 프로젝트: flow-edge/ess
    def data(self, index: QModelIndex, role: int = ...) -> typing.Any:
        data_arg_in = {
            "index": index,
            "role": role
        }
        logging.debug(data_arg_in)
        if not index.isValid():
            return None
        r = int(Qt.DisplayRole)
        c = index.column()
        if role != Qt.DisplayRole:
            val = index.internalPointer().data(index.column())
            return None

        return index.internalPointer().data(index.column())
예제 #3
0
 def rowCount(self, in_index: qtc.QModelIndex):
     if in_index.isValid():
         node: Any = in_index.internalPointer()
         if type(node) is Folder:
             return len(node.children)
         return 0
     return len(self.tree.children)
예제 #4
0
    def data(self, index: QModelIndex, role: int = Qt.UserRole + 1) -> t.Any:

        if not index.isValid():
            return None

        if role != Qt.DisplayRole:
            return None

        item = index.internalPointer()
        return item.data(index.column())
예제 #5
0
파일: model.py 프로젝트: flow-edge/ess
 def parent(self, child: QModelIndex = ...) -> QModelIndex:
     parent_arg_in = {"child": child}
     logging.debug("parent")
     logging.debug(parent_arg_in)
     if not child.isValid():
         return QModelIndex()
     child_item = child.internalPointer()
     parent_item = child_item.parent_item()
     if parent_item == self.__root:
         return QModelIndex()
     logging.debug({"return": self.createIndex(parent_item.row(), 0, parent_item)})
     return self.createIndex(parent_item.row(), 0, parent_item)
예제 #6
0
 def prompt_set_feed_refresh_rate(self, index: qtc.QModelIndex) -> None:
     """
     Opens a dialog which allows the user to set a feed's refresh rate.
     """
     feed: Feed = index.internalPointer()
     dialog = VerifyDialog(lambda x: x.isdigit() or x == "",
                           "Refresh Rate (seconds):", "Set Refresh Rate",
                           str(feed.refresh_rate))
     if dialog.exec() == qtw.QDialog.Accepted:
         response = int(
             dialog.get_response()) if dialog.get_response() != "" else None
         self.feed_manager.set_refresh_rate(feed, response)
         self.feed_view_model.update_row(index)
예제 #7
0
 def prompt_set_user_custom_title(self, index: qtc.QModelIndex) -> None:
     """
     Opens a dialog which allows the user to enter a custom title for a feed.
     """
     feed: Feed = index.internalPointer()
     dialog = VerifyDialog(
         lambda x: True, "Title:", "Set Title",
         feed.user_title if feed.user_title is not None else feed.title)
     if dialog.exec() == qtw.QDialog.Accepted:
         response = dialog.get_response(
         ) if dialog.get_response() != "" else None
         self.feed_manager.set_feed_user_title(feed, response)
         self.feed_view_model.update_row(index)
예제 #8
0
    def prompt_delete_folder(self, index: qtc.QModelIndex) -> None:
        """Opens a message box prompt which confirms if the user wants to delete a folder."""
        folder: Folder = index.internalPointer()
        response = qtw.QMessageBox.question(
            None, "Prompt",
            "Are you sure you want to delete '" + folder.title + "'?",
            qtw.QMessageBox.Yes | qtw.QMessageBox.No)
        if response == qtw.QMessageBox.Yes:

            self.feed_view_model.beginRemoveRows(index.parent(), index.row(),
                                                 index.row())
            self.feed_manager.delete_folder(folder)
            self.feed_view_model.endRemoveRows()
예제 #9
0
파일: model.py 프로젝트: flow-edge/ess
    def rowCount(self, parent: QModelIndex = ...) -> int:
        row_count_arg_in = {"parent": parent}
        logging.debug("rowCount")
        logging.debug(row_count_arg_in)
        if parent.column() > 0:
            return 0

        if not parent.isValid():
            parent_item = self.__root
        else:
            parent_item = parent.internalPointer()
        logging.debug({"return": parent_item.child_count()})
        return parent_item.child_count()
예제 #10
0
 def prompt_rename_folder(self, index: qtc.QModelIndex) -> None:
     """
     Opens a dialog allowing a user to rename a folder.
     """
     dialog = VerifyDialog(lambda x: True, "Rename Folder:",
                           "Rename Folder", "")
     if dialog.exec() == qtw.QDialog.Accepted:
         if index:
             folder: Folder = index.internalPointer()
         else:
             folder = self.feeds_cache
             index = qtc.QModelIndex()
         self.feed_manager.rename_folder(dialog.get_response(), folder)
         self.feed_view_model.update_row(index)
예제 #11
0
    def index(self, row: int, column: int,
              parent: QModelIndex = QModelIndex()) -> QModelIndex:

        if not self.hasIndex(row, column, parent):
            return QModelIndex()
        if not parent.isValid():
            parent_item = self.rootItem
        else:
            parent_item = parent.internalPointer()
        child_item = parent_item.child(row)
        if child_item:
            return self.createIndex(row, column, child_item)
        else:
            return QModelIndex()
예제 #12
0
 def prompt_delete_feed(self, index: qtc.QModelIndex) -> None:
     """
     Opens a message box prompt which confirms if the user wants to delete a feed.
     Deletes a feed from the view, then tells the feed manager to remove it from the database.
     """
     feed: Feed = index.internalPointer()
     response = qtw.QMessageBox.question(
         None, "Prompt", "Are you sure you want to delete '" +
         (feed.user_title if feed.user_title is not None else feed.title) +
         "'?", qtw.QMessageBox.Yes | qtw.QMessageBox.No)
     if response == qtw.QMessageBox.Yes:
         self.feed_view_model.beginRemoveRows(index.parent(), index.row(),
                                              index.row())
         self.feed_manager.delete_feed(feed)
         self.feed_view_model.endRemoveRows()
예제 #13
0
 def prompt_add_folder(self, index: qtc.QModelIndex = None) -> None:
     """
     Opens a dialog allowing a user to enter a name for a new folder.
     Adds a folder to the feed database, with the passed index as a parent.
     """
     dialog = VerifyDialog(lambda x: True, "Add Folder:", "Add Folder", "")
     if dialog.exec() == qtw.QDialog.Accepted:
         if index:
             folder: Folder = index.internalPointer()
         else:
             folder = self.feeds_cache
             index = qtc.QModelIndex()
         self.feed_view_model.beginInsertRows(index, len(folder.children),
                                              len(folder.children))
         self.feed_manager.add_folder(dialog.get_response(), folder)
         self.feed_view_model.endInsertRows()
예제 #14
0
파일: model.py 프로젝트: flow-edge/ess
 def index(self, row: int, column: int, parent: QModelIndex = ...) -> QModelIndex:
     index_arg_in = {"row": row,
                     "column": column,
                     "parent": parent}
     logging.debug("index")
     logging.debug(index_arg_in)
     if not self.hasIndex(row, column, parent):
         return QModelIndex()
     if not parent.isValid():
         parent_item = self.__root
     else:
         parent_item = parent.internalPointer()
     res = parent_item.child(row)
     if res is None:
         return QModelIndex()
     logging.debug({"return": self.createIndex(row, column, res)})
     return self.createIndex(row, column, res)
예제 #15
0
    def prompt_add_feed(self, index: qtc.QModelIndex = None) -> None:
        """
        Opens a dialog allowing a user to enter a url for a new feed.
        """
        dialog = VerifyDialog(self.feed_manager.verify_feed_url, "Add Feed:",
                              "Add Feed", "")
        if dialog.exec() == qtw.QDialog.Accepted:
            if index:
                folder: Folder = index.internalPointer()
            else:
                folder = self.feeds_cache
                index = qtc.QModelIndex()
            self.feed_view_model.beginInsertRows(index, len(folder.children),
                                                 len(folder.children))
            self.feed_manager.add_feed(dialog.get_response(), folder)
            self.feed_view_model.endInsertRows()

            self.setExpanded(index, True)