IceDesign GUI designer
Re: IceDesign GUI designer
Hi storck,
I didn't have time to look at it before but with your icef file, I reproduced the error, I'll fix it.
Thanks
I didn't have time to look at it before but with your icef file, I reproduced the error, I'll fix it.
Thanks
Re: IceDesign GUI designer
IceDesign has been updated in version 2.0.6
- Fix the above bug reported by Storck.
In procedure Resize_Window(), with a Menu, ToolBar or StatusBar, the line:
WindowName_HeightIni - MenuHeight - ToolBarHeight - StatusBarHeight
Must be written Only if at least one of the child gadgets has a proportional property.
- ButtonImageGadget in ObjectTheme.pbi now accepts transparent images, I mean DrawAlphaImage() vs DrawImage()...
-
- User
- Posts: 65
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Hello Chris,
I recompiled all my forms with version 206 and I get alert from my code that a lot of items are not found in my Language MAP
I don't know which version changed if but it seems that
checkboxgadget
stringgadget
textgadget
and maybe others
now generate language data on empty textfields too.
Example
I can see following 5 lines in IceDesign
StringGadget(#WinKast_String_Zek_MARKERING_1, 765, 675, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_2, 765, 700, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_3, 765, 725, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_4, 765, 750, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_5, 765, 775, 372, 25, "Operators should not use this field")
The generated code then is
StringGadget(#WinKast_String_Zek_MARKERING_1, 765, 675, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_1"))
StringGadget(#WinKast_String_Zek_MARKERING_2, 765, 700, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_2"))
StringGadget(#WinKast_String_Zek_MARKERING_3, 765, 725, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_3"))
StringGadget(#WinKast_String_Zek_MARKERING_4, 765, 750, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_4"))
StringGadget(#WinKast_String_Zek_MARKERING_5, 765, 775, 372, 25,GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_5"))
The generated data for my language map then is (note that only the last line should be there)
Data.s "Gadget_WinKast_String_Zek_MARKERING_1",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_2",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_3",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_4", ""
Data.s "Gadget_WinKast_String_Zek_MARKERING_5", "Operators should not use this field"
My language MAP is therefore suddenly missing a lot of ... empty fields ???
IceDesign used NOT to do that before.
Is it possible to correct this so the empty fields are not replaced by GetInterfaceLang()
Thanks
I recompiled all my forms with version 206 and I get alert from my code that a lot of items are not found in my Language MAP
I don't know which version changed if but it seems that
checkboxgadget
stringgadget
textgadget
and maybe others
now generate language data on empty textfields too.
Example
I can see following 5 lines in IceDesign
StringGadget(#WinKast_String_Zek_MARKERING_1, 765, 675, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_2, 765, 700, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_3, 765, 725, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_4, 765, 750, 372, 25, "")
StringGadget(#WinKast_String_Zek_MARKERING_5, 765, 775, 372, 25, "Operators should not use this field")
The generated code then is
StringGadget(#WinKast_String_Zek_MARKERING_1, 765, 675, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_1"))
StringGadget(#WinKast_String_Zek_MARKERING_2, 765, 700, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_2"))
StringGadget(#WinKast_String_Zek_MARKERING_3, 765, 725, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_3"))
StringGadget(#WinKast_String_Zek_MARKERING_4, 765, 750, 372, 25, GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_4"))
StringGadget(#WinKast_String_Zek_MARKERING_5, 765, 775, 372, 25,GetInterfaceLang("Gadget_WinKastZekeringen_String_Zek_MARKERING_5"))
The generated data for my language map then is (note that only the last line should be there)
Data.s "Gadget_WinKast_String_Zek_MARKERING_1",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_2",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_3",""
Data.s "Gadget_WinKast_String_Zek_MARKERING_4", ""
Data.s "Gadget_WinKast_String_Zek_MARKERING_5", "Operators should not use this field"
My language MAP is therefore suddenly missing a lot of ... empty fields ???
IceDesign used NOT to do that before.
Is it possible to correct this so the empty fields are not replaced by GetInterfaceLang()
Thanks
Re: IceDesign GUI designer
Hi William,
I'm not sure I understand, the change you had with a previous version.
I haven't had any changes in this part for a while now !
For me, empty texts were always included, but I agree, they shouldn't be. There's little chance of an empty text being translated in another things.
Just 2 lines to change, I'm ready to update, not much, but not much in my Todo too.
Is this enough or is there something else I haven't seen?
I'm not sure I understand, the change you had with a previous version.
I haven't had any changes in this part for a while now !
For me, empty texts were always included, but I agree, they shouldn't be. There's little chance of an empty text being translated in another things.
Just 2 lines to change, I'm ready to update, not much, but not much in my Todo too.
Is this enough or is there something else I haven't seen?
Re: IceDesign GUI designer
IceDesign has been updated in version 2.0.7
Minor updates:
Minor updates:
- Useless empty texts are no longer included in the Multi-Language module.
- ObjectTheme version 1.5.2 updated, Dpi aware ComboBox drop-down list.
-
- User
- Posts: 65
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Many thanks Chris.
-
- User
- Posts: 65
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Hello Chris,
If I need more than 2 tabs on a PanelGadget, I am currently adding the 3th tab manually in the xxxx.icef file.
Not urgent, but In the future version, an option to select the number of tabs would be great.
Thanks
If I need more than 2 tabs on a PanelGadget, I am currently adding the 3th tab manually in the xxxx.icef file.
Not urgent, but In the future version, an option to select the number of tabs would be great.
Thanks
Re: IceDesign GUI designer
Hi, you can add, delete, move tabs from the context menu (right click) from the panel opened.
To let you know if I don't answer, I'm on a ski vacation for a week, without my computer.
To let you know if I don't answer, I'm on a ski vacation for a week, without my computer.
-
- User
- Posts: 65
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Yes... found it.
Sorry, didn't know that.
Sorry, didn't know that.
Re: IceDesign GUI designer
Thank you @ChrisR for your updates to IceDesign, which I'm enjoying a lot.
I'm wondering if there is a way to set the tab order of controls. I'm not meaning tabs on the PanelGadget, I'm meaning the tab order of gadgets like ButtonGadget and StringGadget etc on a window .
Thanks in advance for any help.
I'm wondering if there is a way to set the tab order of controls. I'm not meaning tabs on the PanelGadget, I'm meaning the tab order of gadgets like ButtonGadget and StringGadget etc on a window .
Thanks in advance for any help.
Re: IceDesign GUI designer
Hi Radsoft,
I'm glad you like it
The tab order is defined by the order in which Gadgets are created.
And IceDesign automatically uses the natural order, level, position Y then position X, which should be correct in 90% of cases.
But sorry, nothing is currently developed to change this order.
I'm glad you like it

The tab order is defined by the order in which Gadgets are created.
And IceDesign automatically uses the natural order, level, position Y then position X, which should be correct in 90% of cases.
But sorry, nothing is currently developed to change this order.
Re: IceDesign GUI designer
Hi Chris, i hope this is added in future version of IceDesign, is nice to have the full control of what i want, also regarding being able to choose the tab order..ChrisR wrote: Mon Apr 01, 2024 7:52 pm But sorry, nothing is currently developed to change this order.

-
- User
- Posts: 65
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Chris
Tab-order control would indeed be nice.
I do a lot of loops like For gad.i = #img_0 to #img_19. tab order has to be correct in this case.
I experienced that for some reason adding gadgets, even in correct sequens, does not always end up with correct tab-order.
Tab-order control would indeed be nice.
I do a lot of loops like For gad.i = #img_0 to #img_19. tab order has to be correct in this case.
I experienced that for some reason adding gadgets, even in correct sequens, does not always end up with correct tab-order.
Re: IceDesign GUI designer
Yes, yes, I understand the need for the Tab Order, I've made a note of it in my Todo.
I haven't really thought yet about how to do it, how to present it... I'll take a look but I'll let it mature, no rush, slowly, slowly
For now, it's pretty easy to do it with a macro and SetWindowPos() Api, ex:
I haven't really thought yet about how to do it, how to present it... I'll take a look but I'll let it mature, no rush, slowly, slowly

For now, it's pretty easy to do it with a macro and SetWindowPos() Api, ex:
Code: Select all
EnableExplicit
Enumeration Window
#Window_0
EndEnumeration
Enumeration Gadgets
#Txt_1
#String_1
#Btn_OK
#Txt_2
#String_2
#Txt_3
#String_3
EndEnumeration
Macro SetTabOrder(_Gadget_)
SetWindowPos_(GadgetID(_Gadget_), #HWND_BOTTOM, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE)
EndMacro
Procedure Open_Window_0(X = 0, Y = 0, Width = 300, Height = 140)
If OpenWindow(#Window_0, X, Y, Width, Height, "Tab order", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
TextGadget(#Txt_1, 20, 22, 60, 22, "Text_1")
StringGadget(#String_1, 80, 20, 120, 24, "String_1")
ButtonGadget(#Btn_OK, 220, 24, 60, 96, "OK")
TextGadget(#Txt_2, 20, 62, 60, 22, "Text_2")
StringGadget(#String_2, 80, 60, 120, 24, "String_2")
TextGadget(#Txt_3, 20, 102, 60, 22, "Text_3")
StringGadget(#String_3, 80, 100, 120, 24, "String_3")
; Comment/uncomment to use the Gadget creation order or the one defined below
SetTabOrder(#String_1) : SetTabOrder(#String_2) : SetTabOrder(#String_3) : SetTabOrder(#Btn_OK)
SetActiveGadget(#String_1)
ProcedureReturn #True
EndIf
EndProcedure
If Open_Window_0()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
- VB6_to_PBx
- Enthusiast
- Posts: 627
- Joined: Mon May 09, 2011 9:36 am
Re: IceDesign GUI designer
very nice example ChrisR,
thanks !
thanks !
PureBasic .... making tiny electrons do what you want !
"With every mistake we must surely be learning" - George Harrison