From 37bd1278883365d1c5105b7f2245d4930b041943 Mon Sep 17 00:00:00 2001 From: Skyler Lehmkuhl Date: Wed, 11 Jan 2012 17:05:18 -0500 Subject: [PATCH] Color selection possible --- lightningbeam_windows.py | 2 ++ media/colors.png | Bin 0 -> 13074 bytes svlgui.py | 26 ++++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 media/colors.png diff --git a/lightningbeam_windows.py b/lightningbeam_windows.py index 702d883..77f1cdf 100644 --- a/lightningbeam_windows.py +++ b/lightningbeam_windows.py @@ -217,6 +217,8 @@ class MainWindowOSX: self.toolbox.buttons[3][1].onPress = paintbrush self.toolbox.buttons[4][0].onPress = pen self.toolbox.buttons[4][1].onPress = paint_bucket + self.toolbox.buttons[5][0].onPress = lambda self1: svlgui.ColorSelectionWindow("line")#,linegroup)#,self.linecanvas) + self.toolbox.buttons[5][1].onPress = lambda self1: svlgui.ColorSelectionWindow("fill")#,linegroup)#,self.fillcanvas) self.scriptwindow = svlgui.TextView() self.paintgroup = svlgui.RadioGroup("Draw straight", "Draw smooth", "Draw as inked") def setmode(self): diff --git a/media/colors.png b/media/colors.png new file mode 100644 index 0000000000000000000000000000000000000000..1f28c39ca1e852ab154cd8fd3ecc0d339c5d52e1 GIT binary patch literal 13074 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 literal 0 HcmV?d00001 diff --git a/svlgui.py b/svlgui.py index 030630d..90b2339 100644 --- a/svlgui.py +++ b/svlgui.py @@ -801,7 +801,7 @@ class TextView(Widget): def mouse_down(self, event): self.become_target() self.box = OSXTextEditor(scrolling="hv") - self.box.font = Font("Mono", 12, []) + self.box.font = Font("Courier", 12, []) if width and height: self.box.size = (width, height) elif SYSTEM=="html": @@ -1818,7 +1818,7 @@ class OverlayWindow: class ColorSelectionWindow: - def __init__(self,var,dispgrp, dcanv): + def __init__(self,var,dispgrp=None, dcanv=None): if SYSTEM=="gtk": win = gtk.Window() win.set_size_request(320,208) @@ -1862,6 +1862,28 @@ class ColorSelectionWindow: win.connect("button-press-event", close, dispgrp, dcanv) win.set_modal(True) win.present() + elif SYSTEM=="osx": + win = OSXWindow(width=352,height=226,resizable=False) + def onClickRectFill(self,x,y): + global FILLCOLOR + FILLCOLOR = Color(colors.colorArray(int(x/16))[int(y/16)]) + def onClickRectLine(self,x,y): + global LINECOLOR + LINECOLOR = Color(colors.colorArray(int(x/16))[int(y/16)]) + canvas = Canvas(336,208) + group = Group() + def dummy(*args): + pass + group._onMouseMove = dummy + canvas.add(group,0,0) + im = Image("media/colors.png") + group.add(im) + if var=="fill": + group.onMouseDown = onClickRectFill + if var=="line": + group.onMouseDown = onClickRectLine + win.place(canvas._int(),left=0,top=0,right=0,bottom=0,sticky="news",scrolling="") + win.show() def main(): #Executes the main loop for whatever GUI is running