Can now switch between paint brush modes
This commit is contained in:
parent
d2f01601ce
commit
b2d86b8181
|
|
@ -87,7 +87,7 @@ def onMouseUpGroup(self, x, y):
|
||||||
self.cshape = None
|
self.cshape = None
|
||||||
elif svlgui.MODE=="p":
|
elif svlgui.MODE=="p":
|
||||||
print len(self.cshape.shapedata)
|
print len(self.cshape.shapedata)
|
||||||
self.cshape.shapedata = misc_funcs.simplify_shape(self.cshape.shapedata, "curve",1)
|
self.cshape.shapedata = misc_funcs.simplify_shape(self.cshape.shapedata, svlgui.PMODE.split()[-1],1)
|
||||||
print len(self.cshape.shapedata)
|
print len(self.cshape.shapedata)
|
||||||
self.cshape = None
|
self.cshape = None
|
||||||
MainWindow.stage.draw()
|
MainWindow.stage.draw()
|
||||||
|
|
|
||||||
|
|
@ -218,11 +218,27 @@ class MainWindowOSX:
|
||||||
self.toolbox.buttons[4][0].onPress = pen
|
self.toolbox.buttons[4][0].onPress = pen
|
||||||
self.toolbox.buttons[4][1].onPress = paint_bucket
|
self.toolbox.buttons[4][1].onPress = paint_bucket
|
||||||
self.scriptwindow = svlgui.TextView()
|
self.scriptwindow = svlgui.TextView()
|
||||||
self.frame.layout_self( [self.toolbox,0,None,0,0,"nws",""],
|
self.paintgroup = svlgui.RadioGroup("Draw straight", "Draw smooth", "Draw as inked")
|
||||||
|
def setmode(self):
|
||||||
|
svlgui.PMODE = self.value
|
||||||
|
self.paintgroup.action = setmode
|
||||||
|
self.paintbox = svlgui.Frame()
|
||||||
|
self.pboptions = svlgui.Label("Paintbrush Options")
|
||||||
|
self.paintbox.layout_self([self.pboptions,0,0,0,None,"news",""],
|
||||||
|
[self.paintgroup[0],0,0,self.pboptions._int(),None,"new",""],
|
||||||
|
[self.paintgroup[1],0,0,self.paintgroup[0]._int(),None,"new",""],
|
||||||
|
[self.paintgroup[2],0,0,self.paintgroup[1]._int(),None,"new",""])
|
||||||
|
#)
|
||||||
|
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.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.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.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],
|
||||||
[self.stage,self.toolbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"] )
|
[self.stage,self.toolbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"],
|
||||||
|
[self.paintbox,0,self.stage._int(),self.toolbox._int(),0,"nws","v"] )
|
||||||
|
#[self.stage,self.paintbox._int(),self.scriptwindow._int(),self.timelinebox._int()+2,0,"nsew", "hv"] )
|
||||||
self.window.add(self.frame)
|
self.window.add(self.frame)
|
||||||
|
|
||||||
# use mainwindowosx, this is just to comment things out
|
# use mainwindowosx, this is just to comment things out
|
||||||
|
|
@ -261,7 +277,10 @@ class MainWindowHTML:
|
||||||
self.toolbox.buttons[4][0].onPress = pen
|
self.toolbox.buttons[4][0].onPress = pen
|
||||||
self.toolbox.buttons[4][1].onPress = paint_bucket
|
self.toolbox.buttons[4][1].onPress = paint_bucket
|
||||||
self.scriptwindow = svlgui.TextView()
|
self.scriptwindow = svlgui.TextView()
|
||||||
self.frame.layout_self( [self.toolbox,0,None,0,0,"nws",""],
|
self.paintgroup = svlgui.RadioGroup("Draw straight", "Draw smooth", "Draw as inked")
|
||||||
|
self.paintbox = svlgui.VBox([[svlgui.Label("Paintbrush Options")._int()],[self.paintgroup]])
|
||||||
|
self.frame.layout_self( [self.toolbox,0,None,0,None,"nw",""],
|
||||||
|
[self.paintbox,0,None,self.toolbox._int(),0,"nws","v"],
|
||||||
[self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"],
|
[self.timelinebox,self.toolbox._int()+148,-500,0,None,"new","hv"],
|
||||||
[self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
|
[self.layerbox,self.toolbox._int(),self.toolbox._int().width+150,0,None,"n","v"],
|
||||||
[self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],
|
[self.scriptwindow,self.timelinebox._int(),0,0,0,"nse", "hv"],
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ def catmullRom2bezier( points ) :
|
||||||
return d;
|
return d;
|
||||||
|
|
||||||
def simplify_shape(shape,mode,iterations):
|
def simplify_shape(shape,mode,iterations):
|
||||||
if mode in ("straight","curve"):
|
if mode in ("straight","smooth"):
|
||||||
for i in xrange(iterations):
|
for i in xrange(iterations):
|
||||||
for j in reversed(range(len(shape))):
|
for j in reversed(range(len(shape))):
|
||||||
if j>0 and j<len(shape)-1:
|
if j>0 and j<len(shape)-1:
|
||||||
|
|
@ -132,11 +132,11 @@ def simplify_shape(shape,mode,iterations):
|
||||||
acosB=0
|
acosB=0
|
||||||
if acosB>(165-500/(ab+bc)): # at least 15 degrees away from straight angle
|
if acosB>(165-500/(ab+bc)): # at least 15 degrees away from straight angle
|
||||||
del shape[j]
|
del shape[j]
|
||||||
if mode=="curve":
|
if mode=="smooth":
|
||||||
shape = catmullRom2bezier([shape[0]]*2+shape+[shape[-1]])
|
shape = catmullRom2bezier([shape[0]]*2+shape+[shape[-1]])
|
||||||
print shape
|
print shape
|
||||||
|
|
||||||
return shape#+nshape
|
return shape#+nshape
|
||||||
|
|
||||||
# Timer module - not mine
|
# Timer module - not mine
|
||||||
|
|
||||||
|
|
|
||||||
50
svlgui.py
50
svlgui.py
|
|
@ -25,6 +25,10 @@ import re
|
||||||
# "b": paint bucket tool
|
# "b": paint bucket tool
|
||||||
'''
|
'''
|
||||||
MODE="e"
|
MODE="e"
|
||||||
|
|
||||||
|
#Painbrush mode
|
||||||
|
PMODE = "Draw straight"
|
||||||
|
|
||||||
SITER=0
|
SITER=0
|
||||||
|
|
||||||
#Currentframe - the frame selected on the timeline. Not necessarily the frame being shown.
|
#Currentframe - the frame selected on the timeline. Not necessarily the frame being shown.
|
||||||
|
|
@ -139,6 +143,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 Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
|
||||||
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
||||||
from GUI import StdCursors, Alerts, FileDialogs, Font
|
from GUI import StdCursors, Alerts, FileDialogs, Font
|
||||||
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
||||||
|
|
@ -159,6 +164,7 @@ elif sys.platform=="win32":
|
||||||
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 Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
|
||||||
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
||||||
from GUI import StdCursors, Alerts, FileDialogs, Font
|
from GUI import StdCursors, Alerts, FileDialogs, Font
|
||||||
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
||||||
|
|
@ -180,6 +186,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 Label as OSXLabel, RadioGroup as OSXRadioGroup, RadioButton as OSXRadioButton
|
||||||
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
from GUI import Column, Row, ScrollableView, TextEditor, Colors
|
||||||
from GUI import StdCursors, Alerts, FileDialogs, Font
|
from GUI import StdCursors, Alerts, FileDialogs, Font
|
||||||
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
from GUI.StdMenus import basic_menus, file_cmds, print_cmds
|
||||||
|
|
@ -467,6 +474,49 @@ class HBox(Widget):
|
||||||
td = htmlobj("td")
|
td = htmlobj("td")
|
||||||
td.add(objint)
|
td.add(objint)
|
||||||
self.tr.add(td)
|
self.tr.add(td)
|
||||||
|
class Label(Widget):
|
||||||
|
def _gettext(self):
|
||||||
|
if SYSTEM=="osx":
|
||||||
|
return self.label.text
|
||||||
|
def _settext(self,text):
|
||||||
|
if SYSTEM=="osx":
|
||||||
|
self.label.text=text
|
||||||
|
text = property(_gettext,_settext)
|
||||||
|
def __init__(self, text=""):
|
||||||
|
if SYSTEM=="osx":
|
||||||
|
self.label = OSXLabel()
|
||||||
|
self.label.text = text
|
||||||
|
def _int(self):
|
||||||
|
if SYSTEM=="osx":
|
||||||
|
return self.label
|
||||||
|
class RadioGroup(Widget):
|
||||||
|
def __getitem__(self,num):
|
||||||
|
return self.buttons[num]
|
||||||
|
def __init__(self,*args):
|
||||||
|
self.buttons = []
|
||||||
|
for i in args:
|
||||||
|
self.buttons.append(RadioButton(i))
|
||||||
|
self.group = OSXRadioGroup([j._int() for j in self.buttons])
|
||||||
|
self.group.value = args[0]
|
||||||
|
self.group.action = self._action
|
||||||
|
def _int(self):
|
||||||
|
return self.group
|
||||||
|
def _getvalue(self):
|
||||||
|
return self.group.value
|
||||||
|
def _setvalue(self,value):
|
||||||
|
self.group.value = value
|
||||||
|
value = property(_getvalue, _setvalue)
|
||||||
|
def _action(self):
|
||||||
|
self.action(self)
|
||||||
|
def action(self,self1=None):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class RadioButton(Widget):
|
||||||
|
def __init__(self,title):
|
||||||
|
if SYSTEM=="osx":
|
||||||
|
self.button = OSXRadioButton(title=title,value=title)
|
||||||
|
def _int(self):
|
||||||
|
return self.button
|
||||||
|
|
||||||
class Grid(Widget):
|
class Grid(Widget):
|
||||||
def __init__(self,*args):
|
def __init__(self,*args):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue