Exemplo n.º 1
0
    def initialize(self, item):
        """
        Initialize Actions QWidget, with ack and downtime buttons

        """

        self.item = item

        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)

        self.acknowledge_btn.setIcon(QIcon(settings.get_image('acknowledge')))
        self.acknowledge_btn.setFixedSize(80, 20)
        self.acknowledge_btn.clicked.connect(self.add_acknowledge)
        self.acknowledge_btn.setToolTip(_('Acknowledge the current item'))
        layout.addWidget(self.acknowledge_btn)

        self.downtime_btn.setIcon(QIcon(settings.get_image('downtime')))
        self.downtime_btn.setFixedSize(80, 20)
        self.downtime_btn.clicked.connect(self.add_downtime)
        self.downtime_btn.setToolTip(_('Schedule a Downtime on current item'))
        layout.addWidget(self.downtime_btn)

        layout.setAlignment(Qt.AlignCenter)
    def initialize(self, item):
        """
        Initialize Actions QWidget, with ack and downtime buttons

        """

        self.item = item

        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)

        self.acknowledge_btn.setIcon(QIcon(settings.get_image('acknowledge')))
        self.acknowledge_btn.setFixedSize(80, 20)
        self.acknowledge_btn.clicked.connect(self.add_acknowledge)
        self.acknowledge_btn.setToolTip(_('Acknowledge the current item'))
        layout.addWidget(self.acknowledge_btn)

        self.downtime_btn.setIcon(QIcon(settings.get_image('downtime')))
        self.downtime_btn.setFixedSize(80, 20)
        self.downtime_btn.clicked.connect(self.add_downtime)
        self.downtime_btn.setToolTip(_('Schedule a Downtime on current item'))
        layout.addWidget(self.downtime_btn)

        layout.setAlignment(Qt.AlignCenter)
    def get_btn_widget(self):
        """
        Return QWidget with spy and host synthesis QPushButtons

        :return: widget with spy and host button
        :rtype: QWidget
        """

        widget_btn = QWidget()
        layout_btn = QHBoxLayout()
        layout_btn.setContentsMargins(0, 0, 0, 5)
        widget_btn.setLayout(layout_btn)

        host_filter = QLabel(_('Filter hosts'))
        host_filter.setObjectName('subtitle')
        layout_btn.addWidget(host_filter)
        self.filter_hosts_btn.initialize()
        self.filter_hosts_btn.update_btn_state(False)
        self.filter_hosts_btn.toggle_btn.clicked.connect(lambda: self.update_problems_data('host'))
        layout_btn.addWidget(self.filter_hosts_btn)

        service_filter = QLabel(_('Filter services'))
        service_filter.setObjectName('subtitle')
        layout_btn.addWidget(service_filter)
        self.filter_services_btn.initialize()
        self.filter_services_btn.update_btn_state(False)
        self.filter_services_btn.toggle_btn.clicked.connect(
            lambda: self.update_problems_data('service')
        )
        layout_btn.addWidget(self.filter_services_btn)

        layout_btn.addStretch()

        self.host_btn.setIcon(QIcon(settings.get_image('host')))
        self.host_btn.setFixedSize(80, 20)
        self.host_btn.setEnabled(False)
        self.host_btn.setToolTip(_('See current item in synthesis view'))
        layout_btn.addWidget(self.host_btn)

        self.spy_btn.setIcon(QIcon(settings.get_image('spy')))
        self.spy_btn.setFixedSize(80, 20)
        self.spy_btn.setEnabled(False)
        self.spy_btn.setToolTip(_('Spy current host'))
        self.spy_btn.clicked.connect(self.add_spied_host)
        layout_btn.addWidget(self.spy_btn)

        self.actions_widget.initialize(None)
        self.actions_widget.acknowledge_btn.setEnabled(False)
        self.actions_widget.downtime_btn.setEnabled(False)
        layout_btn.addWidget(self.actions_widget)

        layout_btn.setAlignment(Qt.AlignCenter)

        return widget_btn
    def get_notes_mail_widget(self):
        """
        Return QWidget with notes and email areas and edition buttons

        :return: notes and email QWidget
        :rtype: QWidget
        """

        notes_widget = QWidget()
        notes_layout = QGridLayout(notes_widget)

        # Notes title and button
        notes_label = QLabel(_('Notes:'))
        notes_label.setObjectName('subtitle')
        notes_layout.addWidget(notes_label, 0, 0, 1, 1)

        notes_btn = QPushButton()
        notes_btn.setIcon(QIcon(settings.get_image('edit')))
        notes_btn.setToolTip(_("Edit your notes."))
        notes_btn.setFixedSize(32, 32)
        notes_btn.clicked.connect(lambda: self.patch_data('notes'))
        notes_layout.addWidget(notes_btn, 0, 2, 1, 1)

        # Notes scroll area
        self.labels['notes'].setText(data_manager.database['user'].data['notes'])
        self.labels['notes'].setWordWrap(True)
        self.labels['notes'].setTextInteractionFlags(Qt.TextSelectableByMouse)
        notes_scrollarea = QScrollArea()
        notes_scrollarea.setWidget(self.labels['notes'])
        notes_scrollarea.setWidgetResizable(True)
        notes_scrollarea.setObjectName('notes')
        notes_layout.addWidget(notes_scrollarea, 1, 0, 1, 3)

        # Mail
        mail_label = QLabel(_('Email:'))
        mail_label.setObjectName('subtitle')
        notes_layout.addWidget(mail_label, 2, 0, 1, 1)
        self.labels['email'].setObjectName('edit')
        notes_layout.addWidget(self.labels['email'], 2, 1, 1, 1)

        mail_btn = QPushButton()
        mail_btn.setIcon(QIcon(settings.get_image('edit')))
        mail_btn.setFixedSize(32, 32)
        mail_btn.clicked.connect(lambda: self.patch_data('email'))
        notes_layout.addWidget(mail_btn, 2, 2, 1, 1)

        notes_layout.setAlignment(Qt.AlignTop)

        return notes_widget
Exemplo n.º 5
0
    def initialize(self, child_widget, title, exitapp):
        """
        Initialize QWidget

        :param child_widget: widget child of LogoQWidget, needed for action button and layout
        :type child_widget: QWidget
        :param title: title of widget
        :type title: str
        :param exitapp: define if close button close application or just child QWidget
        :type exitapp: bool
        """

        self.child_widget = child_widget

        logo_layout = QHBoxLayout()
        self.setLayout(logo_layout)

        logo_label = QLabel()
        logo_label.setObjectName('widget_title')
        logo_label.setText('%s' % title)
        logo_layout.addWidget(logo_label, 0)

        logo_layout.addStretch(child_widget.width())
        logo_layout.setSpacing(0)

        minimize_btn = QPushButton()
        minimize_btn.setIcon(QIcon(settings.get_image('minimize')))
        minimize_btn.setFixedSize(24, 24)
        minimize_btn.setObjectName('app_widget')
        minimize_btn.clicked.connect(self.minimize)
        logo_layout.addWidget(minimize_btn, 1)

        maximize_btn = QPushButton()
        maximize_btn.setIcon(QIcon(settings.get_image('maximize')))
        maximize_btn.setFixedSize(24, 24)
        maximize_btn.setObjectName('app_widget')
        maximize_btn.clicked.connect(self.minimize_maximize)
        logo_layout.addWidget(maximize_btn, 2)

        close_btn = QPushButton()
        close_btn.setIcon(QIcon(settings.get_image('exit')))
        close_btn.setObjectName('app_widget')
        close_btn.setFixedSize(24, 24)
        if exitapp:
            close_btn.clicked.connect(sys.exit)
        else:
            close_btn.clicked.connect(child_widget.close)
        logo_layout.addWidget(close_btn, 3)
    def initialize(self, child_widget, title, exitapp):
        """
        Initialize QWidget

        :param child_widget: widget child of LogoQWidget, needed for action button and layout
        :type child_widget: QWidget
        :param title: title of widget
        :type title: str
        :param exitapp: define if close button close application or just child QWidget
        :type exitapp: bool
        """

        self.child_widget = child_widget

        logo_layout = QHBoxLayout()
        self.setLayout(logo_layout)

        logo_label = QLabel()
        logo_label.setObjectName('widget_title')
        logo_label.setText('%s' % title)
        logo_layout.addWidget(logo_label, 0)

        logo_layout.addStretch(child_widget.width())
        logo_layout.setSpacing(0)

        minimize_btn = QPushButton()
        minimize_btn.setIcon(QIcon(settings.get_image('minimize')))
        minimize_btn.setFixedSize(24, 24)
        minimize_btn.setObjectName('app_widget')
        minimize_btn.clicked.connect(self.minimize)
        logo_layout.addWidget(minimize_btn, 1)

        maximize_btn = QPushButton()
        maximize_btn.setIcon(QIcon(settings.get_image('maximize')))
        maximize_btn.setFixedSize(24, 24)
        maximize_btn.setObjectName('app_widget')
        maximize_btn.clicked.connect(self.minimize_maximize)
        logo_layout.addWidget(maximize_btn, 2)

        close_btn = QPushButton()
        close_btn.setIcon(QIcon(settings.get_image('exit')))
        close_btn.setObjectName('app_widget')
        close_btn.setFixedSize(24, 24)
        if exitapp:
            close_btn.clicked.connect(sys.exit)
        else:
            close_btn.clicked.connect(child_widget.close)
        logo_layout.addWidget(close_btn, 3)
    def initialize(self, event_type, msg, timer=False, host=None):
        """
        Initialize QListWidgetItem

        :param event_type: the type of event: OK, DOWN, ACK, ...
        :type event_type: str
        :param msg: message of event
        :type msg: str
        :param timer: timer to hide event at end of time
        :type timer: bool
        :param host: _id of host. Only necessary if "be_spied" is True
        :type host: None | str
        """

        self.host = host
        if host:
            self.setData(Qt.UserRole, host)

        if timer:
            self.timer = QTimer()

        self.setData(Qt.DisplayRole, "%s" % msg)
        msg_to_send = '%s. (Send at %s)' % (msg, get_current_time())
        self.setToolTip(msg_to_send)

        self.setData(
            Qt.DecorationRole, QIcon(settings.get_image(self.get_icon(event_type)))
        )
 def __init__(self, parent=None):
     super(UserOptionsQDialog, self).__init__(parent)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setFixedSize(350, 300)
     self.setObjectName('dialog')
     # Fields
     self.titles_labels = {
         'host': {
             'd': QLabel('Down'),
             'u': QLabel('Unreachable'),
             'r': QLabel('Recovery'),
             'f': QLabel('Flapping'),
             's': QLabel('Downtime'),
             'n': QLabel('None')
         },
         'service': {
             'w': QLabel('Warning'),
             'u': QLabel('Unknown'),
             'c': QLabel('Critical'),
             'r': QLabel('Recovery'),
             'f': QLabel('Flapping'),
             's': QLabel('Downtime'),
             'n': QLabel('None')
         }
     }
def get_icon_item(item_type, problem_nb):
    """
    Return QPixmap with the corresponding image

    :param item_type: type of item: host, service or problem
    :type item_type: str
    :param problem_nb: problem number
    :type problem_nb: int
    :return: QPixmap with corresponding image
    :rtype: QPixmap
    """

    if problem_nb > 0:
        if item_type == 'host':
            icon_type = 'hosts_down'
        elif item_type == 'service':
            icon_type = 'services_critical'
        else:
            icon_type = 'problem'
    else:
        if item_type == 'host':
            icon_type = 'hosts_up'
        elif item_type == 'service':
            icon_type = 'services_ok'
        else:
            icon_type = 'problem_ok'

    icon = QPixmap(settings.get_image(icon_type))

    return icon
    def update_status(self):
        """
        Update daemons and backend status

        """

        self.backend_connected.setPixmap(
            QPixmap(settings.get_image(app_backend.get_backend_status_icon()))
        )
        self.ws_connected.setPixmap(
            QPixmap(settings.get_image(app_backend.get_ws_status_icon()))
        )
        self.status_btn.setEnabled(bool(data_manager.database['alignakdaemon']))

        if self.status_dialog.labels:
            self.update_status_btn(self.status_dialog.update_dialog())
 def __init__(self, parent=None):
     super(MessageQDialog, self).__init__(parent)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setFixedSize(500, 200)
     self.setObjectName('dialog')
    def initialize(self):
        """
        Initialize QWidget

        """

        layout = QHBoxLayout()
        self.setLayout(layout)

        self.services_title.setObjectName('itemtitle')
        layout.addWidget(self.services_title)
        layout.setAlignment(self.services_title, Qt.AlignLeft)

        icons_widget = QWidget()
        icons_layout = QHBoxLayout()
        icons_widget.setLayout(icons_layout)

        for icon in Service.get_available_icons():
            state = icon.replace('services_', '').upper()
            icon_pixmap = QIcon(settings.get_image(icon))
            self.states_btns[state].setIcon(icon_pixmap)
            self.states_btns[state].setFixedSize(20, 20)
            self.states_btns[state].setToolTip(state)
            self.states_btns[state].setCheckable(True)
            self.states_btns[state].setObjectName('services')
            icons_layout.addWidget(self.states_btns[state])
            self.nb_labels[state].setObjectName(get_icon_name_from_state('service', state))
            icons_layout.addWidget(self.nb_labels[state])

        layout.addWidget(icons_widget)
        layout.setAlignment(icons_widget, Qt.AlignRight)
 def __init__(self, parent=None):
     super(UserOptionsQDialog, self).__init__(parent)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setFixedSize(350, 300)
     self.setObjectName('dialog')
     # Fields
     self.titles_labels = {
         'host': {
             'd': QLabel('Down'),
             'u': QLabel('Unreachable'),
             'r': QLabel('Recovery'),
             'f': QLabel('Flapping'),
             's': QLabel('Downtime'),
             'n': QLabel('None')
         },
         'service': {
             'w': QLabel('Warning'),
             'u': QLabel('Unknown'),
             'c': QLabel('Critical'),
             'r': QLabel('Recovery'),
             'f': QLabel('Flapping'),
             's': QLabel('Downtime'),
             'n': QLabel('None')
         }
     }
    def get_services_resume_widget(self):
        """
        Return Services resume QWidget

        """

        self.layout.addWidget(QLabel('<b>Services:</b>'), 2, 0, 1, 1)
        self.items_nb['services_nb'].setObjectName('subtitle')
        self.layout.addWidget(self.items_nb['services_nb'], 3, 0, 1, 1)
        row = 1
        for icon in Service.get_available_icons():
            self.services_buttons[icon].setIcon(QIcon(settings.get_image(icon)))
            self.services_buttons[icon].setFixedSize(48, 24)
            self.services_buttons[icon].setObjectName(icon)
            self.services_buttons[icon].setToolTip(
                _('Services %s. See in WebUI ?') % icon.replace('services_', '').upper()
            )
            self.services_buttons[icon].clicked.connect(
                lambda: self.open_item_type_url('services')
            )
            self.layout.addWidget(self.services_buttons[icon], 2, row, 1, 1)
            self.layout.setAlignment(self.services_buttons[icon], Qt.AlignCenter)
            self.services_labels[icon].setObjectName(icon)
            self.layout.addWidget(self.services_labels[icon], 3, row, 1, 1)
            self.layout.setAlignment(self.services_labels[icon], Qt.AlignCenter)
            row += 1
Exemplo n.º 15
0
    def update_widget(self, services):
        """
        Update the QTreeWidget and its items

        :param services: list of :class:`Services <alignak_app.items.service.Service>` items
        :type services: list
        """

        self.services = services

        # Update services dashboard
        self.services_dashboard.update_widget(self.services)

        # Clear QTreeWidget
        self.services_tree_widget.clear()
        self.services_tree_widget.setIconSize(QSize(16, 16))

        if self.services:
            # Set as "Global" aggregation who are empty
            for service in self.services:
                if not service.data['aggregation']:
                    service.data['aggregation'] = 'Global'

            # First sort list by state then by aggregation
            newlist = sorted(self.services,
                             key=lambda s: itemgetter(
                                 'ls_state', 'ls_acknowledged', 'aggregation')
                             (s.data))
            self.services = newlist

            # Get list of aggregations
            aggregations = []
            for service in self.services:
                if service.data['aggregation'] not in aggregations:
                    aggregations.append(service.data['aggregation'])

            # Add QTreeWidgetItems
            for aggregation in aggregations:
                main_tree = QTreeWidgetItem()
                main_tree.setText(0, aggregation)
                main_tree.setIcon(0, QIcon(settings.get_image('tree')))
                main_tree.setToolTip(0, aggregation)
                for service in self.services:
                    if service.data['aggregation'] == aggregation:
                        service_tree = ServiceTreeItem()
                        service_tree.initialize(service)
                        service_tree.setToolTip(0, service.get_tooltip())
                        self.services_tree_widget.clicked.connect(
                            self.update_service_data)
                        main_tree.addChild(service_tree)

                self.services_tree_widget.addTopLevelItem(main_tree)

            self.service_data_widget.hide()
        else:
            # If no services, reset service item to None and hide data widget
            self.service_data_widget.service_item = None
            self.service_data_widget.hide()
    def update_widget(self, services):
        """
        Update the QTreeWidget and its items

        :param services: list of :class:`Services <alignak_app.items.service.Service>` items
        :type services: list
        """

        self.services = services

        # Update services dashboard
        self.services_dashboard.update_widget(self.services)

        # Clear QTreeWidget
        self.services_tree_widget.clear()
        self.services_tree_widget.setIconSize(QSize(16, 16))

        if self.services:
            # Set as "Global" aggregation who are empty
            for service in self.services:
                if not service.data['aggregation']:
                    service.data['aggregation'] = 'Global'

            # First sort list by state then by aggregation
            newlist = sorted(
                self.services,
                key=lambda s: itemgetter('ls_state', 'ls_acknowledged', 'aggregation')(s.data)
            )
            self.services = newlist

            # Get list of aggregations
            aggregations = []
            for service in self.services:
                if service.data['aggregation'] not in aggregations:
                    aggregations.append(service.data['aggregation'])

            # Add QTreeWidgetItems
            for aggregation in aggregations:
                main_tree = QTreeWidgetItem()
                main_tree.setText(0, aggregation)
                main_tree.setIcon(0, QIcon(settings.get_image('tree')))
                main_tree.setToolTip(0, aggregation)
                for service in self.services:
                    if service.data['aggregation'] == aggregation:
                        service_tree = ServiceTreeItem()
                        service_tree.initialize(service)
                        service_tree.setToolTip(0, service.get_tooltip())
                        self.services_tree_widget.clicked.connect(self.update_service_data)
                        main_tree.addChild(service_tree)

                self.services_tree_widget.addTopLevelItem(main_tree)

            self.service_data_widget.hide()
        else:
            # If no services, reset service item to None and hide data widget
            self.service_data_widget.service_item = None
            self.service_data_widget.hide()
 def __init__(self, parent=None):
     super(AppQMainWindow, self).__init__(parent)
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     # Fields
     self.dock = DockQWidget()
     self.panel_widget = PanelQWidget()
     self.offset = None
 def __init__(self, parent=None):
     super(EditQDialog, self).__init__(parent)
     self.setWindowTitle('Edit Dialog')
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setObjectName('dialog')
     self.setFixedSize(300, 300)
     # Fields
     self.text_edit = QTextEdit()
     self.old_text = ''
Exemplo n.º 19
0
    def add_quit_menu(self):
        """
        Create and add to menu "exit" QAction

        """

        self.tray_actions['exit'].setIcon(QIcon(settings.get_image('exit')))
        self.tray_actions['exit'].setText(_('Quit'))
        self.tray_actions['exit'].setToolTip(_('Quit Alignak-app'))
        self.tray_actions['exit'].triggered.connect(self.quit_app)

        self.menu.addAction(self.tray_actions['exit'])
Exemplo n.º 20
0
    def add_reload_menu(self):
        """
        Create and add to menu "reload" QAction

        """

        self.tray_actions['reload'].setIcon(QIcon(settings.get_image('refresh')))
        self.tray_actions['reload'].setText(_('Reload configuration'))
        self.tray_actions['reload'].setToolTip(_('Reload configuration'))
        self.tray_actions['reload'].triggered.connect(self.reload_configuration)

        self.menu.addAction(self.tray_actions['reload'])
Exemplo n.º 21
0
 def __init__(self, parent=None):
     super(PasswordQDialog, self).__init__(parent)
     self.setWindowTitle('User Password')
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setObjectName('dialog')
     self.setFixedSize(300, 300)
     # Fields
     self.pass_edit = QLineEdit()
     self.confirm_edit = QLineEdit()
     self.help_label = QLabel()
    def get_hosts_notif_widget(self):
        """
        Create and return notification QWidget for hosts

        :return: hosts notification QWidget
        :rtype: QWidget
        """

        host_notif_widget = QWidget()
        host_notif_layout = QGridLayout()
        host_notif_widget.setLayout(host_notif_layout)

        notif_title = QLabel(_('Hosts notifications configurations'))
        notif_title.setObjectName('itemtitle')
        host_notif_layout.addWidget(notif_title, 0, 0, 1, 2)

        state_title = QLabel(_("Notification enabled:"))
        state_title.setObjectName("subtitle")
        host_notif_layout.addWidget(state_title, 1, 0, 1, 1)
        self.hostnotif_toggle_btn = ToggleQWidgetButton()
        self.hostnotif_toggle_btn.initialize()
        self.hostnotif_toggle_btn.update_btn_state(
            data_manager.database['user'].data['host_notifications_enabled']
        )
        self.hostnotif_toggle_btn.toggle_btn.clicked.connect(lambda: self.enable_notifications(
            'host_notifications_enabled', self.hostnotif_toggle_btn.is_checked()
        ))
        self.hostnotif_toggle_btn.setObjectName('host_notifications_enabled')
        host_notif_layout.addWidget(self.hostnotif_toggle_btn, 1, 1, 1, 1)
        host_notif_layout.setAlignment(self.hostnotif_toggle_btn, Qt.AlignRight)

        period_title = QLabel(_('Notification period:'))
        period_title.setObjectName('subtitle')
        host_notif_layout.addWidget(period_title, 2, 0, 1, 1)
        self.labels['host_notification_period'].setText(
            data_manager.get_period_name(
                data_manager.database['user'].data['host_notification_period']
            )
        )
        host_notif_layout.addWidget(self.labels['host_notification_period'], 2, 1, 1, 1)

        option_btn = QPushButton()
        option_btn.setIcon(QIcon(settings.get_image('options')))
        option_btn.setFixedSize(64, 32)
        option_btn.clicked.connect(lambda: show_options_dialog(
            'host',
            data_manager.database['user'].data['host_notification_options']
        ))

        host_notif_layout.addWidget(option_btn, 3, 0, 1, 2)
        host_notif_layout.setAlignment(option_btn, Qt.AlignCenter)

        return host_notif_widget
 def __init__(self, parent=None):
     super(ValidatorQDialog, self).__init__(parent)
     self.setWindowTitle('Edit Dialog')
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setObjectName('dialog')
     self.setFixedSize(250, 200)
     # Fields
     self.line_edit = QLineEdit()
     self.valid_text = QLabel()
     self.validator = QRegExpValidator()
     self.old_text = ''
Exemplo n.º 24
0
    def initialize(self):
        """
        Intialize Spy QWidget

        """

        layout = QGridLayout()
        self.setLayout(layout)

        spy_icon = QLabel()
        spy_pixmap = QPixmap(settings.get_image('spy'))
        spy_icon.setPixmap(spy_pixmap)
        spy_icon.setScaledContents(True)
        spy_icon.setFixedSize(20, 20)
        layout.addWidget(spy_icon, 0, 0, 1, 1)
        layout.setAlignment(spy_icon, Qt.AlignRight)

        spy_title = QLabel(_('Spy Hosts'))
        spy_title.setObjectName('title')
        spy_title.setMinimumHeight(40)
        layout.addWidget(spy_title, 0, 1, 1, 1)

        hint_lbl = QLabel('Click to refresh, double-click to stop spying')
        hint_lbl.setObjectName('subtitle')
        layout.addWidget(hint_lbl, 1, 0, 1, 1)
        layout.setAlignment(hint_lbl, Qt.AlignCenter)

        self.host_services_lbl.setObjectName('subtitle')
        layout.addWidget(self.host_services_lbl, 1, 1, 1, 1)
        layout.setAlignment(self.host_services_lbl, Qt.AlignCenter)

        self.spy_list_widget.setDragDropMode(QAbstractItemView.DragDrop)
        self.spy_list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.spy_list_widget.doubleClicked.connect(self.remove_event)
        self.spy_list_widget.setAcceptDrops(True)
        self.spy_list_widget.setWordWrap(True)
        self.spy_list_widget.insertItem(0, self.get_hint_item())
        self.spy_list_widget.item_dropped.connect(get_events_widget().remove_event)
        self.spy_list_widget.clicked.connect(
            lambda: self.manage_host_events(self.spy_list_widget.currentRow())
        )
        layout.addWidget(self.spy_list_widget, 2, 0, 1, 1)

        self.host_list_widget.setObjectName('spy')
        # self.host_list_widget.setMinimumWidth(500)
        layout.addWidget(self.host_list_widget, 2, 1, 1, 1)

        spy_interval = int(settings.get_config('Alignak-app', 'spy_interval')) * 1000
        self.spy_timer.setInterval(spy_interval)
        self.spy_timer.start()
        self.spy_timer.timeout.connect(self.send_spy_events)
 def __init__(self, parent=None):
     super(ProblemsQWidget, self).__init__(parent)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     # Fields
     self.line_search = QLineEdit()
     self.problems_table = ProblemsQTableView()
     self.problems_title = QLabel()
     self.actions_widget = ActionsQWidget()
     self.spy_widget = None
     self.filter_hosts_btn = ToggleQWidgetButton()
     self.filter_services_btn = ToggleQWidgetButton()
     self.spy_btn = QPushButton()
     self.host_btn = QPushButton()
     self.refresh_timer = QTimer()
Exemplo n.º 26
0
    def add_alignak_menu(self):
        """
        Create and add to menu "app" QAction

        """

        self.app_main.initialize()

        self.tray_actions['app'].setIcon(QIcon(settings.get_image('icon')))
        self.tray_actions['app'].setText(_('Alignak-App'))
        self.tray_actions['app'].setToolTip(_('Display Alignak-App'))
        self.tray_actions['app'].triggered.connect(self.app_main.show)

        self.menu.addAction(self.tray_actions['app'])
Exemplo n.º 27
0
    def get_hint_item():
        """
        Return an EventItem with a hint text

        :return: event item with hint text
        :rtype: EventItem
        """

        drop_hint_item = EventItem()
        drop_hint_item.setText(_('Drop host-related events here to spy on it...'))
        drop_hint_item.setIcon(QIcon(settings.get_image('spy')))
        drop_hint_item.setFlags(Qt.ItemIsDropEnabled)

        return drop_hint_item
Exemplo n.º 28
0
    def add_webui_menu(self):
        """
        Create and add to menu "webui" QAction

        """

        self.tray_actions['webui'].setIcon(QIcon(settings.get_image('web')))
        self.tray_actions['webui'].setText(_('Go to WebUI'))
        self.tray_actions['webui'].setToolTip(_('Go to Alignak WebUI'))
        self.tray_actions['webui'].triggered.connect(
            lambda: open_url('livestate')
        )

        self.menu.addAction(self.tray_actions['webui'])
Exemplo n.º 29
0
    def add_about_menu(self):
        """
        Create and add to menu "about" QAction

        """

        self.app_about.initialize()

        self.tray_actions['about'].setIcon(QIcon(settings.get_image('about')))
        self.tray_actions['about'].setText(_('About...'))
        self.tray_actions['about'].setToolTip(_('About Alignak-app'))
        self.tray_actions['about'].triggered.connect(self.app_about.show_about)

        self.menu.addAction(self.tray_actions['about'])
 def __init__(self, parent=None):
     super(AckQDialog, self).__init__(parent)
     self.setWindowTitle(_('Request an Acknowledge'))
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setMinimumSize(370, 480)
     self.setObjectName('dialog')
     # Fields
     self.sticky = True
     self.sticky_toggle_btn = ToggleQWidgetButton()
     self.notify = False
     self.notify_toggle_btn = ToggleQWidgetButton()
     self.ack_comment_edit = None
     self.offset = None
Exemplo n.º 31
0
 def __init__(self, parent=None):
     super(AckQDialog, self).__init__(parent)
     self.setWindowTitle(_('Request an Acknowledge'))
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setMinimumSize(370, 480)
     self.setObjectName('dialog')
     # Fields
     self.sticky = True
     self.sticky_toggle_btn = ToggleQWidgetButton()
     self.notify = False
     self.notify_toggle_btn = ToggleQWidgetButton()
     self.ack_comment_edit = None
     self.offset = None
 def __init__(self, parent=None):
     super(DownQDialog, self).__init__(parent)
     self.setWindowTitle(_('Request a Downtime'))
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setMinimumSize(360, 460)
     self.setObjectName('dialog')
     # Fields
     self.fixed = True
     self.fixed_toggle_btn = ToggleQWidgetButton()
     self.duration = QTimeEdit()
     self.start_time = QDateTimeEdit()
     self.end_time = QDateTimeEdit()
     self.comment_edit = QTextEdit()
     self.offset = None
Exemplo n.º 33
0
 def __init__(self, parent=None):
     super(DownQDialog, self).__init__(parent)
     self.setWindowTitle(_('Request a Downtime'))
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setMinimumSize(360, 460)
     self.setObjectName('dialog')
     # Fields
     self.fixed = True
     self.fixed_toggle_btn = ToggleQWidgetButton()
     self.duration = QTimeEdit()
     self.start_time = QDateTimeEdit()
     self.end_time = QDateTimeEdit()
     self.comment_edit = QTextEdit()
     self.offset = None
Exemplo n.º 34
0
    def get_notes_output_widget(self):
        """
        Return QWidget with output and notes data

        :return: widget with host output and notes
        :rtype: QWidget
        """

        widget = QWidget()
        layout = QGridLayout()
        widget.setLayout(layout)

        # Output
        output_title = QLabel(_("Output"))
        output_title.setObjectName('title')
        layout.addWidget(output_title, 0, 0, 1, 1)

        self.labels['ls_output'].setWordWrap(True)
        self.labels['ls_output'].setTextInteractionFlags(Qt.TextSelectableByMouse)
        output_scrollarea = QScrollArea()
        output_scrollarea.setWidget(self.labels['ls_output'])
        output_scrollarea.setWidgetResizable(True)
        output_scrollarea.setObjectName('output')
        layout.addWidget(output_scrollarea, 1, 0, 1, 2)

        # Notes
        notes_title = QLabel(_("Notes:"))
        notes_title.setObjectName('title')
        layout.addWidget(notes_title, 0, 2, 1, 1)

        notes_btn = QPushButton()
        notes_btn.setIcon(QIcon(settings.get_image('edit')))
        notes_btn.setToolTip(_("Edit host notes."))
        notes_btn.setFixedSize(32, 32)
        notes_btn.clicked.connect(self.patch_data)
        layout.addWidget(notes_btn, 0, 3, 1, 1)

        self.labels['notes'].setWordWrap(True)
        self.labels['notes'].setTextInteractionFlags(Qt.TextSelectableByMouse)
        notes_scrollarea = QScrollArea()
        notes_scrollarea.setWidget(self.labels['notes'])
        notes_scrollarea.setWidgetResizable(True)
        notes_scrollarea.setObjectName('notes')
        layout.addWidget(notes_scrollarea, 1, 2, 1, 2)

        return widget
 def __init__(self, parent=None):
     super(ProblemsQTableView, self).__init__(parent)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setObjectName('problems')
     self.verticalHeader().hide()
     self.verticalHeader().setDefaultSectionSize(40)
     self.setIconSize(QSize(24, 24))
     self.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)
     self.setEditTriggers(QAbstractItemView.NoEditTriggers)
     self.horizontalHeader().setStretchLastSection(True)
     self.horizontalHeader().setMinimumHeight(40)
     self.horizontalHeader().setDefaultAlignment(Qt.AlignCenter)
     self.setSelectionMode(QAbstractItemView.SingleSelection)
     # Fields
     self.headers_list = [
         _('Items in problem'), _('Output')
     ]
 def __init__(self, parent=None):
     super(ServerQDialog, self).__init__(parent)
     self.setWindowTitle(_('Alignak Settings'))
     self.setWindowFlags(Qt.FramelessWindowHint)
     self.setStyleSheet(settings.css_style)
     self.setWindowIcon(QIcon(settings.get_image('icon')))
     self.setObjectName('dialog')
     self.setFixedSize(340, 420)
     # Fields
     self.server_proc = QLineEdit()
     self.server_url = QLineEdit()
     self.server_port = QLineEdit()
     self.webservice_url = QLineEdit()
     self.proxy_address = QLineEdit()
     self.proxy_user = QLineEdit()
     self.proxy_password = QLineEdit()
     self.offset = None