replace optionMenu (deprecated in pygtk 2.4) by comboBox
This commit is contained in:
		
							parent
							
								
									3eb2764bd2
								
							
						
					
					
						commit
						ef3111cdcc
					
				
					 2 changed files with 50 additions and 108 deletions
				
			
		|  | @ -263,76 +263,7 @@ | ||||||
|       </child> |       </child> | ||||||
| 
 | 
 | ||||||
|       <child> |       <child> | ||||||
| 	<widget class="GtkOptionMenu" id="optionmenu"> | 	<placeholder/> | ||||||
| 	  <property name="visible">True</property> |  | ||||||
| 	  <property name="can_focus">True</property> |  | ||||||
| 	  <property name="history">0</property> |  | ||||||
| 	  <signal name="changed" handler="on_optionmenu_changed" last_modification_time="Thu, 11 Mar 2004 18:16:58 GMT"/> |  | ||||||
| 
 |  | ||||||
| 	  <child> |  | ||||||
| 	    <widget class="GtkMenu" id="menu_status"> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="online"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">Online</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="away"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">Away</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="xa"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">NA</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="dnd"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">DND</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="invisible"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">Invisible</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkMenuItem" id="menuitem6"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 
 |  | ||||||
| 	      <child> |  | ||||||
| 		<widget class="GtkImageMenuItem" id="offline"> |  | ||||||
| 		  <property name="visible">True</property> |  | ||||||
| 		  <property name="label" translatable="yes">Offline</property> |  | ||||||
| 		  <property name="use_underline">True</property> |  | ||||||
| 		</widget> |  | ||||||
| 	      </child> |  | ||||||
| 	    </widget> |  | ||||||
| 	  </child> |  | ||||||
| 	</widget> |  | ||||||
| 	<packing> |  | ||||||
| 	  <property name="padding">0</property> |  | ||||||
| 	  <property name="expand">False</property> |  | ||||||
| 	  <property name="fill">False</property> |  | ||||||
| 	</packing> |  | ||||||
|       </child> |       </child> | ||||||
|     </widget> |     </widget> | ||||||
|   </child> |   </child> | ||||||
|  | @ -3645,8 +3576,7 @@ on the server.</property> | ||||||
| 	    <widget class="GtkNotebook" id="preferences_notebook"> | 	    <widget class="GtkNotebook" id="preferences_notebook"> | ||||||
| 	      <property name="border_width">10</property> | 	      <property name="border_width">10</property> | ||||||
| 	      <property name="visible">True</property> | 	      <property name="visible">True</property> | ||||||
| 	      <property name="can_focus">True</property> | 	      <property name="show_tabs">False</property> | ||||||
| 	      <property name="show_tabs">True</property> |  | ||||||
| 	      <property name="show_border">False</property> | 	      <property name="show_border">False</property> | ||||||
| 	      <property name="tab_pos">GTK_POS_TOP</property> | 	      <property name="tab_pos">GTK_POS_TOP</property> | ||||||
| 	      <property name="scrollable">False</property> | 	      <property name="scrollable">False</property> | ||||||
|  | @ -4204,7 +4134,7 @@ on the server.</property> | ||||||
| 			    <widget class="GtkEntry" id="entry2"> | 			    <widget class="GtkEntry" id="entry2"> | ||||||
| 			      <property name="visible">True</property> | 			      <property name="visible">True</property> | ||||||
| 			      <property name="can_focus">True</property> | 			      <property name="can_focus">True</property> | ||||||
| 			      <property name="editable">True</property> | 			      <property name="editable">False</property> | ||||||
| 			      <property name="visibility">True</property> | 			      <property name="visibility">True</property> | ||||||
| 			      <property name="max_length">0</property> | 			      <property name="max_length">0</property> | ||||||
| 			      <property name="text" translatable="yes"></property> | 			      <property name="text" translatable="yes"></property> | ||||||
|  |  | ||||||
|  | @ -1380,16 +1380,18 @@ class roster_Window: | ||||||
| 			txt = status | 			txt = status | ||||||
| 		self.send_status(account, status, txt) | 		self.send_status(account, status, txt) | ||||||
| 
 | 
 | ||||||
| 	def on_optionmenu_changed(self, widget): | 	def on_cb_changed(self, widget): | ||||||
| 		"""When we change our status""" | 		"""When we change our status""" | ||||||
| 		optionmenu =  self.xml.get_widget('optionmenu') | 		model = self.cb.get_model() | ||||||
| 		history = optionmenu.get_history() | 		active = self.cb.get_active() | ||||||
| 		status = optionmenu.get_menu().get_children()[history].name | 		if active < 0: | ||||||
|  | 			return | ||||||
|  | 		status = model[active][0] | ||||||
| 		if status != 'online' and status != 'offline': | 		if status != 'online' and status != 'offline': | ||||||
| 			w = awayMsg_Window(self.plugin) | 			w = awayMsg_Window(self.plugin) | ||||||
| 			txt = w.run() | 			txt = w.run() | ||||||
| 			if txt == -1: | 			if txt == -1: | ||||||
| 				self.set_optionmenu() | 				self.set_cb() | ||||||
| 				return | 				return | ||||||
| 		else: | 		else: | ||||||
| 			txt = status | 			txt = status | ||||||
|  | @ -1403,16 +1405,15 @@ class roster_Window: | ||||||
| 					continue | 					continue | ||||||
| 			self.send_status(acct, status, txt) | 			self.send_status(acct, status, txt) | ||||||
| 	 | 	 | ||||||
| 	def set_optionmenu(self): | 	def set_cb(self): | ||||||
| 		#table to change index in plugin.connected to index in optionmenu | 		#table to change index in plugin.connected to index in combobox | ||||||
| 		table = {0:6, 1:0, 2:1, 3:2, 4:3, 5:4} | 		table = {0:5, 1:0, 2:1, 3:2, 4:3, 5:4} | ||||||
| 		maxi = max(self.plugin.connected.values()) | 		maxi = max(self.plugin.connected.values()) | ||||||
| 		optionmenu = self.xml.get_widget('optionmenu') |  | ||||||
| 		#temporarily block signal in order not to send status that we show | 		#temporarily block signal in order not to send status that we show | ||||||
| 		#in the optionmenu | 		#in the combobox | ||||||
| 		optionmenu.handler_block(self.id_signal_optionmenu) | 		self.cb.handler_block(self.id_signal_cb) | ||||||
| 		optionmenu.set_history(table[maxi]) | 		self.cb.set_active(table[maxi]) | ||||||
| 		optionmenu.handler_unblock(self.id_signal_optionmenu) | 		self.cb.handler_unblock(self.id_signal_cb) | ||||||
| 		statuss = ['offline', 'online', 'away', 'xa', 'dnd', 'invisible'] | 		statuss = ['offline', 'online', 'away', 'xa', 'dnd', 'invisible'] | ||||||
| 		self.plugin.systray.set_status(statuss[maxi]) | 		self.plugin.systray.set_status(statuss[maxi]) | ||||||
| 
 | 
 | ||||||
|  | @ -1431,7 +1432,7 @@ class roster_Window: | ||||||
| 				for user in luser: | 				for user in luser: | ||||||
| 					self.chg_user_status(user, 'offline', 'Disconnected', account) | 					self.chg_user_status(user, 'offline', 'Disconnected', account) | ||||||
| 		self.plugin.connected[account] = statuss.index(status) | 		self.plugin.connected[account] = statuss.index(status) | ||||||
| 		self.set_optionmenu() | 		self.set_cb() | ||||||
| 
 | 
 | ||||||
| 	def on_message(self, jid, msg, tim, account): | 	def on_message(self, jid, msg, tim, account): | ||||||
| 		"""when we receive a message""" | 		"""when we receive a message""" | ||||||
|  | @ -1652,8 +1653,8 @@ class roster_Window: | ||||||
| 					pix = gtk.gdk.pixbuf_new_from_file(file) | 					pix = gtk.gdk.pixbuf_new_from_file(file) | ||||||
| 					image.set_from_pixbuf(pix) | 					image.set_from_pixbuf(pix) | ||||||
| 				break | 				break | ||||||
| 		for state in ('online', 'away', 'xa', 'dnd', 'invisible', 'offline'): | #		for state in ('online', 'away', 'xa', 'dnd', 'invisible', 'offline'): | ||||||
| 			self.xml.get_widget(state).set_image(self.pixbufs[state]) | #			self.xml.get_widget(state).set_image(self.pixbufs[state]) | ||||||
| 
 | 
 | ||||||
| 	def on_show_off(self, widget): | 	def on_show_off(self, widget): | ||||||
| 		"""when show offline option is changed : | 		"""when show offline option is changed : | ||||||
|  | @ -1808,7 +1809,21 @@ class roster_Window: | ||||||
| 		model.set_sort_column_id(1, gtk.SORT_ASCENDING) | 		model.set_sort_column_id(1, gtk.SORT_ASCENDING) | ||||||
| 		self.tree.set_model(model) | 		self.tree.set_model(model) | ||||||
| 		self.mkpixbufs() | 		self.mkpixbufs() | ||||||
| 		self.xml.get_widget('optionmenu').set_history(6) | 
 | ||||||
|  | 		liststore = gtk.ListStore(gobject.TYPE_STRING, gtk.Image) | ||||||
|  | 		self.cb = gtk.ComboBox() | ||||||
|  | 		self.xml.get_widget('vbox1').pack_end(self.cb, False) | ||||||
|  | 		cell = ImageCellRenderer() | ||||||
|  | 		self.cb.pack_start(cell, False) | ||||||
|  | 		self.cb.add_attribute(cell, 'image', 1) | ||||||
|  | 		cell = gtk.CellRendererText() | ||||||
|  | 		self.cb.pack_start(cell, True) | ||||||
|  | 		self.cb.add_attribute(cell, 'text', 0) | ||||||
|  | 		for status in ['online', 'away', 'xa', 'dnd', 'invisible', 'offline']: | ||||||
|  | 			iter = liststore.append([status, self.pixbufs[status]]) | ||||||
|  | 		self.cb.show_all() | ||||||
|  | 		self.cb.set_model(liststore) | ||||||
|  | 		self.cb.set_active(5) | ||||||
| 
 | 
 | ||||||
| 		showOffline = self.plugin.config['showoffline'] | 		showOffline = self.plugin.config['showoffline'] | ||||||
| 		self.xml.get_widget('show_offline').set_active(showOffline) | 		self.xml.get_widget('show_offline').set_active(showOffline) | ||||||
|  | @ -1853,9 +1868,7 @@ class roster_Window: | ||||||
| 		self.xml.signal_connect('on_quit_activate', self.on_quit) | 		self.xml.signal_connect('on_quit_activate', self.on_quit) | ||||||
| 		self.xml.signal_connect('on_treeview_event', self.on_treeview_event) | 		self.xml.signal_connect('on_treeview_event', self.on_treeview_event) | ||||||
| 		self.xml.signal_connect('on_status_changed', self.on_status_changed) | 		self.xml.signal_connect('on_status_changed', self.on_status_changed) | ||||||
| 		optionmenu = self.xml.get_widget('optionmenu') | 		self.id_signal_cb = self.cb.connect('changed', self.on_cb_changed) | ||||||
| 		self.id_signal_optionmenu = optionmenu.connect('changed', \ |  | ||||||
| 			self.on_optionmenu_changed) |  | ||||||
| 		self.xml.signal_connect('on_row_activated', self.on_row_activated) | 		self.xml.signal_connect('on_row_activated', self.on_row_activated) | ||||||
| 		self.xml.signal_connect('on_row_expanded', self.on_row_expanded) | 		self.xml.signal_connect('on_row_expanded', self.on_row_expanded) | ||||||
| 		self.xml.signal_connect('on_row_collapsed', self.on_row_collapsed) | 		self.xml.signal_connect('on_row_collapsed', self.on_row_collapsed) | ||||||
|  | @ -1904,10 +1917,9 @@ class systray: | ||||||
| 		self.status = status | 		self.status = status | ||||||
| 		self.set_img() | 		self.set_img() | ||||||
| 
 | 
 | ||||||
| 	def set_optionmenu(self, widget, status): | 	def set_cb(self, widget, status): | ||||||
| 		optionmenu = self.plugin.roster.xml.get_widget('optionmenu') |  | ||||||
| 		statuss = ['online', 'away', 'xa', 'dnd', 'invisible', 'vide', 'offline'] | 		statuss = ['online', 'away', 'xa', 'dnd', 'invisible', 'vide', 'offline'] | ||||||
| 		optionmenu.set_history(statuss.index(status)) | 		self.cb.set_active(statuss.index(status)) | ||||||
| 
 | 
 | ||||||
| 	def start_chat(self, widget, account, jid): | 	def start_chat(self, widget, account, jid): | ||||||
| 		if self.plugin.windows[account]['chats'].has_key(jid): | 		if self.plugin.windows[account]['chats'].has_key(jid): | ||||||
|  | @ -1928,24 +1940,24 @@ class systray: | ||||||
| 		item.set_submenu(menu_sub) | 		item.set_submenu(menu_sub) | ||||||
| 		item = gtk.MenuItem(_("Online")) | 		item = gtk.MenuItem(_("Online")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'online') | 		item.connect("activate", self.set_cb, 'online') | ||||||
| 		item = gtk.MenuItem(_("Away")) | 		item = gtk.MenuItem(_("Away")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'away') | 		item.connect("activate", self.set_cb, 'away') | ||||||
| 		item = gtk.MenuItem(_("NA")) | 		item = gtk.MenuItem(_("NA")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'xa') | 		item.connect("activate", self.set_cb, 'xa') | ||||||
| 		item = gtk.MenuItem(_("DND")) | 		item = gtk.MenuItem(_("DND")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'dnd') | 		item.connect("activate", self.set_cb, 'dnd') | ||||||
| 		item = gtk.MenuItem(_("Invisible")) | 		item = gtk.MenuItem(_("Invisible")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'invisible') | 		item.connect("activate", self.set_cb, 'invisible') | ||||||
| 		item = gtk.MenuItem() | 		item = gtk.MenuItem() | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item = gtk.MenuItem(_("Offline")) | 		item = gtk.MenuItem(_("Offline")) | ||||||
| 		menu_sub.append(item) | 		menu_sub.append(item) | ||||||
| 		item.connect("activate", self.set_optionmenu, 'offline') | 		item.connect("activate", self.set_cb, 'offline') | ||||||
| 		 | 		 | ||||||
| 		item = gtk.MenuItem() | 		item = gtk.MenuItem() | ||||||
| 		menu.append(item) | 		menu.append(item) | ||||||
|  | @ -2381,12 +2393,12 @@ class plugin: | ||||||
| 			'autoxa':1,\ | 			'autoxa':1,\ | ||||||
| 			'autoxatime':20,\ | 			'autoxatime':20,\ | ||||||
| 			'last_msg':'',\ | 			'last_msg':'',\ | ||||||
| 			'msg1_name':'Brb',\ | 			'msg0_name':'Brb',\ | ||||||
| 			'msg1':'Back in some minutes.',\ | 			'msg0':'Back in some minutes.',\ | ||||||
| 			'msg2_name':'Eating',\ | 			'msg1_name':'Eating',\ | ||||||
| 			'msg2':'I\'m eating, so let a message.',\ | 			'msg1':'I\'m eating, so let a message.',\ | ||||||
| 			'msg3_name':'Film',\ | 			'msg2_name':'Film',\ | ||||||
| 			'msg3':'I\'m watching a film.',\ | 			'msg2':'I\'m watching a film.',\ | ||||||
| 			'trayicon':1,\ | 			'trayicon':1,\ | ||||||
| 			'iconstyle':'sun',\ | 			'iconstyle':'sun',\ | ||||||
| 			'inmsgcolor':'#ff0000',\ | 			'inmsgcolor':'#ff0000',\ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue