Move ncurses initialization

This commit is contained in:
bjschuma 2010-01-09 14:18:53 -05:00
parent 82eb1fcd6f
commit 5278c9a630
6 changed files with 106 additions and 57 deletions

View File

@ -10,68 +10,29 @@ app = "scion"
type = "core"
path = ""
opt = []
import curses
from bt.message import *
#from bt.needle import Needle
import bt.needle
from bt.message import *
import cline.loop
import cline.message
import settings
global maxyx, stdscr, thread
# Called every time the plugin is enabled
def open():
write("Starting CLI", True)
global maxyx, stdscr, thread
# Initialize ncurses screen
stdscr = curses.initscr()
maxyx = stdscr.getmaxyx()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
# Set these values in settings class for use elsewhere
settings.set("stdscr", stdscr)
settings.set("maxyx", maxyx)
settings.set("prompt", ">>> ")
settings.set("clinex", 0)
settings.set("cliney", 0)
# Start loop in new thread
# Tell settings to run this loop
settings.set("loop",cline.loop.loop)
#thread = bt.needle.Needle(cline.loop.loop)
#thread.start()
settings.set("write", cline.message.insert)
# Called every time the plugin is stopped
def close():
global stdscr, thread
settings.pop("write")
# Stop looping
# Stop loop
cline.loop.quit()
settings.pop("loop")
# Undo ncurses initialization
curses.nocbreak()
curses.echo()
stdscr.keypad(0)
curses.endwin()
#thread.join()
write("CLI has been stopped", True)
# Delete keys that settings no longer needs
settings.delete("stdscr")
settings.delete("maxyx")
settings.delete("prompt")
settings.delete("clinex")
settings.delete("cliney")
# Called when the plugin needs to perform some action

View File

@ -15,16 +15,60 @@ import settings
from addch import addch
from message import *
global halt
halt = False
def init():
# Initialize ncurses screen
stdscr = curses.initscr()
maxyx = stdscr.getmaxyx()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)
# Set these values in settings class for use elsewhere
settings.set("stdscr", stdscr)
settings.set("maxyx", maxyx)
settings.set("prompt", ">>> ")
settings.set("clinex", 0)
settings.set("cliney", 0)
settings.set("write", insert)
def quit():
# Halt our loop
global halt
halt = True
# Undo ncurses initialization
curses.nocbreak()
curses.echo()
settings.get("stdscr").keypad(0)
#stdscr.keypad(0)
curses.endwin()
# Delete keys that settings no longer needs
settings.delete("stdscr")
settings.delete("maxyx")
settings.delete("prompt")
settings.delete("clinex")
settings.delete("cliney")
# Return to previous write function
settings.pop("write")
# Loop around until the plugin manager calls shutdown
def loop():
write("Beginning command line loop",True)
global halt
init()
stdscr = settings.get("stdscr")
input = settings.get("prompt")
(y, x) = settings.get("stdscr").getyx()
@ -35,6 +79,3 @@ def loop():
disp(input)
def quit():
global halt
halt = True

View File

@ -2,4 +2,4 @@ __author__="bjschuma"
__date__ ="$Jan 6, 2010 9:52:21 PM$"
__all__ = ["button","window"]
__all__ = ["box", "button", "window"]

23
src/extra/guiGTK/box.py Normal file
View File

@ -0,0 +1,23 @@
#! /usr/bin/python
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="bjschuma"
__date__ ="$Jan 8, 2010 12:17:55 AM$"
import gtk
from manager import manager
class HBox(gtk.HBox):
def __init__(self, name, homogeneous=False, spacing=0):
gtk.HBox.__init__(homogeneous, spacing)
manager.run("sgtk", (name,self))
self.show()
class VBox(gtk.VBox):
def __init__(self, name, homogeneous=False, spacing=0):
gtk.VBox.__init__(homogeneous, spacing)
manager.run("sgtk", (name,self))
self.show()

View File

@ -8,16 +8,19 @@ __date__ ="$Jan 6, 2010 10:07:31 PM$"
import gtk
from manager import manager
import settings
def quit(a,b):
manager.run("exit")
class Window(gtk.Window):
def __init__(self, title, type=gtk.WINDOW_TOPLEVEL, icon=None):
def __init__(self, title, name, type=gtk.WINDOW_TOPLEVEL, icon=None):
gtk.Window.__init__(self,type)
self.set_title(title)
self.connect("delete_event",quit)
manager.run("sgtk", (name,self))
if not (icon == None):
self.set_icon_from_file(icon)
@ -25,5 +28,8 @@ class Window(gtk.Window):
self.show()
def quit(self,func):
self.connect("delete_event",func)
#def quit(self,a,b):
# manager.run("exit")

View File

@ -21,19 +21,35 @@ global running
running = False
from manager import manager
#global thread
def register(name, object):
gui = settings.get("gui")
gui[name] = object
# Called when the plugin needs to perform some action
def run(args=None):
running = settings.get("guirunning")
win = window.Window("Scion")
if args == None:
running = settings.get("guirunning")
# Start gtk main
if running == False:
manager.run("disable", ["cli"] )
settings.set("guirunning",True)
#if settings.has("loop") == False:
gtk.main()
# Main window
win = window.Window("Scion", "gui")
# Horizontal box
box = HBox("MainBox")
win.add(box)
# Start gtk main
if running == False:
manager.run("disable", ["cli"] )
settings.set("guirunning",True)
#if settings.has("loop") == False:
gtk.main()
else:
if len(args) == 2:
register(args[0],args[1])
def loop():
@ -50,6 +66,7 @@ def loop():
def open():
settings.init("guirunning",False)
settings.set("loop",loop)
settings.init("gui",dict())
#if settings.get("guirunning") == True:
# run()
# settings.set("loop",gtk.main)
@ -60,6 +77,7 @@ def close():
running = settings.get("guirunning")
if running == True:
gtk.main_quit()
settings.delete("gui")
#print loop