Change the layout of the editor and menu points in editor menu
Remove the buttons for exporting the result of a query to a csv file and explaining the current query. Add those points together with the submit/stop query functions to the editor menu in the main window.
This commit is contained in:
		@@ -101,13 +101,9 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        # shows an error to the user.
 | 
			
		||||
        self.submit_query_shortcut.activated.connect(self.check_for_valid_connection_and_execute_query_with_shortcut)
 | 
			
		||||
 | 
			
		||||
        # Create a button for explaining the current query (plan).
 | 
			
		||||
        self.explain_query_button = QPushButton("Explain Query Plan")
 | 
			
		||||
        # Connect the function for executing the explaining process with the button.
 | 
			
		||||
        self.explain_query_button.clicked.connect(self.execute_explain_analyze_query)
 | 
			
		||||
 | 
			
		||||
        # Check for enabling and disabling of the button for submitting or explaining a query.
 | 
			
		||||
        self.check_enabling_of_submit_and_explain_button()
 | 
			
		||||
        self.check_enabling_of_submit_button()
 | 
			
		||||
 | 
			
		||||
        # Create a button for stopping a query.
 | 
			
		||||
        self.stop_query_button = QPushButton("Stop Query")
 | 
			
		||||
@@ -155,12 +151,8 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        self.replace_usages_shortcut = QShortcut(QKeySequence("Ctrl+R"), self)
 | 
			
		||||
        self.replace_usages_shortcut.activated.connect(self.open_replace_dialog)
 | 
			
		||||
 | 
			
		||||
        # Create a button for exporting the result to a csv.
 | 
			
		||||
        self.export_csv_button = QPushButton("Export result to .csv")
 | 
			
		||||
        # Connect the button with the function for exporting and saving the csv data.
 | 
			
		||||
        self.export_csv_button.clicked.connect(self.export_and_save_csv_data)
 | 
			
		||||
        # Set the button as invisible as default, because at the beginning, an export is not necessary.
 | 
			
		||||
        self.export_csv_button.setVisible(False)
 | 
			
		||||
        # Set the csv export to not possible at the moment.
 | 
			
		||||
        self.csv_export_possible = False
 | 
			
		||||
 | 
			
		||||
        self.setGeometry(600, 600, 500, 300)
 | 
			
		||||
 | 
			
		||||
@@ -188,17 +180,10 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        splitter.addWidget(self.table_view)
 | 
			
		||||
        # Add the splitter to the grid layout.
 | 
			
		||||
        grid_layout.addWidget(splitter, 3, 0, 1, 4)
 | 
			
		||||
 | 
			
		||||
        # Set the export button on the top of the buttons. The export button is only visible, if results are available
 | 
			
		||||
        # in the table view.
 | 
			
		||||
        grid_layout.addWidget(self.export_csv_button, 4, 0, 1, 4)
 | 
			
		||||
 | 
			
		||||
        # Set the submit button for the SQL queries as element at the bottom.
 | 
			
		||||
        grid_layout.addWidget(self.submit_query_button, 6, 0, 1, 4)
 | 
			
		||||
        # Set the submit button for the SQL queries under the table.
 | 
			
		||||
        grid_layout.addWidget(self.submit_query_button, 4, 0, 1, 4)
 | 
			
		||||
        # Place the stop button below the submit button.
 | 
			
		||||
        grid_layout.addWidget(self.stop_query_button, 7, 0, 1, 4)
 | 
			
		||||
        # Place the explain button below the stop button.
 | 
			
		||||
        grid_layout.addWidget(self.explain_query_button, 8, 0, 1, 4)
 | 
			
		||||
        grid_layout.addWidget(self.stop_query_button, 5, 0, 1, 4)
 | 
			
		||||
 | 
			
		||||
        grid_layout.setSpacing(10)
 | 
			
		||||
 | 
			
		||||
@@ -262,7 +247,7 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
 | 
			
		||||
        # Check for enabling or disabling the button and the shortcut for submitting a query based on the new result of
 | 
			
		||||
        # the established connection.
 | 
			
		||||
        self.check_enabling_of_submit_and_explain_button()
 | 
			
		||||
        self.check_enabling_of_submit_button()
 | 
			
		||||
 | 
			
		||||
        # Update the window title to the current status of the database connection.
 | 
			
		||||
        self.update_window_title_and_description()
 | 
			
		||||
@@ -283,8 +268,8 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        # Activate the button and the shortcut for stopping the current query.
 | 
			
		||||
        self.set_stop_query_element_activate(True)
 | 
			
		||||
 | 
			
		||||
        # Set the button invisible during a query.
 | 
			
		||||
        self.export_csv_button.setVisible(False)
 | 
			
		||||
        # Set the csv export to not possible during a query.
 | 
			
		||||
        self.csv_export_possible = False
 | 
			
		||||
 | 
			
		||||
        # If the query is None, the default parameter is used, so it is necessary to get the current query in the input
 | 
			
		||||
        # editor.
 | 
			
		||||
@@ -377,8 +362,8 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        # Disable the button and the short cut for stopping a query, because a query is currently not executed.
 | 
			
		||||
        self.set_stop_query_element_activate(False)
 | 
			
		||||
 | 
			
		||||
        # Set the export button visible after a result.
 | 
			
		||||
        self.export_csv_button.setVisible(True)
 | 
			
		||||
        # Enable the csv export.
 | 
			
		||||
        self.csv_export_possible = True
 | 
			
		||||
 | 
			
		||||
        # Check, if the command should be saved.
 | 
			
		||||
        if save_command:
 | 
			
		||||
@@ -407,7 +392,7 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
        # Show the error in the table model and do not save the command, which caused the error.
 | 
			
		||||
        self.refresh_table_model(error_result_list, save_command=False)
 | 
			
		||||
 | 
			
		||||
    def check_enabling_of_submit_and_explain_button(self):
 | 
			
		||||
    def check_enabling_of_submit_button(self):
 | 
			
		||||
        """
 | 
			
		||||
        Check for enabling or disabling the button and the shortcut for submitting a query. There is a check for a valid
 | 
			
		||||
        connection with a specified function.
 | 
			
		||||
@@ -418,7 +403,6 @@ class EditorWidget(QWidget, SearchReplaceParent, metaclass=MetaEditor):
 | 
			
		||||
 | 
			
		||||
        # If the connection is valid, the button is enabled. If the connection is invalid, the button is disabled.
 | 
			
		||||
        self.submit_query_button.setEnabled(is_connection_valid)
 | 
			
		||||
        self.explain_query_button.setEnabled(is_connection_valid)
 | 
			
		||||
 | 
			
		||||
    def check_query_status_message(self, status_message):
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -164,6 +164,21 @@ class MainWindow(QMainWindow):
 | 
			
		||||
        # Create a new menu bar point: An editor menu.
 | 
			
		||||
        editor_menu = self.menu_bar.addMenu("Editor")
 | 
			
		||||
 | 
			
		||||
        # Add an action for submitting the query in the current editor.
 | 
			
		||||
        self.add_action_to_menu_bar("Submit Query", self.submit_current_query_to_editor, alternate_menu=editor_menu)
 | 
			
		||||
        # Add an action for stopping the query in the current editor.
 | 
			
		||||
        self.add_action_to_menu_bar("Stop Query", self.stop_current_query_in_editor, alternate_menu=editor_menu)
 | 
			
		||||
        editor_menu.addSeparator()
 | 
			
		||||
 | 
			
		||||
        # Add an action for exporting the current result of the query to a csv file.
 | 
			
		||||
        self.add_action_to_menu_bar("Export Result To CSV", self.export_current_result_in_editor_to_csv,
 | 
			
		||||
                                    alternate_menu=editor_menu)
 | 
			
		||||
        # Add an action for explaining the current query plan.
 | 
			
		||||
        self.add_action_to_menu_bar("Explain Query Plan", self.explain_current_query_in_editor,
 | 
			
		||||
                                    alternate_menu=editor_menu)
 | 
			
		||||
 | 
			
		||||
        editor_menu.addSeparator()
 | 
			
		||||
 | 
			
		||||
        # Add the search dialog in the editor to the editor menu.
 | 
			
		||||
        self.add_action_to_menu_bar("Search", self.search_usage_in_editor, alternate_menu=editor_menu)
 | 
			
		||||
 | 
			
		||||
@@ -554,6 +569,62 @@ class MainWindow(QMainWindow):
 | 
			
		||||
        # empty editor with this command.
 | 
			
		||||
        self.command_history_dialog.get_double_click_command.connect(self.load_empty_editor_with_command)
 | 
			
		||||
 | 
			
		||||
    def submit_current_query_to_editor(self):
 | 
			
		||||
        """
 | 
			
		||||
        Submit the current query in the editor.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        # Get the editor widget.
 | 
			
		||||
        editor_widget = self.mdi_area.determine_current_editor_widget()
 | 
			
		||||
 | 
			
		||||
        # Check for an existing widget.
 | 
			
		||||
        if editor_widget is not None:
 | 
			
		||||
            # Check the button for submitting the query: If the button is enabled, the query will be executed.
 | 
			
		||||
            if editor_widget.submit_query_button.isEnabled():
 | 
			
		||||
                editor_widget.execute_current_query(None)
 | 
			
		||||
 | 
			
		||||
    def stop_current_query_in_editor(self):
 | 
			
		||||
        """
 | 
			
		||||
        Stop the query in the current editor widget.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        # Get the widget.
 | 
			
		||||
        editor_widget = self.mdi_area.determine_current_editor_widget()
 | 
			
		||||
 | 
			
		||||
        # Check for the existence of the widget.
 | 
			
		||||
        if editor_widget is not None:
 | 
			
		||||
            # If the stop button is enabled, the function can be executed.
 | 
			
		||||
            if editor_widget.stop_query_button.isEnabled():
 | 
			
		||||
                editor_widget.stop_current_query()
 | 
			
		||||
 | 
			
		||||
    def export_current_result_in_editor_to_csv(self):
 | 
			
		||||
        """
 | 
			
		||||
        Export the current result in the editor to a csv file.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        # Get the widget.
 | 
			
		||||
        editor_widget = self.mdi_area.determine_current_editor_widget()
 | 
			
		||||
 | 
			
		||||
        # Check for the existence of the widget.
 | 
			
		||||
        if editor_widget is not None:
 | 
			
		||||
            # Check if CSV export is currently possible.
 | 
			
		||||
            if editor_widget.csv_export_possible:
 | 
			
		||||
                editor_widget.export_and_save_csv_data()
 | 
			
		||||
 | 
			
		||||
    def explain_current_query_in_editor(self):
 | 
			
		||||
        """
 | 
			
		||||
        Explain the current query in the editor.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        # Get the editor widget.
 | 
			
		||||
        editor_widget = self.mdi_area.determine_current_editor_widget()
 | 
			
		||||
 | 
			
		||||
        # Check for the existence of the widget.
 | 
			
		||||
        if editor_widget is not None:
 | 
			
		||||
            # Check for the enabling of the submit button, because in this case, explaining the query is possible too.
 | 
			
		||||
            if editor_widget.submit_query_button.isEnabled():
 | 
			
		||||
                editor_widget.execute_explain_analyze_query()
 | 
			
		||||
 | 
			
		||||
    def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        Reimplement the close event of the main window and as a consequence, the close event of the whole application.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user