import webbrowser from functools import partial import application from windows.common import UiWindow, clear_layout from windows.connection import ConnectionWindow from windows.connection_widget import ConnectionWidget from windows.info import InfoWindow from windows.flow_browser import FlowBrowser class StartWindow(UiWindow): ui = 'resources/ui/start.ui' def show(self): super().show() self.update_view_with_context() def new_connection_btn_click(self): self.connection_edit_window = ConnectionWindow( 'Add New Connection', on_success=self.add_new_connection) self.connection_edit_window.show() def add_new_connection(self, new_connection): application.context.connections.update( {new_connection.id: new_connection}) self.update_view_with_context() def save_connection(self, updated_connection): application.context.connections.update( {updated_connection.id: updated_connection}) self.update_view_with_context() def edit_connection(self, connection_widget): connection = application.context.connections.get( connection_widget.connection.id) self.connection_edit_window = ConnectionWindow( 'Edit Connection', connection=connection, on_success=self.save_connection) self.connection_edit_window.show() def open_new_flow_browser(self, connection_widget): connection = application.context.connections.get( connection_widget.connection.id) flow_browser = FlowBrowser(connection=connection) application.windows.append(flow_browser) flow_browser.show() def info_btn_click(self): self.info_dialog = InfoWindow() self.info_dialog.show() def github_btn_click(self): webbrowser.open('https://github.com/daniil-omelchenko/gazer') def delete_connection(self, connection_widget): del application.context.connections[connection_widget.connection.id] connection_widget.close() def update_view_with_context(self): layout = application.main_window.connections_bar_layout clear_layout(layout) for connection in application.context.connections.values(): connection_widget = ConnectionWidget( connection, on_edit=self.edit_connection, on_connect=self.open_new_flow_browser, on_remove=self.delete_connection) layout.addWidget(connection_widget) layout.addStretch(1)