diff --git a/lightningbeam.py b/lightningbeam.py index 3b23abf..12511fa 100755 --- a/lightningbeam.py +++ b/lightningbeam.py @@ -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): diff --git a/lightningbeam_windows.py b/lightningbeam_windows.py old mode 100644 new mode 100755 index 0dacdd6..6a824e9 --- a/lightningbeam_windows.py +++ b/lightningbeam_windows.py @@ -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 = "" + 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("") + 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 = "" + 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 == "": + self.tinstancename.text = "" # use mainwindowosx, this is just to comment things out class MainWindowHTML: diff --git a/svlgui.py b/svlgui.py index 9e225fe..a6a88fb 100644 --- a/svlgui.py +++ b/svlgui.py @@ -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] @@ -699,6 +705,24 @@ class Frame(Widget): self.frame.height = self.height 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): @@ -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):