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)
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
def __init__(self, master, name, width=config.minimum_width(), height=config.minimum_height()): super().__init__(self, master, name, width, height)