From 5c858166416015acd98e1877b2a32e577aae218a Mon Sep 17 00:00:00 2001
From: Shlomi Fish <shlomif@shlomifish.org>
Date: Sat, 4 Nov 2017 18:18:13 +0200
Subject: [PATCH] Remember the solver's max iterations setting.

See https://github.com/shlomif/PySolFC/issues/38 .
---
 pysollib/options.py                | 3 +++
 pysollib/ui/tktile/solverdialog.py | 6 +++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/pysollib/options.py b/pysollib/options.py
index 36f127f4..d63cd0e1 100644
--- a/pysollib/options.py
+++ b/pysollib/options.py
@@ -112,6 +112,7 @@ visible_buttons = string_list
 translate_game_names = boolean
 solver_presets = string_list
 solver_show_progress = boolean
+solver_max_iterations = integer
 
 [sound_samples]
 move = boolean
@@ -246,6 +247,7 @@ class Options:
         ('translate_game_names', 'bool'),
         ('solver_presets', 'list'),
         ('solver_show_progress', 'bool'),
+        ('solver_max_iterations', 'int'),
         # ('toolbar_vars', 'list'),
         # ('recent_gameid', 'list'),
         # ('favorite_gameid', 'list'),
@@ -413,6 +415,7 @@ class Options:
             'yellow-brick-road',
             ]
         self.solver_show_progress = True
+        self.solver_max_iterations = 100000
 
     def setDefaults(self, top=None):
         WIN_SYSTEM = pysollib.settings.WIN_SYSTEM
diff --git a/pysollib/ui/tktile/solverdialog.py b/pysollib/ui/tktile/solverdialog.py
index 8a684a16..ac0776ed 100644
--- a/pysollib/ui/tktile/solverdialog.py
+++ b/pysollib/ui/tktile/solverdialog.py
@@ -9,6 +9,9 @@ class BaseSolverDialog:
     def _ToggleShowProgressButton(self, *args):
         self.app.opt.solver_show_progress = self.progress_var.get()
 
+    def _OnAssignToMaxIters(self, *args):
+        self.app.opt.solver_max_iterations = self.max_iters_var.get()
+
     def __init__(self, parent, app, **kw):
         self.parent = parent
         self.app = app
@@ -52,12 +55,13 @@ class BaseSolverDialog:
         #
         row += 1
         self.max_iters_var = tkinter.IntVar()
-        self.max_iters_var.set(10e4)
+        self.max_iters_var.set(self.app.opt.solver_max_iterations)
         self._calcToolkit().Label(
             frame, text=_('Max iterations:'), anchor='w').grid(
             row=row, column=0, sticky='ew', padx=2, pady=2)
         spin = tkinter.Spinbox(frame, bg='white', from_=1000, to=10e6,
                                increment=1000, textvariable=self.max_iters_var)
+        self.max_iters_var.trace('w', self._OnAssignToMaxIters)
         spin.grid(row=row, column=1, sticky='w', padx=2, pady=2)
 
         #