IceDesign GUI designer

Applications, Games, Tools, User libs and useful stuff coded in PureBasic
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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()...
williamvanhoecke
User
User
Posts: 65
Joined: Wed Jun 07, 2017 10:13 pm

Re: IceDesign GUI designer

Post by williamvanhoecke »

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
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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?
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

IceDesign has been updated in version 2.0.7

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.
williamvanhoecke
User
User
Posts: 65
Joined: Wed Jun 07, 2017 10:13 pm

Re: IceDesign GUI designer

Post by williamvanhoecke »

Many thanks Chris.
williamvanhoecke
User
User
Posts: 65
Joined: Wed Jun 07, 2017 10:13 pm

Re: IceDesign GUI designer

Post by williamvanhoecke »

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
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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.
williamvanhoecke
User
User
Posts: 65
Joined: Wed Jun 07, 2017 10:13 pm

Re: IceDesign GUI designer

Post by williamvanhoecke »

Yes... found it.
Sorry, didn't know that.
radsoft
User
User
Posts: 26
Joined: Mon Sep 11, 2017 2:03 am
Location: New Zealand

Re: IceDesign GUI designer

Post by radsoft »

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.
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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.
User avatar
le_magn
Enthusiast
Enthusiast
Posts: 277
Joined: Wed Aug 24, 2005 12:11 pm
Location: Italia

Re: IceDesign GUI designer

Post by le_magn »

ChrisR wrote: Mon Apr 01, 2024 7:52 pm But sorry, nothing is currently developed to change this order.
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..
Image
williamvanhoecke
User
User
Posts: 65
Joined: Wed Jun 07, 2017 10:13 pm

Re: IceDesign GUI designer

Post by williamvanhoecke »

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.
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

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 :wink:

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
User avatar
VB6_to_PBx
Enthusiast
Enthusiast
Posts: 627
Joined: Mon May 09, 2011 9:36 am

Re: IceDesign GUI designer

Post by VB6_to_PBx »

very nice example ChrisR,
thanks !
 
PureBasic .... making tiny electrons do what you want !

"With every mistake we must surely be learning" - George Harrison
Post Reply