Skip to content

Commit fa8b98f

Browse files
committed
Character input and error handling improvements
- Whitespace in name and value inputs stripped - Top text fields wiped on submission - Name now cannot be same as another if parameter updated - Error handling improved for edge cases - Minor layout alignment improvement - Manifest file version increment to v1.1
1 parent 08df2d6 commit fa8b98f

File tree

2 files changed

+84
-61
lines changed

2 files changed

+84
-61
lines changed

Advanced Parameters.manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"description": {
77
"": "Opens an external window with advanced parameter settings."
88
},
9-
"version": "1.0",
9+
"version": "1.1",
1010
"runOnStartup": true,
1111
"supportedOS": "windows",
1212
"editEnabled": true

commands/AdvancedParameters/entry.py

Lines changed: 83 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,27 @@
3838
def addParameter(name, value, comment):
3939
"""Adds a user parameter"""
4040

41-
global parameters
41+
global parameters, entry_add_name, entry_add_value, entry_add_comment
4242

4343
try:
4444
if len(ui.activeSelections) == 0:
4545
if "deg" in value:
4646
parameters.add(
47-
name, adsk.core.ValueInput.createByString(value), "deg", comment
47+
name.strip(),
48+
adsk.core.ValueInput.createByString(value),
49+
"deg",
50+
comment,
4851
)
4952
else:
5053
parameters.add(
51-
name, adsk.core.ValueInput.createByString(value), "mm", comment
54+
name.strip(),
55+
adsk.core.ValueInput.createByString(value),
56+
"mm",
57+
comment,
5258
)
53-
59+
entry_add_name.delete(0, "end")
60+
entry_add_value.delete(0, "end")
61+
entry_add_comment.delete(0, "end")
5462
else:
5563
messagebox.showwarning(
5664
"Warning", "Cannot update with selections in the workspace."
@@ -76,42 +84,35 @@ def deleteParameter(row_number):
7684
def updateParameter(row_number, slider, comment, name):
7785
"""Update the value/comment/name of a parameter"""
7886

79-
global scaleBlocks, parameters, entry_add_value, entry_add_comment
80-
global entry_add_name, spinbox_max, spinbox_min, spinbox_min_value, spinbox_max_value
81-
82-
comment_input = entry_add_comment.get()
83-
if comment_input == " ":
84-
scaleBlocks[row_number][3].grid_remove()
85-
elif len(comment_input) > 0:
86-
comment.configure(text=comment_input)
87-
parameters[row_number].comment = comment_input
88-
scaleBlocks[row_number][3].grid(
89-
row=1,
90-
column=0,
91-
sticky=W,
92-
pady=(0, 0),
93-
padx=(0, 0),
94-
columnspan=10,
95-
)
96-
97-
name_input = entry_add_name.get()
98-
if len(name_input) > 0:
99-
name.configure(text=name_input)
100-
parameters[row_number].name = name_input
101-
102-
value_input = entry_add_value.get()
103-
if len(value_input) > 0:
104-
try:
105-
if len(ui.activeSelections) == 0:
87+
if len(ui.activeSelections) == 0:
88+
89+
global scaleBlocks, parameters, entry_add_value, entry_add_comment
90+
global entry_add_name, spinbox_max, spinbox_min, spinbox_min_value, spinbox_max_value
91+
92+
name_input = entry_add_name.get().strip()
93+
if len(name_input) > 0:
94+
try:
95+
for local_row_number, _ in enumerate(scaleBlocks):
96+
if name_input == parameters[local_row_number].name:
97+
raise TypeError
98+
parameters[row_number].name = name_input
99+
name.configure(text=name_input)
100+
entry_add_name.delete(0, "end")
101+
except TypeError:
102+
messagebox.showwarning("Type Error", "Parameter name already exists.")
103+
104+
value_input = entry_add_value.get().strip()
105+
if len(value_input) > 0:
106+
try:
106107
parameters.item(row_number).expression = value_input
107108

108-
if float(entry_add_value.get()) > float(spinbox_max.get()):
109-
spinbox_max.delete(0, 20)
110-
spinbox_max.insert(0, float(entry_add_value.get()))
109+
if parameters.item(row_number).value > float(spinbox_max.get()):
110+
spinbox_max.delete(0, "end")
111+
spinbox_max.insert(0, parameters.item(row_number).value)
111112
updateSettings()
112-
elif float(entry_add_value.get()) < float(spinbox_min.get()):
113-
spinbox_min.delete(0, 20)
114-
spinbox_min.insert(0, float(entry_add_value.get()))
113+
elif parameters.item(row_number).value < float(spinbox_min.get()):
114+
spinbox_min.delete(0, "end")
115+
spinbox_min.insert(0, parameters.item(row_number).value)
115116
updateSettings()
116117

117118
spinbox_increment_value_tmp = spinbox_increment.get()
@@ -121,13 +122,14 @@ def updateParameter(row_number, slider, comment, name):
121122
spinbox_increment_value_tmp_dp = (
122123
1 * 10**-spinbox_increment_value_tmp_n
123124
)
124-
125-
entry_add_value_tmp = entry_add_value.get()
125+
entry_add_value_tmp = "%g" % (
126+
round(parameters.item(row_number).value * 10, 5)
127+
)
126128
entry_add_value_tmp_n = entry_add_value_tmp[::-1].find(".")
127129
entry_add_value_tmp_dp = 1 * 10**-entry_add_value_tmp_n
128130

129131
if entry_add_value_tmp_dp < spinbox_increment_value_tmp_dp:
130-
spinbox_increment.delete(0, 20)
132+
spinbox_increment.delete(0, "end")
131133
spinbox_increment.insert(0, entry_add_value_tmp_dp)
132134
updateSettings()
133135

@@ -136,15 +138,36 @@ def updateParameter(row_number, slider, comment, name):
136138
else:
137139
slider.set(parameters.item(row_number).value * 10)
138140

139-
else:
140-
messagebox.showwarning(
141-
"Warning", "Cannot update with selections in the workspace."
142-
)
141+
entry_add_value.delete(0, "end")
142+
143+
except NameError as err:
144+
messagebox.showwarning("Name Error", err)
145+
except TypeError as err:
146+
messagebox.showwarning("Type Error", err)
147+
except RuntimeError as err:
148+
messagebox.showwarning("Runtime Error", err)
149+
150+
comment_input = entry_add_comment.get()
151+
if comment_input == " ":
152+
scaleBlocks[row_number][3].grid_remove()
153+
entry_add_comment.delete(0, "end")
154+
elif len(comment_input) > 0:
155+
comment.configure(text=comment_input)
156+
parameters[row_number].comment = comment_input
157+
scaleBlocks[row_number][3].grid(
158+
row=1,
159+
column=0,
160+
sticky=W,
161+
pady=(0, 0),
162+
padx=(0, 0),
163+
columnspan=10,
164+
)
165+
entry_add_comment.delete(0, "end")
143166

144-
except NameError as err:
145-
messagebox.showwarning("Name Error", err)
146-
except TypeError as err:
147-
messagebox.showwarning("Type Error", err)
167+
else:
168+
messagebox.showwarning(
169+
"Warning", "Cannot update with selections in the workspace."
170+
)
148171

149172

150173
def updateSettings():
@@ -242,7 +265,7 @@ def createScaleBlock(row_number):
242265
resolution=float(spinbox_increment.get()),
243266
orient="horizontal",
244267
command=lambda _: sliderMoved(row_number),
245-
length=269,
268+
length=260,
246269
variable=slider_value,
247270
)
248271
slider.grid(row=row_number, column=20, columnspan=10)
@@ -295,7 +318,7 @@ def loadToolbar():
295318

296319
window_top.grid(row=0, column=0, columnspan=70, padx=(10, 10), pady=(10, 0))
297320

298-
label_add_name = Label(window_top, text="Name: ", anchor="w")
321+
label_add_name = Label(window_top, text="Name:", anchor="w")
299322
label_add_name.grid(row=0, column=0, sticky=W, padx=(0, 5), columnspan=10)
300323

301324
entry_add_name = Entry(
@@ -307,7 +330,7 @@ def loadToolbar():
307330
)
308331
entry_add_name.grid(row=0, column=10, sticky=W, padx=(0, 20), columnspan=10)
309332

310-
label_add_value = Label(window_top, text="Value: ", anchor="w")
333+
label_add_value = Label(window_top, text="Value:", anchor="w")
311334
label_add_value.grid(row=0, column=20, sticky=W, padx=(0, 5), columnspan=10)
312335

313336
entry_add_value = Entry(
@@ -319,7 +342,7 @@ def loadToolbar():
319342
)
320343
entry_add_value.grid(row=0, column=30, sticky=W, padx=(0, 20), columnspan=10)
321344

322-
label_add_comment = Label(window_top, text="Comment: ", anchor="w")
345+
label_add_comment = Label(window_top, text="Comment:", anchor="w")
323346
label_add_comment.grid(row=0, column=40, sticky=W, padx=(0, 5), columnspan=10)
324347

325348
entry_add_comment = Entry(
@@ -378,15 +401,15 @@ def loadToolbar():
378401
spinbox_increment.grid(
379402
row=1,
380403
column=50,
381-
sticky=W,
404+
sticky=W + E,
382405
padx=(0, 20),
383406
pady=(6, 0),
384407
columnspan=10,
385408
)
386409
spinbox_increment.delete(0)
387410
spinbox_increment.insert(0, str(spinbox_increment_value))
388411

389-
label_add_min = Label(window_top, text="Min: ", anchor="w")
412+
label_add_min = Label(window_top, text="Min:", anchor="w")
390413
label_add_min.grid(
391414
row=1, column=0, sticky=W, padx=(0, 5), pady=(6, 0), columnspan=10
392415
)
@@ -410,7 +433,7 @@ def loadToolbar():
410433
spinbox_min.delete(0)
411434
spinbox_min.insert(0, str(spinbox_min_value))
412435

413-
label_add_max = Label(window_top, text="Max: ", anchor="w")
436+
label_add_max = Label(window_top, text="Max:", anchor="w")
414437
label_add_max.grid(
415438
row=1,
416439
column=20,
@@ -431,15 +454,15 @@ def loadToolbar():
431454
spinbox_max.grid(
432455
row=1,
433456
column=30,
434-
sticky=W,
457+
sticky=W + E,
435458
padx=(0, 20),
436459
pady=(6, 0),
437460
columnspan=10,
438461
)
439462
spinbox_max.delete(0)
440463
spinbox_max.insert(0, str(spinbox_max_value))
441464

442-
label_add_increment = Label(window_top, text="Increment: ", anchor="w")
465+
label_add_increment = Label(window_top, text="Increment:", anchor="w")
443466
label_add_increment.grid(
444467
row=1,
445468
column=40,
@@ -495,12 +518,12 @@ def updateWindow():
495518
param_val = parameters.item(row_number)
496519

497520
if param_val.value * 10 > float(spinbox_max.get()):
498-
spinbox_max.delete(0, 20)
521+
spinbox_max.delete(0, "end")
499522
spinbox_max.insert(0, "%g" % (param_val.value * 10))
500523
updateSettings()
501524
scaleBlocks[row_number][0].set(param_val.value * 10)
502525
elif param_val.value * 10 < float(spinbox_min.get()):
503-
spinbox_min.delete(0, 20)
526+
spinbox_min.delete(0, "end")
504527
spinbox_min.insert(0, "%g" % (param_val.value * 10))
505528
updateSettings()
506529
scaleBlocks[row_number][0].set(param_val.value * 10)
@@ -517,7 +540,7 @@ def updateWindow():
517540
entry_add_value_tmp_dp = 1 * 10**-entry_add_value_tmp_n
518541

519542
if entry_add_value_tmp_dp < spinbox_increment_value_tmp_dp:
520-
spinbox_increment.delete(0, 20)
543+
spinbox_increment.delete(0, "end")
521544
spinbox_increment.insert(0, entry_add_value_tmp_dp)
522545
updateSettings()
523546

0 commit comments

Comments
 (0)