Ejemplo n.º 1
0
    def __init__(self, parent=None):
        super(TaskWorkspace, self).__init__(parent)
        self.add_menu = AddTaskMenu(self)
        self.add_menu.setMinimumWidth(100)
        self.add_menu.buttonClicked.connect(self.on_add_menu_clicked)
        self.add_menu.setWindowFlags(QtCore.Qt.Popup)
        self.add_menu.hide()

        self.__layout = QtGui.QVBoxLayout()
        self.__layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(self.__layout)

        self.toolbar = TaskToolBar()
        self.toolbar.buttonClicked.connect(self.on_toolbar_clicked)
        self.__layout.addWidget(self.toolbar)

        # main area
        self.main_area = QtGui.QSplitter()
        self.main_area.setContentsMargins(10, 0, 10, 10)
        self.__layout.addWidget(self.main_area)
        # 添加任务树
        self.task_tree_model = task_tree.TaskTreeModel()
        self.task_tree_view = task_tree.TaskTreeView()
        self.task_tree_view.add_default_headers()
        self.task_tree_view.setModel(self.task_tree_model)
        self.task_tree_model.set_view(self.task_tree_view)
        self.main_area.addWidget(self.task_tree_view)
        # 添加属性编辑器,时间线,流程图
        self.side_area = QtGui.QStackedWidget()
        self.main_area.addWidget(self.side_area)
        self.task_attr_editor = task_editor.TaskEditor()
        self.side_area.addWidget(self.task_attr_editor)
        self.task_workflow = TaskWorkFlow()
        self.side_area.addWidget(self.task_workflow)
        self.task_timeline = TaskTimeLine()
        self.side_area.addWidget(self.task_timeline)

        self.task_tree_view.clicked.connect(self.on_select_task)
        self.task_attr_editor.attr_editor.save_task.connect(self.on_save_task)

        self.set_side_to_attribute()
Ejemplo n.º 2
0
class TaskWorkspace(QtGui.QWidget):
    add_menu = None
    attribute_editor = None

    def __init__(self, parent=None):
        super(TaskWorkspace, self).__init__(parent)
        self.add_menu = AddTaskMenu(self)
        self.add_menu.setMinimumWidth(100)
        self.add_menu.buttonClicked.connect(self.on_add_menu_clicked)
        self.add_menu.setWindowFlags(QtCore.Qt.Popup)
        self.add_menu.hide()

        self.__layout = QtGui.QVBoxLayout()
        self.__layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(self.__layout)

        self.toolbar = TaskToolBar()
        self.toolbar.buttonClicked.connect(self.on_toolbar_clicked)
        self.__layout.addWidget(self.toolbar)

        # main area
        self.main_area = QtGui.QSplitter()
        self.main_area.setContentsMargins(10, 0, 10, 10)
        self.__layout.addWidget(self.main_area)
        # 添加任务树
        self.task_tree_model = task_tree.TaskTreeModel()
        self.task_tree_view = task_tree.TaskTreeView()
        self.task_tree_view.add_default_headers()
        self.task_tree_view.setModel(self.task_tree_model)
        self.task_tree_model.set_view(self.task_tree_view)
        self.main_area.addWidget(self.task_tree_view)
        # 添加属性编辑器,时间线,流程图
        self.side_area = QtGui.QStackedWidget()
        self.main_area.addWidget(self.side_area)
        self.task_attr_editor = task_editor.TaskEditor()
        self.side_area.addWidget(self.task_attr_editor)
        self.task_workflow = TaskWorkFlow()
        self.side_area.addWidget(self.task_workflow)
        self.task_timeline = TaskTimeLine()
        self.side_area.addWidget(self.task_timeline)

        self.task_tree_view.clicked.connect(self.on_select_task)
        self.task_attr_editor.attr_editor.save_task.connect(self.on_save_task)

        self.set_side_to_attribute()

    def update_task_tree(self):
        if hc.TaskRoot:
            self.task_tree_model.add_project_task_tree(hc.TaskRoot)

    def load_current(self):
        hc.TaskRoot = hc.Project.task_tree()
        self.task_tree_model.add_project_task_tree(hc.TaskRoot)

    def get_selected_index(self):
        selects = self.task_tree_view.selectedIndexes()
        if selects:
            return selects[0]
        return None

    def on_toolbar_clicked(self, tool_name):
        if tool_name == "add":
            self.show_add_menu()
        if tool_name == "delete_task":
            self.delete_task()
        if tool_name == "update":
            self.update_task_tree()
        if tool_name == "attribute":
            self.set_side_to_attribute()
        if tool_name == "timeline":
            self.set_side_to_timeline()
        if tool_name == "workflow":
            self.set_side_to_workflow()

    def on_add_menu_clicked(self, menu_name):
        self.add_menu.hide()
        if menu_name == "add_task":
            self.add_task()

    def show_add_menu(self):
        pos = self.toolbar.mapToGlobal(QtCore.QPoint(0, 0))
        self.add_menu.move(pos + QtCore.QPoint(0, self.toolbar.height()))
        self.add_menu.show()

    def set_side_to_attribute(self):
        self.side_area.setCurrentWidget(self.task_attr_editor)
        self.main_area.setSizes([self.width()*0.8, self.width()*0.2])

    def set_side_to_timeline(self):
        self.task_timeline.clear()
        self.task_timeline.add_test()
        self.side_area.setCurrentWidget(self.task_timeline)
        self.main_area.setSizes([self.width()*0.2, self.width()*0.8])

    def set_side_to_workflow(self):
        self.task_workflow.clear()
        self.task_workflow.add_test()
        self.side_area.setCurrentWidget(self.task_workflow)
        self.main_area.setSizes([self.width()*0.2, self.width()*0.8])

    def add_task(self):
        add_task_dialog = task_dialog.AddTaskDialog(self)

        if add_task_dialog.exec_() == QtGui.QDialog.Accepted:
            data = add_task_dialog.get_data()
            if not hc.Project:
                return False
            data['project_code'] = hc.Project.project_code()
            data['parent_code'] = hc.Project.project_code()

            parent_index = self.get_selected_index()
            if parent_index:
                parent_task = self.task_tree_model.get_task(parent_index)
                data['parent_code'] = parent_task.task_code()
            print data
            task = honey.Task(data)
            if task.add_to_db():
                if parent_index:
                    self.task_tree_model.add_task(task, parent_index)
                    self.task_tree_view.expand(parent_index)
                else:
                    self.task_tree_model.add_task(task, QtCore.QModelIndex())
                print "Add task %s successful." % task.name()

            return True
        
        return False

    def delete_task(self):
        sel_index = self.get_selected_index()

        if sel_index:
            task = self.task_tree_model.get_task(sel_index)
            conform_box = QtGui.QMessageBox.critical(
                None,
                u"删除确认",
                u"确认要删除任务 %s 么?" % task.name(),
                QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel,
                QtGui.QMessageBox.Cancel
            )
            if conform_box == QtGui.QMessageBox.Ok:
                print "Remove task %s." % task.name()
                self.task_tree_model.remove_task(sel_index)
                return True
            else:
                return False
            
    def clear_sel(self):
        self.task_tree_view.clearSelection()

    def on_select_task(self, index):
        selects = self.task_tree_view.selectedIndexes()
        if selects:
            hc.BeginSelectIndex = selects[0]
            hc.EndSelectIndex = selects[-1]

        hc.CurrentTask = self.task_tree_model.get_task(index)
        self.task_attr_editor.load_current()

    def on_save_task(self):
        self.task_tree_model.changePersistentIndex(hc.BeginSelectIndex, hc.EndSelectIndex)