Added standard cursors; added alerts.

This commit is contained in:
Skyler Lehmkuhl 2012-01-05 09:24:41 -05:00
parent 27fbb7ecb6
commit 5ebf5ff4ab
4 changed files with 52 additions and 12 deletions

View File

@ -91,6 +91,8 @@ def onKeyDownGroup(self, key):
pass pass
if key in [" ", "s", "r", "e", "b"]: if key in [" ", "s", "r", "e", "b"]:
svlgui.MODE=key svlgui.MODE=key
svlgui.set_cursor({" ":"arrow","s":"arrow","r":"crosshair","e":"crosshair",
"b":"arrow"}[key], MainWindow.stage)
elif key=="F6": elif key=="F6":
add_keyframe() add_keyframe()
print "Added keyframe." print "Added keyframe."
@ -99,6 +101,8 @@ def onKeyDownObj(self, key):
del self.parent[self.parent.index(self)] # Need to clean up deletion del self.parent[self.parent.index(self)] # Need to clean up deletion
elif key in [" ", "s", "r", "e", "b"]: elif key in [" ", "s", "r", "e", "b"]:
svlgui.MODE=key svlgui.MODE=key
svlgui.set_cursor({" ":"arrow","s":"arrow","r":"crosshair","e":"crosshair",
"b":"arrow"}[key], MainWindow.stage)
elif key=="F6": elif key=="F6":
add_keyframe() add_keyframe()
@ -198,11 +202,12 @@ def quit(widget):
def add_keyframe(widget=None): def add_keyframe(widget=None):
svlgui.alert("test alert", True)
root.descendItem().add_frame(True) root.descendItem().add_frame(True)
print root.descendItem().activeframe*16 print root.descendItem().activeframe*16
b = svlgui.Image("media/keyframe_active.png",root.descendItem().activeframe*16,0,True,MainWindow.timelinebox,16,1) b = svlgui.Image("media/keyframe_active.png",root.descendItem().activeframe*16,0,True,MainWindow.timelinebox,16,1)
frames.add(b) frames.add(b)
frames.draw() MainWindow.timelinebox.draw()
def add_layer(widget=None): def add_layer(widget=None):
root.descendItem().add_layer(root.descendItem()._al) root.descendItem().add_layer(root.descendItem()._al)
layers.add(svlgui.Image("media/object_active.png",0,root.descendItem().layers.index(root.descendItem().activelayer)*32,True,MainWindow.layerbox,16,1)) layers.add(svlgui.Image("media/object_active.png",0,root.descendItem().layers.index(root.descendItem().activelayer)*32,True,MainWindow.layerbox,16,1))

View File

@ -1,6 +1,7 @@
#! /usr/bin/python #! /usr/bin/python
import svlgui import svlgui
import misc_funcs
from misc_funcs import * from misc_funcs import *
class MainWindow: class MainWindow:
@ -183,6 +184,7 @@ class MainWindowOSX:
self.window = svlgui.Window("Lightningbeam") self.window = svlgui.Window("Lightningbeam")
self.menu = svlgui.Menu(True, None) self.menu = svlgui.Menu(True, None)
self.stage = svlgui.Canvas(800,600) self.stage = svlgui.Canvas(800,600)
misc_funcs.stage = self.stage
self.layerbox = svlgui.Canvas(128,320) self.layerbox = svlgui.Canvas(128,320)
self.timelinebox = svlgui.Canvas(2000,320) self.timelinebox = svlgui.Canvas(2000,320)
self.frame = svlgui.Frame() self.frame = svlgui.Frame()

View File

@ -3,24 +3,34 @@ from threading import Event, Thread
def select_any(self): def select_any(self):
svlgui.MODE = " " svlgui.MODE = " "
svlgui.set_cursor("arrow", stage)
def resize_any(self): def resize_any(self):
svlgui.MODE = " " svlgui.MODE = "s"
svlgui.set_cursor("arrow", stage)
def lasso(self): def lasso(self):
svlgui.MODE = "l" svlgui.MODE = "l"
svlgui.set_cursor("lasso", stage)
def text(self): def text(self):
svlgui.MODE = "t" svlgui.MODE = "t"
svlgui.set_cursor("text", stage)
def rectangle(self): def rectangle(self):
svlgui.MODE = "r" svlgui.MODE = "r"
svlgui.set_cursor("crosshair", stage)
def ellipse(self): def ellipse(self):
svlgui.MODE = "e" svlgui.MODE = "e"
svlgui.set_cursor("crosshair", stage)
def curve(self): def curve(self):
svlgui.MODE = "c" svlgui.MODE = "c"
svlgui.set_cursor("curve", stage)
def paintbrush(self): def paintbrush(self):
svlgui.MODE = "p" svlgui.MODE = "p"
svlgui.set_cursor("paintbrush", stage)
def pen(self): def pen(self):
svlgui.MODE = "n" svlgui.MODE = "n"
svlgui.set_cursor("pen", stage)
def paint_bucket(self): def paint_bucket(self):
svlgui.MODE = "b" svlgui.MODE = "b"
svlgui.set_cursor("bucket", stage)
def box(x, y, width, height, fill): def box(x, y, width, height, fill):
global objects global objects

View File

@ -120,7 +120,7 @@ if sys.platform=="linux2":
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, StdCursors, Alerts
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
from GUI.Geometry import offset_rect, rect_sized from GUI.Geometry import offset_rect, rect_sized
@ -130,14 +130,14 @@ if sys.platform=="linux2":
SYSTEM="html" SYSTEM="html"
ids = {} ids = {}
jsdefs = [] jsdefs = []
jsfunctions = "" jsfunctions = ""'''
sep = "/"''' sep = "/"
elif sys.platform=="win32": elif sys.platform=="win32":
import pickle import pickle
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, StdCursors, Alerts
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
from GUI.Geometry import offset_rect, rect_sized from GUI.Geometry import offset_rect, rect_sized
@ -156,7 +156,7 @@ elif sys.platform=="darwin":
import GUI # Using PyGUI. Experimental. import GUI # Using PyGUI. Experimental.
from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage from GUI import Window as OSXWindow, Button as OSXButton, Image as OSXImage
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Column, Row, ScrollableView, TextEditor, Colors from GUI import Column, Row, ScrollableView, TextEditor, Colors, StdCursors, Alerts
from GUI.StdMenus import basic_menus, file_cmds, print_cmds from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.Files import FileType from GUI.Files import FileType
from GUI.Geometry import offset_rect, rect_sized from GUI.Geometry import offset_rect, rect_sized
@ -614,10 +614,13 @@ class Canvas(Widget):
63235:"right_arrow",63234:"left_arrow",13:"enter",9:"tab", 63235:"right_arrow",63234:"left_arrow",13:"enter",9:"tab",
63236:"F1",63237:"F2",63238:"F3",63239:"F4",63240:"F5", 63236:"F1",63237:"F2",63238:"F3",63239:"F4",63240:"F5",
63241:"F6",63242:"F7",63243:"F8",} 63241:"F6",63242:"F7",63243:"F8",}
if ord(event.unichars) in keydict: if not event.unichars=='':
key = keydict[ord(event.unichars)] if ord(event.unichars) in keydict:
key = keydict[ord(event.unichars)]
else:
key = event.unichars
else: else:
key = event.unichars key = event.key.upper()
for i in self.objs: for i in self.objs:
i._onKeyDown(key) i._onKeyDown(key)
self.invalidate_rect([0,0,self.extent[0],self.extent[1]]) self.invalidate_rect([0,0,self.extent[0],self.extent[1]])
@ -1489,11 +1492,23 @@ class Group (object):
retval+=j.frames[i].print_sc() retval+=j.frames[i].print_sc()
return retval return retval
def set_cursor(curs, widget=None):
if SYSTEM == "osx":
cursdict = {"arrow":StdCursors.arrow, "ibeam":StdCursors.ibeam,
"crosshair":StdCursors.crosshair, "fist":StdCursors.fist,
"hand":StdCursors.hand, "finger":StdCursors.finger, "invisible":StdCursors.invisible}
if curs in cursdict:
if widget:
widget._int().cursor = cursdict[curs]
else:
app.cursor = cursdict[curs]
else:
print "Sorry, I don't have that cursor."
def alert(text,critical=False): def alert(text,critical=False):
'''Launches an alert window with a given text.
If critical is True, closing the alert terminates SWIFT.'''
if SYSTEM=="gtk": if SYSTEM=="gtk":
#Launches an alert window with a given text.
#If critical is True, closing the alert terminates SWIFT.
def abutton_press_event(widget, event): def abutton_press_event(widget, event):
#Close when "Ok" is pressed #Close when "Ok" is pressed
alert.destroy() alert.destroy()
@ -1529,6 +1544,13 @@ def alert(text,critical=False):
ahbox.show() # make it visible ahbox.show() # make it visible
avbox.show() # make the vbox visible avbox.show() # make the vbox visible
alert.show() # make the alert itself visible alert.show() # make the alert itself visible
elif SYSTEM=="osx":
#Much simpler. :)
if critical:
Alerts.stop_alert(text) # stop_alert is a critical error alert
sys.exit(0) # Exit to OS. Sometimes we can't recover an error.
else:
Alerts.note_alert(text) # note_alert is a general alert, i.e. "I'm a computer."
elif SYSTEM=="html": elif SYSTEM=="html":
jscommunicate("alert("+text+")") jscommunicate("alert("+text+")")
if critical: if critical:
@ -1580,6 +1602,7 @@ class OverlayWindow:
win.present() win.present()
gobject.timeout_add(50, expose, win, 'fade-event', time.time()) gobject.timeout_add(50, expose, win, 'fade-event', time.time())
gobject.timeout_add(2000, win.destroy) gobject.timeout_add(2000, win.destroy)
class ColorSelectionWindow: class ColorSelectionWindow:
def __init__(self,var,dispgrp, dcanv): def __init__(self,var,dispgrp, dcanv):