Skip to content

Commit 4f40feb

Browse files
Added more reset array options
1 parent 1166795 commit 4f40feb

File tree

2 files changed

+64
-16
lines changed

2 files changed

+64
-16
lines changed

UI/Arrays.py

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ def __init__(self, array_group, dim, coords, beg, end, midi, delay = default_del
8787
self.midi = midi
8888
self.size = size
8989
self.reset()
90+
91+
self.saved_config = [size, beg, end]
92+
self.saved_list = [i for i in range(1, self.end+1)]
9093

9194
def change_delay(self, delay):
9295
try:
@@ -109,7 +112,11 @@ def change_size(self, size):
109112
self.reset()
110113
return self.size
111114

112-
def change_array(self, beg, end, size, list = None):
115+
def save_config(self, config, arr):
116+
self.saved_config = config
117+
self.saved_list = arr
118+
119+
def change_array(self, beg, end, size, arr = None):
113120
try:
114121
self.size = int(size)
115122
self.beg = int(beg)
@@ -118,7 +125,24 @@ def change_array(self, beg, end, size, list = None):
118125
self.size = 256
119126
self.beg = 1
120127
self.end = 256
121-
self.reset(list)
128+
self.save_config([size, beg, end], arr)
129+
self.reset(arr)
130+
131+
def load_config(self):
132+
self.array_group.empty()
133+
134+
self.list = self.saved_list
135+
self.visited = []
136+
cnt = 0
137+
#print(self.size, len(self.list))
138+
while (cnt < self.size):
139+
# TODO: Unexpected behavior may occur if user puts in invalid array such as not having enough elements or saved_list's size is 0
140+
for i in range(0, len(self.list)):
141+
self.visited.append(False)
142+
cnt += 1
143+
if (cnt == self.size):
144+
break
145+
self.createList()
122146

123147
def createList(self):
124148
width = self.dim[0]/len(self.list)
@@ -213,6 +237,7 @@ def reset(self, list = None):
213237
self.list = list
214238
self.visited = []
215239
cnt = 0
240+
#print(self.size, len(self.list))
216241
while (cnt < self.size):
217242
if (list == None):
218243
for i in range(self.beg, self.end+1):
@@ -229,18 +254,35 @@ def reset(self, list = None):
229254
cnt += 1
230255
if (cnt == self.size):
231256
break
232-
233257
self.createList()
234-
'''
235-
def reverse(self):
258+
259+
def reverse(self, list = None):
260+
self.array_group.empty()
261+
236262
self.list = []
263+
if (list != None):
264+
self.list = list
237265
self.visited = []
238-
for i in range(1, self.size+1):
239-
self.list.append(self.end - i + 1)
240-
self.visited.append(False)
241-
self.array_group.empty()
266+
cnt = 0
267+
while (cnt < self.size):
268+
if (list == None):
269+
for i in range(self.end, self.beg - 1, -1):
270+
self.list.append(i)
271+
self.visited.append(False)
272+
cnt += 1
273+
if (cnt == self.size):
274+
break
275+
# TODO: Unexpected behavior may occur if user puts in invalid array such as not having enough elements
276+
else:
277+
self.list = list
278+
for i in range(0, len(self.list)):
279+
self.visited.append(False)
280+
cnt += 1
281+
if (cnt == self.size):
282+
break
283+
242284
self.createList()
243-
'''
285+
244286
def change(self, dim, coords):
245287
self.array_group.empty()
246288
self.dim = dim

UI/UI.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,9 @@ def __init__(self, window, screen_group, sorting_group, aux_sorting_group, scrol
151151
self.sorting_group = sorting_group
152152
self.aux_sorting_group = aux_sorting_group
153153
sorting_group.empty()
154+
155+
self.array_config = [self.array_length, 1, self.array_length]
156+
self.list = [i for i in range(1, self.array_length+1)]
154157
#print("{},{} {},{}".format(self.SORTING_WIDTH, self.SORTING_HEIGHT, self.SORTING_X - self.SORTING_WIDTH/2, self.SORTING_Y - self.SORTING_HEIGHT/2))
155158
self.array = Array(sorting_group, (self.SORTING_WIDTH, self.SORTING_HEIGHT), (self.SORTING_X - self.SORTING_WIDTH/2, self.SORTING_Y - self.SORTING_HEIGHT/2), 1, self.array_length, midi)
156159
self.aux_array = None
@@ -162,6 +165,7 @@ def update(self):
162165
# self.scroll_bar[0] = reset scroll
163166
# self.scroll_bar[1] = sort scroll
164167
# Glitch where it will click the button behind it
168+
#print(len(self.list))
165169
if (self.window.options_screen and self.handled != 1):
166170
#print("options extended")
167171
self.scroll_bar[0].set_unpressable()
@@ -237,9 +241,9 @@ def func():
237241
for sort_input in Sorting.sorting_algos:
238242
buttons.append(Wrapper.ScrollButton(Wrapper.DefaultText.text(sort_input.name, Wrapper.FontSizes.BUTTON_SIZE), bind_function(sort_input), self.window))
239243

240-
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Sorted", Wrapper.FontSizes.BUTTON_SIZE), self.array.reset, self.window))
241-
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Reverse", Wrapper.FontSizes.BUTTON_SIZE), self.array.reset, self.window))
242-
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Previous File", Wrapper.FontSizes.BUTTON_SIZE), self.array.reset, self.window))
244+
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Sorted", Wrapper.FontSizes.BUTTON_SIZE), Wrapper.sequential_functions(self.on_reset, self.array.reset), self.window))
245+
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Reverse", Wrapper.FontSizes.BUTTON_SIZE), Wrapper.sequential_functions(self.on_reset, self.array.reverse), self.window))
246+
resets.append(Wrapper.ScrollButton(Wrapper.DefaultText.text("Previous File", Wrapper.FontSizes.BUTTON_SIZE), Wrapper.sequential_functions(self.on_reset, self.array.load_config), self.window))
243247

244248
# Button Constants
245249
button_col_top = 130 # Where the buttons start
@@ -318,7 +322,9 @@ def custom_array(self):
318322
tkinter.Tk().withdraw() # prevents an empty tkinter window from appearing
319323
self.file = filedialog.askopenfilename()
320324
f = open(self.file, 'r')
321-
array_config = list(map(int, f.readline().split()))
322-
array = list(map(int, f.readline().split()))
323-
self.array.change_array(array_config[1], array_config[2], array_config[0], array)
325+
self.array_config.clear()
326+
self.list.clear()
327+
self.array_config = list(map(int, f.readline().split()))
328+
self.list = list(map(int, f.readline().split()))
329+
self.array.change_array(self.array_config[1], self.array_config[2], self.array_config[0], self.list)
324330

0 commit comments

Comments
 (0)