#!/usr/bin/env python try: import pygtk pygtk.require('2.0') import gtk import os import sys from string import find except: print "DepError! Require Python 2.4+ and PyGTK 2.6+" class LtPlugin: mypid=0 def exit(self, w=None): if self.mypid>0: self.killMacro(self) self.plug.destroy() return def macros(self, w=None): global mcount while mcount > 0: self.macrolist.remove_text(mcount-1) mcount = mcount - 1 listmdir = os.listdir('./ltmacros/') nr_of_files = len(listmdir) listindex = nr_of_files - 1 relistmdir = ['--Select/New--'] while listindex > -1: if find(listmdir[listindex], '.ltm') > -1: relistmdir.append(listmdir[listindex]) listindex = listindex - 1 for x in range(0, len(relistmdir)): self.macrolist.append_text(str(relistmdir[int(x)])) mcount = mcount + 1 self.macrolist.set_active(0) return def runMacro(self, w): if self.mypid==0: filename = self.macrolist.get_active_text() if find(filename, '.ltm') > -1: #os.system('./ltmacros/'+filename+' &') self.mypid=os.spawnlp(os.P_NOWAIT,'./ltmacros/'+filename) print 'macro ',filename,' launched (pid #',self.mypid,')' return def openMacro(self, w): filename = self.macrolist.get_active_text() if find(filename, '.ltm') > -1: os.system('./LtMacroEdit.py'+' '+filename+' &') return os.system('./LtMacroEdit.py &') return def killMacro(self, w=None): #openfile = open("./ltmacros/running.pid", "r") #pid = long(openfile.read()) if self.mypid>0: os.kill(self.mypid, 9) print 'macro with pid #',self.mypid,' has been killed' self.mypid=0 #openfile.close() #os.remove("./ltmacros/running.pid") return def __init__(self): Wid = 0L if len(sys.argv) == 2: Wid = long(sys.argv[1]) self.plug = gtk.Plug(Wid) self.plug.connect("destroy", lambda w: gtk.main_quit()) global mcount mcount = 0 self.mainwidget = gtk.VBox(False, 1) self.toolbar = gtk.Toolbar() self.toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL) self.toolbar.set_style(gtk.TOOLBAR_ICONS) self.statusbar = gtk.Statusbar() self.mainwidget.add(self.toolbar) self.mainwidget.add(self.statusbar) self.macrolist = gtk.combo_box_new_text() self.macrolistitem = gtk.ToolItem() self.macrolistitem.add(self.macrolist) self.toolbar.insert(self.macrolistitem, -1) self.macros() self.reloadbtnimg = gtk.Image() self.reloadbtnimg.set_from_file("./gfx/reload.png") self.reloadbtn = gtk.ToolButton(self.reloadbtnimg, "Reload") self.toolbar.insert(self.reloadbtn, -1) self.reloadbtn.connect("clicked", self.macros) self.runbtnimg = gtk.Image() self.runbtnimg.set_from_file("./gfx/play.png") self.runbtn = gtk.ToolButton(self.runbtnimg, "Run") self.toolbar.insert(self.runbtn, -1) self.runbtn.connect("clicked", self.runMacro) self.stopbtnimg = gtk.Image() self.stopbtnimg.set_from_file("./gfx/stop.png") self.stopbtn = gtk.ToolButton(self.stopbtnimg, "Stop") self.toolbar.insert(self.stopbtn, -1) self.stopbtn.connect("clicked", self.killMacro) self.openbtnimg = gtk.Image() self.openbtnimg.set_from_file("./gfx/eject.png") self.openbtn = gtk.ToolButton(self.openbtnimg, "Open") self.toolbar.insert(self.openbtn, -1) self.openbtn.connect("clicked", self.openMacro) self.exitbtnimg = gtk.Image() self.exitbtnimg.set_from_file("./gfx/exit.png") self.exitbtn = gtk.ToolButton(self.exitbtnimg, "Exit") self.toolbar.insert(self.exitbtn, -1) self.exitbtn.connect("clicked", self.exit) self.statusbar.show() self.toolbar.show() self.mainwidget.show() self.plug.add(self.mainwidget) self.plug.show_all() def main(): gtk.main() return 0 if __name__=="__main__": LtPlugin() main()