Commit e474d10d authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

Config, RunSolver: Add editor command and open solver logs into external editor.

Showing with 86 additions and 5 deletions
+86 -5
...@@ -15,3 +15,6 @@ class GenericSolver(AbstractSolver): ...@@ -15,3 +15,6 @@ class GenericSolver(AbstractSolver):
lst = super(GenericSolver, cls).default_parameters() lst = super(GenericSolver, cls).default_parameters()
return lst return lst
def log_file(self):
return ""
...@@ -127,6 +127,9 @@ class ConfigureWindow(ASubWindow, ListedSubWindow): ...@@ -127,6 +127,9 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
table.setAlternatingRowColors(True) table.setAlternatingRowColors(True)
# Editor
self.set_line_edit_text("lineEdit_editor_cmd", str(self.conf.editor))
# Language # Language
languages = Config.languages() languages = Config.languages()
for lang in languages: for lang in languages:
...@@ -190,6 +193,9 @@ class ConfigureWindow(ASubWindow, ListedSubWindow): ...@@ -190,6 +193,9 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
# Stricklers # Stricklers
self.conf.stricklers = deepcopy(self._stricklers) self.conf.stricklers = deepcopy(self._stricklers)
# Editor
self.conf.editor = self.get_line_edit_text("lineEdit_editor_cmd")
# Language # Language
self.conf.lang = Config.languages()[self.get_combobox_text("comboBox_language")] self.conf.lang = Config.languages()[self.get_combobox_text("comboBox_language")]
......
...@@ -54,7 +54,10 @@ class SolverLogFileWindow(ASubMainWindow, ListedSubWindow): ...@@ -54,7 +54,10 @@ class SolverLogFileWindow(ASubMainWindow, ListedSubWindow):
def setup_action(self): def setup_action(self):
self.find(QAction, "action_revert").setEnabled(True) self.find(QAction, "action_revert").setEnabled(True)
self.find(QAction, "action_open_in_editor").setEnabled(True) if self._config.editor != "":
self.find(QAction, "action_open_in_editor").setEnabled(True)
else:
self.find(QAction, "action_open_in_editor").setEnabled(False)
def setup_connections(self): def setup_connections(self):
self.find(QAction, "action_revert").triggered.connect(self.revert) self.find(QAction, "action_revert").triggered.connect(self.revert)
...@@ -71,4 +74,15 @@ class SolverLogFileWindow(ASubMainWindow, ListedSubWindow): ...@@ -71,4 +74,15 @@ class SolverLogFileWindow(ASubMainWindow, ListedSubWindow):
self.setup_text() self.setup_text()
def open_on_editor(self): def open_on_editor(self):
print("TODO: open in editor") p = QProcess(self)
cmd = self._config.editor
cmd = cmd.replace("@file", self._file_name)
cmd = cmd.split()
exe = cmd[0]
args = cmd[1:]
p.start(
exe, args,
)
...@@ -126,6 +126,7 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow): ...@@ -126,6 +126,7 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
self.find(QAction, "action_start").setEnabled(False) self.find(QAction, "action_start").setEnabled(False)
self.find(QAction, "action_pause").setEnabled(True) self.find(QAction, "action_pause").setEnabled(True)
self.find(QAction, "action_stop").setEnabled(True) self.find(QAction, "action_stop").setEnabled(True)
self.find(QAction, "action_log_file").setEnabled(False)
def setup_alarm(self): def setup_alarm(self):
self._alarm = QTimer() self._alarm = QTimer()
...@@ -159,7 +160,8 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow): ...@@ -159,7 +160,8 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
self.find(QAction, "action_start").setEnabled(True) self.find(QAction, "action_start").setEnabled(True)
self.find(QAction, "action_pause").setEnabled(False) self.find(QAction, "action_pause").setEnabled(False)
self.find(QAction, "action_stop").setEnabled(False) self.find(QAction, "action_stop").setEnabled(False)
# self.find(QAction, "action_log_file").setEnabled(True) if self._solver.log_file() != "":
self.find(QAction, "action_log_file").setEnabled(True)
while self._output.qsize() != 0: while self._output.qsize() != 0:
s = self._output.get() s = self._output.get()
...@@ -191,7 +193,8 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow): ...@@ -191,7 +193,8 @@ class SolverLogWindow(ASubMainWindow, ListedSubWindow):
self.find(QAction, "action_start").setEnabled(True) self.find(QAction, "action_start").setEnabled(True)
self.find(QAction, "action_pause").setEnabled(False) self.find(QAction, "action_pause").setEnabled(False)
self.find(QAction, "action_stop").setEnabled(False) self.find(QAction, "action_stop").setEnabled(False)
self.find(QAction, "action_log_file").setEnabled(True) if self._solver.log_file() != "":
self.find(QAction, "action_log_file").setEnabled(True)
def log_file(self): def log_file(self):
file_name = os.path.join(self._workdir, self._solver.log_file()) file_name = os.path.join(self._workdir, self._solver.log_file())
......
...@@ -409,6 +409,56 @@ ...@@ -409,6 +409,56 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_editor">
<attribute name="title">
<string>Editor</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<widget class="QLabel" name="label_11">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>This value must be used for reading or editing files in speficic case</string>
</property>
</widget>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Editor command</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_editor_cmd">
<property name="inputMask">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_language"> <widget class="QWidget" name="tab_language">
<attribute name="title"> <attribute name="title">
<string>Language</string> <string>Language</string>
......
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
<property name="windowTitle"> <property name="windowTitle">
<string>MainWindow</string> <string>MainWindow</string>
</property> </property>
<property name="locale">
<locale language="English" country="Europe"/>
</property>
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
......
...@@ -16,7 +16,6 @@ class Config(object): ...@@ -16,7 +16,6 @@ class Config(object):
self.set_default_value() self.set_default_value()
def set_default_value(self): def set_default_value(self):
print('toto')
# Solvers # Solvers
self._solvers = [] self._solvers = []
...@@ -33,6 +32,9 @@ class Config(object): ...@@ -33,6 +32,9 @@ class Config(object):
self.backup_frequence = "00:05:00" self.backup_frequence = "00:05:00"
self.backup_max = 10 self.backup_max = 10
# Editor
self.editor = "emacs @file"
# Languages # Languages
self.lang = "" self.lang = ""
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment