[pygtk] (no subject)
McBride, Nathan
NMcbride at geico.com
Fri Nov 16 07:21:41 WST 2007
Actually, it doesn't seem to be re-creating the window after all. However, I can't seem to figure out how to bring the window back.
I have tried:
self.window.show()
self.window.deiconify()
self.window.ahow_all()
What is the correct way to do this?
-----Original Message-----
From: pygtk-bounces at daa.com.au [mailto:pygtk-bounces at daa.com.au] On Behalf Of Julio Carlos Menéndez
Sent: Thursday, November 15, 2007 4:08 PM
To: pygtk at daa.com.au
Subject: Re: [pygtk] (no subject)
If you put all this code:
statusIcon = gtk.StatusIcon()
menu = gtk.Menu()
menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
menuItem.connect('activate', icon_show_about)
menu.append(menuItem)
menuItem = gtk.SeparatorMenuItem()
menu.append(menuItem)
menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
menuItem.connect('activate', quit_cb, statusIcon)
menu.append(menuItem)
# statusIcon.set_from_stock(gtk.STOCK_HOME)
statusIcon.set_from_file("pixmaps/dmcal.png")
statusIcon.set_tooltip("DM-Crypt & LUKS Encryption Suite")
statusIcon.connect('activate', activate_icon_cb)
statusIcon.connect('popup-menu', popup_menu_cb, menu)
statusIcon.set_visible(True)
inside the __init__ method and every method you create should have the syntax '<method_name>(self,<parameters>)' to make it an instance method. Doing all that you should be able to use any self.<whatever_you_want>
The method should be like this:
def activate_icon_cb(self, widget):
if self.window.visible():
self.window.hide()
else:
self..window.show()
Hope this works for you.
On Thu, 15 Nov 2007 13:15:35 -0500
"McBride, Nathan" <NMcbride at geico.com> wrote:
> run the program and the main window comes up with the status icon.
> When I minimize the window, instead of minimizing it, it hides it. So
> the window is gone but the icon is still in the tasktray. (minimizing
> to tasktray) What I am trying to accomplish is that when you click the
> tasktray icon then the window unhides and comes back.
>
> everything works flawlessly except i can't get:
>
> def activate_icon_cb(widget, data = None):
> pass
>
> to have access to self.window from the __init__ to run the
> self.window.show(). I'have tried setting it up like:
>
> def activate_icon_cb(self, widget, data = None):
> pass
>
> # statusIcon.set_from_stock(gtk.STOCK_HOME)
> statusIcon.set_from_file("pixmaps/dmcal.png")
> statusIcon.set_tooltip("DM-Crypt & LUKS Encryption Suite")
> statusIcon.connect('activate', activate_icon_cb(self))
> statusIcon.connect('popup-menu', popup_menu_cb, menu)
> statusIcon.set_visible(True)
>
> but it says self isn't defined. When I tried recalling the widget from
> the glade file and showing it that way instead of showing it it just
> made another. But I have to bring the first on back up not make a new
> one.
>
> Thanks for helping me with this.
>
> Nate
>
> Here is the majority of the code:
>
> class dmcalGTK:
> """The DMCal Application"""
>
> def __init__(self):
>
> #Set the glade file
> self.gladefile = "dmcal.glade"
> self.wTree = gtk.glade.XML(self.gladefile, "dmcalMain")
>
> self.window = self.wTree.get_widget("dmcalMain")
> self.window.connect('window-state-event',
> self.window_event)
>
> #Create our dictionary and connect it
> dic = {"on_create_container_activate" :
> self.create_container_activate,
> "on_dmcalMain_destroy" : self.dmcalMain_destroy,
> "on_aboutMenuItem_activate" : self.showAbout,
> "on_quitButton_clicked" : self.dmcalMain_destroy,
> "on_newButton_clicked" :
> self.create_container_activate,
> "on_addButton_clicked" : self.showFileSelection,
> "on_quitmenuitem_activate" :
> self.dmcalMain_destroy, "on_removeButton_clicked" :
> self.removecontainer, "on_saveMenuItem_activate" : self.savelist}
> self.wTree.signal_autoconnect(dic)
>
> preferencesMI =
> self.wTree.get_widget("preferencesMenuItem")
> preferencesMI.set_sensitive(0)
>
> #Setup the treeview
> self.treeview = self.wTree.get_widget('treeview2')
>
> #Create the liststore model to use with the treeview
> #Pattern: ICON, NAME TEXT, PATH TEXT
> self.treelist = gtk.ListStore(gtk.gdk.Pixbuf, str, str,
> str)
> #Attatch the liststore model to the treeview
> self.treeview.set_model(self.treelist)
>
> #Get the icons
> self.yes = self.treeview.render_icon('gtk-yes',
> gtk.ICON_SIZE_SMALL_TOOLBAR)
> self.no = self.treeview.render_icon('gtk-no',
> gtk.ICON_SIZE_SMALL_TOOLBAR)
>
> #Setup the columns on the listview
>
> column = gtk.TreeViewColumn('', gtk.CellRendererPixbuf(),
> pixbuf=0)
> self.treeview.append_column(column)
> column = gtk.TreeViewColumn('Name', gtk.CellRendererText(),
> text=1)
> self.treeview.append_column(column)
> column = gtk.TreeViewColumn('Location', gtk.CellRendererText(),
> text=2)
> self.treeview.append_column(column)
> column = gtk.TreeViewColumn('Mount Point',
> gtk.CellRendererText(), text=3)
> self.treeview.append_column(column)
>
> self.treelist.append([self.yes, 'container.enc',
> '/home/nomb/container.enc', '/media/enc'])
>
> self.treeselection = self.treeview.get_selection()
> self.treeselection.select_path(0)
>
> if commands.getoutput("whoami") != "root":
> print "Non-Root - Limited functionality..."
>
> #Disable create new container menu entry
> newcontainerMenuItem =
> self.wTree.get_widget("create_container")
> newcontainerMenuItem.set_sensitive(0)
>
> #Disable create new container button
> newcontainerButton =
> self.wTree.get_widget("newButton") newcontainerButton.set_sensitive(0)
>
> #Disable mount button
> mntButton = self.wTree.get_widget("mountButton")
> mntButton.set_sensitive(0)
>
> #Disable un-mount button
> unmntButton = self.wTree.get_widget("unmountButton")
> unmntButton.set_sensitive(0)
>
> #Set alert message to status bar
> statusbar = self.wTree.get_widget("statusbar1")
> statusbarid = statusbar.get_context_id("need root")
> statusbar.push(statusbarid, "Some functions require root
> permissions and path... (su -)")
>
>
> def quit_cb(widget, data = None):
> if data:
> data.set_visible(False)
> gtk.main_quit()
>
> def popup_menu_cb(widget, button, time, data = None):
> if button == 3:
> if data:
> data.show_all()
> data.popup(None, None, None, 3, time)
> pass
>
> def activate_icon_cb(widget, data = None):
> pass
>
> def icon_show_about(widget, data = None):
> dmcalDialog = dmcalAbout()
> result = dmcalDialog.run()
>
> statusIcon = gtk.StatusIcon()
>
> menu = gtk.Menu()
> menuItem = gtk.ImageMenuItem(gtk.STOCK_ABOUT)
> menuItem.connect('activate', icon_show_about)
> menu.append(menuItem)
> menuItem = gtk.SeparatorMenuItem()
> menu.append(menuItem)
> menuItem = gtk.ImageMenuItem(gtk.STOCK_QUIT)
> menuItem.connect('activate', quit_cb, statusIcon)
> menu.append(menuItem)
>
> # statusIcon.set_from_stock(gtk.STOCK_HOME)
> statusIcon.set_from_file("pixmaps/dmcal.png")
> statusIcon.set_tooltip("DM-Crypt & LUKS Encryption Suite")
> statusIcon.connect('activate', activate_icon_cb)
> statusIcon.connect('popup-menu', popup_menu_cb, menu)
> statusIcon.set_visible(True)
>
> def window_event(self, widget, event):
> #print event.new_window_state
> if event.new_window_state == gtk.gdk.WINDOW_STATE_ICONIFIED:
> self.window.hide()
>
> ====================
> This email/fax message is for the sole use of the intended
> recipient(s) and may contain confidential and privileged information.
> Any unauthorized review, use, disclosure or distribution of this
> email/fax is prohibited. If you are not the intended recipient, please
> destroy all paper and electronic copies of the original message.
--
Julio Carlos Menéndez
GNU/Linux User #403551
http://deltha.uh.cu/~juliocarlos
====================
This email/fax message is for the sole use of the intended
recipient(s) and may contain confidential and privileged information.
Any unauthorized review, use, disclosure or distribution of this
email/fax is prohibited. If you are not the intended recipient, please
destroy all paper and electronic copies of the original message.
More information about the pygtk
mailing list