Can create and open a GTK window.

This commit is contained in:
bjschuma 2010-01-07 21:31:58 -05:00
parent 65e778d48a
commit 82eb1fcd6f
10 changed files with 172 additions and 16 deletions

View File

@ -16,7 +16,10 @@ def disp(text):
def write(text,verbose=False):
if (verbose==False) or (settings.get("verbose")==True):
w = settings.get("write")
w(str(text))
if w == None:
disp(str(text))
else:
w(str(text))
# Print an error message

View File

@ -93,9 +93,10 @@ class Manager:
def run(self,name,args=None):
name = name.strip()
if (name in self.enabled)==True:
self.enabled[name].run(args)
return self.enabled[name].run(args)
else:
write("Plugin either not loaded or doesn't exist")
write("Plugin either not loaded or doesn't exist: "+name)
return None
def findsession(self):
@ -130,7 +131,12 @@ class Manager:
# By an earlier call to restore session
for key in self.enabled.keys():
if (key in self.restored) == False:
write(0)
self.disablePlugin(key)
for key in self.disabled.keys():
if (key in self.restored) == True:
write(1)
self.enablePlugin(key)

View File

@ -33,6 +33,9 @@ def main():
for path in settings.get("PLUGPATH",True):
loadPluginPath(path)
manager.manager.restoresession()
settings.pop("loop")()
if __name__ == "__main__":main()

View File

@ -45,7 +45,13 @@ def get(key, all=False):
if(all == False):
return settings[key][0]
else:
return settings[key]
return settings[key]
# Set key to value only if it is not set yet
def init(key,value):
if has(key) == False:
set(key,value)
# Replace settings[key] with value
@ -57,15 +63,6 @@ def replace(key,value):
set(key,value)
# Pop off the first value at key.upper()
def pop(key):
key = key.upper()
global settings
if (key in settings.keys()) == True:
return settings[key].pop(0)
return None
def delete(key):
key = key.upper()
global settings
@ -73,6 +70,18 @@ def delete(key):
del settings[key]
# Pop off the first value at key.upper()
def pop(key):
key = key.upper()
global settings
if (key in settings.keys()) == True:
item = settings[key].pop(0)
if len(settings[key]) == 0:
delete(key)
return item
return None
# Read settings from file
def readfile(file):
write("Reading file: "+file,True)
@ -106,6 +115,7 @@ def clean():
delete("args")
delete("plugpath")
delete("verbose")
delete("loop")
def save(path):

View File

@ -41,8 +41,9 @@ def open():
settings.set("cliney", 0)
# Start loop in new thread
thread = bt.needle.Needle(cline.loop.loop)
thread.start()
settings.set("loop",cline.loop.loop)
#thread = bt.needle.Needle(cline.loop.loop)
#thread.start()
settings.set("write", cline.message.insert)
@ -55,6 +56,7 @@ def close():
# Stop looping
cline.loop.quit()
settings.pop("loop")
# Undo ncurses initialization
curses.nocbreak()

View File

@ -7,7 +7,7 @@ __date__ ="$Dec 7, 2009 9:12:00 AM$"
global name, app, type, path, opt
name = "test"
app = "scion"
type = "core"
type = "extra"
path = ""
opt = []

View File

@ -0,0 +1,5 @@
__author__="bjschuma"
__date__ ="$Jan 6, 2010 9:52:21 PM$"
__all__ = ["button","window"]

View File

@ -0,0 +1,30 @@
#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$Jan 6, 2010 9:55:39 PM$"
import gtk
class Button(gtk.Button):
def __init__(self,name,func,image=None,text=None):
gtk.Button.__init__(self)
box = gtk.HBox(True,0)
# Add an image if we were given one
if image!= None:
box.pack_start(image,True,True,0)
# Add text if we were given some
if text != None:
label = gtk.Label(text)
label.set_line_wrap(True)
label.set_size_request(100,100)
label.show()
box.pack_start(label,True,True,0)
# Show and add callback function
box.show()
self.add(box)
self.connect("clicked",func,name)
self.show()

View File

@ -0,0 +1,29 @@
#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$Jan 6, 2010 10:07:31 PM$"
import gtk
from manager import manager
def quit(a,b):
manager.run("exit")
class Window(gtk.Window):
def __init__(self, title, type=gtk.WINDOW_TOPLEVEL, icon=None):
gtk.Window.__init__(self,type)
self.set_title(title)
self.connect("delete_event",quit)
if not (icon == None):
self.set_icon_from_file(icon)
self.show()
#def quit(self,a,b):
# manager.run("exit")

68
src/extra/sgtk.py Normal file
View File

@ -0,0 +1,68 @@
# This is a simple test plugin, to make sure everything is working
__author__="bjschuma"
__date__ ="$Jan 6, 2010 9:50:31 PM$"
global name, app, type, path, opt
name = "sgtk"
app = "scion"
type = "extra"
path = ""
opt = []
from guiGTK import *
import gtk
import gobject
gobject.threads_init()
import settings
global running
running = False
from manager import manager
#global thread
# Called when the plugin needs to perform some action
def run(args=None):
running = settings.get("guirunning")
win = window.Window("Scion")
# Start gtk main
if running == False:
manager.run("disable", ["cli"] )
settings.set("guirunning",True)
#if settings.has("loop") == False:
gtk.main()
def loop():
#write(settings.get("guirunning"))
if settings.get("guirunning") == True:
run()
gtk.main()
else:
#settings.pop("loop")
settings.pop("loop")()
# Called every time the plugin is enabled
def open():
settings.init("guirunning",False)
settings.set("loop",loop)
#if settings.get("guirunning") == True:
# run()
# settings.set("loop",gtk.main)
# Called every time the plugin is stopped
def close():
running = settings.get("guirunning")
if running == True:
gtk.main_quit()
#print loop
#settings.set("loop",loop)