Ejemplo n.º 1
0
 def __init__(self, parent=None):
     super(MainWindow, self).__init__(parent)
     self.mainwindow = Ui_MainWindow()
     self.mainwindow.setupUi(self)
     self.current_list = session.query(List).filter_by(name=u'Default').one()
     self.load_data()
     self.editor = Editor(self)
     self.editor.hide()
     logging.basicConfig(level=logging.DEBUG)
Ejemplo n.º 2
0
class MainWindow(QMainWindow):
    
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.mainwindow = Ui_MainWindow()
        self.mainwindow.setupUi(self)
        self.current_list = session.query(List).filter_by(name=u'Default').one()
        self.load_data()
        self.editor = Editor(self)
        self.editor.hide()
        logging.basicConfig(level=logging.DEBUG)
        
        
    def load_data(self):
        tasks = session.query(Task).filter_by(taskList=self.current_list)
        tv = self.mainwindow.treeView
        model = QStandardItemModel()
        model.setHorizontalHeaderLabels(['Task', 'Description', 'Date due'])
        
        for task in tasks:
            items = []

            it = QStandardItem(QIcon('ui/priority-{0}.png'.format(task.priority)),task.title)
            it.setData(task.title, Qt.DisplayRole)
            it.task = task
            it.column_name = 'title'
            it.setCheckable(True)
            if task.completed:
                it.setCheckState(Qt.CheckState.Checked)
            else:
                it.setCheckState(Qt.CheckState.Unchecked)
            items.append(it)
            
            it = QStandardItem()
            it.setData(task.description, Qt.DisplayRole)
            it.task = task
            it.column_name = 'description'
            items.append(it)
            
            it = QStandardItem()
            it.setData(str(task.date_due), Qt.DisplayRole)
            it.task = task
            it.column_name = 'date_due'
            items.append(it)
            
            model.appendRow(items)
            
        tv.setModel(model)
        tv.sortByColumn(2, Qt.SortOrder.AscendingOrder)
        tv.setColumnWidth(0, 120)
        tv.setColumnWidth(1, 300)
        tv.setColumnWidth(2, 165)
        tv.setIndentation(0)
        model.dataChanged.connect(self.item_data_changed)
        tv.selectionModel().currentChanged.connect(self.task_selection_changed)
        self.mainwindow.actionDelete_Task.triggered.connect(self.delete_task_action)
        self.mainwindow.actionEdit_Task.triggered.connect(self.edit_task_action)
        self.mainwindow.actionNew_Task.triggered.connect(self.new_task_action)
        self.mainwindow.action_Exit.triggered.connect(self.exit_action)
        
        
    def item_data_changed(self, item):
        if item.column() == 0:
            print('Ignoring item_data_changed... column was 0')
            return
        
        item = self.mainwindow.treeView.model().itemFromIndex(self.mainwindow.treeView.currentIndex())
        if item.checkState():
            item.task.completed = True
        else:
            item.task.completed = False
        setattr(item.task, item.column_name, item.data(Qt.DisplayRole))
        self.mainwindow.treeView.model().item(item.row(), 0).setIcon(QIcon('ui/priority-{0}.png'.format(item.task.priority)))
        session.commit()
        
    def delete_task_action(self,checked=None):
        idx = self.mainwindow.treeView.currentIndex()
        # First, get the 'current' task
        item = self.mainwindow.treeView.model().itemFromIndex(idx)
        # if none selected, do nothing
        if not item:
            logging.debug('No item selected, returning...')
            return
        # Delete the task
        item.task.delete()
        session.commit()
        self.mainwindow.treeView.model().removeRow(idx.row())
        
    def new_task_action(self,checked=None):
        # Open the task in the editor
        self.editor.action = 'new_task'
        self.editor.edit(Task(taskList=self.current_list), self.mainwindow.treeView.model())
        
    def number_of_tasks(self):
        return session.query(Task).count()
        
    def edit_task_action(self,checked=None):
        # Open the task in the editor
        self.editor.action = 'edit_task'
        currentItem = self.mainwindow.treeView.model().itemFromIndex(self.mainwindow.treeView.currentIndex())
        self.editor.edit(currentItem.task, self.mainwindow.treeView.model())
        
    def exit_action(self):
        sys.exit()
        
    def task_selection_changed(self, current, previous):
        self.mainwindow.actionDelete_Task.setEnabled(True if current else False)