def update_tree(self, node: Node = None): """ Method that needs to be called when updating self.tree. Will automatically run the verification """ self.toolbar_widget.verify_tree() # if node is given check if a subtree changed changed_nodes = [] if node and Settings.auto_update_roles(): view_node = self.tree_view_widget.graphics_scene.nodes[node.id] node = self.tree.find_role_subtree_node_above_node(node) if node: changed_nodes = self.collection.update_subtrees_in_collection( self.tree, node) elif 'roles' == self.category: changed_nodes = self.collection.update_subtrees_in_collection( self.tree) self.tree_view_widget.graphics_scene.update_children(changed_nodes) view_node.initiate_view(True) # rebuild menu bar self.update_window_title_and_menu_bar()
def __init__(self, gui: MainWindow): super(SettingsDialog, self).__init__() self.gui = gui self.main_layout = QVBoxLayout() self.setLayout(self.main_layout) self.setMinimumWidth(500) self.setWindowTitle("Settings") # grid layout for showing the settings self.settings_widget = QWidget() self.settings_layout = QGridLayout() self.settings_widget.setLayout(self.settings_layout) self.settings_layout.setContentsMargins(0, 0, 0, 0) self.main_layout.addWidget(self.settings_widget) # layout and widget for the ok, apply and cancel button self.buttons_widget = QWidget() self.buttons_layout = QHBoxLayout() self.buttons_widget.setLayout(self.buttons_layout) self.buttons_layout.setContentsMargins(0, 0, 0, 0) self.main_layout.addWidget(self.buttons_widget) self.buttons_layout.addStretch(1) # ok, apply and cancel button self.ok_button = QPushButton("Ok") self.buttons_layout.addWidget(self.ok_button) self.ok_button.clicked.connect(self.ok) self.apply_button = QPushButton("Apply") self.buttons_layout.addWidget(self.apply_button) self.apply_button.clicked.connect(self.apply) self.cancel_button = QPushButton("Cancel") self.cancel_button.clicked.connect(self.reject) self.buttons_layout.addWidget(self.cancel_button) self.enable_apply(False) # settings for the jsons folder self.jsons_label = QLabel("JSONS:") self.jsons_path = Settings.default_json_folder() self.jsons_path_new = self.jsons_path self.jsons_edit = QLineEdit(str(self.jsons_path)) self.jsons_edit.setEnabled(False) self.jsons_select = QPushButton("Select") self.jsons_select.clicked.connect(self.select_jsons_folder) self.settings_layout.addWidget(self.jsons_label, 0, 0) self.settings_layout.addWidget(self.jsons_edit, 0, 1) self.settings_layout.addWidget(self.jsons_select, 0, 2) # settings for the node types folder self.node_types_label = QLabel("Node Types:") self.node_types_path = Settings.default_node_types_folder() self.node_types_path_new = self.node_types_path self.node_types_edit = QLineEdit(str(self.node_types_path)) self.node_types_edit.setEnabled(False) self.node_types_select = QPushButton("Select") self.node_types_select.clicked.connect(self.select_node_types_folder) self.settings_layout.addWidget(self.node_types_label, 1, 0) self.settings_layout.addWidget(self.node_types_edit, 1, 1) self.settings_layout.addWidget(self.node_types_select, 1, 2) # settings for selecting logfile self.logfile_label = QLabel("Logfile:") self.logfile_path = Settings.default_logfile_name() self.logfile_path_new = self.logfile_path self.logfile_edit = QLineEdit(str(self.logfile_path)) self.logfile_edit.setEnabled(False) self.logfile_select = QPushButton("Select") self.logfile_select.clicked.connect(self.select_logfile) self.settings_layout.addWidget(self.logfile_label, 2, 0) self.settings_layout.addWidget(self.logfile_edit, 2, 1) self.settings_layout.addWidget(self.logfile_select, 2, 2) # settings for selecting the id size self.id_size_label = QLabel("Node id size:") self.id_size_def = Settings.default_id_size() self.id_size_def_new = self.id_size_def self.id_size_select = QSpinBox() self.id_size_select.setMinimum(1) self.id_size_select.setValue(self.id_size_def) self.id_size_select.valueChanged.connect(self.select_id_size_changed) self.settings_layout.addWidget(self.id_size_label, 3, 0) self.settings_layout.addWidget(self.id_size_select, 3, 1, 1, 2) # checkbox for enabling auto updating of roles self.auto_update_roles = Settings.auto_update_roles() self.auto_update_roles_new = self.auto_update_roles self.auto_update_roles_check = QCheckBox() self.auto_update_roles_check.setChecked(self.auto_update_roles) self.auto_update_roles_check.setText( 'Automatically update roles subtrees (Experimental)') self.auto_update_roles_check.stateChanged.connect( self.auto_update_roles_changed) self.settings_layout.addWidget(self.auto_update_roles_check, 4, 0, 1, 0)
def test_alter_auto_update_roles(self): val = Settings.auto_update_roles() Settings.alter_auto_update_roles(not val) assert val is not Settings.auto_update_roles() # revert to original value Settings.alter_auto_update_roles(val)
def test_auto_update_roles(self): assert True is Settings.auto_update_roles()