qmenta-sdk-lib 2.1.dev3486__tar.gz → 2.1.dev3487__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/PKG-INFO +1 -1
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/pyproject.toml +1 -1
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/integration_ui.py +134 -159
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/__init__.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/__init__.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/bids/__init__.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/bids/make_entrypoint.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/bids/wrapper.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/client.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/communication.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/context.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/directory_utils.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/executor.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/init.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/__init__.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/client.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/context.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/executor.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/parse_settings.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/log_capture.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/make_entrypoint.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/__init__.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/context.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/file_filter.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/inputs.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/integration_workflow_ui.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/launch_gui.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/make_files.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/modalities.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/outputs.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/run_test_docker.py +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/templates_tool_maker/Dockerfile_schema +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/templates_tool_maker/description_schema +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/templates_tool_maker/qmenta.png +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/templates_tool_maker/test_tool_schema +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/templates_tool_maker/tool_schema +0 -0
- {qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/tool_maker.py +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import json
|
|
4
4
|
import os
|
|
5
5
|
import re
|
|
6
|
-
from tkinter import filedialog, CENTER, END, messagebox
|
|
6
|
+
from tkinter import filedialog, CENTER, END, LEFT, RIGHT, X, Y, BOTH, YES, HORIZONTAL, TOP, messagebox
|
|
7
7
|
|
|
8
8
|
import ttkbootstrap as ttk
|
|
9
9
|
from PIL import Image, ImageTk
|
|
@@ -50,7 +50,7 @@ def gui_tkinter():
|
|
|
50
50
|
"image_name": image_name_entry.get(),
|
|
51
51
|
"docker_url": docker_url_entry.get(),
|
|
52
52
|
"docker_user": docker_user_entry.get(),
|
|
53
|
-
"docker_password":
|
|
53
|
+
"docker_password": docker_password_entry.get(),
|
|
54
54
|
}
|
|
55
55
|
return values
|
|
56
56
|
|
|
@@ -111,162 +111,138 @@ def gui_tkinter():
|
|
|
111
111
|
|
|
112
112
|
# window
|
|
113
113
|
window = ttk.Window(themename="darkly")
|
|
114
|
-
window.resizable(
|
|
115
|
-
|
|
114
|
+
window.resizable(True, True)
|
|
116
115
|
window.title("Tool Publishing GUI")
|
|
116
|
+
window.geometry("600x800")
|
|
117
|
+
|
|
117
118
|
write_dir = ttk.StringVar()
|
|
118
119
|
|
|
119
|
-
#
|
|
120
|
-
logo = Image.open(
|
|
121
|
-
os.path.join(
|
|
122
|
-
os.path.dirname(__file__), "templates_tool_maker", "qmenta.png"
|
|
123
|
-
)
|
|
124
|
-
).resize((500, 110))
|
|
125
|
-
img = ImageTk.PhotoImage(logo)
|
|
126
|
-
image_label = ttk.Label(master=window, image=img, padding=5, anchor=CENTER)
|
|
127
|
-
image_label.config(image=img)
|
|
128
|
-
image_label.pack(side="top")
|
|
129
|
-
|
|
130
|
-
# title
|
|
131
|
-
title_label = ttk.Label(
|
|
132
|
-
master=window,
|
|
133
|
-
text="QMENTA Platform credentials.",
|
|
134
|
-
font="bold",
|
|
135
|
-
)
|
|
136
|
-
title_label.pack(padx=10, pady=10)
|
|
120
|
+
# --- SCROLLBAR & CANVAS SETUP ---
|
|
137
121
|
|
|
138
|
-
#
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
user_id_label.pack(side="left")
|
|
147
|
-
user_id_entry = ttk.Entry(master=user_id_frame)
|
|
148
|
-
user_id_entry.pack(side="left", padx=10)
|
|
149
|
-
user_id_frame.pack(pady=10)
|
|
150
|
-
|
|
151
|
-
password_frame = ttk.Frame(master=window)
|
|
152
|
-
password_label = ttk.Label(master=password_frame, text="Password*")
|
|
153
|
-
password_label.pack(side="left")
|
|
154
|
-
password_entry = ttk.Entry(master=password_frame, show="*")
|
|
155
|
-
password_entry.pack(side="left", padx=10)
|
|
156
|
-
password_frame.pack(pady=10)
|
|
157
|
-
|
|
158
|
-
# Create a button to browse for a folder
|
|
159
|
-
folder_tool_frame = ttk.Frame(master=window)
|
|
160
|
-
folder_tool_label = ttk.Label(
|
|
161
|
-
master=folder_tool_frame,
|
|
162
|
-
text="Select folder where the tool is stored.*",
|
|
163
|
-
)
|
|
164
|
-
folder_tool_label.pack(side="left")
|
|
165
|
-
folder_tool_button = ttk.Button(
|
|
166
|
-
master=folder_tool_frame, text="Browse Folder", command=browse_folder
|
|
167
|
-
)
|
|
168
|
-
folder_tool_button.pack(side="left", padx=10)
|
|
169
|
-
folder_label = ttk.Label(master=folder_tool_frame, textvariable=write_dir)
|
|
170
|
-
folder_label.pack(side="bottom", pady=10)
|
|
171
|
-
folder_tool_frame.pack(pady=10)
|
|
172
|
-
|
|
173
|
-
# input tool ID field
|
|
174
|
-
tool_id_frame = ttk.Frame(master=window)
|
|
175
|
-
tool_id_label = ttk.Label(
|
|
176
|
-
master=tool_id_frame, text="Specify the tool ID.*"
|
|
177
|
-
)
|
|
178
|
-
tool_id_label.pack(side="left")
|
|
179
|
-
tool_id_entry = ttk.Entry(master=tool_id_frame)
|
|
180
|
-
tool_id_entry.pack(side="left", padx=10)
|
|
181
|
-
tool_id_frame.pack(pady=10)
|
|
182
|
-
|
|
183
|
-
# input tool version field
|
|
184
|
-
tool_version_frame = ttk.Frame(master=window)
|
|
185
|
-
tool_version_label = ttk.Label(
|
|
186
|
-
master=tool_version_frame, text="Specify the tool version.*"
|
|
187
|
-
)
|
|
188
|
-
tool_version_label.pack(side="left")
|
|
189
|
-
tool_version_entry = ttk.Entry(master=tool_version_frame)
|
|
190
|
-
tool_version_entry.pack(side="left", padx=10)
|
|
191
|
-
tool_version_frame.pack(pady=10)
|
|
192
|
-
|
|
193
|
-
tool_name_frame = ttk.Frame(master=window)
|
|
194
|
-
tool_name_label = ttk.Label(
|
|
195
|
-
master=tool_name_frame, text="Specify the tool name.*"
|
|
196
|
-
)
|
|
197
|
-
tool_name_label.pack(side="left")
|
|
198
|
-
tool_name_entry = ttk.Entry(master=tool_name_frame)
|
|
199
|
-
tool_name_entry.pack(side="left", padx=10)
|
|
200
|
-
tool_name_frame.pack(pady=10)
|
|
201
|
-
|
|
202
|
-
num_cores_frame = ttk.Frame(master=window)
|
|
203
|
-
num_cores_label = ttk.Label(
|
|
204
|
-
master=num_cores_frame,
|
|
205
|
-
text="How many cores does the tool require? (integer, "
|
|
206
|
-
f"max. {MAX_CORES})",
|
|
207
|
-
)
|
|
208
|
-
num_cores_label.pack(side="left")
|
|
209
|
-
num_cores_entry = ttk.Entry(master=num_cores_frame)
|
|
210
|
-
num_cores_entry.insert(0, "1")
|
|
211
|
-
num_cores_entry.pack(side="left", padx=10)
|
|
212
|
-
num_cores_frame.pack(pady=10)
|
|
213
|
-
|
|
214
|
-
memory_frame = ttk.Frame(master=window)
|
|
215
|
-
memory_label = ttk.Label(
|
|
216
|
-
master=memory_frame,
|
|
217
|
-
text=f"How many GB of RAM does the tool require? "
|
|
218
|
-
f"(integer, max. {MAX_RAM})",
|
|
219
|
-
)
|
|
220
|
-
memory_label.pack(side="left")
|
|
221
|
-
memory_entry = ttk.Entry(master=memory_frame)
|
|
222
|
-
memory_entry.insert(0, "1")
|
|
223
|
-
memory_entry.pack(side="left", padx=10)
|
|
224
|
-
memory_frame.pack(pady=10)
|
|
225
|
-
|
|
226
|
-
image_name_frame = ttk.Frame(master=window)
|
|
227
|
-
image_name_label = ttk.Label(
|
|
228
|
-
master=image_name_frame, text="Docker image name"
|
|
229
|
-
)
|
|
230
|
-
image_name_label.pack(side="left")
|
|
231
|
-
image_name_entry = ttk.Entry(master=image_name_frame)
|
|
232
|
-
image_name_entry.pack(side="left", padx=10)
|
|
233
|
-
image_name_frame.pack(pady=10)
|
|
234
|
-
|
|
235
|
-
title_label = ttk.Label(
|
|
236
|
-
master=window,
|
|
237
|
-
text="Docker image registry and credentials. "
|
|
238
|
-
"Credentials need to be valid in order to be able to pull the "
|
|
239
|
-
"Docker image from the registry.",
|
|
240
|
-
)
|
|
241
|
-
title_label.pack(padx=10, pady=10)
|
|
122
|
+
# Main container to hold canvas and scrollbar
|
|
123
|
+
main_container = ttk.Frame(window)
|
|
124
|
+
main_container.pack(fill=BOTH, expand=YES)
|
|
125
|
+
# Canvas
|
|
126
|
+
canvas = ttk.Canvas(main_container)
|
|
127
|
+
# Scrollbar linked to canvas
|
|
128
|
+
vbar = ttk.Scrollbar(main_container, orient="vertical", command=canvas.yview)
|
|
129
|
+
canvas.configure(yscrollcommand=vbar.set)
|
|
242
130
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
)
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
131
|
+
vbar.pack(side=RIGHT, fill=Y)
|
|
132
|
+
canvas.pack(side=LEFT, fill=BOTH, expand=YES)
|
|
133
|
+
|
|
134
|
+
# The actual frame that holds the content
|
|
135
|
+
content_frame = ttk.Frame(canvas, padding=20)
|
|
136
|
+
canvas_window_id = canvas.create_window((0, 0), window=content_frame, anchor="nw", tags="inner_frame")
|
|
137
|
+
|
|
138
|
+
# --- RESIZE LOGIC ---
|
|
139
|
+
|
|
140
|
+
# Update scrollregion when content changes size
|
|
141
|
+
def configure_scroll_region(event):
|
|
142
|
+
canvas.configure(scrollregion=canvas.bbox("all"))
|
|
143
|
+
|
|
144
|
+
content_frame.bind("<Configure>", configure_scroll_region)
|
|
145
|
+
|
|
146
|
+
# Force the inner frame to match the canvas width (Horizontal Fill)
|
|
147
|
+
def on_canvas_resize(event):
|
|
148
|
+
canvas.itemconfig(canvas_window_id, width=event.width)
|
|
149
|
+
|
|
150
|
+
canvas.bind("<Configure>", on_canvas_resize)
|
|
151
|
+
|
|
152
|
+
def _on_mousewheel_windows(event):
|
|
153
|
+
# Windows/macOS: event.delta is usually multiples of 120
|
|
154
|
+
# We divide by 120 to get the number of "steps"
|
|
155
|
+
canvas.yview_scroll(int(-1 * (event.delta / 120)), "units")
|
|
156
|
+
|
|
157
|
+
def _on_linux_scroll_up(event):
|
|
158
|
+
# Linux (X11) often sends Button-4 for scroll up
|
|
159
|
+
canvas.yview_scroll(-1, "units")
|
|
160
|
+
|
|
161
|
+
def _on_linux_scroll_down(event):
|
|
162
|
+
# Linux (X11) often sends Button-5 for scroll down
|
|
163
|
+
canvas.yview_scroll(1, "units")
|
|
164
|
+
|
|
165
|
+
# Bind Standard MouseWheel (Windows/macOS)
|
|
166
|
+
window.bind_all("<MouseWheel>", _on_mousewheel_windows)
|
|
167
|
+
# Bind Linux specific buttons (X11)
|
|
168
|
+
window.bind_all("<Button-4>", _on_linux_scroll_up)
|
|
169
|
+
window.bind_all("<Button-5>", _on_linux_scroll_down)
|
|
170
|
+
|
|
171
|
+
# --- WIDGETS ---
|
|
172
|
+
|
|
173
|
+
# Logo Image
|
|
174
|
+
try:
|
|
175
|
+
# Adjusted path logic for safety
|
|
176
|
+
img_path = os.path.join(os.path.dirname(__file__), "templates_tool_maker", "qmenta.png")
|
|
177
|
+
if os.path.exists(img_path):
|
|
178
|
+
logo = Image.open(img_path).resize((500, 110))
|
|
179
|
+
img = ImageTk.PhotoImage(logo)
|
|
180
|
+
image_label = ttk.Label(master=content_frame, image=img, anchor=CENTER)
|
|
181
|
+
image_label.image = img # Keep reference
|
|
182
|
+
image_label.pack(side=TOP, pady=(0, 20))
|
|
183
|
+
except Exception as e:
|
|
184
|
+
print(f"Image load failed: {e}")
|
|
185
|
+
|
|
186
|
+
# Title
|
|
187
|
+
ttk.Label(
|
|
188
|
+
master=content_frame,
|
|
189
|
+
text="QMENTA Platform credentials",
|
|
190
|
+
font="Helvetica 16 bold",
|
|
191
|
+
).pack(pady=10)
|
|
192
|
+
|
|
193
|
+
ttk.Label(
|
|
194
|
+
master=content_frame,
|
|
195
|
+
text="(*) indicates mandatory field.",
|
|
196
|
+
bootstyle="warning"
|
|
197
|
+
).pack(pady=(0, 20))
|
|
198
|
+
|
|
199
|
+
# Helper to create rows easily
|
|
200
|
+
def create_row(parent, label_text, is_password=False, default=None):
|
|
201
|
+
frame = ttk.Frame(master=parent)
|
|
202
|
+
frame.pack(fill=X, pady=5)
|
|
203
|
+
|
|
204
|
+
lbl = ttk.Label(master=frame, text=label_text, width=30)
|
|
205
|
+
lbl.pack(side=LEFT)
|
|
206
|
+
|
|
207
|
+
entry = ttk.Entry(master=frame, show="*" if is_password else None)
|
|
208
|
+
if default:
|
|
209
|
+
entry.insert(0, str(default))
|
|
210
|
+
entry.pack(side=LEFT, fill=X, expand=YES, padx=10)
|
|
211
|
+
return entry
|
|
212
|
+
|
|
213
|
+
# User inputs
|
|
214
|
+
user_id_entry = create_row(content_frame, "Username*")
|
|
215
|
+
password_entry = create_row(content_frame, "Password*", is_password=True)
|
|
216
|
+
|
|
217
|
+
# Browse Folder Row
|
|
218
|
+
folder_frame = ttk.Frame(master=content_frame)
|
|
219
|
+
folder_frame.pack(fill=X, pady=10)
|
|
220
|
+
ttk.Label(folder_frame, text="Select tool folder*", width=30).pack(side=LEFT)
|
|
221
|
+
ttk.Button(folder_frame, text="Browse Folder", command=browse_folder).pack(side=LEFT, padx=10)
|
|
222
|
+
ttk.Label(folder_frame, textvariable=write_dir).pack(side=LEFT, padx=10)
|
|
223
|
+
|
|
224
|
+
# Tool info
|
|
225
|
+
tool_id_entry = create_row(content_frame, "Specify the tool ID.*")
|
|
226
|
+
tool_version_entry = create_row(content_frame, "Specify the tool version.*")
|
|
227
|
+
tool_name_entry = create_row(content_frame, "Specify the tool name.*")
|
|
228
|
+
num_cores_entry = create_row(content_frame, f"Cores required (integer, max {MAX_CORES})", default="1")
|
|
229
|
+
memory_entry = create_row(content_frame, f"RAM required GB (integer, max {MAX_RAM})", default="1")
|
|
230
|
+
image_name_entry = create_row(content_frame, "Docker image name")
|
|
231
|
+
|
|
232
|
+
# Separator
|
|
233
|
+
ttk.Separator(content_frame, orient=HORIZONTAL).pack(fill=X, pady=20)
|
|
234
|
+
|
|
235
|
+
# Docker registry
|
|
236
|
+
ttk.Label(
|
|
237
|
+
master=content_frame,
|
|
238
|
+
text="Docker Registry Credentials",
|
|
239
|
+
font="Helvetica 12 bold"
|
|
240
|
+
).pack(pady=10)
|
|
241
|
+
docker_url_entry = create_row(content_frame, "Docker registry URL", default="hub.docker.com")
|
|
242
|
+
docker_user_entry = create_row(content_frame, "Docker registry user")
|
|
243
|
+
docker_password_entry = create_row(content_frame, "Docker registry password*", is_password=True)
|
|
244
|
+
|
|
245
|
+
# --- ACTIONS ---
|
|
270
246
|
|
|
271
247
|
gui_content = {}
|
|
272
248
|
|
|
@@ -276,15 +252,14 @@ def gui_tkinter():
|
|
|
276
252
|
if gui_content:
|
|
277
253
|
window.destroy()
|
|
278
254
|
|
|
279
|
-
action_frame = ttk.Frame(master=
|
|
280
|
-
|
|
255
|
+
action_frame = ttk.Frame(master=content_frame)
|
|
256
|
+
action_frame.pack(pady=30)
|
|
257
|
+
ttk.Button(
|
|
281
258
|
master=action_frame,
|
|
282
259
|
text="Publish in QMENTA Platform",
|
|
283
260
|
command=submit_form,
|
|
284
261
|
bootstyle="primary",
|
|
285
|
-
)
|
|
286
|
-
button.pack(side="left")
|
|
287
|
-
action_frame.pack(pady=10)
|
|
262
|
+
).pack(side=LEFT, pady=10)
|
|
288
263
|
|
|
289
264
|
def quit_tool_creator():
|
|
290
265
|
window.destroy()
|
|
@@ -296,7 +271,7 @@ def gui_tkinter():
|
|
|
296
271
|
text="Quit",
|
|
297
272
|
command=quit_tool_creator,
|
|
298
273
|
bootstyle="danger",
|
|
299
|
-
).pack(side=
|
|
274
|
+
).pack(side=LEFT, padx=10)
|
|
300
275
|
|
|
301
276
|
# run
|
|
302
277
|
window.mainloop()
|
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/bids/__init__.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/bids/make_entrypoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/communication.py
RENAMED
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/directory_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/context.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/executor.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/local/parse_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/make_entrypoint.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/__init__.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/context.py
RENAMED
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/inputs.py
RENAMED
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/launch_gui.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/make_files.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/modalities.py
RENAMED
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/outputs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{qmenta_sdk_lib-2.1.dev3486 → qmenta_sdk_lib-2.1.dev3487}/python/qmenta/sdk/tool_maker/tool_maker.py
RENAMED
|
File without changes
|