Magik GUI - Basic


The rowcol exemplar is useful to set up your GUI using row/column placement. You can embed a rowcol into another rowcol.


I always forget about this, but if you have more then one row or column, besides the :resize? property set to true, you also need to have the :row_resize_values or :col_resize_values set to the appropriate values. Happy sizing:)

Another note is you may need :col_alignment set to :fill if that is the desired effect.

Managed Pages

For lack of a better title for now… "Managed Pages" allow you to swap areas of your GUI with different data. Examples are tab_box and window_stack.

Window Stacks

Window stacks (window_stack) is basically a tabbed box without the tabs. You can programmatically change what is displayed.

Resizing Tab Box

Below is an example of having data inside a tab box resize. Note that even though you may only have one item in the rowcol, you still need to assign it the row & column so that the resizing takes place. Otherwise you will be sitting there why doesn't it want to resize:)

Very Deep GUI Information

You may or may not know that the Magik GUI is built upon the OS GUI objects. Magik gives you access to the deep OS windows thru using frame.actual which is basically a pointer to the OS control. You can send commands at this level using send_message_magik(). Here are some examples of how to use this. You can use frame.actual.show_states for a listing of values that can be passed into send_message_magik. There are other states like status_states that can be used for gathering info on the frame.

Maximizing the Frame

Here is how you maximize the frame thru code.

In 4.2 you may need to do:

Setting Focus on Particular window

I have needed to have a interaction mode that will quit when you hit the Escape key when the interaction mode is triggered from another window. You will need to make the top frame active and set the focus. Below is a snippet of code that shows setting up the interaction mode, activating the application and setting the focus.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License