Page 42 of 49

Re: IceDesign GUI designer

Posted: Sun Jun 09, 2024 2:47 am
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

Re: IceDesign GUI designer

Posted: Sun Jun 09, 2024 5:16 am
by dibor
Hi.
Can not download program :(
Got "Page not found" from gumroad.com

Re: IceDesign GUI designer

Posted: Sun Jun 09, 2024 9:53 am
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.

Re: IceDesign GUI designer

Posted: Sun Jun 09, 2024 11:56 am
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

Re: IceDesign GUI designer

Posted: Sun Jun 09, 2024 12:59 pm
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.

Re: IceDesign GUI designer

Posted: Tue Jun 11, 2024 11:14 am
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!

Re: IceDesign GUI designer

Posted: Tue Jun 11, 2024 8:18 pm
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.

Re: IceDesign GUI designer

Posted: Tue Jun 11, 2024 9:19 pm
by ChrisR
I didn't know it could be made like that, thanks for letting me know :)

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 2:38 pm
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.

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 4:07 pm
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?

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 8:30 pm
by le_magn
Thank's for the update Chris!!!
64bit version ok
x86 antivirus don't allow to download it :)

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 10:25 pm
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.

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 10:43 pm
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

Re: IceDesign GUI designer

Posted: Mon Jun 17, 2024 10:56 pm
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

Re: IceDesign GUI designer

Posted: Tue Jun 18, 2024 2:00 pm
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.