IceDesign GUI designer

Applications, Games, Tools, User libs and useful stuff coded in PureBasic
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 »

Hi Chris, i have a little problem, i created a windows of 860x450, but i want to resize to 540x450 the windows to hide editorgadget on the right, but Icedesign does not allow me, is there any option for free resize the window? I dont want to use resizewindow() from source because for a fraction of time the windows show at full size, i want to do this at design time, thank you.
Image
Last edited by le_magn on Sun Jun 09, 2024 1:02 pm, edited 1 time in total.
Image
dibor
Enthusiast
Enthusiast
Posts: 160
Joined: Wed May 20, 2020 5:19 pm
Location: The 3rd planet in the Solar System
Contact:

Re: IceDesign GUI designer

Post by dibor »

Hi.
Can not download program :(
Got "Page not found" from gumroad.com
Mac Studio M1Max, PB 6.12 Arm64 and x64.
Macbook Air M2, PB 6.12 Arm64 and x64.
Windows 10, PB 6.12 x64 and x86.
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

@le_magn
You can't, you can't reduce in IceDesign beyond the rightmost child gadget (your log editor here) and the bottommost gadget included.
The minimum size is checked to ensure that all gadgets remain visible and there's no option to reduce beyond that
You have to move or reduce the child gadgets to have the space to resize the window afterwards.

@dibor
There is no download link in the update emails.
To download, you have to use the “Download” button in the 1st e-mail you receive, the invoice. I can resend you this e-mail if you've lost it.
I have no other way with Gumroad.
User avatar
Caronte3D
Addict
Addict
Posts: 1355
Joined: Fri Jan 22, 2016 5:33 pm
Location: Some Universe

Re: IceDesign GUI designer

Post by Caronte3D »

le_magn wrote: Sun Jun 09, 2024 2:47 am ...I dont want to use resizewindow() from source because for a fraction of time the windows show at full size
Start the window hide, then resize and show it again
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 »

@Chris another little bug, if i use objecttheme icedesign put the command after compilerif in gui source, and if the gui is loaded as include by main source objecttheme not load, i have to put the command in main source manually

this is what icedesign do:

Code: Select all

CompilerIf #PB_Compiler_IsMainFile
;- Main Program
  SetObjectTheme(#ObjectTheme_DarkBlue)
And please if is possible add in future version the possibility to free resize the window at design time, thank you.
Last edited by le_magn on Sun Jun 09, 2024 11:26 pm, edited 2 times in total.
Image
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

Late reply, I was busy
le_magn wrote: Sun Jun 09, 2024 12:59 pm @Chris another little bug, if i use objecttheme icedesign put the command after compilerif in gui source, and if the gui is loaded as include by main source objecttheme not load, i have to put the command in main source manually
Yes, but if you include multiple forms, SetObjectTheme() would be called several times, which isn't really necessary.
It's probably better to add SetObjectTheme() in the main source, which allows you to do it only once and avoid reloading the theme several times.
le_magn wrote: Sun Jun 09, 2024 12:59 pm And please if is possible add in future version the possibility to free resize the window at design time, thank you.
I'm not going to do it, sorry but It would be difficult to do, because the controls are done just about everywhere to ensure that gadgets are fully included, visible.
When a window or container is resized, but also when a gadget is selected, resized or moved with keyboard, mouse or from properties, also when copying, importing....
Here, for example, if I remove the 1st control and reduce the window, the gadgets on the outside would automatically be moved to the left and upwards to ensure that they were fully visible.
You can probably do it as Caronte3D suggests, Start the window hide (#PB_Window_Invisible), then resize and show it again.

#
Otherwise, in response to Distorted Pixel for background image, the message GCL_HBRBACKGROUND does not make the window transparent.
To display a transparent background image, you can look at c4s code here: [Windows] Skin Window with PNG -> Alpha channel support!
dibor
Enthusiast
Enthusiast
Posts: 160
Joined: Wed May 20, 2020 5:19 pm
Location: The 3rd planet in the Solar System
Contact:

Re: IceDesign GUI designer

Post by dibor »

ChrisR wrote: Sun Jun 09, 2024 9:53 am @dibor
There is no download link in the update emails.
To download, you have to use the “Download” button in the 1st e-mail you receive, the invoice. I can resend you this e-mail if you've lost it.
I have no other way with Gumroad.
Hello.
Not exact.
In every update mails U can click on "IceDesign GUI Designer Info!" and will redirect to the gumroad page, then click on "IceDesign GUI Designer Info" or picture and will get download page where U can choose to download x64 or x86 version.

Did it today.
Mac Studio M1Max, PB 6.12 Arm64 and x64.
Macbook Air M2, PB 6.12 Arm64 and x64.
Windows 10, PB 6.12 x64 and x86.
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

I didn't know it could be made like that, thanks for letting me know :)
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.2.0

Add Undo / Redo functions
It had been written for a while in my Todo but I couldn't see how to do it easily, given the number of Undo actions to deal with.

Finally, to get around, the complete IceDesign list of Gadgets is saved in an Undo/Redo list for each modification.
During Undo/Redo operations, the previous or next lists are then reloaded with a complete redisplay (current selections are lost).
So it's not really immediate, with a bit of processing for reloading, but it does the job 8)

To prevent the Undo/Redo list from being too large, the maximum number of undo operations can be modified in the settings. I've set it to 99 by default but it could be higher.
User avatar
blueb
Addict
Addict
Posts: 1111
Joined: Sat Apr 26, 2003 2:15 pm
Location: Cuernavaca, Mexico

Re: IceDesign GUI designer

Post by blueb »

Thanks for this Chris.. I'm sure this will help a lot!

Quick question....

I've been using your settings flags:

- Proportional Size For All Gadgets
- ObjectTheme*


I found that everything works very well for resizing (Forms, Buttons, etc)
except the font sizes on the buttons, etc. which remain the same.

I have to anticipate the text size before I design the form, which is a little odd.

You would think that the button text size should double when I double the size of the form (the button height and width scales properly)

The button font looks too large when I reduce the form size.

I have a 4k monitor, so what looks good to me, looks painfully ugly on a regular monitor after the user has adjusted the form size to suit their monitor.

Is there any way to 'resize' the font in the Resize_Window procedure?
- It was too lonely at the top.

System : PB 6.21(x64) and Win 11 Pro (x64)
Hardware: AMD Ryzen 9 5900X w/64 gigs Ram, AMD RX 6950 XT Graphics w/16gigs Mem
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 »

Thank's for the update Chris!!!
64bit version ok
x86 antivirus don't allow to download it :)
Image
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

I don't know which AV you use but yes, the x86 version has more false positives than the x64 version.
Unfortunately, there's not much I can do to combat these f*cking antivirus that do their job so poorly :twisted:
That's why I've separated the 2 versions. The x86 version isn't really necessary, as most computers are 64-bit these days.
User avatar
ChrisR
Addict
Addict
Posts: 1466
Joined: Sun Jan 08, 2017 10:27 pm
Location: France

Re: IceDesign GUI designer

Post by ChrisR »

blueb wrote: Mon Jun 17, 2024 4:07 pm I found that everything works very well for resizing (Forms, Buttons, etc)
except the font sizes on the buttons, etc. which remain the same.
I don't know if it's suitable for everyone, but maybe there's something I could add.
I'm saving the idea for after the summer vacation which is closer for me.

If you use the same font for all Gadgets, you can probably do it with something like this

Code: Select all

EnableExplicit

Enumeration Window
  #Window_Main
EndEnumeration

Enumeration Gadgets
  #Button
  #String
  #Text
EndEnumeration
; ----- Begin Scale Font -----
#EnumerationGadgets = #PB_Compiler_EnumerationValue -1

Structure FontAttrib
  FontName.s
  FontSize.i
  FontStyle.i
EndStructure
; ----- End Scale Font -----

Enumeration Fonts
  #Font_Tahoma_10_B
EndEnumeration

;LoadFont(#Font_Tahoma_10_B, "Tahoma", 10, #PB_Font_Bold)

Declare Resize_Window_Main()
Declare Open_Window_Main(X = 0, Y = 0, Width = 260, Height = 120)
; ----- Begin Scale Font -----
Declare GetDefaultFont(*DefaultFont.FontAttrib)

Procedure GetDefaultFont(*DefaultFont.FontAttrib)
  Protected TempGadget, FontID
  Protected hDC, LogFont.LOGFONT
  
  TempGadget = TextGadget(#PB_Any, -10, -10, 0, 0, "Abc123")
  If TempGadget
    FontID = GetGadgetFont(TempGadget)
    
    GetObject_(FontID, SizeOf(LogFont), @LogFont)
    *DefaultFont\FontName =  PeekS(@LogFont\lfFaceName[0])
    
    hDC = GetDC_(GadgetID(TempGadget))
    *DefaultFont\FontSize = Int(Round((-LogFont \ lfHeight * 72 / GetDeviceCaps_(hDC, #LOGPIXELSY)), #PB_Round_Down))
    
    *DefaultFont\FontStyle = 0
    If LogFont\lfWeight > #FW_NORMAL         : *DefaultFont\FontStyle | #PB_Font_Bold        : EndIf ; Bold
    If LogFont\lfItalic                      : *DefaultFont\FontStyle | #PB_Font_Italic      : EndIf ; Italic
    If LogFont\lfStrikeOut                   : *DefaultFont\FontStyle | #PB_Font_StrikeOut   : EndIf ; StrikeOut
    If LogFont\lfUnderline                   : *DefaultFont\FontStyle | #PB_Font_Underline   : EndIf ; Underline
    If LogFont\lfQuality <> #DEFAULT_QUALITY : *DefaultFont\FontStyle | #PB_Font_HighQuality : EndIf ; High Quality
    
    FreeGadget(TempGadget)
  EndIf
EndProcedure
; ----- End Scale Font -----

Procedure Resize_Window_Main()
  Protected Window_Main_WidthIni = 260, Window_Main_HeightIni = 120
  Protected ScaleX.f, ScaleY.f 
  
  ; ----- Begin Scale Font -----
  Protected I
  Static IDWindow, DefaultFont.FontAttrib, LoadedFont, ScaleFont.f 
  If IDWindow = 0
    LoadedFont = #PB_Default
    ScaleFont.f = 1.0
    IDWindow = WindowID(#Window_Main)
    GetDefaultFont(@DefaultFont)
  EndIf
  ; ----- End Scale Font -----
  
  ScaleX = WindowWidth(#Window_Main) / Window_Main_WidthIni : ScaleY = WindowHeight(#Window_Main) / Window_Main_HeightIni
  
  ; ----- Begin Scale Font -----
  If ScaleFont <> ScaleY
    ScaleFont = ScaleY
    If IsFont(LoadedFont) : FreeFont(LoadedFont) : EndIf
    LoadedFont = LoadFont(#PB_Any, DefaultFont\FontName, DefaultFont\FontSize * ScaleFont, DefaultFont\FontStyle)
    For I = 0 To #EnumerationGadgets
      If IsGadget(I) And GetAncestor_(GadgetID(I), #GA_ROOT) = IDWindow
        SetGadgetFont(I, FontID(LoadedFont))
      EndIf
    Next
  EndIf
  ; ----- End Scale Font -----
  
  ResizeGadget(#String, ScaleX * 120, ScaleY * 20, ScaleX * 120, ScaleY * 24)
  ResizeGadget(#Text, ScaleX * 20, ScaleY * 22, ScaleX * 100, ScaleY * 22)
  ResizeGadget(#Button, ScaleX * 20, ScaleY * 60, ScaleX * 220, ScaleY * 40)
EndProcedure

Procedure Open_Window_Main(X = 0, Y = 0, Width = 260, Height = 120)
  If OpenWindow(#Window_Main, X, Y, Width, Height, "Title", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
    ;SetGadgetFont(#PB_Default, FontID(#Font_Tahoma_10_B))
    TextGadget(#Text, 20, 22, 100, 22, "Text")
    StringGadget(#String, 120, 20, 120, 24, "String")
    ButtonGadget(#Button, 20, 60, 220, 40, "Button")

    BindEvent(#PB_Event_SizeWindow, @Resize_Window_Main(), #Window_Main)
    PostEvent(#PB_Event_SizeWindow, #Window_Main, 0)
    ProcedureReturn #True
  EndIf
EndProcedure

If Open_Window_Main()
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
User avatar
blueb
Addict
Addict
Posts: 1111
Joined: Sat Apr 26, 2003 2:15 pm
Location: Cuernavaca, Mexico

Re: IceDesign GUI designer

Post by blueb »

Thanks for the comprehensive answer!

I think it should be automatically included in the resize procedure, that'd be the smoothest, but for now... I can make this work.


Blueb :D
- It was too lonely at the top.

System : PB 6.21(x64) and Win 11 Pro (x64)
Hardware: AMD Ryzen 9 5900X w/64 gigs Ram, AMD RX 6950 XT Graphics w/16gigs Mem
User avatar
Distorted Pixel
Enthusiast
Enthusiast
Posts: 303
Joined: Sun Aug 29, 2021 4:34 am

Re: IceDesign GUI designer

Post by Distorted Pixel »

ChrisR wrote: Mon Jun 17, 2024 10:25 pm I don't know which AV you use but yes, the x86 version has more false positives than the x64 version.
Unfortunately, there's not much I can do to combat these f*cking antivirus that do their job so poorly :twisted:
That's why I've separated the 2 versions. The x86 version isn't really necessary, as most computers are 64-bit these days.
Just to let you know, I have Panda Dome Anti-virus and security on my system and I have Windows 10 64 bit. I use the 64 bit version of IceDesign.

Panda Dome allows me to download it, but when I try to use the IceDesign exe to run IceDesign it puts it in quarantine. I have to add an exclude to allow it to run. I do understand that it isn't easy to combat.
To be popular is way to much work. I just want to be me, myself and I. Oh no, does that mean I'm bipolar? :shock:

No one cares how much you know until they know how much you care
Post Reply