Gui
BlitzMax Forums/BlitzMax Programming/Gui
| ||
All these screenshots are from the early beta of my gui code. [edit] fixed tabs thanks to skn3[ac] |
| ||
Hmm, looks interesting, could you post examples of how the forms are put together? |
| ||
This is the WebLink Manager code:Import Pub.Win32 Include "puremax.bmx" main:TWindow = New TWindow edit:TEditBox = New TEditBox list:TListBox = New TListBox add:TButton = New TButton remove:TButton = New TButton launch:TButton = New TButton main.Create("WebLink Manager",380,200,200,243,5) add.create("Add",132,10,50,20,main.hwnd) edit.create(10,10,119,22,main.hwnd) list.create(10,35,172,160,main.hwnd) remove.create("Remove",97,188,80,22,main.hwnd) launch.create("Launch",14,188,80,22,main.hwnd) Repeat Select list.selecteditem() Case 0 Print "google" Case 1 Print "yahoo" End Select If add.click() list.additem(edit.gettext()) End If If remove.click() list.removeitem(list.selecteditem()) End If WaitEvent() Forever I am using Import Pub.Win32 & Include "puremax.bmx" for myself but at the end you will just have to import it as a module. |
| ||
It looks awesome, and very interesting!!! I would suggest you to add a function pointer to the events. this way you'll get a functionality closer to .NET applications. I mean: Type TButton Field OnClick() Field .... end Type inside WaitEvent function: for each item if item.click() =true and item.OnClick <> Null then item.onclick() end if next so an example could be more or less: Local MyButton:New TButton MyButton.OnClick = MyButton_click repeat waitevent() forever Function MyButton_Click() notify ("Pressed!!!") End Function |
| ||
Ziggy i really like that and i will add it, thank you. Anybody with other suggestions please feel free to say i would like to add what users want. |
| ||
Interesting although it uses some quite strange naming for example create as method which can't be a constructor because of that. |
| ||
Current CommandsGadget Create --------------- Button.Create CheckBox.Create GroupBox.Create ListView.Create Menu.Create PopupMenu.Create RadioBox.Create RichEdit.Create ScrollBar.Create Tab.Create EditBox.Create ComboBox.Create Label.Create ListBox.Create Panel.Create Progress.Create StatusBar.Create ToolBar.Create TrackBar.Create TreeView.Create UpDown.Create Window.Create Gadget TextBox Commands --------------- Gadget.PasswordChar Gadget.CountLines Gadget.GetLength Gadget.GetLine Gadget.AutoSize Gadget.ReadOnly Gadget.MultiLine Gadget.HideSelection Gadget.AcceptReturn Gadget.MaxLength Gadget.Undo Gadget.Redo Gadget.Cut Gadget.Copy Gadget.Paste Gadget.Clear Gadget CheckBox Commands --------------- Gadget.Checked Gadget.CheckAlign Gadget.TextAlign Gadget RadioBox Commands --------------- Gadget.Checked Gadget.CheckAlign Gadget.TextAlign Gadget ProgressBar Commands --------------- Gadget.Range Gadget.Minimum Gadget.Maximum Gadget.StepValue Gadget.Value Gadget UpDown Commands --------------- Gadget.Range Gadget.Minimum Gadget.Maximum Gadget.Value Window Gadget Commands --------------- Gadget.Active Gadget.Maximize Gadget.Minimize Gadget.Restore Gadget.ClientWidth Gadget.ClientHeight Gadget.CursorX Gadget.CursorY ListBox Gadgets Commands --------------- Gadget.Addtem Gadget.InsertItem Gadget.RemoveItem Gadget.ClearItems Gadget.Counttems Gadget.ModifyItem Gadget.SelectItem Gadget.SelectedItem ComboBox Gadgets Commands --------------- Gadget.Addtem Gadget.InsertItem Gadget.RemoveItem Gadget.ClearItems Gadget.Counttems Gadget.ModifyItem Gadget.SelectItem Gadget.SelectedItem Gadget.AutoSize Gadget.ItemHeight Gadget.DropDownWidth TabControl Gadgets Commands --------------- Gadget.Addtem Gadget.InsertItem Gadget.RemoveItem Gadget.ClearItems Gadget.Counttems Gadget.ModifyItem Gadget.SelectItem Gadget.SelectedItem ToolBar Gadget Commands --------------- Gadget.AddItem Gadget.AddBreak Gadget.AutoSize Gadget.ButtonSize Gadget.ImageSize Menu Gadgets Commands --------------- Gadget.Create Gadget.AddItem Gadget.Free Default Gadget Commands --------------- Gadget.Hide Gadget.Show Gadget.Free Gadget.Enable Gadget.Disable Gadget.ZOrder Gadget.Text(txt$) Gadget.Shape(x,y,w,h) Gadget.Location(x,y) Gadget.Size(w,h) Gadget.Left(x) Gadget.Top(y) Gadget.Width(w) Gadget.Height(h) Gadget.RightToLeft Gadget.AllowDrop Gadget.TabStop Gadget.Parent Gadget.GetWidth Gadget.GetHeight Gadget.GetLeft Gadget.GetTop Gadget.GetText Gadget.Activate Gadget.Visible Gadget.Enabled Gadget.Font Button Events --------------- Gadget.OnClick Window Events --------------- Gadget.OnMove Gadget.OnResize Gadget.OnClick |
| ||
Looks very nice, im looking forward to try this :) and the function pointer event stuff is a must working with windows(if you ask me) :) |
| ||
It is looking pretty good. My request is lots of treeview gadget features. I love treeviews. :) |
| ||
TreeView Gadget with alot of features is a must do. Thanks alot guys |
| ||
Sarge, I'm very interested in this module. I'm working in a plug-in engine for BLIde and I would like to add a GUI interface to allow users build their own plug-ins with blitzMax, I think this module would be great, to integrate with the plug-in SDK engine, becouse this way, plug-ins culd have their own GUI. Please, could you let me know when it's finished? (I think you've got my mail, if not, let me know and I'll give it to you). |
| ||
One question, CREATE is a method or a FUNCTION? And one more thing, have you thougt about adding a 'enabled' property? This would be great for buttons and control containers such as forms, pannels and tabs. |
| ||
Ziggy you will be the first to get it dont worry. 1: Create is a Method 2: Look under "Default Gadget Commands" at the top those commands are for all gadgets and it includes gadget.enabled / gadget.enable / gadget.disable please give me your email i will send it as soon as its done Thanks alot mate |
| ||
Ziggy come on mirc or msn some time if you want to ask any questions or want me to add some stuff. mirc: Server( irc.blitzed.org ) - room: ( BlitzRoom ) MSN: LamasuCreations@... |
| ||
Looking good Sarge. And as stated above, the events are definitely necessary. |
| ||
Sarge, another suggestion. If you store the handler of the active control (I think this suoldn't be very complicated), you cuold control the lostfocus and getfocus event in the waitevent function. (It's just a suggestion). |
| ||
Yea Ziggy in that example i showed above you can use the handle by doing gadget.hwnd and lostfocus/getfocus are much easier than that i am really liking your suggestions please tell me more if you got any thanks. |
| ||
well then, another suggestion. You can add in a very easy way a timer 'virtual' control. Update a millisecs count in the waitevent, and throw a function pointer when a millisecs count has been reached. This way, you can emulate the .NET timers in a very easy and functional way. No resources associated to this 'virtual' control, and it can be used in a very efficient way to, even, emulate 'threads' in a easy (limitated but data-safe) way. Can't wait to see this module working. Will it be open source? |
| ||
I actually started writing a timer that does just that: http://www.blitzbasic.com/Community/posts.php?topic=45804#509005 (I never got around to fixing the bug). |
| ||
I like your one Perturbatio but i think it is better if i use windows api timers which are the one's like .net but thanks i will keep your one in mind if i end up changing my mind. Ziggy the module will be open-source and thanks again for all your effort. |
| ||
Mine is intended to be platform independant which is why I'm not using API calls. |
| ||
So can I have a copy to try :) I have a GUI App that I want to do some sodding around with and this looks perfect :) I am also going to get Mr Cowers and have a look at that too. A |
| ||
[edit] So how does this work then, can I display normal windows over the top of a openGl window, or is it for GUI only. What Im looking for is to have like a blitzPlus canvas gadget and then use the GUI around the edge? Will it be possible with this? Thanks [/edit] Im not too bothered about the platform independance for this app as the thing it works with is Windows only at the moment. Cheers, A |
| ||
well i have added one panel which contains the opengl window and can be placed anywhere within a window you can even use the gadget.align(client) to make it the full size of the window. The down side is i am going to have a bit of trouble getting the blitzmax OpenGL 2d commands in my window i will add it soon but i dont think it will be the first release. I will also later add a directx panel for your needs. thanks again guys [Edit] Andy i will 100% add a canvas gadget it plays a very important role for 2d graphics and the creation of UserControls. |
| ||
Sarge: do you use winapi for this or do you draw graphics in OpenGL? do you plan to release this GUI? |
| ||
Hi McCredo 1: The whole gui is done in windows api 2: I will release this open-source as soon as it is done. Thanks |
| ||
Looks very promising. After scanning through the code I thought ... "I'll have some of that!" Are you planning to release the GUI editor as well? What about a Blitz+ equivalent to SetGadgetLayout which controls what happens to a gadgets position/size when re-sizing the window. I do hope you get Max 2D OpenGL working alongside the GUI. Should you have a FlushMem in the loop? |
| ||
Hi jb 1: What i am doing is im creating the GUI Editor while im creating the gui. 2: I am still fixing my Anchor( 0,0,0,0 ) command which is identical to the SetGadgetLayout in blitz+ 3: I will work my best to complete the gui so i can then complete the 2d commands, because when using windows api you create a new window which blitzmax 2d opengl commands dosent regonize it as the default blitzmax window. 4: You will have to use FlushMem because blitzmax's leaks alot, this would be marks job not mine. [Edit] Gui Editor will be free too Thanks |
| ||
I meant to ask ... What about: 1) tabbing between gadgets 2) keyboard shortcuts to gadgets? Something like Resi&ze which would underline the 'z' and allow Z ,Alt+Z etc as a shortcut. 3) Drag and drop? Looks like you have covered a lot of ground already. |
| ||
Hi jb 1: done 2: in the works 3: Gadget.AllowDrop and i will add other commands to communicate with the drop/recive Thanks |
| ||
Wow .. Very interested. |