File python3.patch of Package compiz-boxmenu
commit 2ae7324066aceb00302848f26c52d86a260b0999
Author: sam <sam@mazes-i5.bauer-le.fr.to>
Date: Sun Feb 16 00:39:05 2020 +0100
Migrate editor to gtk3/python3
diff --git a/new-editor/cb-editor b/new-editor/cb-editor
index 2cd5625..f0f19ed 100644
--- a/new-editor/cb-editor
+++ b/new-editor/cb-editor
@@ -1,11 +1,15 @@
-import gtk, gobject, re
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+from gi.repository import GObject
+import re
from cb_itemtypes import *
from cbmenu import *
from cbutil import TabButton, CommandText
from lxml import etree
from xdg import BaseDirectory
import os,re
-import ConfigParser
+import configparser
import shlex
try:
@@ -13,53 +17,53 @@ try:
except ImportError:
dbus = None
-class CBEditor(gtk.Window):
+class CBEditor(Gtk.Window):
def __init__(self):
- gtk.Window.__init__(self)
+ GObject.GObject.__init__(self)
self.set_title("Compiz Boxmenu Editor")
self.set_icon_name('cbmenu')
self.set_border_width(5)
self.set_size_request(600, 400)
- self.vbox=gtk.VBox(False, 2)
- self.connect('destroy', gtk.main_quit)
- hbox_main=gtk.HPaned()
+ self.vbox=Gtk.VBox(False, 2)
+ self.connect('destroy', Gtk.main_quit)
+ hbox_main=Gtk.HPaned()
- toolbar=gtk.Toolbar()
+ toolbar=Gtk.Toolbar()
- new_button = gtk.MenuToolButton(gtk.STOCK_NEW)
+ new_button = Gtk.MenuToolButton(Gtk.STOCK_NEW)
new_button.set_menu(self.make_new_menu())
new_button.connect('clicked', self.new_item_dialog)
new_button.set_tooltip_text("Create a new menu file or menu item")
- #edit_button = gtk.ToolButton(gtk.STOCK_EDIT) # necessary?
+ #edit_button = Gtk.ToolButton(Gtk.STOCK_EDIT) # necessary?
- save_button = gtk.MenuToolButton(gtk.STOCK_SAVE)
+ save_button = Gtk.MenuToolButton(Gtk.STOCK_SAVE)
save_button.set_menu(self.make_save_menu())
save_button.connect('clicked', self.save_one)
save_button.set_tooltip_text("Save the current menu")
- generate_button = gtk.ToolButton(gtk.STOCK_CONVERT)
+ generate_button = Gtk.ToolButton(Gtk.STOCK_CONVERT)
generate_button.connect('clicked', self.generated_item) #need to import other menus
generate_button.set_tooltip_text('Generate menu entries from a pipemenu script')
- delete_button = gtk.MenuToolButton(gtk.STOCK_DELETE)
+ delete_button = Gtk.MenuToolButton(Gtk.STOCK_DELETE)
delete_button.set_menu(self.make_delete_menu())
delete_button.connect('clicked', self.delete_item)
delete_button.set_tooltip_text('Delete the current menu item')
- reload_button = gtk.ToolButton(gtk.STOCK_REFRESH)
+ reload_button = Gtk.ToolButton(Gtk.STOCK_REFRESH)
reload_button.connect('clicked', self.reload_menu)
reload_button.set_tooltip_text('Reload the daemon')
- #settings_button = gtk.ToolButton(gtk.STOCK_PREFERENCES)
+ #settings_button = Gtk.ToolButton(Gtk.STOCK_PREFERENCES)
#settings_button.connect('clicked', self.show_settings)
- about_button = gtk.ToolButton(gtk.STOCK_ABOUT)
+ about_button = Gtk.ToolButton(Gtk.STOCK_ABOUT)
about_button.connect('clicked', self.show_about_dialog)
about_button.set_tooltip_text('Show some information about this program')
- sep=gtk.SeparatorToolItem()
- sep2=gtk.SeparatorToolItem()
+ sep=Gtk.SeparatorToolItem()
+ sep2=Gtk.SeparatorToolItem()
sep.set_draw(False)
sep.set_expand(True)
sep2.set_draw(False)
@@ -77,66 +81,66 @@ class CBEditor(gtk.Window):
#toolbar.insert(settings_button, 8)
toolbar.insert(about_button, 7)
- self.vbox.pack_start(toolbar, expand=False)
+ self.vbox.pack_start(toolbar, expand=False, fill=True, padding=0)
- listview=gtk.TreeView()
+ listview=Gtk.TreeView()
self.list_menus()
listview.set_model(self.menu_list)
listview.connect('row-activated',self.open_menu_file)
- scrolled=gtk.ScrolledWindow()
+ scrolled=Gtk.ScrolledWindow()
scrolled.add(listview)
- scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
scrolled.set_size_request(150,-1)
hbox_main.add(scrolled)
- cached = gtk.TreeViewColumn('Cached?')
+ cached = Gtk.TreeViewColumn('Cached?')
listview.append_column(cached)
- cell = gtk.CellRendererToggle()
+ cell = Gtk.CellRendererToggle()
cell.set_activatable(True)
cell.connect('toggled', self.update_cache)
- cached.pack_start(cell)
+ cached.pack_start(cell, expand=True) #, True, 0)
cached.add_attribute(cell, "active", 0)
- name = gtk.TreeViewColumn('Menu')
+ name = Gtk.TreeViewColumn('Menu')
listview.append_column(name)
- cell = gtk.CellRendererText()
- name.pack_start(cell)
+ cell = Gtk.CellRendererText()
+ name.pack_start(cell, expand=True) #, True, 0)
name.add_attribute(cell,"text", 1)
- self.tabs=gtk.Notebook()
+ self.tabs=Gtk.Notebook()
self.tabs.set_size_request(340,240)
self.tabs.set_scrollable(True)
self.tabs.connect('switch-page', self.get_current_menu)
hbox_main.add(self.tabs)
self.tabs.set_show_tabs(True)
- self.tabs.set_tab_pos(gtk.POS_TOP)
+ self.tabs.set_tab_pos(Gtk.PositionType.TOP)
- #self.hbox_item=gtk.HBox(False, 2)
+ #self.hbox_item=Gtk.HBox(False, 2)
- self.vbox.pack_start(hbox_main)
+ self.vbox.pack_start(hbox_main, expand=True, fill=True, padding=0)
#self.vbox.pack_end(self.hbox_item, expand=False, fill=False)
self.add(self.vbox)
self.show_all()
def make_new_menu(self):
- new_menu=gtk.Menu()
+ new_menu=Gtk.Menu()
for i in elementlist:
- new_item = gtk.ImageMenuItem(i, gtk.STOCK_NEW)
+ new_item = Gtk.ImageMenuItem(i, Gtk.STOCK_NEW)
new_item.connect('activate', self.make_new_item, i)
new_menu.append(new_item)
new_menu.show_all()
return new_menu
def make_delete_menu(self):
- delete_menu=gtk.Menu()
+ delete_menu=Gtk.Menu()
- delete_item=gtk.ImageMenuItem("Current Item")
+ delete_item=Gtk.ImageMenuItem("Current Item")
delete_item.connect('activate', self.delete_item)
delete_menu.append(delete_item)
- delete_item=gtk.ImageMenuItem("Current Menu")
+ delete_item=Gtk.ImageMenuItem("Current Menu")
delete_item.connect('activate', self.delete_menu)
delete_menu.append(delete_item)
@@ -144,13 +148,13 @@ class CBEditor(gtk.Window):
return delete_menu
def make_save_menu(self):
- save_menu=gtk.Menu()
+ save_menu=Gtk.Menu()
- save_item=gtk.ImageMenuItem("Current Menu")
+ save_item=Gtk.ImageMenuItem("Current Menu")
save_item.connect('activate', self.save_one)
save_menu.append(save_item)
- save_item=gtk.ImageMenuItem("All")
+ save_item=Gtk.ImageMenuItem("All")
save_item.connect('activate', self.save_all)
save_menu.append(save_item)
@@ -158,13 +162,13 @@ class CBEditor(gtk.Window):
return save_menu
def delete_menu(self, widget):
- dialog = gtk.MessageDialog(self, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, \
- gtk.BUTTONS_NONE, \
+ dialog = Gtk.MessageDialog(self, Gtk.DialogFlags.MODAL, Gtk.MessageType.WARNING, \
+ Gtk.ButtonsType.NONE, \
"Are you sure you want to delete the current menu? You cannot recover it after you do this!")
- dialog.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_DELETE, gtk.RESPONSE_ACCEPT)
+ dialog.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_DELETE, Gtk.ResponseType.ACCEPT)
response = dialog.run()
dialog.destroy()
- if response == gtk.RESPONSE_ACCEPT:
+ if response == Gtk.ResponseType.ACCEPT:
idx=self.tabs.get_current_page()
menu=self.tabs.get_nth_page(idx)
for i in self.menu_list:
@@ -202,36 +206,36 @@ class CBEditor(gtk.Window):
self.make_new_item(widget, element.attrib['type'].title(), nd=element, parent=pt)
def new_item_dialog(self, widget):
- dialog=gtk.Dialog('New Item', self,gtk.DIALOG_MODAL, \
- buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
+ dialog=Gtk.Dialog('New Item', self,Gtk.DialogFlags.MODAL, \
+ buttons=(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT, Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT))
dialog.set_size_request(250, 250)
dialog.props.border_width = 6
dialog.vbox.props.spacing = 6
dialog.set_has_separator(False)
- model = gtk.ListStore(str)
+ model = Gtk.ListStore(str)
for el in elementlist:
model.append([el])
- treeview = gtk.TreeView(model)
- column = gtk.TreeViewColumn(None, gtk.CellRendererText(), text=0)
+ treeview = Gtk.TreeView(model)
+ column = Gtk.TreeViewColumn(None, Gtk.CellRendererText(), text=0)
treeview.set_headers_visible(False)
treeview.append_column(column)
treeview.connect('row-activated', self.on_row_activated)
- scroll = gtk.ScrolledWindow()
+ scroll = Gtk.ScrolledWindow()
scroll.add(treeview)
- scroll.props.hscrollbar_policy = gtk.POLICY_NEVER
- scroll.props.vscrollbar_policy = gtk.POLICY_AUTOMATIC
- dialog.vbox.pack_start(scroll, True, True)
+ scroll.props.hscrollbar_policy = Gtk.PolicyType.NEVER
+ scroll.props.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC
+ dialog.vbox.pack_start(scroll, expand=True, fill=True, padding=0)
dialog.action_area.props.border_width = 0
dialog.show_all()
- if dialog.run() == gtk.RESPONSE_ACCEPT:
+ if dialog.run() == Gtk.ResponseType.ACCEPT:
m, r = treeview.get_selection().get_selected()
if r:
elementname = m[r][0]
@@ -242,17 +246,17 @@ class CBEditor(gtk.Window):
dialog.destroy()
def on_row_activated(self, treeview, path, view_column):
- self.response(gtk.RESPONSE_ACCEPT)
+ self.response(Gtk.ResponseType.ACCEPT)
def generated_item(self, widget):
- dialog=gtk.Dialog("Add generated items from pipemenu", self, gtk.DIALOG_MODAL, \
- buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
+ dialog=Gtk.Dialog("Add generated items from pipemenu", self, Gtk.DialogFlags.MODAL, \
+ buttons=(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT, Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT))
input=CommandText(label_text="Command", mode="Pipe Menu" , alternate_mode="Pipe Menu")
dialog.vbox.add(input)
dialog.vbox.show_all()
input.combobox.hide()
response=dialog.run()
- if response==gtk.RESPONSE_ACCEPT:
+ if response==Gtk.ResponseType.ACCEPT:
process=subprocess.Popen(shlex.split(os.path.expanduser(input.entry.props.text)), \
stdout=subprocess.PIPE)
try:
@@ -262,9 +266,9 @@ class CBEditor(gtk.Window):
self.recursive_generate(widget, dummy_menu)
dialog.destroy()
except etree.XMLSyntaxError as e:
- message = gtk.MessageDialog(parent=self, flags=0,
- type=gtk.MESSAGE_ERROR,
- buttons=gtk.BUTTONS_OK, message_format=None)
+ message = Gtk.MessageDialog(parent=self, flags=0,
+ type=Gtk.MessageType.ERROR,
+ buttons=Gtk.ButtonsType.OK, message_format=None)
msg = ("{}\n\nClick the gear icon in the dialog to check"
" pipe output.").format(e.msg)
message.set_markup(msg)
@@ -308,18 +312,18 @@ class CBEditor(gtk.Window):
else:
new_row=model.append(parent, row=(element,))
parentelement.node.append(element.node)
- print "New %s created" % element_type
+ print("New %s created" % element_type)
return new_row
else:
menu_path=BaseDirectory.xdg_config_home + "/compiz/boxmenu"
- dialog=gtk.Dialog("Add a new file", self, gtk.DIALOG_MODAL, \
- buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT))
- input=gtk.Entry()
- dialog.vbox.add(gtk.Label("Name of the new menu to be created, with .xml at the end:"))
+ dialog=Gtk.Dialog("Add a new file", self, Gtk.DialogFlags.MODAL, \
+ buttons=(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT, Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT))
+ input=Gtk.Entry()
+ dialog.vbox.add(Gtk.Label("Name of the new menu to be created, with .xml at the end:"))
dialog.vbox.add(input)
dialog.vbox.show_all()
response=dialog.run()
- if response != gtk.RESPONSE_ACCEPT or \
+ if response != Gtk.ResponseType.ACCEPT or \
input.props.text == "" or \
not input.props.text.endswith(".xml"):
dialog.destroy()
@@ -330,7 +334,7 @@ class CBEditor(gtk.Window):
f.close()
self.menu_list.append([False,input.props.text, path])
dialog.destroy()
- print "New %s created" % element_type
+ print("New %s created" % element_type)
def save_one(self, widget):
idx=self.tabs.get_current_page()
@@ -343,7 +347,7 @@ class CBEditor(gtk.Window):
label.label.set_text(current_text.replace("*",""))
def save_all(self, widget):
- for i in xrange(self.tabs.get_n_pages()):
+ for i in range(self.tabs.get_n_pages()):
widget=self.tabs.get_nth_page(i)
widget.write_menu()
label=self.tabs.get_tab_label(widget)
@@ -351,7 +355,7 @@ class CBEditor(gtk.Window):
label.label.set_text(current_text.replace("*",""))
def get_current_menu(self, notebook, page, page_num):
- for i in xrange(self.tabs.get_n_pages()):
+ for i in range(self.tabs.get_n_pages()):
widget=self.tabs.get_nth_page(i)
if hasattr(widget, 'currently_editing'):
if i != page_num:
@@ -368,9 +372,9 @@ class CBEditor(gtk.Window):
label.set_text("*"+label.get_text())
def get_edit_panel(self, treeview, path, view_column, menufile):
- self.vbox.pack_end(menufile.currently_editing, expand=False)
+ self.vbox.pack_end(menufile.currently_editing, False, True, 0)
page_num=self.tabs.get_current_page()
- for i in xrange(self.tabs.get_n_pages()):
+ for i in range(self.tabs.get_n_pages()):
widget=self.tabs.get_nth_page(i)
if hasattr(widget, 'currently_editing'):
if i != page_num:
@@ -382,7 +386,7 @@ class CBEditor(gtk.Window):
self.get_edit_panel(None, None, None, menufile)
def open_menu_file(self,treeview, path, view_column):
- for i in xrange(self.tabs.get_n_pages()):
+ for i in range(self.tabs.get_n_pages()):
widget=self.tabs.get_nth_page(i)
if self.menu_list[path[0]][2] == widget.filename:
return
@@ -402,9 +406,9 @@ class CBEditor(gtk.Window):
pagenum = self.tabs.page_num(menufile)
menu=self.tabs.get_nth_page(pagenum)
if re.match("\*",widget.get_text()):
- warning = gtk.MessageDialog(self, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, 'Close %s with unsaved changes?' % os.path.basename(menu.filename))
- warning.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
- if warning.run() != gtk.RESPONSE_ACCEPT:
+ warning = Gtk.MessageDialog(self, Gtk.DialogFlags.MODAL, Gtk.MessageType.INFO, Gtk.ButtonsType.NONE, 'Close %s with unsaved changes?' % os.path.basename(menu.filename))
+ warning.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT)
+ if warning.run() != Gtk.ResponseType.ACCEPT:
warning.destroy()
return
warning.destroy()
@@ -419,7 +423,7 @@ class CBEditor(gtk.Window):
j=0
for i in self.menu_list:
if i[1] == "menu.xml":
- print "Compiz Boxmenu caches menu.xml by default"
+ print("Compiz Boxmenu caches menu.xml by default")
continue
if i[0]:
parser.set("Files", "file_%s" % j, i[2])
@@ -435,7 +439,7 @@ class CBEditor(gtk.Window):
return
def show_about_dialog(self, widget):
- dialog=gtk.AboutDialog()
+ dialog=Gtk.AboutDialog()
dialog.set_name("Compiz Boxmenu Editor")
dialog.set_version("1.1.6")
dialog.set_authors(["ShadowKyogre","crdlb"])
@@ -450,9 +454,9 @@ class CBEditor(gtk.Window):
return False
def list_menus(self):
- self.menu_list=gtk.ListStore(gobject.TYPE_BOOLEAN, \
- gobject.TYPE_STRING, \
- gobject.TYPE_STRING)
+ self.menu_list=Gtk.ListStore(GObject.TYPE_BOOLEAN, \
+ GObject.TYPE_STRING, \
+ GObject.TYPE_STRING)
menu_path=BaseDirectory.xdg_config_home + "/compiz/boxmenu"
for checking in os.listdir(menu_path):
path="%s/%s" %(menu_path, checking)
@@ -480,7 +484,7 @@ if __name__ == '__main__':
copyfile(starting_file, menu_path+"/menu.xml")
try:
cache_file=menu_path+"/precache.ini"
- parser=ConfigParser.SafeConfigParser()
+ parser=configparser.SafeConfigParser()
parser.readfp(open(cache_file))
cache=parser.items("Files")
allnotcache=False
@@ -490,4 +494,4 @@ if __name__ == '__main__':
'Desktops List','Viewports List', 'Recent Documents',
'Reload', 'Menu File']
CBEditor()
- gtk.main()
+ Gtk.main()
diff --git a/new-editor/cb_itemtypes.py b/new-editor/cb_itemtypes.py
index 9443126..fca9ed8 100644
--- a/new-editor/cb_itemtypes.py
+++ b/new-editor/cb_itemtypes.py
@@ -1,4 +1,4 @@
-import gtk
+from gi.repository import Gtk
from lxml import etree
from cbutil import *
@@ -124,7 +124,7 @@ class Launcher(Item):
retlist.append(widget)
- widget = gtk.CheckButton("Cache output of pipe")
+ widget = Gtk.CheckButton("Cache output of pipe")
widget.props.active = commandnode is not None and commandnode.attrib.get('mode2') == 'pipe' and commandnode.attrib.get('cache') == 'true'
widget.connect('toggled', self.on_cached_changed)
retlist.append(widget)
@@ -143,7 +143,7 @@ class Launcher(Item):
def on_name_mode_changed(self, widget, text):
namenode = self.node.find('name')
- print text
+ print(text)
if text == "Execute":
if namenode is None:
namenode = etree.SubElement(self.node, 'name')
@@ -205,12 +205,12 @@ class Windowlist(Item):
icons = []
retlist = []
- widget = gtk.CheckButton("Show windows only on current viewport")
+ widget = Gtk.CheckButton("Show windows only on current viewport")
widget.props.active = self.get_thisvp()
widget.connect('toggled', self.on_thisvp_changed)
retlist.append(widget)
- widget = gtk.CheckButton("Show only minimized windows")
+ widget = Gtk.CheckButton("Show only minimized windows")
widget.props.active = self.get_minionly()
widget.connect('toggled', self.on_minionly_changed)
retlist.append(widget)
@@ -314,7 +314,7 @@ class Viewportlist(Item):
retlist = []
icons = []
- widget = gtk.CheckButton("Wrap Viewports")
+ widget = Gtk.CheckButton("Wrap Viewports")
widget.props.active = self.get_wrap()
widget.connect('toggled', self.on_wrap_changed)
retlist.append(widget)
@@ -518,13 +518,13 @@ class Documents(Item):
def get_options(self):
retlist = []
icons = []
- sgroup = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+ sgroup = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
- label = gtk.Label()
+ label = Gtk.Label()
label.set_alignment(0, 0.5)
sgroup.add_widget(label)
label.set_markup('<b>Open method:</b>')
- widget = gtk.Entry()
+ widget = Gtk.Entry()
commandnode = self.node.find('command')
if commandnode is not None:
command = commandnode.text
@@ -534,9 +534,9 @@ class Documents(Item):
widget.set_tooltip_text('If you need a more complicated command, type in that command and %f, which will tell compiz-boxmenu where to place the file name.')
widget.connect('changed', self.on_subnode_changed, 'command')
- hbox = gtk.HBox()
- hbox.pack_start(label)
- hbox.pack_start(widget, True, True)
+ hbox = Gtk.HBox()
+ hbox.pack_start(label, expand=True, fill=True, padding=0)
+ hbox.pack_start(widget, expand=True, fill=True, padding=0)
retlist.append(hbox)
iconnode = self.node.find('icon')
@@ -556,11 +556,11 @@ class Documents(Item):
icons.append(widget)
- label = gtk.Label()
+ label = Gtk.Label()
label.set_alignment(0, 0.5)
sgroup.add_widget(label)
label.set_markup('<b>Days from today:</b>')
- widget = gtk.Entry()
+ widget = Gtk.Entry()
agenode = self.node.find('age')
if agenode is not None:
@@ -570,16 +570,16 @@ class Documents(Item):
widget.props.text = age
widget.connect('changed', self.on_subnode_changed, 'age')
- hbox = gtk.HBox()
- hbox.pack_start(label)
- hbox.pack_start(widget, True, True)
+ hbox = Gtk.HBox()
+ hbox.pack_start(label, expand=True, fill=True, padding=0)
+ hbox.pack_start(widget, expand=True, fill=True, padding=0)
retlist.append(hbox)
- label = gtk.Label()
+ label = Gtk.Label()
label.set_alignment(0, 0.5)
sgroup.add_widget(label)
label.set_markup('<b>Items to display:</b>')
- widget = gtk.Entry()
+ widget = Gtk.Entry()
quantitynode = self.node.find('quantity')
if quantitynode is not None:
@@ -589,18 +589,18 @@ class Documents(Item):
widget.props.text = quantity
widget.connect('changed', self.on_subnode_changed, 'quantity')
- hbox = gtk.HBox()
- hbox.pack_start(label)
- hbox.pack_start(widget, True, True)
+ hbox = Gtk.HBox()
+ hbox.pack_start(label, expand=True, fill=True, padding=0)
+ hbox.pack_start(widget, expand=True, fill=True, padding=0)
retlist.append(hbox)
sortnode = self.node.find('sort')
- label = gtk.Label()
+ label = Gtk.Label()
label.set_alignment(0, 0.5)
sgroup.add_widget(label)
label.set_markup('<b>Sort mode:</b>')
- widget = gtk.combo_box_new_text()
+ widget = Gtk.ComboBoxText()
widget.append_text('None')
widget.append_text('Most Used')
widget.append_text('Least Used')
@@ -614,9 +614,9 @@ class Documents(Item):
widget.set_active(-1)
widget.connect('changed', self.on_sort_mode_changed)
- hbox = gtk.HBox()
- hbox.pack_start(label)
- hbox.pack_start(widget, True, True)
+ hbox = Gtk.HBox()
+ hbox.pack_start(label, expand=True, fill=True, padding=0)
+ hbox.pack_start(widget, expand=True, fill=True, padding=0)
retlist.append(hbox)
return icons,retlist
@@ -650,7 +650,7 @@ class Documents(Item):
sortnode = self.node.find('sort')
sorttype = widget.get_active_text()
if sorttype != 'None':
- print sorttype
+ print(sorttype)
if sortnode is None:
sortnode = etree.SubElement(self.node, 'sort')
if sorttype == 'Most Used':
diff --git a/new-editor/cbmenu.py b/new-editor/cbmenu.py
index 0fd3b98..ba0a310 100644
--- a/new-editor/cbmenu.py
+++ b/new-editor/cbmenu.py
@@ -1,58 +1,59 @@
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
import os
-import glib
+from gi.repository import GLib
from xdg import BaseDirectory
import re #This is to autoset file mode for *.desktop icons
-import ConfigParser
+import configparser
from lxml import etree
from cb_itemtypes import *
#test lines:
#import cbmenu,cb_itemtypes
-#import gtk
+#from gi.repository import Gtk
#blah=cbmenu.MenuFile("/home/shadowkyogre/.config/compiz/boxmenu/menu.xml")
-#blurg=gtk.Window()
+#blurg=Gtk.Window()
#blurg.add(blah)
#blurg.show_all()
-class MenuFile(gtk.ScrolledWindow):
+class MenuFile(Gtk.ScrolledWindow):
def __init__(self,filename):
- gtk.ScrolledWindow.__init__(self)
+ GObject.GObject.__init__(self)
- self.model = gtk.TreeStore(object)
+ self.model = Gtk.TreeStore(object)
self.add_menu_file(filename)
self.filename=filename
- self.props.hscrollbar_policy = gtk.POLICY_AUTOMATIC #because you really might want to read some of the stuff hanging off
- self.props.vscrollbar_policy = gtk.POLICY_AUTOMATIC
- self.treeview = gtk.TreeView(self.model)
+ self.props.hscrollbar_policy = Gtk.PolicyType.AUTOMATIC #because you really might want to read some of the stuff hanging off
+ self.props.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC
+ self.treeview = Gtk.TreeView(self.model)
self.treeview.set_reorderable(True)
- cell = gtk.CellRendererText()
- elements = gtk.TreeViewColumn('Item', cell)
+ cell = Gtk.CellRendererText()
+ elements = Gtk.TreeViewColumn('Item', cell)
elements.set_cell_data_func(cell, self.get_type)
self.treeview.append_column(elements)
- name = gtk.TreeViewColumn('Name')
+ name = Gtk.TreeViewColumn('Name')
- cell = gtk.CellRendererPixbuf()
- name.pack_start(cell, False)
+ cell = Gtk.CellRendererPixbuf()
+ name.pack_start(cell, expand=False)
name.set_cell_data_func(cell, self.get_icon)
- cell = gtk.CellRendererText()
- name.pack_start(cell)
+ cell = Gtk.CellRendererText()
+ name.pack_start(cell, expand=True) #, True, 0)
name.set_cell_data_func(cell, self.get_name)
self.treeview.append_column(name)
self.add(self.treeview)
targets = [
- ('deskmenu-element', gtk.TARGET_SAME_WIDGET, 0),
- #('deskmenu-element', gtk.TARGET_SAME_APP, 0),
- #('deskmenu-element', gtk.TREE_VIEW_ITEM, 0),
+ ('deskmenu-element', Gtk.TargetFlags.SAME_WIDGET, 0),
+ #('deskmenu-element', Gtk.TargetFlags.SAME_APP, 0),
+ #('deskmenu-element', Gtk.TREE_VIEW_ITEM, 0),
('text/uri-list', 0, 1),
]
- self.treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK, targets, gtk.gdk.ACTION_DEFAULT|gtk.gdk.ACTION_MOVE)
- self.treeview.enable_model_drag_dest(targets, gtk.gdk.ACTION_MOVE)
+ self.treeview.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK, targets, Gdk.DragAction.DEFAULT|Gdk.DragAction.MOVE)
+ self.treeview.enable_model_drag_dest(targets, Gdk.DragAction.MOVE)
self.treeview.connect('drag-data-get', self.on_drag_data_get)
self.treeview.connect('drag-data-received', self.on_drag_data_received)
@@ -65,11 +66,11 @@ class MenuFile(gtk.ScrolledWindow):
self.selection = self.treeview.get_selection()
self.selection.connect('changed', self.on_selection_changed)
- self.popup = gtk.Menu()
- self.edit_menu = gtk.ImageMenuItem(stock_id=gtk.STOCK_EDIT)
+ self.popup = Gtk.Menu()
+ self.edit_menu = Gtk.MenuItem.new_with_mnemonic("_EDIT")
self.edit_menu.connect('activate', self.on_edit_clicked)
self.popup.append(self.edit_menu)
- self.delete_menu = gtk.ImageMenuItem(stock_id=gtk.STOCK_DELETE)
+ self.delete_menu = Gtk.MenuItem.new_with_mnemonic("_DELETE")
self.delete_menu.connect('activate', self.on_delete_clicked)
self.popup.append(self.delete_menu)
self.popup.show_all()
@@ -87,29 +88,29 @@ class MenuFile(gtk.ScrolledWindow):
if item.node.tag == 'menu':
self.add_menu(item, iter)
- def get_name(self, column, cell, model, iter):
+ def get_name(self, column, cell, model, iter, face):
name = model.get_value(iter, 0).get_name()
if name is None:
name = ''
cell.set_property('text', name)
- def get_type(self, column, cell, model, iter):
+ def get_type(self, column, cell, model, iter, face):
typ = model.get_value(iter, 0).get_type()
if typ is None:
typ = ''
cell.set_property('text', typ)
- def get_icon(self, column, cell, model, iter):
+ def get_icon(self, column, cell, model, iter, face):
icon = model.get_value(iter, 0).get_icon()
icon_mode = model.get_value(iter, 0).get_icon_mode()
#somehow does not set icon until selection change with things that don't have icons originally!
if icon is not None:
if icon_mode is not None:
- w = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
+ w = Gtk.icon_size_lookup(Gtk.IconSize.MENU)
try:
- cell.set_property('pixbuf', gtk.gdk.pixbuf_new_from_file_at_size(os.path.expanduser(icon), w[0], w[0]))
+ cell.set_property('pixbuf', GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.expanduser(icon), w[0], w[0]))
cell.set_property('icon-name', None) #possibly reduntant safety measure
- except glib.GError:
+ except GLib.GError:
cell.set_property('icon-name', None)
cell.set_property('pixbuf', None)
else:
@@ -135,11 +136,11 @@ class MenuFile(gtk.ScrolledWindow):
current = model[row][0].node
if current.tag == 'menu' and len(current):
- warning = gtk.MessageDialog(self.get_toplevel(), \
- gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_NONE, \
+ warning = Gtk.MessageDialog(self.get_toplevel(), \
+ Gtk.DialogFlags.MODAL, Gtk.MessageType.INFO, Gtk.ButtonsType.NONE, \
'Delete menu element with %s children?' %len(current))
- warning.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_DELETE, gtk.RESPONSE_ACCEPT)
- if warning.run() != gtk.RESPONSE_ACCEPT:
+ warning.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_DELETE, Gtk.ResponseType.ACCEPT)
+ if warning.run() != Gtk.ResponseType.ACCEPT:
warning.destroy()
return
warning.destroy()
@@ -183,17 +184,17 @@ class MenuFile(gtk.ScrolledWindow):
return
dest = model[path][0]
- if context.action == gtk.gdk.ACTION_MOVE:
+ if context.action == Gdk.DragAction.MOVE:
source.node.getparent().remove(source.node)
- if dest.node.tag == 'menu' and position in (gtk.TREE_VIEW_DROP_INTO_OR_BEFORE,
- gtk.TREE_VIEW_DROP_INTO_OR_AFTER):
+ if dest.node.tag == 'menu' and position in (Gtk.TreeViewDropPosition.INTO_OR_BEFORE,
+ Gtk.TreeViewDropPosition.INTO_OR_AFTER):
dest.node.append(source.node)
fiter = model.append(diter, row=(source,))
else:
i = dest.node.getparent().index(dest.node)
- if position in (gtk.TREE_VIEW_DROP_INTO_OR_BEFORE,
- gtk.TREE_VIEW_DROP_BEFORE):
+ if position in (Gtk.TreeViewDropPosition.INTO_OR_BEFORE,
+ Gtk.TreeViewDropPosition.BEFORE):
dest.node.getparent().insert(i, source.node)
fiter = model.insert_before(None, diter, row=(source,))
else:
@@ -205,17 +206,17 @@ class MenuFile(gtk.ScrolledWindow):
while citer is not None:
model.append(fiter, row=(model[citer][0],))
citer = model.iter_next(citer)
- if context.action == gtk.gdk.ACTION_MOVE:
+ if context.action == Gdk.DragAction.MOVE:
context.finish(True, True, etime)
elif selection.type == 'text/uri-list':
- print selection.data, drop_info
+ print(selection.data, drop_info)
#uri = selection.data.replace('file:///', '/').replace("%20"," ").replace("\x00","").strip()
uris = selection.data.replace('file:///', '/').strip('\r\n\x00').split()
launchers = []
for uri in uris:
uri=uri.replace("%20", " ")
- entry = ConfigParser.ConfigParser()
+ entry = configparser.ConfigParser()
entry.read(uri)
launcher = Launcher()
launcher.name = etree.SubElement(launcher.node, 'name')
@@ -227,7 +228,7 @@ class MenuFile(gtk.ScrolledWindow):
launcher.icon.attrib['mode1'] = 'file'
launcher.icon.text = entry.get('Desktop Entry', 'Icon')
launcher.command.text = entry.get('Desktop Entry', 'Exec').split('%')[0]
- except ConfigParser.Error:
+ except configparser.Error:
return
launchers.append(launcher)
if drop_info:
@@ -235,16 +236,16 @@ class MenuFile(gtk.ScrolledWindow):
dest = model[path][0]
diter = model.get_iter(path)
#print(dest.node, dest.node.getroot())
- if dest.node.tag == 'menu' and position in (gtk.TREE_VIEW_DROP_INTO_OR_BEFORE,
- gtk.TREE_VIEW_DROP_INTO_OR_AFTER):
+ if dest.node.tag == 'menu' and position in (Gtk.TreeViewDropPosition.INTO_OR_BEFORE,
+ Gtk.TreeViewDropPosition.INTO_OR_AFTER):
for launcher in launchers:
dest.node.append(launcher.node)
fiter = model.append(diter, row=(launcher,))
else:
i = dest.node.getparent().index(dest.node)
for launcher in launchers:
- if position in (gtk.TREE_VIEW_DROP_INTO_OR_BEFORE,
- gtk.TREE_VIEW_DROP_BEFORE):
+ if position in (Gtk.TreeViewDropPosition.INTO_OR_BEFORE,
+ Gtk.TreeViewDropPosition.BEFORE):
dest.node.getparent().insert(i, launcher.node)
fiter = model.insert_before(None, diter, row=(launcher,))
else:
@@ -252,7 +253,7 @@ class MenuFile(gtk.ScrolledWindow):
fiter = model.insert_after(None, diter, row=(launcher,))
diter = fiter
i+=1
- if context.action == gtk.gdk.ACTION_MOVE:
+ if context.action == Gdk.DragAction.MOVE:
context.finish(True, True, etime)
else:
for launcher in launchers:
@@ -315,15 +316,15 @@ class MenuFile(gtk.ScrolledWindow):
self.indent(self.menu.node)
self.menufile.write(open(self.filename, 'w'))
-class EditItemPanel(gtk.HBox):
+class EditItemPanel(Gtk.HBox):
def __init__(self, model=None, row=None, element=None):
- gtk.HBox.__init__(self)
- self.vbox_image_grid=gtk.VBox(False, 2)
- self.vbox_other_options=gtk.VBox(False, 2)
+ GObject.GObject.__init__(self)
+ self.vbox_image_grid=Gtk.VBox(False, 2)
+ self.vbox_other_options=Gtk.VBox(False, 2)
- self.pack_start(self.vbox_image_grid)
- self.pack_end(self.vbox_other_options)
+ self.pack_start(self.vbox_image_grid, expand=True, fill=True, padding=0)
+ self.pack_end(self.vbox_other_options, expand=True, fill=True, padding=0)
self.props.spacing = 6
@@ -338,9 +339,9 @@ class EditItemPanel(gtk.HBox):
icons,widgets=element.get_options()
for icon in icons:
- self.vbox_image_grid.pack_start(icon, fill=False)
+ self.vbox_image_grid.pack_start(icon, expand=True, fill=True, padding=0)
for widget in widgets:
- self.vbox_other_options.pack_start(widget, fill=False)
+ self.vbox_other_options.pack_start(widget, expand=True, fill=True, padding=0)
self.show_all()
diff --git a/new-editor/cbutil.py b/new-editor/cbutil.py
index 2be7fd0..2ea71ec 100644
--- a/new-editor/cbutil.py
+++ b/new-editor/cbutil.py
@@ -1,67 +1,67 @@
import os, gtk, glib
from pyicon_browser import *
-import gobject
+from gi.repository import GObject
import subprocess
import shlex
import os
-class TabButton(gtk.HBox):
+class TabButton(Gtk.HBox):
def __init__(self, text):
- gtk.HBox.__init__(self)
+ GObject.GObject.__init__(self)
#http://www.eurion.net/python-snippets/snippet/Notebook%20close%20button.html
- self.label = gtk.Label(text)
- self.pack_start(self.label)
+ self.label = Gtk.Label(label=text)
+ self.pack_start(self.label, expand=True, fill=True, padding=0)
#get a stock close button image
- close_image = gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
- image_w, image_h = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
+ close_image = Gtk.Image.new_from_stock(Gtk.STOCK_CLOSE, Gtk.IconSize.MENU)
+ b_val, image_w, image_h = Gtk.icon_size_lookup(Gtk.IconSize.MENU)
#make the close button
- self.btn = gtk.Button()
- self.btn.set_relief(gtk.RELIEF_NONE)
+ self.btn = Gtk.Button()
+ self.btn.set_relief(Gtk.ReliefStyle.NONE)
self.btn.set_focus_on_click(False)
self.btn.add(close_image)
- self.pack_start(self.btn, False, False)
+ self.pack_start(self.btn, expand=False, fill=False, padding=0)
#this reduces the size of the button
- style = gtk.RcStyle()
- style.xthickness = 0
- style.ythickness = 0
- self.btn.modify_style(style)
+ #style = Gtk.RcStyle()
+ #style.xthickness = 0
+ #style.ythickness = 0
+ #self.btn.modify_style(style)
self.show_all()
#test code
#from cbutil import *
-#import gtk
-#d=gtk.Dialog()
+#from gi.repository import Gtk
+#d=Gtk.Dialog()
#d.vbox.add(CommandText())
#d.run()
-class CommandText(gtk.HBox):
+class CommandText(Gtk.HBox):
def __init__(self, label_text="Name", mode="Normal", text="", alternate_mode="Execute"):
- gtk.HBox.__init__(self)
+ GObject.GObject.__init__(self)
- label=gtk.Label(label_text)
+ label=Gtk.Label(label=label_text)
- self.entry=gtk.Entry()
+ self.entry=Gtk.Entry()
self.entry.props.text=text
- self.button=gtk.Button()
- image=gtk.image_new_from_icon_name("gtk-execute",gtk.ICON_SIZE_LARGE_TOOLBAR)
+ self.button=Gtk.Button()
+ image=Gtk.Image.new_from_icon_name("gtk-execute",Gtk.IconSize.LARGE_TOOLBAR)
self.button.set_image(image)
#known bug
self.button.set_tooltip_markup("See the output this command generates")
- self.combobox=gtk.combo_box_new_text()
+ self.combobox=Gtk.ComboBoxText()
self.combobox.append_text("Normal")
self.combobox.append_text(alternate_mode)
self.combobox.props.active = mode != "Normal"
- self.pack_start(label,expand=False)
- self.pack_start(self.entry)
- self.pack_end(self.button,expand=False)
- self.pack_end(self.combobox)
+ self.pack_start(label,expand=False,fill=True,padding=0)
+ self.pack_start(self.entry, True, True, 0)
+ self.pack_end(self.button,expand=False,fill=True,padding=0)
+ self.pack_end(self.combobox, True, True, 0)
self.combobox.connect('changed', self._emit_mode_signal)
self.entry.connect('changed', self._emit_text_signal)
@@ -76,7 +76,7 @@ class CommandText(gtk.HBox):
self.button.props.sensitive=1
if alternate_mode != "Execute" or get_mode != "Normal":
- completion = gtk.EntryCompletion()
+ completion = Gtk.EntryCompletion()
self.entry.set_completion(completion)
completion.set_model(POSSIBILITY_STORE)
completion.set_text_column(0)
@@ -87,7 +87,7 @@ class CommandText(gtk.HBox):
self.entry.set_completion(None)
self.button.props.sensitive=0
else:
- completion = gtk.EntryCompletion()
+ completion = Gtk.EntryCompletion()
self.entry.set_completion(completion)
completion.set_model(POSSIBILITY_STORE)
completion.set_text_column(0)
@@ -98,9 +98,9 @@ class CommandText(gtk.HBox):
self.emit('text-changed', widget.props.text)
def _preview_text(self, widget):
- print "Generating preview, please wait..."
- buffer=gtk.TextBuffer()
- buffer_errors=gtk.TextBuffer()
+ print("Generating preview, please wait...")
+ buffer=Gtk.TextBuffer()
+ buffer_errors=Gtk.TextBuffer()
full_text=' '.join(['/usr/bin/env',os.path.expanduser(self.entry.props.text)])
cmd=subprocess.Popen(shlex.split(full_text),stdout=subprocess.PIPE, stderr=subprocess.PIPE)
text,errors=cmd.communicate()
@@ -114,20 +114,20 @@ class CommandText(gtk.HBox):
else:
buffer_errors.set_text("")
- dialog=gtk.Dialog(title="Preview of %s" %(self.entry.props.text), \
- buttons=(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
+ dialog=Gtk.Dialog(title="Preview of %s" %(self.entry.props.text), \
+ buttons=(Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
- tabs=gtk.Notebook()
+ tabs=Gtk.Notebook()
tabs.set_scrollable(True)
- scrolled=gtk.ScrolledWindow()
- scrolled.add(gtk.TextView(buffer))
+ scrolled=Gtk.ScrolledWindow()
+ scrolled.add(Gtk.TextView(buffer))
- scrolled_errors=gtk.ScrolledWindow()
- scrolled_errors.add(gtk.TextView(buffer_errors))
+ scrolled_errors=Gtk.ScrolledWindow()
+ scrolled_errors.add(Gtk.TextView(buffer_errors))
- tabs.append_page(scrolled, gtk.Label("Output"))
- tabs.append_page(scrolled_errors, gtk.Label("Errors"))
+ tabs.append_page(scrolled, Gtk.Label(label="Output"))
+ tabs.append_page(scrolled_errors, Gtk.Label(label="Errors"))
dialog.vbox.add(tabs)
dialog.show_all()
@@ -136,58 +136,58 @@ class CommandText(gtk.HBox):
#test code
#from cbutil import *
-#import gtk
-#d=gtk.Dialog()
+#from gi.repository import Gtk
+#d=Gtk.Dialog()
#d.vbox.add(IconSelector())
#d.run()
-class IconSelector(gtk.HBox):
+class IconSelector(Gtk.HBox):
def __init__(self, label_text="Icon", mode="Normal", text=""):
- gtk.HBox.__init__(self)
+ GObject.GObject.__init__(self)
- label=gtk.Label(label_text)
+ label=Gtk.Label(label=label_text)
self.text=text
- self.combobox=gtk.combo_box_new_text()
+ self.combobox=Gtk.ComboBoxText()
self.combobox.append_text("Normal")
self.combobox.append_text("File path")
self.combobox.props.active = mode != "Normal"
- self.button=gtk.Button()
- self.image=gtk.Image()
+ self.button=Gtk.Button()
+ self.image=Gtk.Image()
- self.pack_start(label, expand=False)
- self.pack_start(self.button,expand=False)
- self.pack_end(self.combobox, expand=True)
+ self.pack_start(label, False, True, 0)
+ self.pack_start(self.button,expand=False,fill=True,padding=0)
+ self.pack_end(self.combobox, True, True, 0)
self.button.set_image(self.image)
self.combobox.connect('changed', self._emit_mode_signal)
self.button.connect('pressed', self._emit_text_signal)
if mode == "File path":
- size=gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
+ size=Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)[0]
try:
- pixbuf=gtk.gdk.pixbuf_new_from_file_at_size(os.path.expanduser(self.text), size, size)
+ pixbuf=GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.expanduser(self.text), size, size)
self.image.set_from_pixbuf(pixbuf)
- except glib.GError:
+ except GLib.GError:
self.image.set_from_pixbuf(None)
- print "Couldn't set icon from file: %s" %(self.text)
+ print("Couldn't set icon from file: %s" %(self.text))
else:
- self.image.set_from_icon_name(self.text,gtk.ICON_SIZE_LARGE_TOOLBAR)
+ self.image.set_from_icon_name(self.text,Gtk.IconSize.LARGE_TOOLBAR)
self.button.set_tooltip_text(self.text)
self.show_all()
def _change_image(self, mode):
if mode == "File path":
- size=gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR)[0]
+ size=Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)[0]
try:
- pixbuf=gtk.gdk.pixbuf_new_from_file_at_size(os.path.expanduser(self.text), size, size)
+ pixbuf=GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.expanduser(self.text), size, size)
self.image.set_from_pixbuf(pixbuf)
- except glib.GError:
+ except GLib.GError:
self.image.set_from_pixbuf(None)
- print "Couldn't set icon from file: %s" %(self.text)
+ print("Couldn't set icon from file: %s" %(self.text))
else:
- self.image.set_from_icon_name(self.text,gtk.ICON_SIZE_LARGE_TOOLBAR)
+ self.image.set_from_icon_name(self.text,Gtk.IconSize.LARGE_TOOLBAR)
self.emit('image-changed', mode)
def _emit_mode_signal(self, widget):
@@ -201,14 +201,14 @@ class IconSelector(gtk.HBox):
dialog=IcoBrowse()
dialog.set_defaults(self.text)
response = dialog.run()
- if response == gtk.RESPONSE_ACCEPT:
+ if response == Gtk.ResponseType.ACCEPT:
text=dialog.get_icon_name(None)
dialog.destroy()
else:
- btns=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT)
- dialog=gtk.FileChooserDialog(title="Select Icon", buttons=btns)
+ btns=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT)
+ dialog=Gtk.FileChooserDialog(title="Select Icon", buttons=btns)
dialog.set_filename(text)
- filter = gtk.FileFilter()
+ filter = Gtk.FileFilter()
filter.set_name("Images")
filter.add_mime_type("image/png")
filter.add_mime_type("image/jpeg")
@@ -220,7 +220,7 @@ class IconSelector(gtk.HBox):
filter.add_pattern("*.xpm")
dialog.add_filter(filter)
response = dialog.run()
- if response == gtk.RESPONSE_ACCEPT:
+ if response == Gtk.ResponseType.ACCEPT:
text=dialog.get_filename()
dialog.destroy()
if text != self.text and (text != "" and text != None):
@@ -230,27 +230,27 @@ class IconSelector(gtk.HBox):
self.emit('text-changed', text)
def set_up():
- gobject.type_register(CommandText)
- gobject.type_register(IconSelector)
+ GObject.type_register(CommandText)
+ GObject.type_register(IconSelector)
- gobject.signal_new("text-changed", CommandText, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
- gobject.signal_new("mode-changed", CommandText, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
+ GObject.signal_new("text-changed", CommandText, GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,))
+ GObject.signal_new("mode-changed", CommandText, GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,))
- gobject.signal_new("image-changed", IconSelector, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
- gobject.signal_new("text-changed", IconSelector, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
- gobject.signal_new("mode-changed", IconSelector, gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING,))
+ GObject.signal_new("image-changed", IconSelector, GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,))
+ GObject.signal_new("text-changed", IconSelector, GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,))
+ GObject.signal_new("mode-changed", IconSelector, GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_STRING,))
def completion_setup():
- print "Setting up command auto completion for best experience"
+ print("Setting up command auto completion for best experience")
for i in os.path.expandvars("$PATH").split(":"):
if os.path.exists(i):
- print "Looking in %s" %i
+ print("Looking in %s" %i)
for j in os.listdir(i):
path="%s/%s" %(i,j)
if not os.path.isdir(path) and \
os.access(path, os.X_OK):
POSSIBILITY_STORE.append([j])
-POSSIBILITY_STORE = gtk.ListStore(str)
+POSSIBILITY_STORE = Gtk.ListStore(str)
set_up()
completion_setup()
diff --git a/new-editor/pyicon_browser.py b/new-editor/pyicon_browser.py
index 556c15b..14951e6 100644
--- a/new-editor/pyicon_browser.py
+++ b/new-editor/pyicon_browser.py
@@ -1,39 +1,43 @@
-import gtk, gobject, re
-from glib import GError
+from gi.repository import Gtk
+from gi.repository import GdkPixbuf
+from gi.repository import GObject
+import re
+from gi.repository import GLib
+#from GLib import GError
from sys import stderr
#http://developer.gnome.org/pygtk/2.22/class-gtkicontheme.html#method-gtkicontheme--list-contexts
-class IcoBrowse(gtk.Dialog):
+class IcoBrowse(Gtk.Dialog):
def __init__(self, message="", default_text='', modal=True):
- gtk.Dialog.__init__(self)
- self.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CLOSE,
- gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)
+ GObject.GObject.__init__(self)
+ self.add_buttons(Gtk.STOCK_CANCEL, Gtk.ResponseType.CLOSE,
+ Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT)
#self.set_title("Icon search")
if modal:
self.set_modal(True)
self.set_border_width(5)
self.set_size_request(400, 300)
- self.combobox=gtk.combo_box_new_text()
+ self.combobox=Gtk.ComboBoxText()
self.combobox.set_size_request(200, 20)
- hbox=gtk.HBox(False,2)
+ hbox=Gtk.HBox(False,2)
#format: actual icon, name, context
- #self.model=gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ #self.model=Gtk.ListStore(GdkPixbuf.Pixbuf, GObject.TYPE_STRING, GObject.TYPE_STRING)
#self.modelfilter=self.model.filter_new()
self.modelfilter=ICON_STORE.filter_new()
- self.iconview=gtk.IconView()
+ self.iconview=Gtk.IconView()
self.iconview.set_model(self.modelfilter)
self.iconview.set_pixbuf_column(0)
self.iconview.set_text_column(1)
- self.iconview.set_selection_mode(gtk.SELECTION_SINGLE)
+ self.iconview.set_selection_mode(Gtk.SelectionMode.SINGLE)
self.iconview.set_item_width(72)
self.iconview.set_size_request(200, 220)
- defaulttheme=gtk.icon_theme_get_default()
+ defaulttheme=Gtk.IconTheme.get_default()
self.combobox.connect('changed', self.category_changed)
- self.refine=gtk.Entry()
+ self.refine=Gtk.Entry()
self.refine.connect('changed', self.category_changed)
- self.refine.set_icon_from_stock(gtk.ENTRY_ICON_SECONDARY, gtk.STOCK_FIND)
+ self.refine.set_icon_from_stock(Gtk.EntryIconPosition.SECONDARY, Gtk.STOCK_FIND)
self.refine.set_size_request(200, 30)
self.modelfilter.set_visible_func(self.search_icons)
#catted_icons=[]
@@ -44,19 +48,19 @@ class IcoBrowse(gtk.Dialog):
#for i in current:
# try:
# self.model.append([defaulttheme.load_icon(i, 32,
- # gtk.ICON_LOOKUP_USE_BUILTIN),
+ # Gtk.IconLookupFlags.USE_BUILTIN),
# i,c])
# except GError as err: stderr.write('Error loading "%s": %s\n' % (i, err.args[0]))
#other=list(set(defaulttheme.list_icons())-(set(catted_icons)))
#for i in other:
# self.model.append([defaulttheme.load_icon(i, 32,
- # gtk.ICON_LOOKUP_USE_BUILTIN),
+ # Gtk.IconLookupFlags.USE_BUILTIN),
# i,"Other"])
self.combobox.prepend_text("Other")
- scrolled = gtk.ScrolledWindow()
+ scrolled = Gtk.ScrolledWindow()
scrolled.add(self.iconview)
- scrolled.props.hscrollbar_policy = gtk.POLICY_NEVER
- scrolled.props.vscrollbar_policy = gtk.POLICY_AUTOMATIC
+ scrolled.props.hscrollbar_policy = Gtk.PolicyType.NEVER
+ scrolled.props.vscrollbar_policy = Gtk.PolicyType.AUTOMATIC
hbox.add(self.combobox)
hbox.add(self.refine)
self.vbox.add(hbox)
@@ -70,12 +74,12 @@ class IcoBrowse(gtk.Dialog):
def set_defaults(self, icon_name):
if icon_name != "" and icon_name != None:
cmodel = self.combobox.get_model()
- for i in xrange(len(ICON_STORE)):
+ for i in range(len(ICON_STORE)):
if ICON_STORE[i][1] == icon_name:
self.refine.props.text=icon_name
- for j in xrange(len(cmodel)):
+ for j in range(len(cmodel)):
if ICON_STORE[i][2] == cmodel[j][0]:
- print cmodel[j]
+ print(cmodel[j])
self.combobox.set_active(j)
break
break
@@ -88,7 +92,7 @@ class IcoBrowse(gtk.Dialog):
def category_changed(self, widget):
self.modelfilter.refilter()
- def search_icons(self, tree, iter):
+ def search_icons(self, tree, iter, face):
search_term = self.combobox.get_active_text()
search_term2 = self.refine.props.text
if ICON_STORE.get_value(iter, 2) == search_term:
@@ -99,33 +103,33 @@ class IcoBrowse(gtk.Dialog):
return False
def set_up():
- print "Preloading icons"
- defaulttheme=gtk.icon_theme_get_default()
+ print("Preloading icons")
+ defaulttheme=Gtk.IconTheme.get_default()
catted_icons=set()
for c in defaulttheme.list_contexts():
current=defaulttheme.list_icons(context=c)
catted_icons=catted_icons.union(set(current))
- print "Found {} icons in {}".format(len(current),c)
+ print("Found {} icons in {}".format(len(current),c))
#self.combobox.append_text(c)
for i in current:
try:
ICON_STORE.append([defaulttheme.load_icon(i, 32,
- gtk.ICON_LOOKUP_USE_BUILTIN),
+ Gtk.IconLookupFlags.USE_BUILTIN),
i,c])
except GError as err: stderr.write('Error loading "%s": %s\n' % (i, err.args[0]))
other=list(set(defaulttheme.list_icons())-catted_icons)
- print "Placing misc. icons in Other"
+ print("Placing misc. icons in Other")
for i in other:
ICON_STORE.append([defaulttheme.load_icon(i, 32,
- gtk.ICON_LOOKUP_USE_BUILTIN),
+ Gtk.IconLookupFlags.USE_BUILTIN),
i,"Other"])
-ICON_STORE=gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING, gobject.TYPE_STRING)
+ICON_STORE=Gtk.ListStore(GdkPixbuf.Pixbuf, GObject.TYPE_STRING, GObject.TYPE_STRING)
set_up()
if __name__ == '__main__':
icobrowse = IcoBrowse()
- icobrowse.connect('destroy', gtk.main_quit)
+ icobrowse.connect('destroy', Gtk.main_quit)
icobrowse.run()
- gtk.main()
+ Gtk.main()