コード例 #1
0
ファイル: TimeReportingScanner.py プロジェクト: wiz21b/koi
class TheView(TimeReportView):
    def __init__(self, parent):
        super(TheView, self).__init__(parent)

        self.tar_menu = QMenu(_("Time tracking"), parent)
        # self.change_report_action = self.tar_menu.addAction(_("Change report"))
        self.delete_report_action = self.tar_menu.addAction(_("Delete report"))

        self.task_menu = QMenu(_("Task"), parent)
        self.add_task_report_action = self.task_menu.addAction(_("Add time"))

        self.tar_presence_menu = QMenu(_("Presence"), parent)
        self.add_presence_report_action = self.tar_presence_menu.addAction(
            _("Add presence report"))

        self.all_menu = QMenu(_("All"), parent)
        self.all_menu.addAction(self.add_task_report_action)
        self.all_menu.addAction(self.add_presence_report_action)

        # self.a.triggered.connect(self.editPointage)

    def mouseDoubleClickEvent(self, event):
        p = self.mapToScene(event.pos())
        item = self.scene().itemAt(p)

        if item:
            item.setSelected(True)
            selected = item.data(0)

            if hasattr(selected, "type"):
                stype = selected.type
            else:
                stype = None

            if selected is None:
                self.add_presence_report_action.trigger()
            elif stype in (Task, TaskOnOperation, TaskOnNonBillable,
                           TaskOnOrder):
                self.add_task_report_action.trigger()

    def contextMenuEvent(self, event):
        p = self.mapToScene(event.pos())
        item = self.scene().itemAt(p)

        if item:
            item.setSelected(True)
            selected = item.data(0)

            if hasattr(selected, "type"):
                stype = selected.type
            else:
                stype = None

            if selected is None:
                self.tar_presence_menu.move(event.globalPos())
                self.tar_presence_menu.show()
            elif isinstance(selected, TaskActionReport):
                self.tar_menu.move(event.globalPos())
                self.tar_menu.show()
            elif stype in (Task, TaskOnOperation, TaskOnNonBillable,
                           TaskOnOrder):
                self.task_menu.move(event.globalPos())
                self.task_menu.show()
            else:
                mainlog.debug(
                    "contextMenuEvent : can't do anything on {} (type={})".
                    format(selected, stype))
        else:
            self.all_menu.move(event.globalPos())
            self.all_menu.show()