Initial commit
This commit is contained in:
commit
015b75bbb7
160
appindicator.py
Normal file
160
appindicator.py
Normal file
|
@ -0,0 +1,160 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright 2009-2012 Canonical Ltd.
|
||||
#
|
||||
# Authors: Neil Jagdish Patel <neil.patel@canonical.com>
|
||||
# Jono Bacon <jono@ubuntu.com>
|
||||
# David Planella <david.planella@ubuntu.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of either or both of the following licenses:
|
||||
#
|
||||
# 1) the GNU Lesser General Public License version 3, as published by the
|
||||
# Free Software Foundation; and/or
|
||||
# 2) the GNU Lesser General Public License version 2.1, as published by
|
||||
# the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranties of
|
||||
# MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the applicable version of the GNU Lesser General Public
|
||||
# License for more details.
|
||||
#
|
||||
# You should have received a copy of both the GNU Lesser General Public
|
||||
# License version 3 and version 2.1 along with this program. If not, see
|
||||
# <http://www.gnu.org/licenses/>
|
||||
#
|
||||
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import AppIndicator3 as appindicator
|
||||
|
||||
# Timer
|
||||
import gobject
|
||||
# Pinging
|
||||
import subprocess
|
||||
|
||||
# Vars
|
||||
host = "www.google.com"
|
||||
|
||||
class HelloWorld:
|
||||
|
||||
def ping(self, widget=None, data=None):
|
||||
ping = subprocess.Popen(
|
||||
["ping", "-c", "1", host],
|
||||
stdout = subprocess.PIPE,
|
||||
stderr = subprocess.PIPE
|
||||
)
|
||||
out, error = ping.communicate()
|
||||
self.label.set_text(out)
|
||||
gobject.timeout_add_seconds(self.timeout, self.ping)
|
||||
|
||||
def delete_event(self, widget, event, data=None):
|
||||
# If you return FALSE in the "delete_event" signal handler,
|
||||
# GTK will emit the "destroy" signal. Returning TRUE means
|
||||
# you don't want the window to be destroyed.
|
||||
# This is useful for popping up 'are you sure you want to quit?'
|
||||
# type dialogs.
|
||||
print "delete event occurred"
|
||||
|
||||
# Change FALSE to TRUE and the main window will not be destroyed
|
||||
# with a "delete_event".
|
||||
return False
|
||||
|
||||
def destroy(self, widget, data=None):
|
||||
print "destroy signal occurred"
|
||||
Gtk.main_quit()
|
||||
|
||||
def __init__(self):
|
||||
# create a new window
|
||||
self.window = Gtk.Window()
|
||||
|
||||
# When the window is given the "delete_event" signal (this is given
|
||||
# by the window manager, usually by the "close" option, or on the
|
||||
# titlebar), we ask it to call the delete_event () function
|
||||
# as defined above. The data passed to the callback
|
||||
# function is NULL and is ignored in the callback function.
|
||||
self.window.connect("delete_event", self.delete_event)
|
||||
|
||||
# Here we connect the "destroy" event to a signal handler.
|
||||
# This event occurs when we call gtk_widget_destroy() on the window,
|
||||
# or if we return FALSE in the "delete_event" callback.
|
||||
self.window.connect("destroy", self.destroy)
|
||||
|
||||
# Sets the border width of the window.
|
||||
self.window.set_border_width(10)
|
||||
|
||||
# Creates a new button with the label "Hello World".
|
||||
self.button = Gtk.Button("Hello World")
|
||||
|
||||
self.label = Gtk.Label(str)
|
||||
|
||||
# When the button receives the "clicked" signal, it will call the
|
||||
# function hello() passing it None as its argument. The hello()
|
||||
# function is defined above.
|
||||
self.button.connect("clicked", self.ping, None)
|
||||
|
||||
|
||||
# register a periodic timer
|
||||
self.counter = 0
|
||||
self.timeout = 1
|
||||
gobject.timeout_add_seconds(self.timeout, self.ping)
|
||||
|
||||
# This will cause the window to be destroyed by calling
|
||||
# gtk_widget_destroy(window) when "clicked". Again, the destroy
|
||||
# signal could come from here, or the window manager.
|
||||
#self.button.connect_object("clicked", Gtk.Widget.destroy, self.window)
|
||||
|
||||
|
||||
self.container = Gtk.Fixed()
|
||||
self.container.put(self.button, 0, 0)
|
||||
self.button.show()
|
||||
self.container.put(self.label, 0, 50)
|
||||
self.label.show()
|
||||
self.container.show()
|
||||
self.window.add(self.container)
|
||||
|
||||
|
||||
# and the window
|
||||
self.window.show()
|
||||
|
||||
# and the system tray
|
||||
#self.system_tray()
|
||||
|
||||
def main(self):
|
||||
# All PyGTK applications must have a Gtk.main(). Control ends here
|
||||
# and waits for an event to occur (like a key press or mouse event).
|
||||
foo = "bar"
|
||||
|
||||
def menuitem_response(w, buf):
|
||||
print buf
|
||||
|
||||
if __name__ == "__main__":
|
||||
ind = appindicator.Indicator.new (
|
||||
"example-simple-client",
|
||||
"indicator-messages",
|
||||
appindicator.IndicatorCategory.APPLICATION_STATUS)
|
||||
ind.set_status (appindicator.IndicatorStatus.ACTIVE)
|
||||
ind.set_attention_icon ("indicator-messages-new")
|
||||
|
||||
# create a menu
|
||||
menu = Gtk.Menu()
|
||||
|
||||
# create some
|
||||
for i in range(3):
|
||||
buf = "Test-undermenu - %d" % i
|
||||
|
||||
menu_items = Gtk.MenuItem(buf)
|
||||
|
||||
menu.append(menu_items)
|
||||
|
||||
# this is where you would connect your menu item up with a function:
|
||||
|
||||
# menu_items.connect("activate", menuitem_response, buf)
|
||||
|
||||
# show the items
|
||||
menu_items.show()
|
||||
|
||||
ind.set_menu(menu)
|
||||
hello = HelloWorld()
|
||||
|
||||
Gtk.main()
|
Loading…
Reference in New Issue
Block a user