Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/cca/diff/766236a9c924/Interface.py
Дата изменения: Unknown
Дата индексирования: Sun Feb 3 10:48:36 2013
Кодировка:
cca: Interface.py diff

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