Sunteți pe pagina 1din 12

############################################################

# _-Python GUI Creator for Blender-_


#
# Version 1.0, By The_Nerd
#
#Keys:
# G = Move mode
# S = Scale mode
# S again = Scale in reverse mode
# UpArrow = Move/Scale object up
# DownArrow = Move/Scale object down
# LeftArrow = Move/Scale object left
# RightArrow = Move/Scale object right
# Esc = Quit GUI Creator
#
# Note: You can click on allot of the
# objects with the mouse to select them.
# If you can't select them that way, then
# use the "Select" slider. When the "Select"
# slider is set to "0", you can change the
# background color and the global text color.
#
#Notes:
# I just want to inform the Blender
# community that I didn't make this
# script in attempts to outdo RipSting
# and his program for making GUI's.
# He did a very good job on his program,
# and as I user I want to thank him, but
# as a programmer I want to congradulate him.
#
# Good job RipSting!
#
# I made this script in my spare time
# because I didn't know his existed.
# When I was told about his GUI creator
# I finished this one anyway, for three
# resons:
# (1): My script is OS independant, his is not
# (2): Like I said above, for half of the time I d
idn't know about RipSting's
# (3): I had fun!
#
# I hope the Blender comunity enjoys my script.
# Please feel free to email me anytime at The_Nerd
at linuxmail.org
#
# Thank you!
#
# Press "Alt+P" while you mouse cursor is over this window to run
this script.
############################################################

import Blender
from Blender import Draw, BGL, Window
from Blender.BGL import *
Global_Mode = 0
Global_TransformMode = 0
Global_Objects_X_Off = 0
Global_Objects_Y_Off = 74
Global_Objects_Event_Start = 60
Global_Selected_Object = int(-1)
Global_GridSize = Draw.Create(8)
Global_Select = Draw.Create(-1)
Global_XPos = Draw.Create(0)
Global_YPos = Draw.Create(0)
Global_Width = Draw.Create(60)
Global_Height = Draw.Create(20)
Global_Caption = Draw.Create("NULL")
Global_Initial = Draw.Create(0)
Global_Min = Draw.Create(0.0)
Global_Max = Draw.Create(10.0)
Global_Hint = Draw.Create("No hint")
Global_BK_R = Draw.Create(0.5)
Global_BK_G = Draw.Create(0.5)
Global_BK_B = Draw.Create(0.5)
Global_BK_TR = Draw.Create(0.0)
Global_BK_TG = Draw.Create(0.0)
Global_BK_TB = Draw.Create(0.0)
EVENT_GUI_QUIT = 10
EVENT_GUI_NEW = 12
EVENT_GUI_SAVE = 14
EVENT_GUI_LOAD = 16
EVENT_GUI_COMPILE = 18
EVENT_GUI_DELETE = 19
EVENT_GUI_ADD = 20
EVENT_GUI_SELECT = 21
EVENT_GUI_GRIDSIZE = 22
EVENT_GUI_XPOS = 24
EVENT_GUI_YPOS = 26
EVENT_GUI_WIDTH = 28
EVENT_GUI_HEIGHT = 30
EVENT_GUI_CAPTION = 32
EVENT_GUI_INITIAL = 34
EVENT_GUI_MIN = 36
EVENT_GUI_MAX = 38
EVENT_GUI_HINT = 40
EVENT_GUI_BK_R = 42
EVENT_GUI_BK_G = 43
EVENT_GUI_BK_B = 44
EVENT_GUI_BK_TR = 46
EVENT_GUI_BK_TG = 48
EVENT_GUI_BK_TB = 50
OBJECT_TYPE_BUTTON = 0
OBJECT_TYPE_MENU = 1
OBJECT_TYPE_NUMBER = 2
OBJECT_TYPE_SCROLLBAR = 3
OBJECT_TYPE_SLIDER = 4
OBJECT_TYPE_STRING = 5
OBJECT_TYPE_TEXT = 6
OBJECT_TYPE_TOGGLE = 7

class Object:
Type = 0
Caption = "NULL"
Hint = ""
Initial = 0.0
Min = 0.0
Max = 10.0
XPos = 0
YPos = 0
Width = 60
Height = 20
Global_GUI_Objects = []
def WriteLine(FileHandle, String):
FileHandle.write(String)
FileHandle.write(chr(ord("\n")))
def SaveProject(FileName):
global Global_GUI_Objects, Global_BK_R, Global_BK_G, Global_BK_B
global Global_BK_TR, Global_BK_TG, Global_BK_TB
try:
FileHandle = open(FileName, "wb")
except:
Draw.PupMenu("Unable to save file")
WriteLine(FileHandle, "%f,%f,%f"%(Global_BK_R.val, Global_BK_G.val, Glob
al_BK_B.val))
WriteLine(FileHandle, "%f,%f,%f"%(Global_BK_TR.val, Global_BK_TG.val, Gl
obal_BK_TB.val))
for O in Global_GUI_Objects:
WriteLine(FileHandle, "%d,%s,%s,%d,%f,%f,%d,%d,%d,%d"%(O.Type, O
.Caption, O.Hint, O.Initial, O.Min, O.Max, O.XPos, O.YPos, O.Width, O.Height))
FileHandle.close()
def LoadProject(FileName):
global Global_GUI_Objects, Global_BK_R, Global_BK_G, Global_BK_B
global Global_BK_TR, Global_BK_TG, Global_BK_TB
try:
FileHandle = open(FileName, "rb")
except:
Draw.PupMenu("Unable to load file")
ObjectList=FileHandle.readlines()
Global_Selected_Object=-1
del Global_GUI_Objects[:]
s=ObjectList[0]
Obj=s.split(",")
Global_BK_R.val=float(Obj[0])
Global_BK_G.val=float(Obj[1])
Global_BK_B.val=float(Obj[2])
s=ObjectList[1]
Obj=s.split(",")
Global_BK_TR.val=float(Obj[0])
Global_BK_TG.val=float(Obj[1])
Global_BK_TB.val=float(Obj[2])
for s in ObjectList[2:]:
print s
Obj=s.split(",")
New_Object = Object()
New_Object.Type = int(Obj[0])
New_Object.Caption = str(Obj[1])
New_Object.Hint = str(Obj[2])
New_Object.Initial = int(Obj[3])
New_Object.Min = float(Obj[4])
New_Object.Max = float(Obj[5])
New_Object.XPos = int(Obj[6])
New_Object.YPos = int(Obj[7])
New_Object.Width = int(Obj[8])
New_Object.Height = int(Obj[9])
Global_GUI_Objects.append(New_Object)
FileHandle.close()
def CompileProject(FileName):
global Global_GUI_Objects, Global_BK_R, Global_BK_G, Global_BK_B
global Global_BK_TR, Global_BK_TG, Global_BK_TB
global OBJECT_TYPE_BUTTON, OBJECT_TYPE_MENU, OBJECT_TYPE_NUMBER, OBJECT_
TYPE_SCROLLBAR, OBJECT_TYPE_SLIDER
global OBJECT_TYPE_STRING, OBJECT_TYPE_TEXT, OBJECT_TYPE_TOGGLE
try:
FileHandle = open(FileName, "wb")
except:
Draw.PupMenu("Unable to save file")
WriteLine(FileHandle, "import Blender")
WriteLine(FileHandle, "from Blender import Draw, BGL, Window")
WriteLine(FileHandle, "from Blender.BGL import *")
WriteLine(FileHandle, "")
NameList = ["BUTTON", "MENU", "NUMBER", "SCROLLBAR", "SLIDER", "STRING",
"TEXT", "TOGGLE"]
ObjectList = ["Button", "Menu", "Number", "Scrollbar", "Slider", "String
", "Text", "Toggle"]
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, "EVENT_%s_%d = %d"%(NameList[O.Type], i, i
+9))
i=i+1
i=1
for O in Global_GUI_Objects:
TypeList = [O.Initial, O.Initial, O.Initial, O.Initial, O.Initia
l, "\"\"", "\"\"", O.Initial]
FileHandle.write("Object_%s_%d = Draw.Create("%(ObjectList[O.Typ
e], i))
FileHandle.write(str(TypeList[O.Type]))
FileHandle.write(")")
FileHandle.write(chr(ord("\n")))
i=i+1
WriteLine(FileHandle, "")
WriteLine(FileHandle, "def draw():")
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, " global EVENT_%s_%d"%(NameList[O.Type], i
))
i=i+1
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, " global Object_%s_%d"%(ObjectList[O.Type]
, i))
i=i+1
WriteLine(FileHandle, "")
WriteLine(FileHandle, " BGL.glClearColor(%f, %f, %f, 0.0)"%(Global_BK_R.
val, Global_BK_G.val, Global_BK_B.val))
WriteLine(FileHandle, " BGL.glClear(GL_COLOR_BUFFER_BIT)")
WriteLine(FileHandle, "")
WriteLine(FileHandle, " BGL.glColor3f(%f, %f, %f)"%(Global_BK_TR.val, Gl
obal_BK_TG.val, Global_BK_TB.val))
i=1
for O in Global_GUI_Objects:
if O.Type == OBJECT_TYPE_BUTTON:
WriteLine(FileHandle, " Object_%s_%d = Draw.Button(\"%s\
", EVENT_%s_%d, %d, %d, %d, %d, \"%s\")"%(ObjectList[O.Type], i, O.Caption, Name
List[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, O.Hint))
elif O.Type == OBJECT_TYPE_MENU:
WriteLine(FileHandle, " Object_%s_%d = Draw.Menu(\"%s\",
EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, \"%s\")"%(ObjectList[O.Type], i,
O.Caption, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, ObjectList[O
.Type], i, O.Hint))
elif O.Type == OBJECT_TYPE_NUMBER:
WriteLine(FileHandle, " Object_%s_%d = Draw.Number(\"%s\
", EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, %f, %f, \"%s\")"%(ObjectList[O
.Type], i, O.Caption, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, Ob
jectList[O.Type], i, O.Min, O.Max, O.Hint))
elif O.Type == OBJECT_TYPE_SCROLLBAR:
WriteLine(FileHandle, " Object_%s_%d = Draw.Scrollbar(EV
ENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, %f, %f, 1, \"%s\")"%(ObjectList[O.T
ype], i, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, ObjectList[O.Ty
pe], i, O.Min, O.Max, O.Hint))
elif O.Type == OBJECT_TYPE_SLIDER:
WriteLine(FileHandle, " Object_%s_%d = Draw.Slider(\"%s\
", EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, %f, %f, 1, \"%s\")"%(ObjectLis
t[O.Type], i, O.Caption, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height,
ObjectList[O.Type], i, O.Min, O.Max, O.Hint))
elif O.Type == OBJECT_TYPE_STRING:
WriteLine(FileHandle, " Object_%s_%d = Draw.String(\"%s\
", EVENT_%s_%d, %d, %d, %d, %d,Object_%s_%d.val, %d, \"%s\")"%(ObjectList[O.Type
], i, O.Caption, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, ObjectL
ist[O.Type], i, int(O.Max), O.Hint))
elif O.Type == OBJECT_TYPE_TEXT:
WriteLine(FileHandle, " BGL.glRasterPos2i(%d, %d)"%(O.XP
os, O.YPos))
WriteLine(FileHandle, " Object_%s_%d = Draw.Text(\"%s\")
"%(ObjectList[O.Type], i, O.Caption))
elif O.Type == OBJECT_TYPE_TOGGLE:
WriteLine(FileHandle, " Object_%s_%d = Draw.Toggle(\"%s\
", EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, \"%s\")"%(ObjectList[O.Type],
i, O.Caption, NameList[O.Type], i, O.XPos, O.YPos, O.Width, O.Height, ObjectList
[O.Type], i, O.Hint))
i=i+1
WriteLine(FileHandle, "")
WriteLine(FileHandle, "")
WriteLine(FileHandle, "def event(event, value):")
WriteLine(FileHandle, " if event == Draw.ESCKEY and not value: Draw.Exit
()")
WriteLine(FileHandle, "")
WriteLine(FileHandle, "def b_event(event):")
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, " global EVENT_%s_%d"%(NameList[O.Type], i
))
i=i+1
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, " global Object_%s_%d"%(ObjectList[O.Type]
, i))
i=i+1
WriteLine(FileHandle, "")
WriteLine(FileHandle, " if event == 0: pass")
i=1
for O in Global_GUI_Objects:
WriteLine(FileHandle, " elif event == EVENT_%s_%d:"%(NameList[O.
Type], i))
WriteLine(FileHandle, " pass")
i=i+1
WriteLine(FileHandle, " Draw.Draw()")
WriteLine(FileHandle, "")
WriteLine(FileHandle, "Draw.Register(draw, event, b_event)")
FileHandle.close()
def draw():
global Global_GUI_Objects, Global_Objects_Event_Start, Global_Objects_X_
Off, Global_Objects_Y_Off
global Global_Mode, Global_Objects_X_Off, Global_Objects_Y_Off, Global_S
elected_Object
global EVENT_GUI_QUIT, EVENT_GUI_NEW, EVENT_GUI_SAVE, EVENT_GUI_LOAD
global EVENT_GUI_COMPILE, EVENT_GUI_ADD, EVENT_GUI_GRIDSIZE
global OBJECT_TYPE_BUTTON, OBJECT_TYPE_MENU, OBJECT_TYPE_NUMBER, OBJECT_
TYPE_SCROLLBAR, OBJECT_TYPE_SLIDER
global OBJECT_TYPE_STRING, OBJECT_TYPE_TEXT, OBJECT_TYPE_TOGGLE
global Global_GridSize, Global_GridSizeMin, Global_GridSizeMax
global EVENT_GUI_XPOS, EVENT_GUI_YPOS, EVENT_GUI_WIDTH, EVENT_GUI_HEIGHT
, EVENT_GUI_CAPTION
global EVENT_GUI_INITIAL, EVENT_GUI_MIN, EVENT_GUI_MAX, EVENT_GUI_HINT
global Global_XPos, Global_YPos, Global_Width, Global_Height, Global_Cap
tion, Global_Initial
global Global_Min, Global_Max, Global_Hint
global EVENT_GUI_SELECT, EVENT_GUI_DELETE, EVENT_GUI_BK_R, EVENT_GUI_BK_
G, EVENT_GUI_BK_B, Global_Select
global Global_BK_R, Global_BK_G, Global_BK_B
global Global_BK_TR, Global_BK_TG, Global_BK_TB
global EVENT_GUI_BK_TR, EVENT_GUI_BK_TG, EVENT_GUI_BK_TB
BGL.glClearColor(Global_BK_R.val, Global_BK_G.val, Global_BK_B.val, 0.0)
BGL.glClear(GL_COLOR_BUFFER_BIT)
BGL.glLineWidth(1)
BGL.glColor3f(1,0,0)
BGL.glBegin(GL_LINES)
BGL.glVertex2i(0, Global_Objects_Y_Off-2)
BGL.glVertex2i(800, Global_Objects_Y_Off-2)
BGL.glEnd()
Draw.Button("New", EVENT_GUI_NEW, 0,0,30,20,"New project")
Draw.Button("Save", EVENT_GUI_SAVE, 32,0,40,20,"Save project")
Draw.Button("Load", EVENT_GUI_LOAD, 74,0,40,20,"Load project")
Draw.Button("Compile", EVENT_GUI_COMPILE, 116,0,70,20,"Export GUI to a p
ython script")
Draw.Button("Quit", EVENT_GUI_QUIT, 188,0,50,20,"Quit GUI Creator")
Global_GridSize=Draw.Number("Gridsize:", EVENT_GUI_GRIDSIZE, 250, 0, 100
, 20, Global_GridSize.val, 1, 16, "Grid size")
Global_Select=Draw.Slider("Select:", EVENT_GUI_SELECT, 352, 0, 120, 20,
Global_Select.val, 0, len(Global_GUI_Objects), 1, "Select an object")
if Global_Mode == 0:
Draw.Button("Add", EVENT_GUI_ADD, 0,22,30,20,"Add a GUI object")
Draw.Button("Del", EVENT_GUI_DELETE, 32,22,30,20,"Delete selecte
d GUI object")
BGL.glColor3f(Global_BK_TR.val, Global_BK_TG.val, Global_BK_TB.val)
i=0
for O in Global_GUI_Objects:
if O.Type == OBJECT_TYPE_BUTTON:
Draw.Button(O.Caption, i+Global_Objects_Event_Start, O.X
Pos+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Hint)
elif O.Type == OBJECT_TYPE_MENU:
Draw.Menu(O.Caption, i+Global_Objects_Event_Start, O.XPo
s+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Initial, O
.Hint)
elif O.Type == OBJECT_TYPE_NUMBER:
Draw.Number(O.Caption, i+Global_Objects_Event_Start, O.X
Pos+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Initial,
O.Min, O.Max, O.Hint)
elif O.Type == OBJECT_TYPE_SCROLLBAR:
Draw.Scrollbar(i+Global_Objects_Event_Start, O.XPos+Glob
al_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Initial, O.Min,
O.Max, 0, O.Hint)
elif O.Type == OBJECT_TYPE_SLIDER:
Draw.Slider(O.Caption, i+Global_Objects_Event_Start, O.X
Pos+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Initial,
O.Min, O.Max, 0, O.Hint)
elif O.Type == OBJECT_TYPE_STRING:
Draw.String(O.Caption, i+Global_Objects_Event_Start, O.X
Pos+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,"", O.Max,
O.Hint)
elif O.Type == OBJECT_TYPE_TEXT:
glRasterPos2i(O.XPos+Global_Objects_X_Off, O.YPos+Global
_Objects_Y_Off)
Draw.Text(O.Caption)
elif O.Type == OBJECT_TYPE_TOGGLE:
Draw.Toggle(O.Caption, i+Global_Objects_Event_Start, O.X
Pos+Global_Objects_X_Off,O.YPos+Global_Objects_Y_Off,O.Width,O.Height,O.Initial,
O.Hint)
i=i+1
if Global_Selected_Object != -1:
O = Global_GUI_Objects[Global_Selected_Object]
Global_XPos=Draw.Number("X:", EVENT_GUI_XPOS, 42+32, 22, 60, 20,
Global_XPos.val, 0, 800, "X Position")
Global_YPos=Draw.Number("Y:", EVENT_GUI_YPOS, 104+32, 22, 60, 20
, Global_YPos.val, 0, 800, "Y Position")
Global_Width=Draw.Number("Width:", EVENT_GUI_WIDTH, 166+32, 22,
90, 20, Global_Width.val, 5, 800, "Width")
Global_Height=Draw.Number("Height:", EVENT_GUI_HEIGHT, 258+32, 2
2, 90, 20, Global_Height.val, 5, 800, "Height")
Global_Caption=Draw.String("Caption:", EVENT_GUI_CAPTION, 0, 44,
90, 20, Global_Caption.val, 512, "Caption")
Global_Hint=Draw.String("Hint:", EVENT_GUI_HINT, 92, 44, 90, 20,
Global_Hint.val, 512, "Help message displayed on mouse over")
if not O.Type in [OBJECT_TYPE_BUTTON, OBJECT_TYPE_TEXT]:
Global_Initial=Draw.Number("Initial:", EVENT_GUI_INITIAL
, 184, 44, 90, 20, Global_Initial.val, 0, 128, "Initial (starting) value")
if O.Type in [OBJECT_TYPE_NUMBER, OBJECT_TYPE_SLIDER, OBJECT_TYP
E_SCROLLBAR]:
Global_Min=Draw.Number("Min:", EVENT_GUI_MIN, 276, 44, 9
0, 20, Global_Min.val, 0, 128, "Minimum value")
Global_Max=Draw.Number("Max:", EVENT_GUI_MAX, 368, 44, 9
0, 20, Global_Max.val, 0, 1024, "Maximum value")
SW = 2
BGL.glLineWidth(5)
BGL.glColor3f(1,0,0)
BGL.glBegin(GL_LINE_LOOP)
BGL.glVertex2i(O.XPos-SW+Global_Objects_X_Off, O.YPos-SW+Global_
Objects_Y_Off)
BGL.glVertex2i(O.XPos-SW+Global_Objects_X_Off, O.YPos+O.Height+S
W+Global_Objects_Y_Off)
BGL.glVertex2i(O.XPos-SW+Global_Objects_X_Off, O.YPos+O.Height+S
W+Global_Objects_Y_Off)
BGL.glVertex2i(O.XPos+O.Width+SW+Global_Objects_X_Off, O.YPos+O.
Height+SW+Global_Objects_Y_Off)
BGL.glVertex2i(O.XPos+O.Width+SW+Global_Objects_X_Off, O.YPos+O.
Height+SW+Global_Objects_Y_Off)
BGL.glVertex2i(O.XPos+O.Width+SW+Global_Objects_X_Off, O.YPos-SW
+Global_Objects_Y_Off)
BGL.glEnd()
else:
Global_BK_R=Draw.Slider("R:", EVENT_GUI_BK_R, 42+32, 22, 100, 20
, Global_BK_R.val, 0.0, 1.0, 1, "Background Red")
Global_BK_G=Draw.Slider("G:", EVENT_GUI_BK_G, 144+32, 22, 100, 2
0, Global_BK_G.val, 0.0, 1.0, 1, "Background Green")
Global_BK_B=Draw.Slider("B:", EVENT_GUI_BK_B, 246+32, 22, 100, 2
0, Global_BK_B.val, 0.0, 1.0, 1, "Background Blue")
Global_BK_TR=Draw.Slider("Text R:", EVENT_GUI_BK_TR, 0, 44, 140,
20, Global_BK_TR.val, 0.0, 1.0, 1, "Text Red")
Global_BK_TG=Draw.Slider("Text G:", EVENT_GUI_BK_TG, 142, 44, 14
0, 20, Global_BK_TG.val, 0.0, 1.0, 1, "Text Green")
Global_BK_TB=Draw.Slider("Text B:", EVENT_GUI_BK_TB, 284, 44, 14
0, 20, Global_BK_TB.val, 0.0, 1.0, 1, "Text Blue")
def event(event, value):
global Global_Selected_Object, Global_GridSize, Global_TransformMode
global Global_XPos, Global_YPos, Global_Width, Global_Height, Global_Cap
tion, Global_Initial
global Global_Min, Global_Max, Global_Hint
GridSize=Global_GridSize.val
if event == Draw.ESCKEY and not value:
Draw.Exit()
elif event == Draw.UPARROWKEY and not value:
if Global_Selected_Object != -1:
O = Global_GUI_Objects[Global_Selected_Object]
if Global_TransformMode == 0:
O.YPos=O.YPos+GridSize
elif Global_TransformMode == 1:
O.Height=O.Height+GridSize
elif Global_TransformMode == 2:
O.Height=O.Height-GridSize
if O.Height < 5: O.Height = 5
Draw.Draw()
elif event == Draw.DOWNARROWKEY and not value:
if Global_Selected_Object != -1:
O = Global_GUI_Objects[Global_Selected_Object]
if Global_TransformMode == 0:
if O.YPos > 0: O.YPos=O.YPos-GridSize
if O.YPos < 0: O.YPos=0
elif Global_TransformMode == 1:
D=O.YPos
O.YPos=O.YPos-GridSize
if O.YPos < 0: O.YPos=0
O.Height=O.Height+(D-O.YPos)
elif Global_TransformMode == 2:
D=O.YPos
O.YPos=O.YPos+GridSize
O.Height=O.Height-(O.YPos-D)
Draw.Draw()
elif event == Draw.LEFTARROWKEY and not value:
if Global_Selected_Object != -1:
O = Global_GUI_Objects[Global_Selected_Object]
if Global_TransformMode == 0:
if O.XPos > 0: O.XPos=O.XPos-GridSize
if O.XPos < 0: O.XPos=0
elif Global_TransformMode == 1:
D=O.XPos
O.XPos=O.XPos-GridSize
if O.XPos < 0: O.XPos=0
O.Width=O.Width+(D-O.XPos)
elif Global_TransformMode == 2:
D=O.XPos
O.XPos=O.XPos+GridSize
O.Width=O.Width-(O.XPos-D)
Draw.Draw()
elif event == Draw.RIGHTARROWKEY and not value:
if Global_Selected_Object != -1:
O = Global_GUI_Objects[Global_Selected_Object]
if Global_TransformMode == 0:
O.XPos=O.XPos+GridSize
elif Global_TransformMode == 1:
O.Width=O.Width+GridSize
elif Global_TransformMode == 2:
O.Width=O.Width-GridSize
if O.Width < 5: O.Width = 5
Draw.Draw()
elif event == Draw.GKEY:
Global_TransformMode = 0
elif event == Draw.SKEY and not value:
if Global_TransformMode == 0:
Global_TransformMode = 1
elif Global_TransformMode == 1:
Global_TransformMode = 2
elif Global_TransformMode == 2:
Global_TransformMode = 1

def b_event(event):
global Global_GUI_Objects, Global_Objects_Event_Start, Global_Selected_O
bject
global EVENT_GUI_QUIT, EVENT_GUI_NEW, EVENT_GUI_SAVE, EVENT_GUI_LOAD, EV
ENT_GUI_COMPILE, EVENT_GUI_ADD
global EVENT_GUI_XPOS, EVENT_GUI_YPOS, EVENT_GUI_WIDTH, EVENT_GUI_HEIGHT
, EVENT_GUI_CAPTION
global EVENT_GUI_INITIAL, EVENT_GUI_MIN, EVENT_GUI_MAX, EVENT_GUI_HINT
global EVENT_GUI_SELECT, Global_Select
global Global_XPos, Global_YPos, Global_Width, Global_Height, Global_Cap
tion, Global_Initial
global Global_Min, Global_Max, Global_Hint
global Global_BK_R, Global_BK_G, Global_BK_B, EVENT_GUI_DELETE
global Global_BK_TR, Global_BK_TG, Global_BK_TB
global EVENT_GUI_BK_TR, EVENT_GUI_BK_TG, EVENT_GUI_BK_TB
if event == EVENT_GUI_QUIT:
Draw.Exit()
elif event == EVENT_GUI_NEW:
Global_Selected_Object=-1
del Global_GUI_Objects[:]
Draw.Draw()
elif event == EVENT_GUI_SAVE:
Window.FileSelector(SaveProject, "Save")
elif event == EVENT_GUI_LOAD:
Window.FileSelector(LoadProject, "Load")
elif event == EVENT_GUI_COMPILE:
Window.FileSelector(CompileProject, "Compile")
elif event == EVENT_GUI_ADD:
Type=Draw.PupMenu("Add a GUI object of type:%t|Button|Menu|Numbe
r|Scroll Bar|Slider|String|Text|Toggle button")
New_Object = Object()
New_Object.Type = Type-1
Global_GUI_Objects.append(New_Object)
Global_Selected_Object = len(Global_GUI_Objects)-1
Global_Select.val = Global_Selected_Object
O = Global_GUI_Objects[Global_Selected_Object]
Global_XPos.val=O.XPos
Global_YPos.val=O.YPos
Global_Width.val=O.Width
Global_Height.val=O.Height
Global_Caption.val=O.Caption
Global_Initial.val=O.Initial
Global_Min.val=O.Min
Global_Max.val=O.Max
Global_Hint.val=O.Hint
Draw.Draw()
elif event == EVENT_GUI_DELETE:
if Global_Selected_Object == -1: return
del Global_GUI_Objects[Global_Selected_Object]
Global_Selected_Object=Global_Selected_Object-1
if Global_Selected_Object == -1:
Draw.Draw()
return
O = Global_GUI_Objects[Global_Selected_Object]
Global_XPos.val=O.XPos
Global_YPos.val=O.YPos
Global_Width.val=O.Width
Global_Height.val=O.Height
Global_Caption.val=O.Caption
Global_Initial.val=O.Initial
Global_Min.val=O.Min
Global_Max.val=O.Max
Global_Hint.val=O.Hint
Global_Select.val = Global_Selected_Object
Draw.Draw()
elif event == EVENT_GUI_SELECT:
Global_Selected_Object = Global_Select.val-1
Draw.Draw()
elif event >= Global_Objects_Event_Start and event <= (Global_Objects_Ev
ent_Start+len(Global_GUI_Objects)):
Global_Selected_Object = event-Global_Objects_Event_Start
O = Global_GUI_Objects[Global_Selected_Object]
Global_XPos.val=O.XPos
Global_YPos.val=O.YPos
Global_Width.val=O.Width
Global_Height.val=O.Height
Global_Caption.val=O.Caption
Global_Initial.val=O.Initial
Global_Min.val=O.Min
Global_Max.val=O.Max
Global_Hint.val=O.Hint
Global_Select.val = Global_Selected_Object
Draw.Draw()
elif event == EVENT_GUI_XPOS:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.XPos = Global_XPos.val
Draw.Redraw()
elif event == EVENT_GUI_YPOS:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.YPos = Global_YPos.val
Draw.Redraw()
elif event == EVENT_GUI_WIDTH:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Width = Global_Width.val
Draw.Redraw()
elif event == EVENT_GUI_HEIGHT:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Height = Global_Height.val
Draw.Redraw()
elif event == EVENT_GUI_CAPTION:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Caption = Global_Caption.val
Draw.Redraw()
elif event == EVENT_GUI_INITIAL:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Initial = Global_Initial.val
Draw.Redraw()
elif event == EVENT_GUI_MIN:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Min = Global_Min.val
Draw.Redraw()
elif event == EVENT_GUI_MAX:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Max = Global_Max.val
Draw.Redraw()
elif event == EVENT_GUI_HINT:
if Global_Selected_Object < 0: return
O = Global_GUI_Objects[Global_Selected_Object]
O.Hint = Global_Hint.val
Draw.Redraw()
elif event in [EVENT_GUI_BK_R, EVENT_GUI_BK_G, EVENT_GUI_BK_B, EVENT_GUI
_BK_TR, EVENT_GUI_BK_TG, EVENT_GUI_BK_TB]:
Draw.Draw()
Draw.Register(draw, event, b_event)

S-ar putea să vă placă și