2015. július 19., vasárnap

Python

Pénteken arra gondoltam hogy milyen jó lenne, ha létre tudnék hozni egy indítót az Ubuntu felső eszköztárán. Lazarusban a TrayIcon komponens sajnos nem jöhetett szóba, mert az Ubuntu egyedi megoldást használ erre a célra, amit Application Indicator névre keresztelt és sajnos nem jeleníti meg a régi TrayIconokat. Szóval Lazarus kilőve. Application Indicator API van C-hez, és Pythonhoz. C-hez nem értek, Pythonhoz sem. De feladni sem akartam. Kis keresgélés után találtam egy oldalt, ami adott egy rövid kész kódot Pythonban. Már csak ki kellett egészíteni és láss csodát, működik is :). (lásd az alábbi képen)

És a kód:
import os
import subprocess
import signal
from gi.repository import Gtk as gtk
from gi.repository import AppIndicator3 as appindicator
 
APPINDICATOR_ID = 'Corvina'
 
def main():
    indicator = appindicator.Indicator.new(APPINDICATOR_ID, os.path.normpath('/usr/share/icons/corvina/corvina_icon.svg'), appindicator.IndicatorCategory.SYSTEM_SERVICES)
    indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
    indicator.set_menu(build_menu())
    gtk.main()
 
def build_menu():
    menu = gtk.Menu()
    item_cat = gtk.MenuItem('Catalog')
    item_cat.connect('activate', cat);
    menu.append(item_cat)
    item_pac = gtk.MenuItem('Opac')
    item_pac.connect('activate', pac);
    menu.append(item_pac)
    item_quit = gtk.MenuItem('Quit')
    item_quit.connect('activate', quit)
    menu.append(item_quit)
    menu.show_all()
    return menu
 
def quit(source):
    gtk.main_quit()
 
def cat(source):
 subprocess.call(["javaws","Catalog.jnlp",""]) 

def pac(source):
 subprocess.call(["javaws","Opac.jnlp",""]) 

 
if __name__ == "__main__":
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    main()

Nincsenek megjegyzések:

Megjegyzés küldése