class ToolGui(QtGui.QWidget): def __init__(self, parent, ClientObj): QtGui.QWidget.__init__(self, parent) self.user_config = ClientObj.user_config self._parent = parent self.grid = QtGui.QGridLayout(self) self.grid.setContentsMargins(2, 2, 2, 2) self.grid.setSpacing(2) self.grid.setColumnStretch(0, 3) self.grid.setColumnStretch(1, 5) # self.grid.setAlignment(QtCore.Qt.AlignLeft) # add height image in grid self.h_image_lbl = LabelWordWrap(_("Image height"), self) self.h_image_lbl.setMaximumWidth(self.h_image_lbl.sizeHint().width()) self.h_image_lineedit = QtGui.QLineEdit(self) self.h_image_lineedit.setToolTip(_("Set a fixed height image for " "actions") + " " + _("0: hide images")) self.h_image_lineedit.setText(str(ClientObj.height_image)) self.grid.addWidget(self.h_image_lbl, 0, 0) self.grid.addWidget(self.h_image_lineedit, 0, 1) # add expers view result in grid self.expert_lbl = LabelWordWrap(_("Expert view"), self) self.expert_checkbox = QtGui.QCheckBox(self) self.expert_checkbox.setChecked(ClientObj.expert) self.expert_lbl.setToolTip(_("View results in expert mode")) self.expert_checkbox.setToolTip(_("View results in expert mode")) self.grid.addWidget(self.expert_lbl, 1, 0) self.grid.addWidget(self.expert_checkbox, 1, 1, 1, 2) # add count item in result table in grid self.count_row_lbl = LabelWordWrap(_("Rows in Table"), self) self.count_row_lbl.setMaximumWidth(self.count_row_lbl.sizeHint().width()) self.count_row_lineedit = QtGui.QLineEdit(self) self.count_row_lineedit.setText(str(ClientObj.count_row_res_table)) self.grid.addWidget(self.count_row_lbl, 2, 0) self.grid.addWidget(self.count_row_lineedit, 2, 1) # add spacer self.grid.addItem(QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding), 3, 0, 1, 2) # connect all with change value slot self.h_image_lineedit.textChanged.connect(self.changed_val) self.expert_checkbox.clicked.connect(self.changed_val) self.count_row_lineedit.textChanged.connect(self.changed_val) def changed_val(self): self._parent.changed_flag = True def set_opacity_lbl(self, val): self.opacity_lbl.setText(self.opacity_lbl_text + str(val)) def check_cfg(self, flag, config, part, param, value): # if param not exists in config if not flag: part_flag = False temp_cfg = [] for line in config: temp_cfg.append(line) # add new line in config if line.startswith(part): temp_cfg.append("%s = %s\n" % (param, value)) part_flag = True config = temp_cfg # if part not exists if not part_flag: config.append("\n") config.append("%s\n" % part) config.append("%s = %s\n" % (param, value)) return config def save_changes(self, ClientObj): def wrapper(): if not os.path.isfile(self.user_config): f = open(self.user_config, "w") f.close() fc = open(self.user_config, "r") config = fc.readlines() fc.close() new_config = [] # bg_color_flag = False count_row_flag = False expert_flag = False count_row_flag = False h_image_flag = False for line in config: if line.startswith("height_image "): h_image_flag = True try: height_image = int(self.h_image_lineedit.text()) except ValueError: height_image = ClientObj.height_image if height_image < 0 or height_image > 512: height_image = ClientObj.height_image new_config.append("height_image = %d\n" % height_image) elif line.startswith("expert "): expert_flag = True if self.expert_checkbox.isChecked(): expert = 1 else: expert = 0 new_config.append("expert = %d\n" % expert) elif line.startswith("count_row "): count_row_flag = True try: count_row = int(self.count_row_lineedit.text()) if count_row < 2: count_row = 2 except ValueError: count_row = ClientObj.count_row_res_table new_config.append("count_row = %d\n" % count_row) else: new_config.append(line) if self.expert_checkbox.isChecked(): expert = 1 else: expert = 0 new_config = self.check_cfg(expert_flag, new_config, "[gui]", "expert", expert) try: count_row = int(self.count_row_lineedit.text()) if count_row < 2: count_row = 2 except ValueError: count_row = ClientObj.count_row_res_table new_config = self.check_cfg(count_row_flag, new_config, "[gui]", "count_row", count_row) try: height_image = int(self.h_image_lineedit.text()) except ValueError: height_image = ClientObj.height_image if height_image < 0 or height_image > 512: height_image = ClientObj.height_image new_config = self.check_cfg(h_image_flag, new_config, "[gui]", "height_image", height_image) fnc = open(self.user_config, "w") for line in new_config: fnc.write(line) fnc.close() # read config for changed parameters ClientObj.create_user_config() ClientObj.read_user_config(ClientObj.user_config) # reset unsaved changes flag self._parent.changed_flag = False return wrapper