More work on text

This commit is contained in:
Skyler Lehmkuhl 2012-01-18 16:01:55 -05:00
parent 284a77b10f
commit 800719a4b5
3 changed files with 133 additions and 7 deletions

View File

@ -92,6 +92,9 @@ def onMouseDownGroup(self, x, y):
self.ctext.onMouseUp = onMouseUpText
self.add(self.ctext)
self.ctext = None
MainWindow.docbox.setvisible(True)
MainWindow.textbox.setvisible(False)
def onMouseDownObj(self, x, y):
MainWindow.scriptwindow.text = root.descendItem().activelayer.frames[root.descendItem().activelayer.currentframe].actions
self.clicked = True
@ -103,7 +106,10 @@ def onMouseDownText(self,x,y):
MainWindow.scriptwindow.text = root.descendItem().activelayer.frames[root.descendItem().activelayer.currentframe].actions
self.clicked = True
self.initx, self.inity = x-self.x, y-self.y
#svlgui.alert('235')
MainWindow.docbox.setvisible(False)
MainWindow.textbox.setvisible(True)
svlgui.CURRENTTEXT = self.obj
print "Height", MainWindow.textbox.height
def onMouseDownFrame(self, x, y):
pass
def onMouseUpGroup(self, x, y):

89
lightningbeam_windows.py Normal file → Executable file
View File

@ -4,6 +4,7 @@
# Released under the GPLv3. For more information, see gpl.txt.
import svlgui
import math
import misc_funcs
from misc_funcs import *
@ -259,17 +260,74 @@ class MainWindowOSX:
[self.publishbutton,self.publishlabel._int(),None,self.sizebutton._int(),None,"nw", ""],
[self.frameratelabel,10,None,self.publishbutton._int(),None,"nw", ""],
[self.frameratentry,self.frameratelabel._int(),None,self.publishbutton._int(),None,"nw", ""])
self.textbox = svlgui.Frame()
self.tgroup = svlgui.RadioGroup("Static text", "Dynamic text", "Input text")
def setmode(self):
if self.value=="Static text":
svlgui.CURRENTTEXT.dynamic = False
self.textvarentry.text = ""
self.textvarentry.disable()
self.tinstancename.disable()
self.tinstancename.text = "<Instance Name>"
self.tinstancename._int().color = svlgui.Color("#AAAAAA").pygui
elif self.value=="Input text":
svlgui.CURRENTTEXT.dynamic = True
svlgui.CURRENTTEXT.editable = False
self.textvarentry.enable()
self.tinstancename.enable()
else:
svlgui.CURRENTTEXT.dynamic = True
svlgui.CURRENTTEXT.editable = True
self.textvarentry.enable()
self.tinstancename.enable()
self.tgroup.action = setmode
self.tfontlabel = svlgui.Label("Font:")
self.tfontbutton = svlgui.Button("Times New Roman")
self.mlgroup = svlgui.RadioGroup("Single line","Multiline","Multiline no wrap")
self.fontsizelabel = svlgui.Label("Size:")
self.fontsizentry = svlgui.TextEntry("16.0")
self.fontsizentry.set_action(self.editFontSizeText)
self.fontsizescale = svlgui.Scale(1,4,20)
self.fontsizescale.set_action(self.editFontSizeScale)
self.textvarlabel = svlgui.Label("Var:")
self.textvarentry = svlgui.TextEntry(" ")
self.textvarentry.set_action(self.setFontVar)
self.textvarentry.disable()
self.tgroup.textvarentry = self.textvarentry
self.tinstancename = svlgui.TextEntry("<Instance Name>")
self.tgroup.tinstancename = self.tinstancename
self.tinstancename.original_color = self.tinstancename._int().color
self.tinstancename._int().color = svlgui.Color("#aaaaaa").pygui
self.tinstancename._int().mouse_down = self.darkentinstance
self.tinstancename.set_action(self.setFontInstanceName)
self.textbox.layout_self([self.tgroup[0],10,None,5,None,"nw",""],
[self.tgroup[1],10,None,self.tgroup[0]._int(),None,"nw",""],
[self.tgroup[2],10,None,self.tgroup[1]._int(),None,"nw",""],
[self.tinstancename,10,None,self.tgroup[2]._int(),None,"nw",""],
[self.tfontlabel,self.tinstancename._int(),None,5,None,"nw",""],
[self.tfontbutton,self.tfontlabel._int(),None,5,None,"nw",""],
[self.mlgroup[0],self.tinstancename._int(),None,self.tfontbutton._int(),None,"nw",""],
[self.mlgroup[1],self.tinstancename._int(),None,self.mlgroup[0]._int(),None,"nw",""],
[self.mlgroup[2],self.tinstancename._int(),None,self.mlgroup[1]._int(),None,"nw",""],
[self.fontsizelabel,self.tfontbutton._int(),None,5,None,"nw",""],
[self.fontsizentry,self.fontsizelabel._int(),None,5,None,"nw",""],
[self.fontsizescale,self.fontsizentry._int(),None,5,None,"nw",""],
[self.textvarlabel,self.tfontbutton._int(),None,self.fontsizentry._int()+3,None,"nw",""],
[self.textvarentry,self.textvarlabel._int(),None,self.fontsizentry._int()+3,None,"nw",""])
self.textvarentry.text=""
self.frame.layout_self( [self.toolbox,0,None,0,None,"nw",""],
#[self.paintbox,0,245,0,0,"nws","v"],
[self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"],
#[self.timelinebox,self.paintbox._int()+148,-500,0,None,"new","hv"],
[self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
#[self.layerbox,self.paintbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
[self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],
[self.docbox,self.toolbox._int(),self.scriptwindow._int(),None,0,"wse", ""],
[self.docbox,self.toolbox._int(),0,None,0,"wse", ""],
[self.textbox,self.toolbox._int(),0,None,0,"wse", ""],
[self.scriptwindow,self.timelinebox._int(),0,0,self.docbox._int(),"nse", "hv"],
[self.stage,self.toolbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,self.docbox._int(),"nsew", "hv"],
[self.paintbox,0,self.stage._int(),self.toolbox._int(),None,"nw","v"] )
#[self.stage,self.paintbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"] )
self.textbox.setvisible(False)
self.window.add(self.frame)
if svlgui.SYSTEM=="osx":
self.stage._int().become_target();
@ -278,6 +336,33 @@ class MainWindowOSX:
svlgui.FRAMERATE=int(self.frameratentry.text)
if svlgui.SYSTEM=="osx":
self.stage._int().become_target();
def editFontSizeScale(self):
self.fontsizentry.text = str(int(self.fontsizescale.value**2)*1.0)
svlgui.CURRENTTEXT.size = int(self.fontsizescale.value**2)*1.0
self.stage.draw()
def editFontSizeText(self):
self.fontsizescale.value = math.sqrt(float(self.fontsizentry.text))
if svlgui.SYSTEM=="osx":
self.stage._int().become_target();
svlgui.CURRENTTEXT.size = int(self.fontsizescale.value**2)*1.0
def setFontVar(self):
if self.tgroup.value=="Static text":
self.tgroup.value="Dynamic text"
svlgui.CURRENTTEXT.variable = self.textvarentry.text
if svlgui.SYSTEM=="osx":
self.stage._int().become_target();
def setFontInstanceName(self):
if not self.tinstancename.text.strip() == "":
svlgui.CURRENTTEXT.iname = self.tinstancename.text
self.stage._int().become_target();
else:
self.tinstancename.text = "<Instance Name>"
self.tinstancename._int().color = svlgui.Color("#AAAAAA").pygui
self.stage._int().become_target()
def darkentinstance(self,*args):
self.tinstancename._int().color = self.tinstancename.original_color
if self.tinstancename.text == "<Instance Name>":
self.tinstancename.text = ""
# use mainwindowosx, this is just to comment things out
class MainWindowHTML:

View File

@ -49,6 +49,8 @@ EXPORT_OPTS = {"swf":False,"html5":False,"basehtml":False,"fallback":False,"pack
#Editing - whether the user is editing text
EDITING = True
CURRENTTEXT = None
#Library. Contatins all objects whether displayed or not.
Library = []
@ -160,7 +162,7 @@ if sys.platform=="linux2":
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox, Slider
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.StdButtons import DefaultButton, CancelButton
from GUI.Files import FileType
@ -185,7 +187,7 @@ elif sys.platform=="win32":
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox, Slider
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.StdButtons import DefaultButton, CancelButton
from GUI.Files import FileType
@ -214,7 +216,7 @@ elif sys.platform=="darwin":
from GUI import Frame as OSXFrame, Color as OSXColor, Grid as OSXGrid
from GUI import Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
from GUI import Column, Row, ScrollableView, TextEditor, Colors, ModalDialog
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox
from GUI import StdCursors, Alerts, FileDialogs, Font, TextField, CheckBox, Slider
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
from GUI.StdButtons import DefaultButton, CancelButton
from GUI.Files import FileType
@ -539,6 +541,10 @@ class Label(Widget):
def _int(self):
if SYSTEM=="osx":
return self.label
def disable(self):
self.label.enabled = False
def enable(self):
self.label.enabled = True
class RadioGroup(Widget):
def __getitem__(self,num):
return self.buttons[num]
@ -700,6 +706,24 @@ class Frame(Widget):
else:
self.frame.height = 0
class Scale(Widget):
def __init__(self,min,val,max):
if SYSTEM=="osx":
self.scale = Slider('h')
self.scale.min_value = min
self.scale.max_value = max
self.scale.value = val
def _int(self):
return self.scale
def set_action(self,action):
if SYSTEM=="osx":
self.scale.action = action
def getval(self):
return self.scale.value
def setval(self, val):
self.scale.value = val
value = property(getval, setval)
class Canvas(Widget):
def __init__(self,width=False,height=False):
self.objs=[]
@ -889,6 +913,10 @@ class TextEntry(Widget):
def _int(self):
if SYSTEM=="osx":
return self.entry
def disable(self):
self.entry.enabled = False
def enable(self):
self.entry.enabled = True
def set_action(self,action):
if SYSTEM=="osx":
self.entry.enter_action = action
@ -1270,7 +1298,7 @@ class Text (object):
self.xscale = 1
self.yscale = 1
self.fill = TEXTCOLOR
self.font = Font(FONT,24)
self.font = Font(FONT,16)
self.dynamic = False
self.variable = None
self.password = False
@ -1320,10 +1348,17 @@ class Text (object):
return self.width
def getmaxy(self):
return 0
def getsize(self):
return self.font.size
def setsize(self,size):
self.font = Font(self.font.family,size,self.font.style)
self.width = self.font.width(self.text)
self.height = self.font.height
minx = property(getminx)
miny = property(getminy)
maxx = property(getmaxx)
maxy = property(getmaxy)
size = property(getsize,setsize)
def onMouseDown(self, self1, x, y):
pass
def onMouseDrag(self, self1, x, y):