def __init__(self,
                 master,
                 name,
                 identifier,
                 width=config.minimum_width(),
                 height=config.minimum_height()):
        # Will be used later to identify which SQLInstance to look at
        self.identifier = identifier

        super().__init__(self, master, name, width, height)
Example #2
0
    def search_table(self, headers, object_data, hosts=False):
        '''
        params:-
            headers : [str, ...] : Headers of the columns wanted
            object_data : [(str, {str:str, ...}), ...] : First str is the type of object
                this is used to make the button link. The key in the dictonary needs to be
                a header in headers so that value can be put in that column
        returns:-
            None : Table is changed to objects passed
        '''
        table = QGridLayout()
        table.setHorizontalSpacing(config.searchtable_spacing())
        table.setVerticalSpacing(0)

        order_list = config.search_screen_table_columns_to_show_and_order(
        ) if not hosts else config.search_screen_table_columns_to_show_and_order_for_hosts(
        )
        headers_ordered = [
            header for header in order_list if header in headers
        ]

        table_headers = QGridLayout()
        table_headers.setHorizontalSpacing(config.searchtable_spacing())
        table_headers.setVerticalSpacing(0)
        # Table <- Headers
        for i, header in enumerate(headers_ordered):
            headerbutton = QPushButton(header)
            headerbutton.setFixedHeight(40)
            headerbutton.clicked.connect(self.button_order_by(header))
            table.addWidget(headerbutton, 0, i)

        # Table <- Data labels and Linkings
        for i, data in enumerate(object_data):

            for key in data.keys():

                # Make sure key header is in the table headers
                if key in headers_ordered:

                    # Special columns
                    if key in [
                            'Host/Listener Name', 'host Name',
                            'Windows Cluster Name', 'Instance Name',
                            'Server Type'
                    ]:
                        field = QPushButton(str(data[key]))
                        field.setStyleSheet(
                            "font-size: {}; font-family: {}; background-color: {}"
                            .format(config.searchtable_font_size(),
                                    config.searchtable_font_family(),
                                    config.searchtable_background()))

                        if key in ['Host/Listener Name', 'host Name']:
                            field.clicked.connect(
                                self.button_open_host(str(
                                    data['source']), str(
                                        data['hostID']))) if str(
                                            data['hostID']
                                        ) != '0' else field.setEnabled(False)

                        elif key == 'Windows Cluster Name':
                            field.clicked.connect(
                                self.button_open_cluster(
                                    str(data['source']), str(
                                        data['clusterID']))) if str(
                                            data['clusterID']
                                        ) != '0' else field.setEnabled(False)

                        elif key == 'Instance Name':
                            field.clicked.connect(
                                self.button_open_instance(
                                    str(data['source']), str(
                                        data['serverID']))) if str(
                                            data['serverID']
                                        ) != '0' else field.setEnabled(False)

                        elif key == 'Server Type':
                            if str(data['Server Type']) == 'AlwaysON' and str(
                                    data['serverID']) != '0':
                                field.clicked.connect(
                                    self.button_open_ag(
                                        str(data['source']),
                                        str(data['serverID'])))
                            else:
                                field.setEnabled(False)

                    # Data columns
                    else:
                        field = QLabel(str(data[key]))
                        field.setStyleSheet(
                            "font-size: {}; qproperty-alignment: AlignJustify; font-family: {}; background-color: {}"
                            .format(config.searchtable_font_size(),
                                    config.searchtable_font_family(),
                                    config.searchtable_background()))

                    field.setSizePolicy(
                        QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed))
                    table.addWidget(field, i + 1, headers_ordered.index(key))

        # Add in a filler Qlabel if there is to smaller table
        if (len(object_data) + 10) * 20 < config.minimum_height():
            filler = QLabel()
            filler.setFixedHeight(10)
            table.addWidget(filler, 1000, 0, len(headers_ordered), 1)

        return table
Example #3
0
 def __init__(self,
              master,
              name,
              width=config.minimum_width(),
              height=config.minimum_height()):
     super().__init__(self, master, name, width, height)