It is fixed, thanks for the quick action.
IceDesign GUI designer
-
williamvanhoecke
- User

- Posts: 66
- Joined: Wed Jun 07, 2017 10:13 pm
Re: IceDesign GUI designer
Chris,
It is fixed, thanks for the quick action.
It is fixed, thanks for the quick action.
Re: IceDesign GUI designer
IceDesign has been updated in version 2.3.6
- Rename elements for ComboBox and ListView, if control name is changed, so that new name is displayed in Design
- ObjectTheme correct protoype for DwmSetWindowAttribute (Windows 11), used for constants DWMWA_USE_IMMERSIVE_DARK_MODE, DWMWA_BORDER_COLOR, DWMWA_CAPTION_COLOR and #DWMWA_TEXT_COLOR
- And a few optimizations in the internal code
Re: IceDesign GUI designer
A small update to fix a bug that was reported, thanks 
Containers must not be disabled In IceDesign, otherwise I don't receive any events for the canvas inside (the drawing area)
The "Disabled" property is hidden for containers, it's good here but it was possible to disable them if done on another Gadget in a multiple selection.
It's fixed and updated
Containers must not be disabled In IceDesign, otherwise I don't receive any events for the canvas inside (the drawing area)
The "Disabled" property is hidden for containers, it's good here but it was possible to disable them if done on another Gadget in a multiple selection.
It's fixed and updated
Re: IceDesign GUI designer
Hello Chris,
regarding the "pure PureBasic" modification:
Three programs with over 7000 lines started at Linux Mint Cinnamon, went to Linux Mint Debian, then over to Windows 10 and finally ended up at a Raspberry Pi 4B 64Bit Version. Every step just required the specific project settings and everything was done.
The project includes precise vector graphics resulting in DIN A4 pdf reports "Proof of working hours" including calculation of holidays for each federal state in Germany plus the required math, signature. The entire year as a csv file. Also including the required tools to generate secure signatures and transferring existing forms into vector coordinates. Everything works fine under all used systems and did not require a single line modification due to the operating system.
So it is a really portable design. OK- the forbidden fruit is missing, because I am still living in paradise and do not use them.
May be of interest to the community and a proof of PureBasic and IceDesign and the "Stay pure" switch.
Thank you again for your magnificent work.
regarding the "pure PureBasic" modification:
Three programs with over 7000 lines started at Linux Mint Cinnamon, went to Linux Mint Debian, then over to Windows 10 and finally ended up at a Raspberry Pi 4B 64Bit Version. Every step just required the specific project settings and everything was done.
The project includes precise vector graphics resulting in DIN A4 pdf reports "Proof of working hours" including calculation of holidays for each federal state in Germany plus the required math, signature. The entire year as a csv file. Also including the required tools to generate secure signatures and transferring existing forms into vector coordinates. Everything works fine under all used systems and did not require a single line modification due to the operating system.
So it is a really portable design. OK- the forbidden fruit is missing, because I am still living in paradise and do not use them.
May be of interest to the community and a proof of PureBasic and IceDesign and the "Stay pure" switch.
Thank you again for your magnificent work.
Re: IceDesign GUI designer
Thanks
Glad to see that you were able to build your project on different platforms and without too many modifications.
But here, it's mainly PureBasic that deserves special thanks for its compatibility between the different platforms.
Good continuation in your development
Glad to see that you were able to build your project on different platforms and without too many modifications.
But here, it's mainly PureBasic that deserves special thanks for its compatibility between the different platforms.
Good continuation in your development
Re: IceDesign GUI designer
Hi Chris,
there is a glitch with Window titles. I made my own date requester and its window is 200 pixels wide. The window title is 'Select a date'. The window title does NOT display in design mode, but it does show as expected when I run the window in the designer. There is ample space in the caption bar to show the title.
When I increase the window width to 204, the title appears.
there is a glitch with Window titles. I made my own date requester and its window is 200 pixels wide. The window title is 'Select a date'. The window title does NOT display in design mode, but it does show as expected when I run the window in the designer. There is ample space in the caption bar to show the title.
When I increase the window width to 204, the title appears.
Re: IceDesign GUI designer
Hi Chris,
finally bought IceDesign. Currently I'm digging into it, but I already love it. Thanks!
finally bought IceDesign. Currently I'm digging into it, but I already love it. Thanks!
cheers,
bembulak
bembulak
Re: IceDesign GUI designer
Thank you, enjoy using it!
@tua
I had read your message, but with my move, I hadn't looked at it yet.
It's in progress now, even though I still have some painting to do, shelves to build, and quite a few boxes to unpack...
It's good for the text length now, truncate to the right size with "..." if it is too long.
I am on the title bar color, if the accent color (in Windows settings) is enabled for the title bar.
It should be done soon.
@tua
I had read your message, but with my move, I hadn't looked at it yet.
It's in progress now, even though I still have some painting to do, shelves to build, and quite a few boxes to unpack...
It's good for the text length now, truncate to the right size with "..." if it is too long.
I am on the title bar color, if the accent color (in Windows settings) is enabled for the title bar.
It should be done soon.
Re: IceDesign GUI designer
IceDesign has been updated in version 2.3.7
- Redraw the Designer window title bar to be as close as possible to the real window, the preview
. Reduce the title length with "..." if it is too long to fit in the available space
. Change the background and text color of the title bar using the accent color, if the option is enabled in Windows settings
Re: IceDesign GUI designer
Hi Chris, I don't remember if I've asked you this before, but if I use objecttheme and want to change the background color of a textgadget while the program is running, how can I do this without having to run SetObjectTheme combined with setgadgetcolor, because doing so redraws the entire window and creates a really ugly effect. If this isn't possible, could you add an option for individual gadgets to be excluded from objectTheme management? Thanks.

Re: IceDesign GUI designer
I would need time and additional testing ! I won't be available for the next two weeks.
Is the entire window redrawn if you use ?
Otherwise, I tried to exclude individual gadgets from objectTheme. You can try with:
After Declare IsObjectTheme(Gadget), add:
And after Procedure IsObjectTheme(Gadget), add:
Is the entire window redrawn if you use ?
Code: Select all
SetGadgetColor(#Txt_1, #PB_Gadget_BackColor, #Blue) : InvalidateRect_(GadgetID(#Txt_1), #Null, #True)Otherwise, I tried to exclude individual gadgets from objectTheme. You can try with:
After Declare IsObjectTheme(Gadget), add:
Code: Select all
Declare DelGadgetObjectTheme(Gadget)Code: Select all
Procedure DelGadgetObjectTheme(Gadget)
Protected ReturnValue
If Not IsGadget(Gadget) : ProcedureReturn ReturnValue : EndIf
With ObjectTheme()
If FindMapElement(ObjectTheme(), Str(GadgetID(Gadget)))
Select \PBGadgetType
Case #PB_GadgetType_CheckBox, #PB_GadgetType_Frame, #PB_GadgetType_Option, #PB_GadgetType_Text, #PB_GadgetType_TrackBar, #PB_GadgetType_ScrollBar
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Editor, #PB_GadgetType_Spin, #PB_GadgetType_String, #PB_GadgetType_HyperLink
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_BackColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_FrontColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Container, #PB_GadgetType_ProgressBar, #PB_GadgetType_ScrollArea
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_BackColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Tree
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_FrontColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Calendar, #PB_GadgetType_Date
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_BackColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_FrontColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_TitleBackColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_ExplorerList, #PB_GadgetType_ExplorerTree, #PB_GadgetType_ListIcon
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_BackColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_FrontColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_LineColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Panel
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
SetWindowLongPtr_(\IDGadget, #GWL_STYLE, GetWindowLongPtr_(\IDGadget, #GWL_STYLE) &~ #TCS_OWNERDRAWFIXED)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_ComboBox
If Not (GetWindowLongPtr_(\IDGadget, #GWL_STYLE) & #CBS_OWNERDRAWFIXED = #CBS_OWNERDRAWFIXED)
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, "", "")
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
EndIf
Case #PB_GadgetType_ListView
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
SetWindowLongPtr_(\IDGadget, #GWL_STYLE, GetWindowLongPtr_(\IDGadget, #GWL_STYLE) &~ #WS_BORDER)
SetWindowLongPtr_(\IDGadget, #GWL_EXSTYLE, GetWindowLongPtr_(\IDGadget, #GWL_EXSTYLE) | #WS_EX_CLIENTEDGE)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_BackColor, #PB_Default)
_PB(SetGadgetColor)(\PBGadget, #PB_Gadget_FrontColor, #PB_Default)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Splitter
If \OldProc : SetWindowLongPtr_(\IDGadget, #GWLP_WNDPROC, \OldProc) : EndIf
SetWindowTheme_(\IDGadget, 0, 0)
If \ObjectInfo\hObjSplitterGripper : DeleteObject_(\ObjectInfo\hObjSplitterGripper) : EndIf
SetClassLongPtr_(\IDGadget, #GCL_STYLE, GetClassLongPtr_(\IDGadget, #GCL_STYLE) &~ #CS_DBLCLKS)
SetWindowLongPtr_(\IDGadget, #GWL_STYLE, GetWindowLongPtr_(\IDGadget, #GWL_STYLE) &~ #WS_CLIPCHILDREN)
FreeMemory(\ObjectInfo)
DeleteMapElement(ObjectTheme())
ReturnValue = #True
Case #PB_GadgetType_Button, #PB_GadgetType_ButtonImage
FreeButtonTheme(\IDGadget)
ReturnValue = #True
EndSelect
EndIf
EndWith
ProcedureReturn ReturnValue
EndProcedure Re: IceDesign GUI designer
Thanks for your reply, Chris. I'll try your suggestions as soon as I get back (I'm away for a few days).
Update: I tested this and work ok, thank you very much..
Update: I tested this and work ok, thank you very much..
Code: Select all
SetGadgetColor(#Txt_1, #PB_Gadget_BackColor, #Blue) : InvalidateRect_(GadgetID(#Txt_1), #Null, #True)

