Page 1 of 1

Move project to new form designer

Posted: Sun Dec 30, 2012 10:19 am
by Klonk
Hi,

I'm sure this question was and will be asked several times, so it might be a good idea to mark this topic important.

What to do with existing forms and windows (in my case created using PureForm) so they can be edited and changed in the new Form designer in PB 5.x?

Is there some Helper app available somewhere?

Re: Move project to new form designer

Posted: Sun Dec 30, 2012 12:01 pm
by Polo
No help file yet. You can try to copy/paste the gadget creation code in a new form file, it will load them if the syntax is more or less normal :)

Re: Move project to new form designer

Posted: Sun Dec 30, 2012 2:14 pm
by Klonk
Well ok, as I used PureForm to create the code and simply copiingy does not work, I guess I have to rebuild it. *sigh*

Re: Move project to new form designer

Posted: Mon Dec 31, 2012 12:52 am
by Polo
Klonk wrote:Well ok, as I used PureForm to create the code and simply copiingy does not work, I guess I have to rebuild it. *sigh*
If pureform generates code like:

gadget = ButtonGadget(...)

or

ButtonGadget(gadget, ...)

You should be able to copy it! ;)

Re: Move project to new form designer

Posted: Mon Dec 31, 2012 10:40 am
by luciano
I did some tests copying and pasting from PureForm generated code to new pb and pbf files, to re-use it you have to do some manual adjusting (pictures, som gadget colors, etc) but the main structure is there.

here is the code directly pasted as a pb file, it should compile ok:

Code: Select all

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Image_numeri
  #TrackBar_128
  #TrackBar_64
  #TrackBar_32
  #TrackBar_16
  #TrackBar_8
  #TrackBar_4
  #TrackBar_2
  #TrackBar_1
  #Frame3D_Numeri
  #String_DEC
  #String_HEX
  #String_BIN
  #Text_DEC
  #Text_Hex
  #Text_BIN
  #Text_Dec_in
  #String_DEC_IN
  #Text_HEX_Out
  #String_Hex_Out
  #String_Dec_Out
  #Text_Dec_Out
  #String_Hex_in
  #Text_23
  #Image_equal1
  #Image_equal2
EndEnumeration
;}
;{ Images
Enumeration
  #Image_Image_0
  #Image_Image_24
  #Image_Image_25
EndEnumeration
;}
;{ Included Images

DataSection
  Image_Image_0:
  IncludeBinary "numeri2.png"
  Image_Image_24:
  IncludeBinary "equal.png"
EndDataSection
;}
;{ Image Plugins
UsePNGImageDecoder()
;}
;}
Procedure OpenWindow_Window()
  If OpenWindow(#Window, 426, -8, 610, 236, "Hex-Ruler", #PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ImageGadget(#Image_numeri, 10, 20, 452, 59, CatchImage(#Image_Image_0, ?Image_Image_0))
    TrackBarGadget(#TrackBar_128, 20, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_64, 75, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_32, 131, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_16, 188, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_8, 246, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_4, 302, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_2, 358, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    TrackBarGadget(#TrackBar_1, 415, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks|#PB_TrackBar_Vertical)
    Frame3DGadget(#Frame3D_Numeri, 5, 5, 595, 135, "Selettore")
    StringGadget(#String_DEC, 485, 30, 100, 20, "0", #PB_String_Numeric|#PB_String_ReadOnly|#ES_RIGHT)
    StringGadget(#String_HEX, 485, 75, 100, 20, "0", #PB_String_ReadOnly|#PB_String_UpperCase|#ES_RIGHT)
    StringGadget(#String_BIN, 485, 115, 100, 20, "0", #PB_String_Numeric|#PB_String_ReadOnly|#ES_RIGHT)
    TextGadget(#Text_DEC, 500, 15, 85, 15, "Dec", #PB_Text_Right)
    TextGadget(#Text_Hex, 500, 60, 85, 15, "Hex", #PB_Text_Right)
    TextGadget(#Text_BIN, 500, 100, 85, 15, "Bin", #PB_Text_Right)
    TextGadget(#Text_Dec_in, 25, 160, 85, 20, "DEC INPUT", #PB_Text_Right)
    StringGadget(#String_DEC_IN, 10, 185, 100, 25, "", #PB_String_Numeric|#ES_RIGHT)
    TextGadget(#Text_HEX_Out, 157, 160, 95, 20, "HEX OUTPUT", #PB_Text_Right)
    StringGadget(#String_Hex_Out, 152, 185, 100, 25, "", #PB_String_ReadOnly|#PB_String_UpperCase|#ES_RIGHT)
    StringGadget(#String_Dec_Out, 485, 185, 100, 25, "", #PB_String_Numeric|#PB_String_ReadOnly|#PB_String_UpperCase|#ES_RIGHT)
    TextGadget(#Text_Dec_Out, 490, 160, 95, 20, "DEC OUTPUT", #PB_Text_Right)
    StringGadget(#String_Hex_in, 345, 185, 100, 25, "", #ES_RIGHT)
    TextGadget(#Text_23, 360, 160, 85, 20, "HEX INPUT", #PB_Text_Right)
    ImageGadget(#Image_equal1, 110, 190, 38, 16, CatchImage(#Image_Image_24, ?Image_Image_24))
    ImageGadget(#Image_equal2, 448, 190, 38, 16, CatchImage(#Image_Image_25, ?Image_Image_24))
  EndIf
EndProcedure

OpenWindow_Window()

;{- Event loop
Repeat
  Select WaitWindowEvent(10)
    ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #TrackBar_128
        Case #TrackBar_64
        Case #TrackBar_32
        Case #TrackBar_16
        Case #TrackBar_8
        Case #TrackBar_4
        Case #TrackBar_2
        Case #TrackBar_1
        Case #String_DEC_IN
        Case #String_Hex_in
      EndSelect
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window
          CloseWindow(#Window)
          Break
      EndSelect
  EndSelect
ForEver
;
;}

and here is as seen in FD (I find that window size and included images are lost)

Code: Select all

Global Window_0

Enumeration #PB_Compiler_EnumerationValue
  #Image_numeri
  #TrackBar_128
  #TrackBar_64
  #TrackBar_32
  #TrackBar_16
  #TrackBar_8
  #TrackBar_4
  #TrackBar_2
  #TrackBar_1
  #Frame3D_Numeri
  #String_DEC
  #String_HEX
  #String_BIN
  #Text_DEC
  #Text_Hex
  #Text_BIN
  #Text_Dec_in
  #String_DEC_IN
  #Text_HEX_Out
  #String_Hex_Out
  #String_Dec_Out
  #Text_Dec_Out
  #String_Hex_in
  #Text_23
  #Image_equal1
  #Image_equal2
EndEnumeration

Procedure InitWindow_0()
  Window_0 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu)
  ImageGadget(#Image_numeri, 10, 20, 452, 59, ImageID())
  TrackBarGadget(#TrackBar_128, 20, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_64, 75, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_32, 131, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_16, 188, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_8, 246, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_4, 302, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_2, 358, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_1, 415, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  Frame3DGadget(#Frame3D_Numeri, 5, 5, 595, 135, "Selettore")
  StringGadget(#String_DEC, 485, 30, 100, 20, "0", #PB_String_Numeric | #PB_String_ReadOnly)
  StringGadget(#String_HEX, 485, 75, 100, 20, "0", #PB_String_ReadOnly | #PB_String_UpperCase)
  StringGadget(#String_BIN, 485, 115, 100, 20, "0", #PB_String_Numeric | #PB_String_ReadOnly)
  TextGadget(#Text_DEC, 500, 15, 85, 15, "Dec", #PB_Text_Right)
  TextGadget(#Text_Hex, 500, 60, 85, 15, "Hex", #PB_Text_Right)
  TextGadget(#Text_BIN, 500, 100, 85, 15, "Bin", #PB_Text_Right)
  TextGadget(#Text_Dec_in, 25, 160, 85, 20, "DEC INPUT", #PB_Text_Right)
  StringGadget(#String_DEC_IN, 10, 185, 100, 25, "", #PB_String_Numeric)
  TextGadget(#Text_HEX_Out, 157, 160, 95, 20, "HEX OUTPUT", #PB_Text_Right)
  StringGadget(#String_Hex_Out, 152, 185, 100, 25, "", #PB_String_ReadOnly | #PB_String_UpperCase)
  StringGadget(#String_Dec_Out, 485, 185, 100, 25, "", #PB_String_Numeric | #PB_String_ReadOnly | #PB_String_UpperCase)
  TextGadget(#Text_Dec_Out, 490, 160, 95, 20, "DEC OUTPUT", #PB_Text_Right)
  StringGadget(#String_Hex_in, 345, 185, 100, 25, "")
  TextGadget(#Text_23, 360, 160, 85, 20, "HEX INPUT", #PB_Text_Right)
  ImageGadget(#Image_equal1, 110, 190, 38, 16, ImageID())
  ImageGadget(#Image_equal2, 448, 190, 38, 16, ImageID())
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
And here are the images used:

Image
Image

Re: Move project to new form designer

Posted: Mon Dec 31, 2012 11:11 am
by luciano
Here is the final form after window properties and images have been adjusted in Form Designer; it should compile correctly:

Code: Select all

Global Window_0

Global Img_0, Img_1

Enumeration #PB_Compiler_EnumerationValue
  #Image_numeri
  #TrackBar_128
  #TrackBar_64
  #TrackBar_32
  #TrackBar_16
  #TrackBar_8
  #TrackBar_4
  #TrackBar_2
  #TrackBar_1
  #Frame3D_Numeri
  #String_DEC
  #String_HEX
  #String_BIN
  #Text_DEC
  #Text_Hex
  #Text_BIN
  #Text_Dec_in
  #String_DEC_IN
  #Text_HEX_Out
  #String_Hex_Out
  #String_Dec_Out
  #Text_Dec_Out
  #String_Hex_in
  #Text_23
  #Image_equal1
  #Image_equal2
EndEnumeration

UsePNGImageDecoder()

Img_0 = CatchImage(#PB_Any,?img_0)
Img_1 = CatchImage(#PB_Any,?img_1)

Procedure InitWindow_0()
  Window_0 = OpenWindow(#PB_Any, 0, 0, 590, 230, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  ImageGadget(#Image_numeri, 10, 20, 452, 59, ImageID(Img_0))
  TrackBarGadget(#TrackBar_128, 20, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_64, 75, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_32, 131, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_16, 188, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_8, 246, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_4, 302, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_2, 358, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  TrackBarGadget(#TrackBar_1, 415, 80, 50, 55, 0, 1, #PB_TrackBar_Ticks | #PB_TrackBar_Vertical)
  Frame3DGadget(#Frame3D_Numeri, 5, 5, 595, 135, "Selettore")
  StringGadget(#String_DEC, 485, 30, 100, 20, "0", #PB_String_Numeric | #PB_String_ReadOnly)
  StringGadget(#String_HEX, 485, 75, 100, 20, "0", #PB_String_ReadOnly | #PB_String_UpperCase)
  StringGadget(#String_BIN, 485, 115, 100, 20, "0", #PB_String_Numeric | #PB_String_ReadOnly)
  TextGadget(#Text_DEC, 500, 15, 85, 15, "Dec", #PB_Text_Right)
  TextGadget(#Text_Hex, 500, 60, 85, 15, "Hex", #PB_Text_Right)
  TextGadget(#Text_BIN, 500, 100, 85, 15, "Bin", #PB_Text_Right)
  TextGadget(#Text_Dec_in, 25, 160, 85, 20, "DEC INPUT", #PB_Text_Right)
  StringGadget(#String_DEC_IN, 10, 185, 100, 25, "", #PB_String_Numeric)
  TextGadget(#Text_HEX_Out, 157, 160, 95, 20, "HEX OUTPUT", #PB_Text_Right)
  StringGadget(#String_Hex_Out, 152, 185, 100, 25, "", #PB_String_ReadOnly | #PB_String_UpperCase)
  StringGadget(#String_Dec_Out, 485, 185, 100, 25, "", #PB_String_Numeric | #PB_String_ReadOnly | #PB_String_UpperCase)
  TextGadget(#Text_Dec_Out, 490, 160, 95, 20, "DEC OUTPUT", #PB_Text_Right)
  StringGadget(#String_Hex_in, 345, 185, 100, 25, "")
  TextGadget(#Text_23, 360, 160, 85, 20, "HEX INPUT", #PB_Text_Right)
  ImageGadget(#Image_equal1, 110, 190, 38, 16, ImageID(Img_1))
  ImageGadget(#Image_equal2, 448, 190, 38, 16, ImageID(Img_1))
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure



DataSection
  img_0: IncludeBinary "numeri2.png"
  img_1: IncludeBinary "equal.png"
EndDataSection

Re: Move project to new form designer

Posted: Mon Dec 31, 2012 11:58 am
by Polo
Thanks for testing Luciano, it seems it doesn't require too much work? As you said it's mainly if you're using pictures that you will have some manual changes to do, and also if the code isn't clean enough, though it seems PureForm generates some very good code so it shouldn't be a problem :)

Re: Move project to new form designer

Posted: Tue Jan 01, 2013 7:13 pm
by luciano
I did a more complete test with more gadgets, the complete code pasted from PureForm is:

Code: Select all

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Button_0
  #Calendar_2
  #CheckBox_3
  #ComboBox_4
  #Date_5
  #Editor_6
  #ExplorerCombo_7
  #ExplorerList_9
  #ExplorerTree_10
  #Frame3D_11
  #Option_12
  #ProgressBar_13
  #Spin_14
  #String_15
  #Text_16
EndEnumeration
;}
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 412, -18, 713, 669, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ButtonGadget(#Button_0, 10, 15, 145, 40, "BUTTON_ Caption")
    CalendarGadget(#Calendar_2, 160, 15, 175, 165)
    CheckBoxGadget(#CheckBox_3, 355, 20, 110, 30, "CKBOX_Caption")
    ComboBoxGadget(#ComboBox_4, 355, 60, 190, 20, #PB_ComboBox_Editable|#PB_ComboBox_Image|#PB_ComboBox_LowerCase)
    DateGadget(#Date_5, 160, 195, 175, 25, "%dd/%mm/%yyyy", Date(), #PB_Date_CheckBox|#PB_Date_UpDown)
    EditorGadget(#Editor_6, 10, 65, 140, 185, #PB_Editor_ReadOnly)
    SetGadgetText(#Editor_6, "EDITOR_Text")
    ExplorerComboGadget(#ExplorerCombo_7, 355, 95, 190, 20, "c:\")
    ExplorerListGadget(#ExplorerList_9, 355, 125, 190, 130, "c:\")
    ExplorerTreeGadget(#ExplorerTree_10, 355, 260, 190, 215, "c:\")
    Frame3DGadget(#Frame3D_11, 555, 25, 145, 60, "FRAME_Text")
    OptionGadget(#Option_12, 160, 225, 140, 25, "OPTION_Text")
    ProgressBarGadget(#ProgressBar_13, 10, 255, 330, 20, 10, 123, #PB_ProgressBar_Smooth)
    SpinGadget(#Spin_14, 10, 280, 150, 40, 0, 100, #PB_Spin_Numeric|#PB_Spin_ReadOnly)
    StringGadget(#String_15, 165, 280, 175, 40, "STRING_Text_Right", #ES_RIGHT)
    TextGadget(#Text_16, 10, 330, 330, 25, "TEXT_Text_Center", #PB_Text_Center)
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent(10)
    ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Button_0
        Case #Calendar_2
        Case #CheckBox_3
        Case #ComboBox_4
        Case #Date_5
        Case #Editor_6
        Case #ExplorerCombo_7
        Case #ExplorerList_9
        Case #ExplorerTree_10
        Case #Frame3D_11
        Case #Option_12
        Case #ProgressBar_13
        Case #Spin_14
        Case #String_15
        Case #Text_16
      EndSelect
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver
;
;}

Image

Here is as parsed in Form Designer:

Code: Select all

Global Window_1

Enumeration #PB_Compiler_EnumerationValue
  #Button_0
  #Calendar_2
  #CheckBox_3
  #ComboBox_4
  #Date_5
  #Editor_6
  #ExplorerCombo_7
  #ExplorerList_9
  #ExplorerTree_10
  #Frame3D_11
  #Option_12
  #ProgressBar_13
  #Spin_14
  #String_15
  #Text_16
EndEnumeration

Procedure InitWindow_1()
  Window_1 = OpenWindow(#PB_Any, 0, 0, 600, 400, "", #PB_Window_SystemMenu)
  ButtonGadget(#Button_0, 10, 15, 145, 40, "BUTTON_ Caption")
  CalendarGadget(#Calendar_2, 160, 15, 175, 165)
  CheckBoxGadget(#CheckBox_3, 355, 20, 110, 30, "CKBOX_Caption")
  ComboBoxGadget(#ComboBox_4, 355, 60, 190, 20, #PB_ComboBox_Editable | #PB_ComboBox_LowerCase | #PB_ComboBox_Image)
  DateGadget(#Date_5, 160, 195, 175, 25, "%dd/%mm/%yyyy")
  EditorGadget(#Editor_6, 10, 65, 140, 185, #PB_Editor_ReadOnly)
  ExplorerComboGadget(#ExplorerCombo_7, 355, 95, 190, 20, "c:\")
  ExplorerListGadget(#ExplorerList_9, 355, 125, 190, 130, "c:\")
  ExplorerTreeGadget(#ExplorerTree_10, 355, 260, 190, 215, "c:\")
  Frame3DGadget(#Frame3D_11, 555, 25, 145, 60, "FRAME_Text")
  OptionGadget(#Option_12, 160, 225, 140, 25, "OPTION_Text")
  ProgressBarGadget(#ProgressBar_13, 10, 255, 330, 20, 10, 123, #PB_ProgressBar_Smooth)
  SpinGadget(#Spin_14, 10, 280, 150, 40, 0, 100, #PB_Spin_ReadOnly | #PB_Spin_Numeric)
  StringGadget(#String_15, 165, 280, 175, 40, "STRING_Text_Right")
  TextGadget(#Text_16, 10, 330, 330, 25, "TEXT_Text_Center", #PB_Text_Center)
EndProcedure

Procedure Window_1_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
The differences are:
1-Windows setting not imported (as before);
2-String gadget text not right aligned; but no surprise since PureForm used a constant which is not among the flags reported in the help file;
3-The mask text in date gadget has a black background, only cosmetic since mask is imported correctly
4-Date gadget flags (#PB_Date_UpDown and #PB_Date_Checkbox) have not be imported and they look missing from FD

Image