File obmenu-python3.patch of Package obmenu

diff '-urx*.glade' obmenu-1.0/obmenu obmenu-1.0.mod/obmenu
--- obmenu-1.0/obmenu	2006-02-02 13:03:38.000000000 +0100
+++ obmenu-1.0.mod/obmenu	2020-05-30 02:30:21.035194307 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 #  Openbox Menu Editor 1.0 beta
 # 
@@ -18,7 +18,10 @@
 #    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-import obxml, gtk, gtk.glade, gobject, random, time, os, sys
+import obxml, random, time, os, sys
+import gi
+gi.require_version("Gtk", "3.0")
+from gi.repository import Gtk
 
 class App:
 	def reconfigureOpenbox(self):
@@ -43,8 +46,7 @@
 	
 	def deleteTree(self):
 		# treemodel.iter(label, type, [action], [execute], parent, [menu-id])
-		self.treemodel=gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
-				gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+		self.treemodel=Gtk.TreeStore(str, str, str, str, str, str)
 		self.treeview.set_model(self.treemodel)
 		
 	# Sets the state of "menu modified"
@@ -53,10 +55,10 @@
 		self.sth_changed = op
 		if op: s = "(*)"
 		else: s = ""
-		self.arbol.get_widget("window1").set_title("Obmenu: %s %s" % (self.menu_path, s))
+		self.glade.get_object("window1").set_title("Obmenu: %s %s" % (self.menu_path, s))
 	
 	# Auxiliary function for model.foreach()
-	def _change_id(self, model, path, it,(old_id, new_id)):
+	def _change_id(self, model, path, it, old_id, new_id ):
 		mid = model.get_value(it,5)
 		if mid == old_id:
 			model.set(it, 5, new_id)
@@ -74,7 +76,7 @@
 		self.auto_change = False
 	
 	def confirm(self, message):
-		dlg = gtk.MessageDialog(None,0,gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO,message)
+		dlg = Gtk.MessageDialog(None,0,Gtk.MessageType.WARNING, Gtk.ButtonsType.YES_NO,message)
 		res = dlg.run()
 		dlg.destroy()
 		if res == -8: return True
@@ -82,10 +84,10 @@
 	
 	def ask_for_path(self, title, op):
 		if op == 0:
-			action = gtk.FILE_CHOOSER_ACTION_OPEN
+			action = Gtk.FileChooserAction.OPEN
 		else:
-			action = gtk.FILE_CHOOSER_ACTION_SAVE
-		dlg = gtk.FileChooserDialog(title,None,action,(gtk.STOCK_OK, 1, gtk.STOCK_CANCEL, 3))
+			action = Gtk.FileChooserAction.SAVE
+		dlg = Gtk.FileChooserDialog(title,None,action,(Gtk.STOCK_OK, 1, Gtk.STOCK_CANCEL, 3))
 		dlg.set_default_response(1)
 		res = dlg.run()
 		flnm = dlg.get_filename()
@@ -93,7 +95,7 @@
 		if res == 1: return flnm
 	
 	#  New file clicked
-	def new(self, bt):
+	def new_clicked(self, bt):
 		if self.sth_changed:
 			res = self.confirm("Changes in %s will be lost. Continue?" % (self.menu_path))
 			if not res: return
@@ -104,7 +106,7 @@
 		self._sth_changed(True)
 		self.clear_fields()
 		
-	def open(self, bt):
+	def open_clicked(self, bt):
 		if self.sth_changed:
 			res = self.confirm("Changes in %s will be lost. Continue?" % (self.menu_path))
 			if not res: return
@@ -123,7 +125,7 @@
 		self.clear_fields()
 		
 	# save the menu
-	def save(self, bt):
+	def save_clicked(self, bt):
 		if self.unsaved_menu:
 			path = self.ask_for_path("Save as...", 1)
 			if not path: return
@@ -134,7 +136,7 @@
 		self._sth_changed(False)
 	
 	# save as...
-	def save_as(self, bt):
+	def save_as_clicked(self, bt):
 		path = self.ask_for_path("Save as...", 1)
 		if not path: return
 		self.menu_path = path
@@ -144,18 +146,18 @@
 		self.reconfigureOpenbox()
 	
 	# quit signal
-	def quit (self, bt, arg2):
+	def exit (self, bt, arg2):
 		if self.sth_changed:
 			res = self.confirm("There are unsaved changes. Exit anyway?")
 			if not res: return True
-		gtk.main_quit()
+		Gtk.main_quit()
 	
 	# file->quit menu signal
 	def mnu_quit (self, bt):
-		self.quit(None,None)
+		self.exit(None,None)
 	
 	# id_entry changed signal
-	def change_id(self, pa):
+	def id_changed(self, pa):
 		if self.auto_change: return
 		self._sth_changed(True)
 		
@@ -179,10 +181,10 @@
 		else:
 			if old_id != new_id and not self.menu.isMenu(new_id):				
 				self.menu.replaceId(old_id, new_id)
-				model.foreach(self._change_id, (old_id, new_id))
+				model.foreach(self._change_id,  old_id, new_id )
 	
 	# label_entry changed signal
-	def change_label(self, pa):
+	def label_changed(self, pa):
 		if self.auto_change: return
 		self._sth_changed(True)
 		(model, ite) = self.treeview.get_selection().get_selected()
@@ -201,7 +203,7 @@
 		model.set(ite, 0, lb)
 	
 	# action_combo_box changed signal
-	def change_action(self, pa):
+	def action_changed(self, pa):
 		if self.auto_change: return
 		self._sth_changed(True)
 		(model, ite) = self.treeview.get_selection().get_selected()
@@ -230,7 +232,7 @@
 			model.set(ite, 2, action, 3, eee)	
 	
 	# execute_entry changed signal
-	def change_execute(self, pa):
+	def execute_changed(self, pa):
 		if self.auto_change: return
 		self._sth_changed(True)
 		(model, ite) = self.treeview.get_selection().get_selected()
@@ -260,7 +262,7 @@
 			self.remove(None)
 	
 	# treeview clicked signal
-	def treeview_changed(self, param):
+	def on_treeview1(self, param):
 		(model, ite) = param.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -299,7 +301,7 @@
 		self.auto_change = False
 	
 	# new menu button clicked
-	def new_menu(self, param):
+	def menu_clicked(self, param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		
 		if ite:
@@ -308,7 +310,7 @@
 			n = model.get_path(ite)[-1]
 		else:
 			menu = None
-			parent = model.get_iter_root()
+			parent = model.get_iter_first()
 			n = 0
 		
 		nmid="%s-%d%d%d" % (menu, random.randint(0,99), time.gmtime()[4], time.gmtime()[5])
@@ -326,7 +328,7 @@
 		self._sth_changed(True)
 	
 	# new item button clicked
-	def new_item(self,param):
+	def item_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -346,7 +348,7 @@
 		self._sth_changed(True)
 	
 	# new separator button clicked
-	def new_separator(self,param):
+	def separator_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -365,7 +367,7 @@
 		self._sth_changed(True)
 
 	# new link button clicked
-	def new_link(self,param):
+	def link_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -386,7 +388,7 @@
 		self._sth_changed(True)
 
 	# new pipe button clicked
-	def new_pipe(self,param):
+	def pipe_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -407,7 +409,7 @@
 		self._sth_changed(True)
 
 	# up button clicked
-	def up(self,param):
+	def up_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -424,7 +426,7 @@
 			model.move_before(ite,upper)
 	
 	# down button clicked
-	def down(self,param):
+	def down_clicked(self,param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		(label, tipe, action, exe, menu, mid) = model.get(ite,0,1,2,3,4,5)
@@ -440,7 +442,7 @@
 			model.move_after(ite,upper)
 	
 	# remove button clicked
-	def remove(self, param):
+	def remove_clicked(self, param):
 		(model, ite) = self.treeview.get_selection().get_selected()
 		if not ite: return
 		self._sth_changed(True)
@@ -460,11 +462,16 @@
 	def mnu_remove(self, param):
 		if self.treeview.is_focus():
 			self.remove(None)
-	
+
 	def show_about(self, args):
 		#gtk.glade.XML("/usr/local/share/obmenu/obmenu.glade", "aboutdialog1")
-		gtk.glade.XML(self.gladefile, "aboutdialog1")
-		
+		self.glade.add_from_file(os.path.dirname(self.gladefile)+"obmenu_about.glade")
+		self.glade.connect_signals (self)
+		self.about = self.glade.get_object("aboutdialog1")
+
+	def about_hide(self, arg1, arg2):
+		self.about.destroy()
+
 	# application init
 	def init(self):
 		if len(sys.argv) == 2:
@@ -473,20 +480,20 @@
 		elif len(sys.argv) == 1:
 			self.menu_path = os.getenv("HOME") + "/.config/openbox/menu.xml"
 		else:
-			print "Error: Wrong number of arguments"
-			print "Usage: obmenu /path/to/menu.xml"
-			print "\tOr just obmenu, to edit the default file"
-			return
-			
-		if not os.path.isfile(self.menu_path):
-			print "Error: \"%s\" not found" % self.menu_path
+			print("Error: Wrong number of arguments")
+			print("Usage: obmenu /path/to/menu.xml")
+			print("\tOr just obmenu, to edit the default file")
 			return
 		
 		self.unsaved_menu = False
 		
 		# Load in memory the real xml menu
 		self.menu = obxml.ObMenu()
-		self.menu.loadMenu(self.menu_path)
+		if os.path.isfile(self.menu_path):
+			self.menu.loadMenu(self.menu_path)
+		else:
+			print("Error: \"%s\" not found" % self.menu_path)
+			self.menu.newMenu()
 		
 		# Look for my glade file!
 		if os.path.isfile("obmenu.glade"):
@@ -497,73 +504,50 @@
 		elif os.path.isfile("/usr/share/obmenu/obmenu.glade"):
 			self.gladefile = "/usr/share/obmenu/obmenu.glade"
 		else:
-			print "ERROR: obmenu.glade not found!"
-			print "       check that everything was installed all right"
+			print("ERROR: obmenu.glade not found!")
+			print("       check that everything was installed all right")
 			sys.exit(1)
 		
 		# Set the basics for GTK
-		self.arbol = gtk.glade.XML(self.gladefile, "window1")
+		self.glade = Gtk.Builder()
+		self.glade.add_from_file(self.gladefile)
+		self.arbol = self.glade.get_object("window1")
+		
+		self.treeview=self.glade.get_object("treeview1")
+		self.label_entry = self.glade.get_object("entry1")
+		self.action_entry = self.glade.get_object("combobox1")
+		self.execute_entry = self.glade.get_object("entry2")
+		self.execute_srch = self.glade.get_object("button1")
+		self.id_entry = self.glade.get_object("entry3")
 		
-		self.treeview=self.arbol.get_widget("treeview1")
-		self.label_entry = self.arbol.get_widget("entry1")
-		self.action_entry = self.arbol.get_widget("combobox1")
-		self.execute_entry = self.arbol.get_widget("entry2")
-		self.execute_srch = self.arbol.get_widget("button1")
-		self.id_entry = self.arbol.get_widget("entry3")
-		
-
 		# treemodel.iter(label, type, [action], [execute], parent, [menu-id])
-		self.treemodel=gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
-				gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+		self.treemodel=Gtk.TreeStore(str, str, str, str, str, str)
 		self.treeview.set_model(self.treemodel)
 		
 		# Signals
-		self.arbol.signal_autoconnect ({
-			"new_clicked": self.new,
-			"open_clicked": self.open,
-			"save_clicked": self.save,
-			"save_as_clicked": self.save_as,
-			"mnu_quit": self.mnu_quit,
-			"mnu_remove": self.mnu_remove,
-			"label_changed": self.change_label,
-			"id_changed": self.change_id,
-			"action_changed": self.change_action,
-			"execute_changed": self.change_execute,
-			"action_changed": self.change_action,
-			"search_clicked": self.search_clicked,
-			"on_treeview1": self.treeview_changed,
-			"tree_key_pressed": self.tree_key_pressed,
-			"menu_clicked": self.new_menu,
-			"item_clicked": self.new_item,
-			"separator_clicked": self.new_separator,
-			"pipe_clicked": self.new_pipe,
-			"link_clicked": self.new_link,
-			"remove_clicked": self.remove,
-			"up_clicked": self.up,
-			"down_clicked": self.down,
-			"show_about": self.show_about,
-			"exit": self.quit })
+		self.glade.connect_signals (self)
+		#self.about.connect("delete-event", self.about_hide)
 		
 		# Set the columns
 		self.treeview.set_headers_visible(True)
 		
-		renderer=gtk.CellRendererText()
-		column=gtk.TreeViewColumn("Label",renderer, text=0)
+		renderer=Gtk.CellRendererText()
+		column=Gtk.TreeViewColumn("Label",renderer, text=0)
 		column.set_resizable(True)
 		self.treeview.append_column(column)
 		
-		renderer=gtk.CellRendererText()
-		column=gtk.TreeViewColumn("Type",renderer,text=1)
+		renderer=Gtk.CellRendererText()
+		column=Gtk.TreeViewColumn("Type",renderer,text=1)
 		column.set_resizable(True)
 		self.treeview.append_column(column)
 		
-		renderer=gtk.CellRendererText()
-		column=gtk.TreeViewColumn("Action",renderer,text=2)
+		renderer=Gtk.CellRendererText()
+		column=Gtk.TreeViewColumn("Action",renderer,text=2)
 		column.set_resizable(True)
 		self.treeview.append_column(column)
 		
-		renderer=gtk.CellRendererText()
-		column=gtk.TreeViewColumn("Execute",renderer,text=3)
+		renderer=Gtk.CellRendererText()
+		column=Gtk.TreeViewColumn("Execute",renderer,text=3)
 		column.set_resizable(True)
 		self.treeview.append_column(column)
 		
@@ -575,7 +559,7 @@
 		self.createTree(None, None)
 		
 		# Let's roll!
-		gtk.main()
+		Gtk.main()
 
 if __name__ == "__main__":
 	app = App()
diff '-urx*.glade' obmenu-1.0/obxml.py obmenu-1.0.mod/obxml.py
--- obmenu-1.0/obxml.py	2006-02-01 00:26:38.000000000 +0100
+++ obmenu-1.0.mod/obxml.py	2020-05-31 16:28:48.615268578 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 #  Openbox Menu Editor 1.0 beta
 # 
@@ -149,7 +149,7 @@
 	# Most of them are self-explanatory
 				
 	def loadMenu(self, filename):
-		fil = open(filename)
+		fil = open(filename, encoding='utf-8')
 		self.dom = xml.dom.minidom.parseString(fil.read())
 		fil.close()
 	
@@ -163,20 +163,20 @@
 		"<?xml version=\"1.0\" ?><openbox_pipe_menu></openbox_pipe_menu>")
 	
 	def saveMenu(self, filename):
-		output = open(filename, "w")
-		for line in self.dom.toprettyxml("\t","\n","utf-8").splitlines():
+		output = open(filename, "w", encoding='utf-8')
+		for line in self.dom.toprettyxml("\t","\n","utf-8").decode("utf-8").splitlines():
 			if line.strip() != "":
 				output.write("%s\n" %(line))
 		output.close()
 	
 	def printXml(self):
-		for line in self.dom.toprettyxml("\t","\n","utf-8").splitlines():
+		for line in self.dom.toprettyxml("\t","\n","utf-8").decode("utf-8").splitlines():
 			if line.strip() != "":
-				print line
+				print(line)
 	
 	def getXml(self):
 		res = ""
-		for line in self.dom.toprettyxml("\t","\n","utf-8").splitlines():
+		for line in self.dom.toprettyxml("\t","\n","utf-8").decode("utf-8").splitlines():
 			if line.strip() != "":
 				res = res + "%s\n" % (line)
 		return res
@@ -354,5 +354,5 @@
 					self.replaceId(old_id, new_id, item)
 
 if __name__ == "__main__":
-	print "This is a module. Use obmenu instead."
+	print("This is a module. Use obmenu instead.")
 	exit(0)
diff '-urx*.glade' obmenu-1.0/pipes/obm-dir obmenu-1.0.mod/pipes/obm-dir
--- obmenu-1.0/pipes/obm-dir	2006-01-22 15:02:40.000000000 +0100
+++ obmenu-1.0.mod/pipes/obm-dir	2020-05-31 16:21:59.565686143 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python -O
+#!/usr/bin/python3 -O
 #########################################################################
 #  Copyright 2005 Manuel Colmenero 
 #
@@ -21,13 +21,14 @@
 # This is an example of what the obxml module can do
 
 import obxml, sys, os, time
+sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
 
 def alfabetiza(lista):
 	dic = {}
 	
 	for each in lista:
 		k = each[0].lower()
-		if not dic.has_key(k):
+		if not k in dic:
 			dic[k] = [each]
 		else:
 			dic[k].append(each)
@@ -45,7 +46,7 @@
 		n = 0
 		primera = ""
 		alf = alfabetiza(lista)
-		ids = alf.keys()
+		ids = list(alf)
 		ids.sort()
 		for k in ids:
 			if primera == "": primera = k
@@ -64,8 +65,7 @@
 menu.newPipe()
 
 if len(sys.argv) == 3:
-	vmenu = clasifica(
-		[unicode(each, "utf-8", errors='ignore') for each in os.listdir(sys.argv[1])],10)
+	vmenu = clasifica(os.listdir(sys.argv[1]), 10)
 else:
 	menu.createItem(None, "ERROR: Wrong number of arguments:", "Execute", "true")
 	menu.createItem(None, "%s /path/to/directory command" % (sys.argv[0]), "Execute", "true")
diff '-urx*.glade' obmenu-1.0/pipes/obm-moz obmenu-1.0.mod/pipes/obm-moz
--- obmenu-1.0/pipes/obm-moz	2006-01-22 15:02:55.000000000 +0100
+++ obmenu-1.0.mod/pipes/obm-moz	2020-05-31 16:22:10.693838010 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python -O
+#!/usr/bin/python3 -O
 #########################################################################
 #  Copyright 2005 Manuel Colmenero 
 #
@@ -22,6 +22,7 @@
 #
 
 import obxml, sys, os
+sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
 from HTMLParser import HTMLParser
 from optparse import OptionParser
 
@@ -52,7 +53,7 @@
 		
 		d = data.strip()
 		if d != "":
-			self.data = unicode(d,"utf-8")
+			self.data = d
 			
 	def handle_starttag(self, tag, attrs):
 		if self.finished: return
@@ -177,7 +178,7 @@
 		f.close()
 		if last == opts and os.path.isfile(cachefile) and os.path.getmtime(filename) < os.path.getmtime(cachefile):
 			cache = open(cachefile)
-			print cache.read()
+			print(cache.read())
 			cache.close()
 			sys.exit()
 			
diff '-urx*.glade' obmenu-1.0/pipes/obm-nav obmenu-1.0.mod/pipes/obm-nav
--- obmenu-1.0/pipes/obm-nav	2006-02-08 20:11:49.000000000 +0100
+++ obmenu-1.0.mod/pipes/obm-nav	2020-05-31 16:22:24.986033060 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python -O 
+#!/usr/bin/python3 -O 
 #########################################################################
 #  Copyright 2005 Manuel Colmenero 
 #
@@ -19,6 +19,7 @@
 ########################################################################
 
 import obxml, sys, os
+sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
 
 menu = obxml.ObMenu()
 menu.newPipe()
@@ -35,9 +36,9 @@
 for itm in os.listdir(sys.argv[1]):
 	if itm[0] != ".":
 		if os.path.isdir(sys.argv[1] + "/" + itm):
-			dirs.append(unicode(itm, "utf-8", errors='ignore'))
+			dirs.append(itm)
 		else:
-			files.append(unicode(itm, "utf-8", errors='ignore'))
+			files.append(itm)
 menu.createItem(None, "open", "Execute", "%s \"%s\"" % (sys.argv[2], sys.argv[1]))
 menu.createItem(None, "terminal", "Execute", "sh -c \"cd \\\"%s\\\"; %s\"" % (sys.argv[1], sys.argv[3]))
 if not len(dirs) == 0 or not len(files) == 0:
diff '-urx*.glade' obmenu-1.0/pipes/obm-xdg obmenu-1.0.mod/pipes/obm-xdg
--- obmenu-1.0/pipes/obm-xdg	2006-01-24 16:39:36.000000000 +0100
+++ obmenu-1.0.mod/pipes/obm-xdg	2020-05-31 16:22:33.914154903 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/python -O 
+#!/usr/bin/python3 -O 
 #########################################################################
 #  Copyright 2005 Manuel Colmenero 
 #
@@ -22,6 +22,7 @@
 #
 
 import xml.dom.minidom, obxml, os, sys, time
+sys.stdout = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
 
 class XdgMenu:
 	
@@ -219,7 +220,7 @@
 				elif title == "":
 						accuracy = 1
 						title = name
-		return unicode(title.strip() ,"utf-8")
+		return title.strip()
 	
 	def parseDesktopFile(self, filename, language):
 		title = ""
@@ -276,7 +277,7 @@
 				if cats[-1] == "":
 					cats.pop(-1)
 		item = {
-			"name": unicode(title.strip() ,"utf-8"),
+			"name": title.strip(),
 			"exec": exe.strip(),
 			"categories": cats,
 			"filename": filename,
@@ -491,7 +492,7 @@
 					break
 			if not new:
 				cache = open(cachefile)
-				print cache.read()
+				print(cache.read())
 				cache.close()
 				sys.exit()
 				
--- obmenu-1.0/obmenu.glade	2006-01-17 22:28:17.000000000 +0100
+++ obmenu-1.0.mod/obmenu.glade	2020-05-30 16:58:27.219832600 +0200
@@ -1,758 +1,622 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="window1">
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.36.0 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkImage" id="image_delete">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-delete</property>
+  </object>
+  <object class="GtkImage" id="image_up">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-up</property>
+  </object>
+  <object class="GtkImage" id="image_down">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-go-down</property>
+  </object>
+<object class="GtkWindow" id="window1">
   <property name="visible">True</property>
+  <property name="can_focus">False</property>
   <property name="title" translatable="yes">Openbox Menu Editor</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
   <property name="default_width">500</property>
   <property name="default_height">500</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="icon_name"></property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH</property>
-  <property name="focus_on_map">True</property>
-  <signal name="delete_event" handler="exit" last_modification_time="Thu, 15 Dec 2005 14:07:33 GMT"/>
-
+  <property name="gravity">north</property>
+  <signal name="delete-event" handler="exit" swapped="no"/>
   <child>
-    <widget class="GtkVBox" id="vbox4">
+    <object class="GtkVBox" id="vbox4">
       <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
+      <property name="can_focus">False</property>
       <child>
-	<widget class="GtkMenuBar" id="menubar1">
+	<object class="GtkMenuBar" id="menubar1">
 	  <property name="visible">True</property>
-
+	  <property name="can_focus">False</property>
 	  <child>
-	    <widget class="GtkMenuItem" id="menuitem1">
+	    <object class="GtkMenuItem" id="menuitem1">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
 	      <property name="label" translatable="yes">_File</property>
 	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="menuitem1_menu">
-
+	      <child type="submenu">
+		<object class="GtkMenu" id="menuitem1_menu">
+		  <property name="can_focus">False</property>
 		  <child>
-		    <widget class="GtkImageMenuItem" id="new1">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="new1">
 		      <property name="label">gtk-new</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
+		      <property name="use_underline">True</property>
 		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="new_clicked" last_modification_time="Thu, 15 Dec 2005 13:23:16 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="new_clicked" swapped="no"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkImageMenuItem" id="open1">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="open1">
 		      <property name="label">gtk-open</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
+		      <property name="use_underline">True</property>
 		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="open_clicked" last_modification_time="Thu, 15 Dec 2005 13:44:10 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="open_clicked" swapped="no"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkImageMenuItem" id="save1">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="save1">
 		      <property name="label">gtk-save</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
+		      <property name="use_underline">True</property>
 		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="save_clicked" last_modification_time="Thu, 15 Dec 2005 13:45:31 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="save_clicked" swapped="no"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkImageMenuItem" id="save_as1">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="save_as1">
 		      <property name="label">gtk-save-as</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
+		      <property name="use_underline">True</property>
 		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="save_as_clicked" last_modification_time="Thu, 15 Dec 2005 13:45:31 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="save_as_clicked" swapped="no"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+		    <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
 		      <property name="visible">True</property>
-		    </widget>
+		      <property name="can_focus">False</property>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkImageMenuItem" id="quit1">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="quit1">
 		      <property name="label">gtk-quit</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
+		      <property name="use_underline">True</property>
 		      <property name="use_stock">True</property>
-		      <signal name="activate" handler="mnu_quit" last_modification_time="Tue, 20 Dec 2005 15:52:52 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="mnu_quit" swapped="no"/>
+		    </object>
 		  </child>
-		</widget>
+		</object>
 	      </child>
-	    </widget>
+	    </object>
 	  </child>
-
 	  <child>
-	    <widget class="GtkMenuItem" id="menuitem2">
+	    <object class="GtkMenuItem" id="menuitem2">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
 	      <property name="label" translatable="yes">_Edit</property>
 	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="menuitem2_menu">
-
+	      <child type="submenu">
+		<object class="GtkMenu" id="menuitem2_menu">
+		  <property name="can_focus">False</property>
 		  <child>
-		    <widget class="GtkMenuItem" id="move_up1">
+		    <object class="GtkImageMenuItem" id="move_up1">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Move _up</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="up_clicked" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		      <accelerator key="Up" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <property name="use_stock">False</property>
+		      <property name="image">image_up</property>
+		      <signal name="activate" handler="up_clicked" swapped="no"/>
+		      <accelerator key="Up" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkMenuItem" id="move_down1">
+		    <object class="GtkImageMenuItem" id="move_down1">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Move dow_n</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="down_clicked" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		      <accelerator key="Down" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <property name="use_stock">False</property>
+		      <property name="image">image_down</property>
+		      <signal name="activate" handler="down_clicked" swapped="no"/>
+		      <accelerator key="Down" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="separator2">
+		    <object class="GtkSeparatorMenuItem" id="separator2">
 		      <property name="visible">True</property>
-		    </widget>
+		      <property name="can_focus">False</property>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkImageMenuItem" id="delete2">
-		      <property name="visible">True</property>
+		    <object class="GtkImageMenuItem" id="delete2">
 		      <property name="label" translatable="yes">_Delete</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="mnu_remove" last_modification_time="Wed, 21 Dec 2005 00:11:01 GMT"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image1">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-delete</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
+		      <property name="use_stock">False</property>
+		      <property name="image">image_delete</property>
+		      <signal name="activate" handler="mnu_remove" swapped="no"/>
+		    </object>
 		  </child>
-		</widget>
+		</object>
 	      </child>
-	    </widget>
+	    </object>
 	  </child>
-
 	  <child>
-	    <widget class="GtkMenuItem" id="menuitem3">
+	    <object class="GtkMenuItem" id="menuitem3">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
 	      <property name="label" translatable="yes">_Add</property>
 	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="menuitem3_menu">
-
+	      <child type="submenu">
+		<object class="GtkMenu" id="menuitem3_menu">
+		  <property name="can_focus">False</property>
 		  <child>
-		    <widget class="GtkMenuItem" id="menu5">
+		    <object class="GtkMenuItem" id="menu5">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Menu</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="menu_clicked" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		      <accelerator key="m" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <signal name="activate" handler="menu_clicked" swapped="no"/>
+		      <accelerator key="m" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkMenuItem" id="item2">
+		    <object class="GtkMenuItem" id="item2">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Item</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="item_clicked" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		      <accelerator key="i" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <signal name="activate" handler="item_clicked" swapped="no"/>
+		      <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkMenuItem" id="separator3">
+		    <object class="GtkMenuItem" id="separator3">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Separator</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="separator_clicked" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		      <accelerator key="s" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <signal name="activate" handler="separator_clicked" swapped="no"/>
+		      <accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkMenuItem" id="pipemenu1">
+		    <object class="GtkMenuItem" id="pipemenu1">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Pipemenu</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="pipe_clicked" last_modification_time="Thu, 15 Dec 2005 16:41:22 GMT"/>
-		      <accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <signal name="activate" handler="pipe_clicked" swapped="no"/>
+		      <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-
 		  <child>
-		    <widget class="GtkMenuItem" id="link1">
+		    <object class="GtkMenuItem" id="link1">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">Link</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="link_clicked" last_modification_time="Thu, 15 Dec 2005 16:41:22 GMT"/>
-		      <accelerator key="l" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-		    </widget>
+		      <signal name="activate" handler="link_clicked" swapped="no"/>
+		      <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+		    </object>
 		  </child>
-		</widget>
+		</object>
 	      </child>
-	    </widget>
+	    </object>
 	  </child>
-
 	  <child>
-	    <widget class="GtkMenuItem" id="menuitem4">
+	    <object class="GtkMenuItem" id="menuitem4">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
 	      <property name="label" translatable="yes">_Help</property>
 	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="menuitem4_menu">
-
+	      <child type="submenu">
+		<object class="GtkMenu" id="menuitem4_menu">
+		  <property name="can_focus">False</property>
 		  <child>
-		    <widget class="GtkMenuItem" id="about1">
+		    <object class="GtkMenuItem" id="about1">
 		      <property name="visible">True</property>
+		      <property name="can_focus">False</property>
 		      <property name="label" translatable="yes">_About</property>
 		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="show_about" last_modification_time="Thu, 15 Dec 2005 12:31:32 GMT"/>
-		    </widget>
+		      <signal name="activate" handler="show_about" swapped="no"/>
+		    </object>
 		  </child>
-		</widget>
+		</object>
 	      </child>
-	    </widget>
+	    </object>
 	  </child>
-	</widget>
+	</object>
 	<packing>
-	  <property name="padding">0</property>
 	  <property name="expand">False</property>
 	  <property name="fill">False</property>
+	  <property name="position">0</property>
 	</packing>
       </child>
-
       <child>
-	<widget class="GtkToolbar" id="toolbar1">
+	<object class="GtkToolbar" id="toolbar1">
 	  <property name="visible">True</property>
-	  <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	  <property name="toolbar_style">GTK_TOOLBAR_BOTH_HORIZ</property>
-	  <property name="tooltips">True</property>
-	  <property name="show_arrow">True</property>
-
+	  <property name="can_focus">False</property>
+	  <property name="toolbar_style">both-horiz</property>
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton13">
+	    <object class="GtkToolButton" id="toolbutton13">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Save the menu</property>
+	      <property name="can_focus">False</property>
+	      <property name="has_tooltip">True</property>
+	      <property name="tooltip_text" translatable="yes">Save the menu</property>
 	      <property name="stock_id">gtk-save</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="save_clicked" last_modification_time="Sun, 13 Nov 2005 15:41:19 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="save_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem3">
+	    <object class="GtkSeparatorToolItem" id="separatortoolitem3">
 	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
+	      <property name="can_focus">False</property>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">False</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton14">
+	    <object class="GtkToolButton" id="toolbutton14">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
+	      <property name="is_important">True</property>
 	      <property name="label" translatable="yes">New menu</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-index</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="menu_clicked" last_modification_time="Wed, 16 Nov 2005 14:10:01 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="menu_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton15">
+	    <object class="GtkToolButton" id="toolbutton15">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
+	      <property name="is_important">True</property>
 	      <property name="label" translatable="yes">New item</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-execute</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="item_clicked" last_modification_time="Sun, 13 Nov 2005 22:56:47 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="item_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton16">
+	    <object class="GtkToolButton" id="toolbutton16">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
+	      <property name="is_important">True</property>
 	      <property name="label" translatable="yes">New separator</property>
 	      <property name="use_underline">True</property>
 	      <property name="stock_id">gtk-file</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="separator_clicked" last_modification_time="Sun, 13 Nov 2005 22:56:34 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="separator_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem5">
+	    <object class="GtkSeparatorToolItem" id="separatortoolitem5">
 	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
+	      <property name="can_focus">False</property>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">False</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton18">
+	    <object class="GtkToolButton" id="toolbutton18">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Move up</property>
+	      <property name="can_focus">False</property>
+	      <property name="has_tooltip">True</property>
+	      <property name="tooltip_text" translatable="yes">Move up</property>
 	      <property name="stock_id">gtk-go-up</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="up_clicked" last_modification_time="Sun, 13 Nov 2005 16:51:42 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="up_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton19">
+	    <object class="GtkToolButton" id="toolbutton19">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Move down</property>
+	      <property name="can_focus">False</property>
+	      <property name="has_tooltip">True</property>
+	      <property name="tooltip_text" translatable="yes">Move down</property>
 	      <property name="stock_id">gtk-go-down</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="down_clicked" last_modification_time="Sun, 13 Nov 2005 22:02:09 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="down_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem6">
+	    <object class="GtkSeparatorToolItem" id="separatortoolitem6">
 	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
+	      <property name="can_focus">False</property>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">False</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkToolButton" id="toolbutton17">
+	    <object class="GtkToolButton" id="toolbutton17">
 	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Removes a menu or an item</property>
+	      <property name="can_focus">False</property>
+	      <property name="has_tooltip">True</property>
+	      <property name="tooltip_text" translatable="yes">Removes a menu or an item</property>
 	      <property name="stock_id">gtk-remove</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="remove_clicked" last_modification_time="Sun, 13 Nov 2005 22:26:27 GMT"/>
-	    </widget>
+	      <signal name="clicked" handler="remove_clicked" swapped="no"/>
+	    </object>
 	    <packing>
 	      <property name="expand">False</property>
 	      <property name="homogeneous">True</property>
 	    </packing>
 	  </child>
-	</widget>
+	</object>
 	<packing>
-	  <property name="padding">0</property>
 	  <property name="expand">False</property>
 	  <property name="fill">False</property>
+	  <property name="position">1</property>
 	</packing>
       </child>
-
       <child>
-	<widget class="GtkVBox" id="vbox3">
+	<object class="GtkVBox" id="vbox3">
 	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">0</property>
-
+	  <property name="can_focus">False</property>
 	  <child>
-	    <widget class="GtkScrolledWindow" id="scrolledwindow1">
+	    <object class="GtkScrolledWindow" id="scrolledwindow1">
 	      <property name="visible">True</property>
 	      <property name="can_focus">True</property>
-	      <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
-	      <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
-	      <property name="shadow_type">GTK_SHADOW_IN</property>
-	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
+	      <property name="hscrollbar_policy">always</property>
+	      <property name="vscrollbar_policy">always</property>
+	      <property name="shadow_type">in</property>
 	      <child>
-		<widget class="GtkTreeView" id="treeview1">
+		<object class="GtkTreeView" id="treeview1">
 		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
 		  <property name="can_default">True</property>
 		  <property name="has_default">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="headers_visible">True</property>
-		  <property name="rules_hint">False</property>
-		  <property name="reorderable">False</property>
 		  <property name="enable_search">False</property>
-		  <property name="fixed_height_mode">False</property>
-		  <property name="hover_selection">False</property>
-		  <property name="hover_expand">False</property>
-		  <signal name="cursor_changed" handler="on_treeview1" last_modification_time="Wed, 09 Nov 2005 14:54:10 GMT"/>
-		  <signal name="key_press_event" handler="tree_key_pressed" last_modification_time="Wed, 28 Dec 2005 18:36:06 GMT"/>
-		</widget>
+		  <signal name="cursor-changed" handler="on_treeview1" swapped="no"/>
+		  <signal name="key-press-event" handler="tree_key_pressed" swapped="no"/>
+		  <child internal-child="selection">
+		    <object class="GtkTreeSelection"/>
+		  </child>
+		</object>
 	      </child>
-	    </widget>
+	    </object>
 	    <packing>
-	      <property name="padding">0</property>
 	      <property name="expand">True</property>
 	      <property name="fill">True</property>
+	      <property name="position">0</property>
 	    </packing>
 	  </child>
-
 	  <child>
-	    <widget class="GtkTable" id="table1">
+	    <object class="GtkTable" id="table1">
 	      <property name="visible">True</property>
+	      <property name="can_focus">False</property>
 	      <property name="n_rows">4</property>
 	      <property name="n_columns">2</property>
-	      <property name="homogeneous">False</property>
-	      <property name="row_spacing">0</property>
-	      <property name="column_spacing">0</property>
-
 	      <child>
-		<widget class="GtkLabel" id="label1">
+		<object class="GtkLabel" id="label1">
 		  <property name="visible">True</property>
+		  <property name="can_focus">False</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
 		  <property name="label" translatable="yes">Label</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
 		  <property name="xalign">0</property>
 		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
+		</object>
 		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">0</property>
-		  <property name="bottom_attach">1</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkLabel" id="label4">
+		<object class="GtkLabel" id="label4">
 		  <property name="visible">True</property>
+		  <property name="can_focus">False</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
 		  <property name="label" translatable="yes">Id</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
 		  <property name="xalign">0</property>
 		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
+		</object>
 		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
 		  <property name="top_attach">1</property>
 		  <property name="bottom_attach">2</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkLabel" id="label2">
+		<object class="GtkLabel" id="label2">
 		  <property name="visible">True</property>
+		  <property name="can_focus">False</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
 		  <property name="label" translatable="yes">Action</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
 		  <property name="xalign">0</property>
 		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
+		</object>
 		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
 		  <property name="top_attach">2</property>
 		  <property name="bottom_attach">3</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkLabel" id="label3">
+		<object class="GtkLabel" id="label3">
 		  <property name="visible">True</property>
+		  <property name="can_focus">False</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
 		  <property name="label" translatable="yes">Execute</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
 		  <property name="xalign">0</property>
 		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
+		</object>
 		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
 		  <property name="top_attach">3</property>
 		  <property name="bottom_attach">4</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkEntry" id="entry1">
+		<object class="GtkEntry" id="entry1">
 		  <property name="visible">True</property>
 		  <property name="sensitive">False</property>
 		  <property name="can_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="visibility">True</property>
-		  <property name="max_length">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <property name="has_frame">True</property>
 		  <property name="invisible_char">*</property>
-		  <property name="activates_default">False</property>
-		  <signal name="changed" handler="label_changed" last_modification_time="Wed, 09 Nov 2005 14:43:38 GMT"/>
-		</widget>
+		  <signal name="changed" handler="label_changed" swapped="no"/>
+		</object>
 		<packing>
 		  <property name="left_attach">1</property>
 		  <property name="right_attach">2</property>
-		  <property name="top_attach">0</property>
-		  <property name="bottom_attach">1</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkEntry" id="entry3">
+		<object class="GtkEntry" id="entry3">
 		  <property name="visible">True</property>
 		  <property name="sensitive">False</property>
 		  <property name="can_focus">True</property>
-		  <property name="editable">True</property>
-		  <property name="visibility">True</property>
-		  <property name="max_length">0</property>
-		  <property name="text" translatable="yes"></property>
-		  <property name="has_frame">True</property>
 		  <property name="invisible_char">*</property>
-		  <property name="activates_default">False</property>
-		  <signal name="changed" handler="id_changed" last_modification_time="Tue, 06 Dec 2005 17:52:45 GMT"/>
-		</widget>
+		  <signal name="changed" handler="id_changed" swapped="no"/>
+		</object>
 		<packing>
 		  <property name="left_attach">1</property>
 		  <property name="right_attach">2</property>
 		  <property name="top_attach">1</property>
 		  <property name="bottom_attach">2</property>
+		  <property name="y_options"/>
 		  <property name="x_padding">4</property>
-		  <property name="y_options"></property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkComboBox" id="combobox1">
+		<object class="GtkComboBoxText" id="combobox1">
 		  <property name="visible">True</property>
 		  <property name="sensitive">False</property>
-		  <property name="items" translatable="yes">Execute
-Reconfigure
-Restart
-Exit</property>
-		  <property name="add_tearoffs">False</property>
-		  <property name="focus_on_click">True</property>
-		  <signal name="changed" handler="action_changed" last_modification_time="Wed, 09 Nov 2005 14:43:38 GMT"/>
-		</widget>
+		  <property name="can_focus">False</property>
+		  <items>
+		    <item id="Execute" translatable="yes">Execute</item>
+		    <item id="Reconfigure" translatable="yes">Reconfigure</item>
+		    <item id="Restart" translatable="yes">Restart</item>
+		    <item id="Exit" translatable="yes">Exit</item>
+		  </items>
+		  <signal name="changed" handler="action_changed" swapped="no"/>
+		</object>
 		<packing>
 		  <property name="left_attach">1</property>
 		  <property name="right_attach">2</property>
 		  <property name="top_attach">2</property>
 		  <property name="bottom_attach">3</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options">GTK_FILL</property>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options">fill</property>
 		</packing>
 	      </child>
-
 	      <child>
-		<widget class="GtkHBox" id="hbox1">
+		<object class="GtkHBox" id="hbox1">
 		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
+		  <property name="can_focus">False</property>
 		  <child>
-		    <widget class="GtkEntry" id="entry2">
+		    <object class="GtkEntry" id="entry2">
 		      <property name="visible">True</property>
 		      <property name="sensitive">False</property>
 		      <property name="can_focus">True</property>
-		      <property name="editable">True</property>
-		      <property name="visibility">True</property>
-		      <property name="max_length">0</property>
-		      <property name="text" translatable="yes"></property>
-		      <property name="has_frame">True</property>
 		      <property name="invisible_char">*</property>
-		      <property name="activates_default">False</property>
-		      <signal name="changed" handler="execute_changed" last_modification_time="Wed, 09 Nov 2005 14:43:38 GMT"/>
-		    </widget>
+		      <signal name="changed" handler="execute_changed" swapped="no"/>
+		    </object>
 		    <packing>
-		      <property name="padding">0</property>
 		      <property name="expand">True</property>
 		      <property name="fill">True</property>
+		      <property name="position">0</property>
 		    </packing>
 		  </child>
-
 		  <child>
-		    <widget class="GtkButton" id="button1">
+		    <object class="GtkButton" id="button1">
+		      <property name="label" translatable="yes">...</property>
 		      <property name="visible">True</property>
 		      <property name="sensitive">False</property>
 		      <property name="can_focus">True</property>
-		      <property name="label" translatable="yes">...</property>
+		      <property name="receives_default">False</property>
 		      <property name="use_underline">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-		      <property name="focus_on_click">True</property>
-		      <signal name="clicked" handler="search_clicked" last_modification_time="Fri, 16 Dec 2005 13:37:36 GMT"/>
-		    </widget>
+		      <signal name="clicked" handler="search_clicked" swapped="no"/>
+		    </object>
 		    <packing>
-		      <property name="padding">0</property>
 		      <property name="expand">False</property>
 		      <property name="fill">False</property>
+		      <property name="position">1</property>
 		    </packing>
 		  </child>
-		</widget>
+		</object>
 		<packing>
 		  <property name="left_attach">1</property>
 		  <property name="right_attach">2</property>
 		  <property name="top_attach">3</property>
 		  <property name="bottom_attach">4</property>
+		  <property name="x_options">GTK_FILL</property>
+		  <property name="y_options">GTK_FILL</property>
 		  <property name="x_padding">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options">fill</property>
 		</packing>
 	      </child>
-	    </widget>
+	    </object>
 	    <packing>
-	      <property name="padding">0</property>
 	      <property name="expand">False</property>
 	      <property name="fill">True</property>
+	      <property name="position">1</property>
 	    </packing>
 	  </child>
-	</widget>
+	</object>
 	<packing>
-	  <property name="padding">0</property>
 	  <property name="expand">True</property>
 	  <property name="fill">True</property>
+	  <property name="position">2</property>
 	</packing>
       </child>
-    </widget>
+    </object>
   </child>
-</widget>
-
-<widget class="GtkAboutDialog" id="aboutdialog1">
-  <property name="visible">True</property>
-  <property name="destroy_with_parent">True</property>
-  <property name="name" translatable="yes">Openbox Menu Editor</property>
-  <property name="comments" translatable="yes">Thank you for using this sofware.
- Send any feedback to m.kolme@gmail.com</property>
-  <property name="license" translatable="yes">    obmenu: Openbox Menu Editor
-    Copyright (C) 2005-2006  Manuel Colmenero
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</property>
-  <property name="website">http://obmenu.sourceforge.net/</property>
-  <property name="website_label" translatable="yes">Website</property>
-  <property name="authors">Manuel Colmenero &lt;m.kolme@gmail.com&gt;</property>
-  <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
-  <property name="logo">mnu48.png</property>
-</widget>
-
-</glade-interface>
+  <child type="titlebar">
+    <placeholder/>
+  </child>
+</object>
+</interface>
--- obmenu-1.0/obmenu_about.glade	1970-01-01 01:00:00.000000000 +0100
+++ obmenu-1.0.mod/obmenu_about.glade	2020-05-30 10:26:02.280280703 +0200
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.36.0 -->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkAboutDialog" id="aboutdialog1">
+    <property name="visible">True</property>
+    <property name="name">Openbox Menu Editor</property>
+    <property name="can_focus">False</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">normal</property>
+    <property name="comments" translatable="yes">Thank you for using this sofware.
+ Send any feedback to m.kolme@gmail.com</property>
+    <property name="website">http://obmenu.sourceforge.net/</property>
+    <property name="website_label" translatable="yes">Website</property>
+    <property name="license" translatable="yes">    obmenu: Openbox Menu Editor
+    Copyright (C) 2005-2006  Manuel Colmenero
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</property>
+    <property name="authors">Manuel Colmenero &lt;m.kolme@gmail.com&gt;</property>
+    <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
+    <property name="logo">mnu48.png</property>
+    <signal name="delete-event" handler="about_hide" swapped="no"/>
+    <signal name="response" handler="about_hide" swapped="no"/>
+    <child internal-child="vbox">
+      <object class="GtkBox">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox">
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child type="titlebar">
+      <placeholder/>
+    </child>
+  </object>
+</interface>
openSUSE Build Service is sponsored by