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()