|
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