Move project to new form designer

You need some new stunning features ? Tell us here.
Klonk
Enthusiast
Enthusiast
Posts: 173
Joined: Tue Jul 13, 2004 2:17 pm

Move project to new form designer

Post 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?
Bye Karl
Polo
Addict
Addict
Posts: 2422
Joined: Tue May 06, 2003 5:07 pm
Location: UK

Re: Move project to new form designer

Post 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 :)
Klonk
Enthusiast
Enthusiast
Posts: 173
Joined: Tue Jul 13, 2004 2:17 pm

Re: Move project to new form designer

Post 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*
Bye Karl
Polo
Addict
Addict
Posts: 2422
Joined: Tue May 06, 2003 5:07 pm
Location: UK

Re: Move project to new form designer

Post 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! ;)
luciano
Enthusiast
Enthusiast
Posts: 151
Joined: Wed Mar 09, 2011 8:25 pm

Re: Move project to new form designer

Post 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
luciano
Enthusiast
Enthusiast
Posts: 151
Joined: Wed Mar 09, 2011 8:25 pm

Re: Move project to new form designer

Post 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
Polo
Addict
Addict
Posts: 2422
Joined: Tue May 06, 2003 5:07 pm
Location: UK

Re: Move project to new form designer

Post 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 :)
luciano
Enthusiast
Enthusiast
Posts: 151
Joined: Wed Mar 09, 2011 8:25 pm

Re: Move project to new form designer

Post 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
Post Reply