Page 49 of 49

Re: IceDesign GUI designer

Posted: Tue Jan 28, 2025 9:47 pm
by williamvanhoecke
Chris,
It is fixed, thanks for the quick action. :D

Re: IceDesign GUI designer

Posted: Tue Jan 28, 2025 9:54 pm
by le_magn
Thank's Chris!!!

Re: IceDesign GUI designer

Posted: Thu Feb 27, 2025 6:15 pm
by ChrisR
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

Posted: Fri Feb 28, 2025 1:04 am
by ChrisR
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

Re: IceDesign GUI designer

Posted: Mon Mar 17, 2025 5:53 pm
by wro
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.

Re: IceDesign GUI designer

Posted: Tue Mar 18, 2025 12:01 am
by ChrisR
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

Re: IceDesign GUI designer

Posted: Sat Apr 19, 2025 5:38 pm
by tua
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.

Re: IceDesign GUI designer

Posted: Tue Sep 23, 2025 6:55 pm
by bembulak
Hi Chris,

finally bought IceDesign. Currently I'm digging into it, but I already love it. Thanks!

Re: IceDesign GUI designer

Posted: Thu Sep 25, 2025 5:09 pm
by ChrisR
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.

Re: IceDesign GUI designer

Posted: Fri Sep 26, 2025 10:48 am
by ChrisR
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

Posted: Tue Sep 30, 2025 10:25 pm
by le_magn
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

Posted: Thu Oct 02, 2025 1:12 am
by ChrisR
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 ?

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)
And after Procedure IsObjectTheme(Gadget), add:

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

Posted: Thu Oct 02, 2025 2:13 pm
by le_magn
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..

Code: Select all

SetGadgetColor(#Txt_1, #PB_Gadget_BackColor, #Blue) : InvalidateRect_(GadgetID(#Txt_1), #Null, #True)

Re: IceDesign GUI designer

Posted: Fri Oct 31, 2025 3:46 pm
by ebs
@Stenda - new user, only 2 posts, both shilling for a company, probably AI...

Can the moderator remove this???

Re: IceDesign GUI designer

Posted: Fri Oct 31, 2025 7:34 pm
by Kiffi
<OT>
ebs wrote: Fri Oct 31, 2025 3:46 pm @Stenda - new user, only 2 posts, both shilling for a company, probably AI...

Can the moderator remove this???
[X] Done

</OT>