mg-pso-gui 0.2.81__tar.gz → 0.2.82__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/PKG-INFO +1 -1
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/PKG-INFO +1 -1
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/SOURCES.txt +3 -0
- mg_pso_gui-0.2.82/mgpsogui/gui/General/NoticeWindow.py +53 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/HomePage.py +4 -0
- mg_pso_gui-0.2.82/mgpsogui/gui/SetupTab/SamplingListView.py +127 -0
- mg_pso_gui-0.2.82/mgpsogui/gui/SetupTab/SamplingNameListWindow.py +74 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/setup.py +1 -1
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/dependency_links.txt +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/entry_points.txt +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/requires.txt +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mg_pso_gui.egg-info/top_level.txt +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/General/ParameterView.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/General/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/OptionManager.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/OptionManager_backup.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/PlatformTab/PlatformTab.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/PlatformTab/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/RunTab/OptimalParameterView.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/RunTab/RunTab.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/RunTab/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/BoundsEditorWindow.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/BoundsList.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/CustomFunctionEditorWindow.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/CustomFunctionMetrics.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/FunctionsList.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/ListEditor.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/ListParametersView.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/OverrideParameterMetrics.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/OverrideParameterWindow.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/SetupTab.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/StepView.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/SetupTab/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/VisualizeTab/MatrixEditor.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/VisualizeTab/SideBar.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/VisualizeTab/VisualizeTab.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/VisualizeTab/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/defaults/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/defaults/optimization.json +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/defaults/sampling.json +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/defaults/sensitivity.json +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/collapse.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/down.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/expand.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/play.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/plus.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/refresh.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/refresh_hd.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/stop.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/test.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/trash.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/gui/images/up.png +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/mgpsogui.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/start.yaml +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/CTkToolTip/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/CTkToolTip/ctk_tooltip.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/GraphGenerator.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/PSORunner.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/debug.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/helpers.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/pso/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/pso/csip_access.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/pso/pso.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/halton/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/halton/halton.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/halton/prime.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/random/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/random/random_sampler.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/sample_trace_writer.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/sampler_task.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/sampling.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/utils/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/utils/plot/__init__.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/utils/plot/cost_steps.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/utils/trace_writer.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/utils/utils.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/sampler_test_driver.py +0 -0
- {mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/setup.cfg +0 -0
@@ -12,6 +12,7 @@ mgpsogui/gui/HomePage.py
|
|
12
12
|
mgpsogui/gui/OptionManager.py
|
13
13
|
mgpsogui/gui/OptionManager_backup.py
|
14
14
|
mgpsogui/gui/__init__.py
|
15
|
+
mgpsogui/gui/General/NoticeWindow.py
|
15
16
|
mgpsogui/gui/General/ParameterView.py
|
16
17
|
mgpsogui/gui/General/__init__.py
|
17
18
|
mgpsogui/gui/PlatformTab/PlatformTab.py
|
@@ -28,6 +29,8 @@ mgpsogui/gui/SetupTab/ListEditor.py
|
|
28
29
|
mgpsogui/gui/SetupTab/ListParametersView.py
|
29
30
|
mgpsogui/gui/SetupTab/OverrideParameterMetrics.py
|
30
31
|
mgpsogui/gui/SetupTab/OverrideParameterWindow.py
|
32
|
+
mgpsogui/gui/SetupTab/SamplingListView.py
|
33
|
+
mgpsogui/gui/SetupTab/SamplingNameListWindow.py
|
31
34
|
mgpsogui/gui/SetupTab/SetupTab.py
|
32
35
|
mgpsogui/gui/SetupTab/StepView.py
|
33
36
|
mgpsogui/gui/SetupTab/__init__.py
|
@@ -0,0 +1,53 @@
|
|
1
|
+
from typing import Union, Tuple, Optional
|
2
|
+
|
3
|
+
from customtkinter import CTkLabel
|
4
|
+
from customtkinter import CTkButton
|
5
|
+
from customtkinter import CTkEntry
|
6
|
+
from customtkinter import CTkInputDialog
|
7
|
+
from customtkinter import CTkTextbox
|
8
|
+
|
9
|
+
class NoticeWindow(CTkInputDialog):
|
10
|
+
"""
|
11
|
+
Dialog with extra window, message, entry widget, cancel and ok button.
|
12
|
+
For detailed information check out the documentation.
|
13
|
+
"""
|
14
|
+
|
15
|
+
def __init__(self, *args,
|
16
|
+
message: None,
|
17
|
+
**kwargs):
|
18
|
+
super().__init__(*args, **kwargs)
|
19
|
+
|
20
|
+
self.geometry("400x800")
|
21
|
+
|
22
|
+
self.message = message
|
23
|
+
|
24
|
+
def _create_widgets(self):
|
25
|
+
|
26
|
+
self.grid_columnconfigure(0, weight=1)
|
27
|
+
self.rowconfigure(0, weight=1)
|
28
|
+
|
29
|
+
self.textbox = CTkTextbox(self, state="disabled")
|
30
|
+
self.textbox.grid(row=0, column=0, padx=(20, 20), pady=(20, 20), sticky="nsew")
|
31
|
+
self.textbox.insert("0.0", self.message)
|
32
|
+
|
33
|
+
self._ok_button = CTkButton(master=self,
|
34
|
+
width=100,
|
35
|
+
border_width=0,
|
36
|
+
fg_color=self._button_fg_color,
|
37
|
+
hover_color=self._button_hover_color,
|
38
|
+
text_color=self._button_text_color,
|
39
|
+
text='OK',
|
40
|
+
command=self._ok_event)
|
41
|
+
self._ok_button.grid(row=1, column=0, columnspan=1, padx=(20, 10), pady=(0, 20), sticky="ew")
|
42
|
+
|
43
|
+
def _ok_event(self, event=None):
|
44
|
+
self.grab_release()
|
45
|
+
self.destroy()
|
46
|
+
|
47
|
+
def _on_closing(self):
|
48
|
+
self.grab_release()
|
49
|
+
self.destroy()
|
50
|
+
|
51
|
+
def _cancel_event(self):
|
52
|
+
self.grab_release()
|
53
|
+
self.destroy()
|
@@ -30,6 +30,8 @@ import time
|
|
30
30
|
|
31
31
|
from queue import Empty
|
32
32
|
|
33
|
+
from General.NoticeWindow import NoticeWindow as NW
|
34
|
+
|
33
35
|
from ..util import PSORunner
|
34
36
|
from ..util import GraphGenerator
|
35
37
|
from ..util.CTkToolTip import CTkToolTip as ctt
|
@@ -208,6 +210,8 @@ class App(customtkinter.CTk):
|
|
208
210
|
self.refresh_step_view(0)
|
209
211
|
self.after(1000, self.running_loop)
|
210
212
|
|
213
|
+
NW(title="Welcome!", message="Welcome to COSU Manager!", option_manager=self.option_manager)
|
214
|
+
|
211
215
|
def update_graph(self, value):
|
212
216
|
self.vis_sidebar.refresh()
|
213
217
|
GraphGenerator.generate_graphs(self)
|
@@ -0,0 +1,127 @@
|
|
1
|
+
from customtkinter import CTkScrollableFrame
|
2
|
+
from customtkinter import CTkFrame
|
3
|
+
from customtkinter import CTkLabel
|
4
|
+
from customtkinter import CTkButton
|
5
|
+
from customtkinter import CTkEntry
|
6
|
+
import tkinter as tk
|
7
|
+
import subprocess
|
8
|
+
import platform
|
9
|
+
import os
|
10
|
+
|
11
|
+
global option_manager
|
12
|
+
|
13
|
+
class SamplingListView(CTkScrollableFrame):
|
14
|
+
def __init__(self, *args,
|
15
|
+
option_manager: None,
|
16
|
+
step_index: 0,
|
17
|
+
bound_index: 0,
|
18
|
+
**kwargs):
|
19
|
+
super().__init__(*args, **kwargs)
|
20
|
+
|
21
|
+
self.option_manager = option_manager
|
22
|
+
self.step_index = step_index
|
23
|
+
self.bounds_index = bound_index
|
24
|
+
self.key_values = []
|
25
|
+
self.visual_name = tk.StringVar()
|
26
|
+
self.visual_name.set("name")
|
27
|
+
|
28
|
+
|
29
|
+
self.name = self.option_manager.get_steps()[self.step_index]["parameter_objects"][bound_index]["name"].get()
|
30
|
+
self.default = self.option_manager.get_steps()[self.step_index]["parameter_objects"][bound_index]["default_value"].get()
|
31
|
+
try:
|
32
|
+
if self.name != "" and self.default != "":
|
33
|
+
|
34
|
+
self.visual_name.set(self.name.rsplit('/', 1)[0] + '/')
|
35
|
+
self.names = self.name.split('/')
|
36
|
+
self.rows = self.names[-1].split(';')
|
37
|
+
self.defaults = self.default.replace("[", "").replace("]", "").replace("(", "").replace(")", "").replace(" ", "").split(",")
|
38
|
+
|
39
|
+
print("rows", self.rows)
|
40
|
+
print("defaults", self.defaults)
|
41
|
+
index = 0
|
42
|
+
|
43
|
+
for name in self.rows:
|
44
|
+
obj = {"name": tk.StringVar(), "value": tk.StringVar()}
|
45
|
+
obj['name'].set(name)
|
46
|
+
obj['value'].set(self.defaults[index])
|
47
|
+
self.key_values.append(obj)
|
48
|
+
index += 1
|
49
|
+
except Exception as e:
|
50
|
+
print(e)
|
51
|
+
|
52
|
+
if (len(self.key_values) == 0):
|
53
|
+
self.add_key()
|
54
|
+
|
55
|
+
self.edit_mode = False
|
56
|
+
|
57
|
+
self.render()
|
58
|
+
|
59
|
+
def clear(self):
|
60
|
+
self.containerFrame.destroy()
|
61
|
+
|
62
|
+
def toggle_edit_mode(self):
|
63
|
+
self.clear()
|
64
|
+
self.edit_mode = not self.edit_mode
|
65
|
+
self.render()
|
66
|
+
|
67
|
+
def add_key(self, key="0000", value="0"):
|
68
|
+
obj = {"name": tk.StringVar(), "value": tk.StringVar()}
|
69
|
+
obj['name'].set(key)
|
70
|
+
obj['value'].set(value)
|
71
|
+
self.key_values.append(obj)
|
72
|
+
|
73
|
+
def remove_key(self, index):
|
74
|
+
self.key_values.pop(index)
|
75
|
+
|
76
|
+
def render(self):
|
77
|
+
row = 0
|
78
|
+
index = 0
|
79
|
+
|
80
|
+
self.containerFrame = CTkFrame(self)
|
81
|
+
self.containerFrame.grid(row=0, column=0, padx=(5, 5), pady=(5, 5), sticky="nsew")
|
82
|
+
self.containerFrame.grid_columnconfigure((0, 1), weight=1)
|
83
|
+
|
84
|
+
|
85
|
+
CTkLabel(self.containerFrame, text="Row:").grid(row=row, column=0, columnspan=1, padx=5, pady=5, sticky="")
|
86
|
+
CTkLabel(self.containerFrame, text="Default:").grid(row=row, column=1, columnspan=1, padx=5, pady=5, sticky="")
|
87
|
+
row += 1
|
88
|
+
|
89
|
+
for key_value_pair in self.key_values:
|
90
|
+
CTkEntry(self.containerFrame, textvariable=self.key_values[index]["name"]).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
91
|
+
|
92
|
+
if self.edit_mode:
|
93
|
+
return_func = lambda index=index: (self.clear(), self.remove_key(index), self.render())
|
94
|
+
CTkButton(self.containerFrame, text="Remove", command=return_func).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
95
|
+
else:
|
96
|
+
bb = CTkEntry(self.containerFrame)
|
97
|
+
bb.grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
98
|
+
bb.configure(textvariable=self.key_values[index]["value"])
|
99
|
+
row += 1
|
100
|
+
index += 1
|
101
|
+
|
102
|
+
if self.edit_mode:
|
103
|
+
CTkButton(self.containerFrame, text="Exit", command=self.toggle_edit_mode).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
104
|
+
else:
|
105
|
+
CTkButton(self.containerFrame, text="Edit", command=self.toggle_edit_mode).grid(row=row, column=0, padx=(5, 5), pady=(5, 5), sticky="ew")
|
106
|
+
|
107
|
+
add_key_func = lambda: (self.clear(), self.add_key(), self.render())
|
108
|
+
CTkButton(self.containerFrame, text="Add", command=add_key_func).grid(row=row, column=1, padx=(5, 5), pady=(5, 5), sticky="ew")
|
109
|
+
|
110
|
+
row += 1
|
111
|
+
|
112
|
+
def push_to_option_manager(self):
|
113
|
+
visual_name = self.visual_name.get()
|
114
|
+
default_values = "["
|
115
|
+
first = True
|
116
|
+
for key_value_pair in self.key_values:
|
117
|
+
if first:
|
118
|
+
visual_name += key_value_pair['name'].get()
|
119
|
+
first = False
|
120
|
+
else:
|
121
|
+
visual_name += ";" + key_value_pair['name'].get()
|
122
|
+
default_values += key_value_pair['value'].get() + ","
|
123
|
+
|
124
|
+
default_values = default_values[:-1] + "]"
|
125
|
+
|
126
|
+
self.option_manager.get_steps()[self.step_index]["parameter_objects"][self.bounds_index]["name"].set(visual_name)
|
127
|
+
self.option_manager.get_steps()[self.step_index]["parameter_objects"][self.bounds_index]["default_value"].set(default_values)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
from typing import Union, Tuple, Optional
|
2
|
+
|
3
|
+
from customtkinter import CTkLabel
|
4
|
+
from customtkinter import CTkButton
|
5
|
+
from customtkinter import CTkEntry
|
6
|
+
from customtkinter import CTkInputDialog
|
7
|
+
from .SamplingListView import SamplingListView as SamplingListView
|
8
|
+
|
9
|
+
class SamplingNameListWindow(CTkInputDialog):
|
10
|
+
"""
|
11
|
+
Dialog with extra window, message, entry widget, cancel and ok button.
|
12
|
+
For detailed information check out the documentation.
|
13
|
+
"""
|
14
|
+
|
15
|
+
def __init__(self, *args,
|
16
|
+
step_index: 0,
|
17
|
+
bound_index: 0,
|
18
|
+
option_manager: None,
|
19
|
+
**kwargs):
|
20
|
+
super().__init__(*args, **kwargs)
|
21
|
+
|
22
|
+
self.geometry("400x800")
|
23
|
+
|
24
|
+
self.step_index = step_index
|
25
|
+
self.bound_index = bound_index
|
26
|
+
self.option_manager = option_manager
|
27
|
+
self.bounds = None
|
28
|
+
|
29
|
+
def _create_widgets(self):
|
30
|
+
|
31
|
+
self.grid_columnconfigure((0, 1), weight=1)
|
32
|
+
self.rowconfigure(0, weight=1)
|
33
|
+
|
34
|
+
self.bounds = SamplingListView(
|
35
|
+
self, step_index=self.step_index, bound_index=self.bound_index, option_manager=self.option_manager)
|
36
|
+
self.bounds.grid(row=0, column=0, columnspan=2, padx=(10, 10),
|
37
|
+
pady=(10, 10), sticky="nsew")
|
38
|
+
self.bounds.grid_columnconfigure(0, weight=1)
|
39
|
+
|
40
|
+
self._ok_button = CTkButton(master=self,
|
41
|
+
width=100,
|
42
|
+
border_width=0,
|
43
|
+
fg_color=self._button_fg_color,
|
44
|
+
hover_color=self._button_hover_color,
|
45
|
+
text_color=self._button_text_color,
|
46
|
+
text='Save',
|
47
|
+
command=self._ok_event)
|
48
|
+
self._ok_button.grid(row=2, column=0, columnspan=1, padx=(20, 10), pady=(0, 20), sticky="ew")
|
49
|
+
|
50
|
+
self._cancel_button = CTkButton(master=self,
|
51
|
+
width=100,
|
52
|
+
border_width=0,
|
53
|
+
fg_color=self._button_fg_color,
|
54
|
+
hover_color=self._button_hover_color,
|
55
|
+
text_color=self._button_text_color,
|
56
|
+
text='Cancel',
|
57
|
+
command=self._cancel_event)
|
58
|
+
self._cancel_button.grid(row=2, column=1, columnspan=1, padx=(10, 20), pady=(0, 20), sticky="ew")
|
59
|
+
|
60
|
+
def _ok_event(self, event=None):
|
61
|
+
# Save values in bounds editor...
|
62
|
+
|
63
|
+
self.bounds.push_to_option_manager()
|
64
|
+
|
65
|
+
self.grab_release()
|
66
|
+
self.destroy()
|
67
|
+
|
68
|
+
def _on_closing(self):
|
69
|
+
self.grab_release()
|
70
|
+
self.destroy()
|
71
|
+
|
72
|
+
def _cancel_event(self):
|
73
|
+
self.grab_release()
|
74
|
+
self.destroy()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/random/random_sampler.py
RENAMED
File without changes
|
{mg_pso_gui-0.2.81 → mg_pso_gui-0.2.82}/mgpsogui/util/recosu/sampling/sample_trace_writer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|