示例#1
0
class ActivityDockWidget(DockWidgetWidget):
    """
    a dock widget for activities
    """
    def __init__(self, parent, **params):
        super(ActivityDockWidget, self).__init__(parent,
                                    title=params.get('title', 'Activities'),
                                    **params)
        self.setObjectName("ActivityDockWidget")
        self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea |
                             Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)
        layout = QVBoxLayout()
        layout.setMargin(0)  # no margin for internal layout
        self.dockComposite = CompositeWidget(self, layout=layout,
                                        not_add_widget_to_parent_layout=True)
        self.listWidget = ListWidgetWidget(self.dockComposite,
                list_item_double_clicked_handler=self.__list_item_handler__,
                selectionMode=QAbstractItemView.MultiSelection,
                sizePolicy=QSizePolicy(QSizePolicy.Expanding,
                                       QSizePolicy.Expanding))
        for activity in ActivityManager.getActivities(PLUGIN_ACTIVITY_TYPE):
            if activity:
                ListWidgetItemWidget(self.listWidget,
                                 text=activity.label,
                                 data=activity)

        self.clearAll = PushButtonWidget(self.dockComposite,
                            i18n="clear.all.activity.button",
                            i18n_def="Clear all activities",
                            clicked_handler=self.__clear_list__)

        self.setWidget(self.dockComposite)
        parent.addDockWidget(Qt.RightDockWidgetArea, self)

        SignalDispatcher.addSignalSubscriber(self,
                                             ADD_ACTIVITY_SIGNAL,
                                             self.__add_activity__)
        SignalDispatcher.addSignalSubscriber(self,
                                             CLEAR_ACTIVITIES_SIGNAL,
                                             self.__clear_list__)

    def __list_item_handler__(self, listItem):
        data = listItem.data(Qt.UserRole)
        if data:
            activity = data.toPyObject()
            if activity:
                activity()

    def __add_activity__(self, activity):
        if activity:
            ListWidgetItemWidget(self.listWidget,
                                 text=activity.label,
                                 data=activity)

    def __clear_list__(self):
        ActivityManager.clearActivities()
        self.listWidget.clear()
示例#2
0
class ActivityDockWidget(DockWidgetWidget):
    """
    a dock widget for activities
    """
    def __init__(self, parent, **params):
        super(ActivityDockWidget,
              self).__init__(parent,
                             title=params.get('title', 'Activities'),
                             **params)
        self.setObjectName("ActivityDockWidget")
        self.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea
                             | Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)
        layout = QVBoxLayout()
        layout.setMargin(0)  # no margin for internal layout
        self.dockComposite = CompositeWidget(
            self, layout=layout, not_add_widget_to_parent_layout=True)
        self.listWidget = ListWidgetWidget(
            self.dockComposite,
            list_item_double_clicked_handler=self.__list_item_handler__,
            selectionMode=QAbstractItemView.MultiSelection,
            sizePolicy=QSizePolicy(QSizePolicy.Expanding,
                                   QSizePolicy.Expanding))
        for activity in ActivityManager.getActivities(PLUGIN_ACTIVITY_TYPE):
            if activity:
                ListWidgetItemWidget(self.listWidget,
                                     text=activity.label,
                                     data=activity)

        self.clearAll = PushButtonWidget(self.dockComposite,
                                         i18n="clear.all.activity.button",
                                         i18n_def="Clear all activities",
                                         clicked_handler=self.__clear_list__)

        self.setWidget(self.dockComposite)
        parent.addDockWidget(Qt.RightDockWidgetArea, self)

        SignalDispatcher.addSignalSubscriber(self, ADD_ACTIVITY_SIGNAL,
                                             self.__add_activity__)
        SignalDispatcher.addSignalSubscriber(self, CLEAR_ACTIVITIES_SIGNAL,
                                             self.__clear_list__)

    def __list_item_handler__(self, listItem):
        data = listItem.data(Qt.UserRole)
        if data:
            activity = data.toPyObject()
            if activity:
                activity()

    def __add_activity__(self, activity):
        if activity:
            ListWidgetItemWidget(self.listWidget,
                                 text=activity.label,
                                 data=activity)

    def __clear_list__(self):
        ActivityManager.clearActivities()
        self.listWidget.clear()