|
|
2008-08-20
, 12:02
|
|
|
Posts: 716 |
Thanked: 236 times |
Joined on Dec 2007
|
#22
|
| The Following 4 Users Say Thank You to tz1 For This Useful Post: | ||
|
|
2008-08-20
, 12:11
|
|
Posts: 1,208 |
Thanked: 1,028 times |
Joined on Oct 2007
|
#23
|
May I impose on your code wizardry once more - how about a taskbar item. I'd like to replace Contacts with a shell program launcher or something similar.
Changing Statusbar to Taskbar (and adding an appropriate desktop file under the hildon-navigator directory, Type=python) makes it recognized in Panels, but no icon, and the taskbar shifts up. I didn't put a menu in (yet) so that might be the problem.
import gtk
import hildondesktop
class statusbar_applet(hildondesktop.TaskNavigatorItem):
def __init__(self):
hildondesktop.TaskNavigatorItem.__init__(self)
self.button = gtk.Button()
self.button.set_image(gtk.image_new_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU))
self.button.set_name("hildon-navigator-button-one")
self.button.set_size_request(80,80)
self.button.connect("clicked",self.popup_menu)
self.create_menu()
self.add(self.button)
self.show_all()
def create_menu(self):
self.menu = gtk.Menu()
menu_item = gtk.MenuItem("Hello World!")
menu_item.connect('activate',self.show_dialog)
self.menu.append(menu_item)
self.menu.set_name("menu_from_navigator")
self.menu.show_all()
def popup_menu(self,widget,data=None):
self.menu.popup(None,None,self.menu_position,0,gtk.get_current_event_time())
def show_dialog(self,widget,data=None):
mdlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,"Hello World!")
mdlg.run()
mdlg.destroy()
def menu_position(self,data=None):
x = self.button.allocation.x + self.button.allocation.width
y = self.button.allocation.y
return (x,y,True)
def hd_plugin_get_objects():
plugin = statusbar_applet()
return [plugin]
| The Following User Says Thank You to mikkov For This Useful Post: | ||
|
|
2008-08-20
, 12:30
|
|
|
Posts: 716 |
Thanked: 236 times |
Joined on Dec 2007
|
#24
|
[Desktop Entry] Name=PyTask Type=python X-Path=pytaskbar
|
|
2008-08-20
, 12:43
|
|
Posts: 1,208 |
Thanked: 1,028 times |
Joined on Oct 2007
|
#25
|
Unfortunately, like tz1 said, there are NO error messages when something fails...
|
|
2008-08-20
, 12:59
|
|
|
Posts: 716 |
Thanked: 236 times |
Joined on Dec 2007
|
#26
|
|
|
2008-08-20
, 13:14
|
|
|
Posts: 716 |
Thanked: 236 times |
Joined on Dec 2007
|
#27
|
|
|
2008-08-20
, 16:40
|
|
|
Posts: 480 |
Thanked: 378 times |
Joined on Apr 2008
@ Chicago-ish
|
#28
|
import gtk
import hildondesktop
class statusbar_applet(hildondesktop.StatusbarItem):
def __init__(self):
hildondesktop.StatusbarItem.__init__(self)
self.button = gtk.Button()
self.button.set_image(gtk.image_new_from_file("/usr/share/icons/hicolor/40x40/hildon/pyrdesktop.png"))
self.button.set_name("hildon-statusbar-button-one")
self.button.set_size_request(40,40)
self.button.connect("clicked",self.popup_menu)
self.create_menu()
self.add(self.button)
self.show_all()
def create_menu(self):
self.menu = gtk.Menu()
menu_item = gtk.MenuItem("Hello World!")
menu_item.connect('activate',self.show_dialog)
self.menu.append(menu_item)
self.menu.set_name("menu_from_statusbar")
self.menu.show_all()
def popup_menu(self,widget,data=None):
self.menu.popup(None,None,self.menu_position,0,gtk.get_current_event_time())
def show_dialog(self,widget,data=None):
mdlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,"Hello World!")
mdlg.run()
mdlg.destroy()
def menu_position(self,data=None):
x = self.button.get_allocation().x
y = self.button.get_allocation().y + self.button.get_allocation().height
return (x,y,True)
def hd_plugin_get_objects():
plugin = statusbar_applet()
return [plugin]


|
|
2008-08-20
, 17:51
|
|
|
Posts: 716 |
Thanked: 236 times |
Joined on Dec 2007
|
#29
|
|
|
2008-08-20
, 20:51
|
|
|
Posts: 480 |
Thanked: 378 times |
Joined on Apr 2008
@ Chicago-ish
|
#30
|
def menu_position(self,data=None): (reqw, reqh) = self.menu.get_size_request() sw = self.button.get_screen().get_width() (x,y) = self.button.get_parent_window().get_position() y = y + self.button.get_allocation().y + self.button.get_allocation().height x = x + self.button.get_allocation().x greater = x + reqw if (greater > sw) : x = x - req.width - self.button.get_allocation().width; return (x,y,True)
import gtk
import hildondesktop
class statusbar_applet(hildondesktop.StatusbarItem):
def __init__(self):
hildondesktop.StatusbarItem.__init__(self)
self.button = gtk.ToggleButton()
self.button.set_image(gtk.image_new_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU))
self.button.set_name("hildon-statusbar-button-one")
self.button.set_size_request(40,40)
self.button.connect("clicked",self.popup_menu)
self.add(self.button)
self.show_all()
def create_menu(self):
self.menu = gtk.Menu()
menu_item = gtk.MenuItem("Hello World!")
menu_item.connect('activate',self.show_dialog)
self.menu.append(menu_item)
self.menu.set_name("menu_from_statusbar")
self.menu.connect("selection-done", self.menu_done)
self.menu.show_all()
def popup_menu(self,widget,data=None):
if (self.button.get_active() == True) :
self.create_menu()
self.menu.popup(None,None,self.menu_position,0,gtk.get_current_event_time())
def show_dialog(self,widget,data=None):
mdlg = gtk.MessageDialog(None,0,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,"Hello World!")
mdlg.run()
mdlg.destroy()
def menu_done(self, widget, data=None):
self.button.set_active(False)
self.menu.destroy()
def menu_position(self,data=None):
(reqw, reqh) = self.menu.get_size_request()
sw = self.button.get_screen().get_width()
(x,y) = self.button.get_parent_window().get_position()
y = y + self.button.get_allocation().y + self.button.get_allocation().height
x = x + self.button.get_allocation().x
greater = x + reqw
if (greater > sw) :
x = x - req.width - self.button.get_allocation().width;
return (x,y,True)
def hd_plugin_get_objects():
plugin = statusbar_applet()
return [plugin]

| The Following User Says Thank You to TrueJournals For This Useful Post: | ||
Andrew Flegg -- mailto:andrew@bleb.org | http://www.bleb.org