gui: more options

This commit is contained in:
2019-06-25 18:52:15 +02:00
parent 3403a48bab
commit ef7e60f05c

View File

@@ -19,7 +19,7 @@ class ColorSelect(QtWidgets.QPushButton):
self.clicked.connect(self.handle_clicked) self.clicked.connect(self.handle_clicked)
def handle_clicked(self): def handle_clicked(self):
color = QtWidgets.QColorDialog.getColor() color = QtWidgets.QColorDialog.getColor(QtGui.QColor(self._value))
if color.isValid(): if color.isValid():
self.set_value(color.name()) self.set_value(color.name())
@@ -202,6 +202,13 @@ class ConfigWidget(QtWidgets.QWidget):
return widget.isChecked() return widget.isChecked()
if typ is QtWidgets.QLineEdit: if typ is QtWidgets.QLineEdit:
return widget.text() 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() return widget.value()
def widgets_to_state(self, widgets): def widgets_to_state(self, widgets):
@@ -218,10 +225,33 @@ class ConfigWidget(QtWidgets.QWidget):
class Debug(ConfigWidget): class Debug(ConfigWidget):
log_levels = ['None', 'Error', 'Warn', 'Info', 'Debug', 'Trace']
def __init__(self, config): def __init__(self, config):
super().__init__() super().__init__()
self.widgets['render_timer'] = QtWidgets.QCheckBox() 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() self.render_state()
@@ -238,6 +268,10 @@ class Selection(ConfigWidget):
self.widgets['semantic_escape_chars'] = QtWidgets.QLineEdit( self.widgets['semantic_escape_chars'] = QtWidgets.QLineEdit(
config.get('semantic_escape_chars') 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() self.render_state()
@@ -245,6 +279,13 @@ class Shell(ConfigWidget):
def __init__(self, config): def __init__(self, config):
super().__init__() super().__init__()
self.widgets['program'] = QtWidgets.QLineEdit(config.get('program')) 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() self.render_state()
@@ -411,14 +452,16 @@ class Window(ConfigWidget):
startup_mode.setCurrentIndex(self.startup_options.index(dec)) startup_mode.setCurrentIndex(self.startup_options.index(dec))
columns = QtWidgets.QSpinBox() 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 = 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 = 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 = 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 = QtWidgets.QCheckBox()
dynamic_padding.setChecked(config.get('dynamic_padding', False)) dynamic_padding.setChecked(config.get('dynamic_padding', False))
@@ -451,9 +494,13 @@ class Window(ConfigWidget):
class Scrolling(ConfigWidget): class Scrolling(ConfigWidget):
def __init__(self, config): def __init__(self, config):
super().__init__() super().__init__()
history = QtWidgets.QSpinBox(config.get('history')) history = QtWidgets.QSpinBox()
multiplier = QtWidgets.QSpinBox(config.get('multiplier')) history.setMaximum(2**30)
faux_multiplier = QtWidgets.QSpinBox(config.get('faux_multiplier')) 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 = QtWidgets.QCheckBox()
autoscroll.setChecked(config.get('autoscroll', False)) autoscroll.setChecked(config.get('autoscroll', False))
@@ -473,22 +520,22 @@ class Config(QtWidgets.QWidget):
super().__init__() super().__init__()
self.layout = QtWidgets.QVBoxLayout() self.layout = QtWidgets.QVBoxLayout()
self.config = config self.config = config
self.add_tabs(config) self.add_tabs()
self.add_buttons() self.add_buttons()
self.setWindowTitle(NAME) self.setWindowTitle(NAME)
self.setLayout(self.layout) self.setLayout(self.layout)
def add_tabs(self, config): def add_tabs(self):
self.tabs = QtWidgets.QTabWidget() self.tabs = QtWidgets.QTabWidget()
self.tabs.addTab(Window(config.get('window', {})), "Window") self.tabs.addTab(Window(self.config.get('window', {})), "Window")
self.tabs.addTab(Font(config.get('font', {})), "Font") self.tabs.addTab(Font(self.config.get('font', {})), "Font")
self.tabs.addTab(Debug(config.get('debug', {})), "Debug") self.tabs.addTab(Debug(self.config.get('debug', {})), "Debug")
self.tabs.addTab(Env(config.get('env', {})), "Env") self.tabs.addTab(Env(self.config.get('env', {})), "Env")
self.tabs.addTab(Selection(config.get('selection', {})), "Selection") self.tabs.addTab(Selection(self.config.get('selection', {})), "Selection")
self.tabs.addTab(Shell(config.get('shell', {})), "Shell") self.tabs.addTab(Shell(self.config.get('shell', {})), "Shell")
self.tabs.addTab(Colors(config.get('colors', {})), "Colors") self.tabs.addTab(Colors(self.config.get('colors', {})), "Colors")
self.tabs.addTab(Scrolling(config.get('scrolling', {})), "Scrolling") self.tabs.addTab(Scrolling(self.config.get('scrolling', {})), "Scrolling")
self.layout.addWidget(self.tabs) self.layout.addWidget(self.tabs)
@@ -516,10 +563,6 @@ class Config(QtWidgets.QWidget):
f.write(yaml.dump(state)) f.write(yaml.dump(state))
sys.exit() sys.exit()
def addDialog(self):
dialog = QtWidgets.QColorDialog()
dialog.show()
if __name__ == '__main__': if __name__ == '__main__':
app = QtWidgets.QApplication([NAME]) app = QtWidgets.QApplication([NAME])