############################################################ # _-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 didn'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, Global_BK_B.val)) WriteLine(FileHandle, "%f,%f,%f"%(Global_BK_TR.val, Global_BK_TG.val, Global_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.Initial, "\"\"", "\"\"", O.Initial] FileHandle.write("Object_%s_%d = Draw.Create("%(ObjectList[O.Type], 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, Global_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, NameList[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, ObjectList[O.Type], i, O.Min, O.Max, O.Hint)) elif O.Type == OBJECT_TYPE_SCROLLBAR: WriteLine(FileHandle, " Object_%s_%d = Draw.Scrollbar(EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, %f, %f, 1, \"%s\")"%(ObjectList[O.Type], i, 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_SLIDER: WriteLine(FileHandle, " Object_%s_%d = Draw.Slider(\"%s\", EVENT_%s_%d, %d, %d, %d, %d, Object_%s_%d.val, %f, %f, 1, \"%s\")"%(ObjectList[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, ObjectList[O.Type], i, int(O.Max), O.Hint)) elif O.Type == OBJECT_TYPE_TEXT: WriteLine(FileHandle, " BGL.glRasterPos2i(%d, %d)"%(O.XPos, 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_Selected_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_Caption, 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 python 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 selected 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.XPos+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.XPos+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.XPos+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+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_SLIDER: Draw.Slider(O.Caption, i+Global_Objects_Event_Start, O.XPos+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.XPos+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.XPos+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, 22, 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_TYPE_SCROLLBAR]: Global_Min=Draw.Number("Min:", EVENT_GUI_MIN, 276, 44, 90, 20, Global_Min.val, 0, 128, "Minimum value") Global_Max=Draw.Number("Max:", EVENT_GUI_MAX, 368, 44, 90, 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+SW+Global_Objects_Y_Off) BGL.glVertex2i(O.XPos-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+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, 20, 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, 20, 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, 140, 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, 140, 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_Caption, 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_Object global EVENT_GUI_QUIT, EVENT_GUI_NEW, EVENT_GUI_SAVE, EVENT_GUI_LOAD, EVENT_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_Caption, 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|Number|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_Event_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)