EDIT: Added result output for button gadgets, made the 'Paste From Clipboard' button also do the calculation, and added a 'Make Window Sticky' checkbox to optionally make the app's window stay on top of other windows.
Code: Select all
; Windows.
#MAIN_WINDOW = 0
; Gadgets.
Enumeration
#INPUT_TEXT_LABEL
#INPUT_TEXT_TEXTBOX
#PASTE_INPUT_AND_CALCULATE_BUTTON
#CALCULATE_BUTTON
#TEXTGADGET_WIDTH_OUTPUT_LABEL
#TEXTGADGET_WIDTH_OUTPUT_TEXTBOX
#TEXTGADGET_COPY_OUTPUT_BUTTON
#CHECKBOX_WIDTH_OUTPUT_LABEL
#CHECKBOX_WIDTH_OUTPUT_TEXTBOX
#CHECKBOX_COPY_OUTPUT_BUTTON
#BUTTON_WIDTH_OUTPUT_LABEL
#BUTTON_WIDTH_OUTPUT_TEXTBOX
#BUTTON_COPY_OUTPUT_BUTTON
#MAKE_WINDOW_STICKY_CHECKBOX
#INSTRUCTIONS_LABEL
#INSTRUCTIONS_EDITBOX
#TEST_TEXTGADGET
#TEST_BUTTON
#TEST_CHECKBOX
EndEnumeration
Procedure CreateMainWindow()
flags = #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_SystemMenu
If OpenWindow( #MAIN_WINDOW, 0, 0, 320, 486, "Calculate PB UI Text Width", flags ) = 0 : MessageRequester( "Fatal Error", "Unable to create main window." ) : End : EndIf
x = 10 : y = 10
TextGadget( #INPUT_TEXT_LABEL, x, y, 300, 18, "Enter Input Text Here" ) : y + 18
StringGadget( #INPUT_TEXT_TEXTBOX, x, y, 300, 25, "" ) : y + 25
ButtonGadget( #PASTE_INPUT_AND_CALCULATE_BUTTON, x, y, 203, 25, "Paste From Clipboard and Calculate" )
ButtonGadget( #CALCULATE_BUTTON, x + 203, y, 97, 25, "Calculate" )
y + 35
TextGadget( #TEXTGADGET_WIDTH_OUTPUT_LABEL, x, y, 110, 25, "TextGadget Width:" ) : x + 110
StringGadget( #TEXTGADGET_WIDTH_OUTPUT_TEXTBOX, x, y, 70, 25, "", #PB_String_ReadOnly ) : x + 70
ButtonGadget( #TEXTGADGET_COPY_OUTPUT_BUTTON, x, y, 120, 25, "Copy To Clipboard" )
x = 10 : y + 35
TextGadget( #BUTTON_WIDTH_OUTPUT_LABEL, x, y, 110, 25, "Button Width:" ) : x + 110
StringGadget( #BUTTON_WIDTH_OUTPUT_TEXTBOX, x, y, 70, 25, "", #PB_String_ReadOnly ) : x + 70
ButtonGadget( #BUTTON_COPY_OUTPUT_BUTTON, x, y, 120, 25, "Copy To Clipboard" )
x = 10 : y + 35
TextGadget( #CHECKBOX_WIDTH_OUTPUT_LABEL, x, y, 110, 25, "Checkbox Width:" ) : x + 110
StringGadget( #CHECKBOX_WIDTH_OUTPUT_TEXTBOX, x, y, 70, 25, "", #PB_String_ReadOnly ) : x + 70
ButtonGadget( #CHECKBOX_COPY_OUTPUT_BUTTON, x, y, 120, 25, "Copy To Clipboard" )
x = 10 : y + 35
CheckBoxGadget( #MAKE_WINDOW_STICKY_CHECKBOX, x, y, 130, 18, "Make Window Sticky" )
y + 28
TextGadget( #INSTRUCTIONS_LABEL, x, y, 100, 18, "Instructions" ) : y + 18
EditorGadget( #INSTRUCTIONS_EDITBOX, x, y, 300, 237, #PB_Editor_ReadOnly | #PB_Editor_WordWrap )
SetGadgetText( #INSTRUCTIONS_EDITBOX, "This tool will tell you how much room that you need to allow for the text in a TextGadget, ButtonGadget, or CheckBoxGadget (also works for the OptionGadget)."+~"\n\n"+
"Enter the text you wish to measure into the 'Enter Input Text Here' textbox. You can type it in, paste it in manually, or use the 'Paste From Clipboard and Calculate' Button to paste it in and calculate the widths."+~"\n\n"+
"Once you have entered the text, click the 'Calculate' button to do the calculations. If you used the 'Paste From Clipboard and Calculate' button then this will be done automatically."+~"\n\n"+
"The size needed for a text gadget will appear in the 'TextGadget Width' textbox."+~"\n\n"+
"The size needed for a button gadget will appear in the 'Button Width' textbox. "+~"\n\n"+
"The size needed for a checkbox or option gadget will appear in the 'Checkbox Width' textbox. "+~"\n\n"+
"You can use the 'Copy To Clipboard' buttons next to these text boxes to copy the output to the system clipboard."+~"\n\n"+
"The 'Make Window Sticky' checkbox lets you make this app's window stay on top of other windows (unless it is minimized)."+~"\n\n"+
~"\n\n\n\n" )
TextGadget( #TEST_TEXTGADGET, 0, 1000, 100, 25, "" )
ButtonGadget( #TEST_BUTTON, 0, 1025, 100, 25, "" )
CheckBoxGadget( #TEST_CHECKBOX, 0, 1050, 100, 25, "" )
EndProcedure
Procedure CalculateGadgetWidths()
SetGadgetText( #TEST_TEXTGADGET, GetGadgetText( #INPUT_TEXT_TEXTBOX ) )
SetGadgetText( #TEXTGADGET_WIDTH_OUTPUT_TEXTBOX, Str( GadgetWidth( #TEST_TEXTGADGET, #PB_Gadget_RequiredSize ) ) )
SetGadgetText( #TEST_BUTTON, GetGadgetText( #INPUT_TEXT_TEXTBOX ) )
SetGadgetText( #BUTTON_WIDTH_OUTPUT_TEXTBOX, Str( GadgetWidth( #TEST_BUTTON, #PB_Gadget_RequiredSize ) ) )
SetGadgetText( #TEST_CHECKBOX, GetGadgetText( #INPUT_TEXT_TEXTBOX ) )
SetGadgetText( #CHECKBOX_WIDTH_OUTPUT_TEXTBOX, Str( GadgetWidth( #TEST_CHECKBOX, #PB_Gadget_RequiredSize ) ) )
EndProcedure
Procedure RunEventLoop()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case #CALCULATE_BUTTON
CalculateGadgetWidths()
Case #PASTE_INPUT_AND_CALCULATE_BUTTON
SetGadgetText( #INPUT_TEXT_TEXTBOX, GetClipboardText() )
CalculateGadgetWidths()
Case #BUTTON_COPY_OUTPUT_BUTTON
SetClipboardText( GetGadgetText( #BUTTON_WIDTH_OUTPUT_TEXTBOX ) )
Case #TEXTGADGET_COPY_OUTPUT_BUTTON
SetClipboardText( GetGadgetText( #TEXTGADGET_WIDTH_OUTPUT_TEXTBOX ) )
Case #CHECKBOX_COPY_OUTPUT_BUTTON
SetClipboardText( GetGadgetText( #CHECKBOX_WIDTH_OUTPUT_TEXTBOX ) )
Case #MAKE_WINDOW_STICKY_CHECKBOX
StickyWindow( #MAIN_WINDOW, Bool( GetGadgetState( #MAKE_WINDOW_STICKY_CHECKBOX ) = #PB_Checkbox_Checked ) )
EndSelect
EndSelect
ForEver
EndProcedure
CreateMainWindow()
RunEventLoop()