cca
diff Interface.py @ 65:766236a9c924
some correction in delete_state, add fix #15, fix #9
author | is_rusinov |
---|---|
date | Sat, 11 Dec 2010 14:35:01 +0300 |
parents | 6f328d849ba8 |
children | 930e2f5f65f1 |
line diff
1.1 --- a/Interface.py Sat Dec 11 14:02:45 2010 +0300 1.2 +++ b/Interface.py Sat Dec 11 14:35:01 2010 +0300 1.3 @@ -273,8 +273,15 @@ 1.4 for key in self.keys.keys(): 1.5 if self.keys[key] == index: 1.6 del self.keys[key] 1.7 - self.selected_state = index 1.8 + del automata.states[index] 1.9 + if index in automata.states: 1.10 + self.selected_state = index 1.11 + elif len(automata.states): 1.12 + self.selected_state = len(automata.states) - 1 1.13 + else: 1.14 + self.selected_state = None 1.15 self.refresh_list() 1.16 + self.select_item(self.selected_state) 1.17 1.18 def add(self):# add new state 1.19 name = state_name.get() 1.20 @@ -283,8 +290,8 @@ 1.21 color = state_color.cget("bg") 1.22 nums = [] 1.23 for i, value in enumerate(ckeckbox_nums): 1.24 - if value: 1.25 - nums.append(i) 1.26 + if value.get() == 1: 1.27 + nums.append(i) 1.28 if self.keys.has_key(key): 1.29 error.config(text="State with such key has already existed") 1.30 state_key.focus() 1.31 @@ -303,7 +310,9 @@ 1.32 automata.symbols[symbol] = len(automata.states) - 1 1.33 self.keys[key] = len(automata.states) - 1 1.34 error.config(text="") 1.35 + self.selected_state = len(automata.states) - 1 1.36 self.refresh_list() 1.37 + self.select_item(self.selected_state) 1.38 1.39 def change(self):# change chosen state 1.40 selected = self.selected_state 1.41 @@ -350,17 +359,16 @@ 1.42 1.43 def hide_automata_window(self): 1.44 automata_window.withdraw() 1.45 + 1.46 def refresh_list(self): 1.47 state_list.delete(0, "end") 1.48 for state in automata.states: 1.49 state_list.insert("end", state) 1.50 if self.selected_state != None: 1.51 state_list.selection_set(self.selected_state) 1.52 - def list_mouse_release(self, event): 1.53 - selected = state_list.curselection() 1.54 - self.selected_state = int(selected[0]) 1.55 - if len(selected): 1.56 - index = int(selected[0]) 1.57 + 1.58 + def select_item(self, index): 1.59 + if index != None: 1.60 state = automata.states[index] 1.61 state_name.delete(0, "end") 1.62 state_name.insert(0, state.name) 1.63 @@ -373,12 +381,23 @@ 1.64 state_color.config(bg=state.color) 1.65 for i in range(9): 1.66 ckeckbox_nums[i].set(i in state.nums) 1.67 + else: 1.68 + state_name.delete(0, "end") 1.69 + state_symbol.delete(0, "end") 1.70 + state_key.delete(0, "end") 1.71 + state_color.config(bg="white") 1.72 + for i in range(9): 1.73 + ckeckbox_nums[i].set(False) 1.74 1.75 + def list_mouse_release(self, event): 1.76 + selected = state_list.curselection() 1.77 + self.selected_state = int(selected[0]) 1.78 + if len(selected): 1.79 + self.select_item(self.selected_state) 1.80 def choose_color(self, event): 1.81 state_color.config(bg=tkColorChooser.askcolor()[1]) 1.82 1.83 1.84 - 1.85 root = Tk() 1.86 root.title("Cyclic Cellular Automata") 1.87