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