diff --git a/alacritty_config_gui.py b/alacritty_config_gui.py index ea46955..c1346be 100644 --- a/alacritty_config_gui.py +++ b/alacritty_config_gui.py @@ -19,7 +19,7 @@ class ColorSelect(QtWidgets.QPushButton): self.clicked.connect(self.handle_clicked) def handle_clicked(self): - color = QtWidgets.QColorDialog.getColor() + color = QtWidgets.QColorDialog.getColor(QtGui.QColor(self._value)) if color.isValid(): self.set_value(color.name()) @@ -202,6 +202,13 @@ class ConfigWidget(QtWidgets.QWidget): return widget.isChecked() if typ is QtWidgets.QLineEdit: return widget.text() + if typ is QtWidgets.QListWidget: + res = [] + for i in range(widget.count()): + item = widget.item(i).text() + if item: + res.append(item) + return res return widget.value() def widgets_to_state(self, widgets): @@ -218,10 +225,33 @@ class ConfigWidget(QtWidgets.QWidget): class Debug(ConfigWidget): + log_levels = ['None', 'Error', 'Warn', 'Info', 'Debug', 'Trace'] def __init__(self, config): super().__init__() self.widgets['render_timer'] = QtWidgets.QCheckBox() - self.widgets['render_timer'].setChecked(config.get('render_timer')) + self.widgets['render_timer'].setChecked( + config.get('render_timer', False) + ) + self.widgets['persistent_logging'] = QtWidgets.QCheckBox() + self.widgets['persistent_logging'].setChecked( + config.get('persistent_logging', False) + ) + + self.widgets['log_level'] = QtWidgets.QComboBox() + for option in self.log_levels: + self.widgets['log_level'].addItem(option) + dec = config.get('log_level') + if dec in self.log_levels: + self.widgets['log_level'].setCurrentIndex( + self.log_levels.index(dec) + ) + + self.widgets['print_events'] = QtWidgets.QCheckBox() + self.widgets['print_events'].setChecked( + config.get('print_events', False) + ) + self.widgets['ref_test'] = QtWidgets.QCheckBox() + self.widgets['ref_test'].setChecked(config.get('ref_test', False)) self.render_state() @@ -238,6 +268,10 @@ class Selection(ConfigWidget): self.widgets['semantic_escape_chars'] = QtWidgets.QLineEdit( config.get('semantic_escape_chars') ) + self.widgets['save_to_clipboard'] = QtWidgets.QCheckBox() + self.widgets['save_to_clipboard'].setChecked( + config.get('save_to_clipboard', False) + ) self.render_state() @@ -245,6 +279,13 @@ class Shell(ConfigWidget): def __init__(self, config): super().__init__() self.widgets['program'] = QtWidgets.QLineEdit(config.get('program')) + self.widgets['args'] = QtWidgets.QListWidget() + for elem in config.get('args', []): + self.widgets['args'].addItem(elem) + for _ in range(3): + widget = QtWidgets.QListWidgetItem("") + widget.setFlags(widget.flags() | QtCore.Qt.ItemIsEditable) + self.widgets['args'].addItem(widget) self.render_state() @@ -411,14 +452,16 @@ class Window(ConfigWidget): startup_mode.setCurrentIndex(self.startup_options.index(dec)) columns = QtWidgets.QSpinBox() - columns.setValue(config.get('dimensions', {}).get('columns')) + columns.setMaximum(300) + columns.setValue(config.get('dimensions', {}).get('columns', 80)) lines = QtWidgets.QSpinBox() - lines.setValue(config.get('dimensions', {}).get('lines')) + columns.setMaximum(200) + lines.setValue(config.get('dimensions', {}).get('lines', 24)) padding_x = QtWidgets.QSpinBox() - padding_x.setValue(config.get('padding', {}).get('x')) + padding_x.setValue(config.get('padding', {}).get('x', 0)) padding_y = QtWidgets.QSpinBox() - padding_y.setValue(config.get('padding', {}).get('y')) + padding_y.setValue(config.get('padding', {}).get('y', 0)) dynamic_padding = QtWidgets.QCheckBox() dynamic_padding.setChecked(config.get('dynamic_padding', False)) @@ -451,9 +494,13 @@ class Window(ConfigWidget): class Scrolling(ConfigWidget): def __init__(self, config): super().__init__() - history = QtWidgets.QSpinBox(config.get('history')) - multiplier = QtWidgets.QSpinBox(config.get('multiplier')) - faux_multiplier = QtWidgets.QSpinBox(config.get('faux_multiplier')) + history = QtWidgets.QSpinBox() + history.setMaximum(2**30) + history.setValue(config.get('history', 10000)) + multiplier = QtWidgets.QSpinBox() + multiplier.setValue(config.get('multiplier', 3)) + faux_multiplier = QtWidgets.QSpinBox() + faux_multiplier.setValue(config.get('faux_multiplier', 3)) autoscroll = QtWidgets.QCheckBox() autoscroll.setChecked(config.get('autoscroll', False)) @@ -473,22 +520,22 @@ class Config(QtWidgets.QWidget): super().__init__() self.layout = QtWidgets.QVBoxLayout() self.config = config - self.add_tabs(config) + self.add_tabs() self.add_buttons() self.setWindowTitle(NAME) self.setLayout(self.layout) - def add_tabs(self, config): + def add_tabs(self): self.tabs = QtWidgets.QTabWidget() - self.tabs.addTab(Window(config.get('window', {})), "Window") - self.tabs.addTab(Font(config.get('font', {})), "Font") - self.tabs.addTab(Debug(config.get('debug', {})), "Debug") - self.tabs.addTab(Env(config.get('env', {})), "Env") - self.tabs.addTab(Selection(config.get('selection', {})), "Selection") - self.tabs.addTab(Shell(config.get('shell', {})), "Shell") - self.tabs.addTab(Colors(config.get('colors', {})), "Colors") - self.tabs.addTab(Scrolling(config.get('scrolling', {})), "Scrolling") + self.tabs.addTab(Window(self.config.get('window', {})), "Window") + self.tabs.addTab(Font(self.config.get('font', {})), "Font") + self.tabs.addTab(Debug(self.config.get('debug', {})), "Debug") + self.tabs.addTab(Env(self.config.get('env', {})), "Env") + self.tabs.addTab(Selection(self.config.get('selection', {})), "Selection") + self.tabs.addTab(Shell(self.config.get('shell', {})), "Shell") + self.tabs.addTab(Colors(self.config.get('colors', {})), "Colors") + self.tabs.addTab(Scrolling(self.config.get('scrolling', {})), "Scrolling") self.layout.addWidget(self.tabs) @@ -516,10 +563,6 @@ class Config(QtWidgets.QWidget): f.write(yaml.dump(state)) sys.exit() - def addDialog(self): - dialog = QtWidgets.QColorDialog() - dialog.show() - if __name__ == '__main__': app = QtWidgets.QApplication([NAME])