Another use of Module example this time a small tool to perfom operation on some line of code.
See the "Insert" Module and inside the procedure "Language_To_GUI()" in the code it self to see example of what can be done.
Best regards
StarBootics
Code: Select all
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : Wrap String Utility program
; File Name : Wrap String - Main - Forum Edition.pb
; File version: 1.0.0
; Programming : OK
; Programmed by : StarBootics
; Date : 13-02-2015
; Last Update : 13-02-2015
; PureBasic code : V5.31
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
DeclareModule BuiltPathDirectory
Declare.b DoIt(Path.s)
EndDeclareModule
Module BuiltPathDirectory
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
#PathSep = "\"
CompilerCase #PB_OS_Linux
#PathSep = "/"
CompilerCase #PB_OS_MacOS
#PathSep = "/"
CompilerEndSelect
Procedure.b DoIt(Path.s)
DirectoryQty = CountString(Path, #PathSep) + 1
For Index = 1 To DirectoryQty
Directory.s = Directory + StringField(Path, Index, #PathSep) + #PathSep
If FileSize(Directory) = -1
CreateDirectory(Directory)
EndIf
Next
If FileSize(Path) = -2
Success.b = #True
Else
Success = #False
EndIf
ProcedureReturn Success
EndProcedure
EndModule
DeclareModule GadgetLocate
Declare DownOf(GadgetID, Gap = 0)
Declare RightOf(GadgetID, Gap = 0)
EndDeclareModule
Module GadgetLocate
Procedure DownOf(GadgetID, Gap = 0)
ProcedureReturn (GadgetY(GadgetID) + GadgetHeight(GadgetID) + (Gap))
EndProcedure
Procedure RightOf(GadgetID, Gap = 0)
ProcedureReturn (GadgetX(GadgetID) + GadgetWidth(GadgetID) + (Gap))
EndProcedure
EndModule
DeclareModule Language
Declare Initialize(P_PathName.s, P_FileName.s, PtrToGUI.i = #Null)
Declare Reset()
Declare CreateTableFile()
Declare LoadTableFile()
Declare WritePreferenceLanguage(P_GroupName.s)
Declare ReadPreferenceLanguage(P_GroupName.s)
Declare AddTableElement(P_Key.s, P_Message.s)
Declare.s Message(P_Message.s)
Declare.b Requester()
EndDeclareModule
Module Language
Global PathName.s
Global FileName.s
Global RemoteToGUI.i
Global NewMap Table.s()
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Procédures privées <<<<<
Procedure SetLanguageXMLNode(CurrentNode)
If ParentXMLNode(CurrentNode) = #Null
StructNode = CreateXMLNode(CurrentNode, "Language")
Else
StructNode = CurrentNode
EndIf
FieldNode = CreateXMLNode(StructNode, "Table")
SetXMLAttribute(FieldNode, "ElementCount", Str(MapSize(Table())))
Element = 0
ForEach Table()
IndexNode = CreateXMLNode(FieldNode, "Element")
SetXMLAttribute(IndexNode, "ID", Str(Element)) : Element + 1
SetXMLAttribute(IndexNode, "Key", MapKey(Table()))
SetXMLAttribute(IndexNode, "Table", Table())
Next
EndProcedure
Procedure GetLanguageXMLNode(CurrentNode)
If ParentXMLNode(CurrentNode) = #Null
StructNode = ChildXMLNode(CurrentNode)
If GetXMLNodeName(StructNode) = "Language"
Success = #True
EndIf
Else
Success = #True
StructNode = CurrentNode
EndIf
If Success = #True
FieldNode = ChildXMLNode(StructNode)
While FieldNode
Select GetXMLNodeName(FieldNode)
Case "Table"
Table_Max = Val(GetXMLAttribute(FieldNode, "ElementCount"))
For Element = 0 To Table_Max - 1
IndexNode = ChildXMLNode(FieldNode, Element + 1)
If GetXMLNodeName(IndexNode) = "Element"
AddMapElement(Table(), GetXMLAttribute(IndexNode, "Key"))
Table() = GetXMLAttribute(IndexNode, "Table")
EndIf
Next
EndSelect
FieldNode = NextXMLNode(FieldNode)
Wend
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Procédures publiques <<<<<
Procedure Initialize(P_PathName.s, P_FileName.s, PtrToGUI.i = #Null)
PathName = P_PathName
FileName = P_FileName
RemoteToGUI = PtrToGUI
EndProcedure
Procedure Reset()
PathName = ""
FileName = ""
RemoteToGUI = #Null
ClearMap(Table())
EndProcedure
Procedure CreateTableFile()
FileID = CreateXML(#PB_Any)
If IsXML(FileID)
SetLanguageXMLNode(RootXMLNode(FileID))
FormatXML(FileID, #PB_XML_ReFormat | #PB_XML_ReIndent)
SaveXML(FileID, PathName + FileName)
FreeXML(FileID)
EndIf
EndProcedure
Procedure LoadTableFile()
FileID = LoadXML(#PB_Any, PathName + FileName)
If IsXML(FileID)
FormatXML(FileID, #PB_XML_CutNewline)
GetLanguageXMLNode(RootXMLNode(FileID))
FreeXML(FileID)
EndIf
EndProcedure
Procedure WritePreferenceLanguage(P_GroupName.s)
PreferenceGroup(P_GroupName)
WritePreferenceString("FileName", FileName)
EndProcedure
Procedure ReadPreferenceLanguage(P_GroupName.s)
PreferenceGroup(P_GroupName)
FileName = ReadPreferenceString("FileName", FileName)
EndProcedure
Procedure AddTableElement(P_Key.s, P_Message.s)
Table(P_Key) = P_Message
EndProcedure
Procedure.s Message(P_Message.s)
If FindMapElement(Table(), P_Message)
Message_Out.s = Table(P_Message)
Else
Message_Out = P_Message
EndIf
ProcedureReturn Message_Out
EndProcedure
Procedure.b Requester()
LanguageRquester_Handle = OpenWindow(#PB_Any, 0, 0, 220, 125, Message("Language Requester"), #PB_Window_ScreenCentered)
If LanguageRquester_Handle <> 0
LanguageRquester_List_Handle = ListViewGadget(#PB_Any, 10, 10, 200, 60)
LanguageRquester_Btn_OK_Handle = ButtonGadget(#PB_Any, 10, 90, 95, 25, Message("OK"))
LanguageRquester_Btn_Cancel_Handle = ButtonGadget(#PB_Any, 115, 90, 95, 25, Message("Cancel"))
EndIf
; On met en place la liste des langues disponibles
If ExamineDirectory(0, PathName, "*.xml") <> 0
While NextDirectoryEntry(0) <> 0
langues.s = DirectoryEntryName(0)
If Left(langues.s, 1) <> "."
AddGadgetItem(LanguageRquester_List_Handle, -1, StringField(GetFilePart(langues), 1, "."))
EndIf
Wend
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget() ; La gestion des évenements
Case LanguageRquester_Btn_OK_Handle
Language.s = GetGadgetText(LanguageRquester_List_Handle) + ".xml"
If FileName <> Language
FileName = Language
LoadTableFile()
If RemoteToGUI <> #Null
CallFunctionFast(RemoteToGUI)
EndIf
Else
Success.b = #True
EndIf
EventID = #PB_Event_CloseWindow
Case LanguageRquester_Btn_Cancel_Handle
EventID = #PB_Event_CloseWindow
Success = #False
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
CloseWindow(LanguageRquester_Handle)
ProcedureReturn Success
EndProcedure
EndModule
DeclareModule Window
Declare Initialize(P_WinID.l, P_PosX.w, P_PosY.w, P_Width.w, P_Height.w, P_ReadWritePrefFlag.b = #True)
Declare Reset(P_WinID.l)
Declare ReadPreferenceWindow(GroupName.s, P_WinID.l)
Declare WritePreferenceWindow(GroupName.s, P_WinID.l)
Declare CreateWindow(P_WinID.l, Flag = #PB_Window_SystemMenu)
Declare CreateWindowEx(P_WinID.l, Title.s, Flag = #PB_Window_SystemMenu, ParentID = #Null)
Declare ReshapeWindow(P_WinID.l)
Declare GetCurrentPosition(P_WinID.l)
Declare GetCurrentSize(P_WinID.l)
Declare GetCurrentPositionSize(P_WinID.l)
Declare VerifyPosition(P_WinID.l)
EndDeclareModule
Module Window
Structure Instance
ID.l
PosX.w
PosY.w
Width.w
Height.w
ReadWritePrefFlag.b
EndStructure
Global NewList Instances.Instance()
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Procédures privées <<<<<
Procedure SeachInstances(P_WinID.l)
Protected IsFoundAtIndex.l = -1
ForEach Instances()
If Instances()\ID = P_WinID
IsFoundAtIndex = ListIndex(Instances())
Break
EndIf
Next
ProcedureReturn IsFoundAtIndex
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Procédures publiques <<<<<
Procedure Initialize(P_WinID.l, P_PosX.w, P_PosY.w, P_Width.w, P_Height.w, P_ReadWritePrefFlag.b = #True)
If SeachInstances(P_WinID) = -1
AddElement(Instances())
EndIf
Instances()\ID = P_WinID
Instances()\PosX = P_PosX
Instances()\PosY = P_PosY
Instances()\Width = P_Width
Instances()\Height = P_Height
Instances()\ReadWritePrefFlag = P_ReadWritePrefFlag
EndProcedure
Procedure Reset(P_WinID.l)
If P_WinID = -1
ForEach Instances()
Instances()\ID = 0
Instances()\PosX = 0
Instances()\PosY = 0
Instances()\Width = 0
Instances()\Height = 0
Instances()\ReadWritePrefFlag = 0
Next
ClearList(Instances())
Else
If SeachInstances(P_WinID) <> -1
Instances()\ID = 0
Instances()\PosX = 0
Instances()\PosY = 0
Instances()\Width = 0
Instances()\Height = 0
Instances()\ReadWritePrefFlag = 0
DeleteElement(Instances(), 1)
EndIf
EndIf
EndProcedure
Procedure ReadPreferenceWindow(GroupName.s, P_WinID.l)
If SeachInstances(P_WinID) <> -1
PreferenceGroup(GroupName)
Instances()\PosX = ReadPreferenceLong("PosX", Instances()\PosX)
Instances()\PosY = ReadPreferenceLong("PosY", Instances()\PosY)
If Instances()\ReadWritePrefFlag = #True
Instances()\Width = ReadPreferenceLong("Width", Instances()\Width)
Instances()\Height = ReadPreferenceLong("Height", Instances()\Height)
EndIf
EndIf
EndProcedure
Procedure WritePreferenceWindow(GroupName.s, P_WinID.l)
If SeachInstances(P_WinID) <> -1
PreferenceGroup(GroupName)
WritePreferenceLong("PosX", Instances()\PosX)
WritePreferenceLong("PosY", Instances()\PosY)
If Instances()\ReadWritePrefFlag = #True
WritePreferenceLong("Width", Instances()\Width)
WritePreferenceLong("Height", Instances()\Height)
EndIf
EndIf
EndProcedure
Procedure CreateWindow(P_WinID.l, Flag = #PB_Window_SystemMenu)
If SeachInstances(P_WinID) <> -1
Success = OpenWindow(P_WinID, Instances()\PosX, Instances()\PosY, Instances()\Width, Instances()\Height, "", Flag)
EndIf
ProcedureReturn Success
EndProcedure
Procedure CreateWindowEx(P_WinID.l, Title.s, Flag = #PB_Window_SystemMenu, ParentID = #Null)
If SeachInstances(P_WinID) <> -1
Success = OpenWindow(P_WinID, Instances()\PosX, Instances()\PosY, Instances()\Width, Instances()\Height, Title, Flag, ParentID)
EndIf
ProcedureReturn Success
EndProcedure
Procedure ReshapeWindow(P_WinID.l)
If SeachInstances(P_WinID) <> -1
ResizeWindow(P_WinID, Instances()\PosX, Instances()\PosY, Instances()\Width, Instances()\Height)
EndIf
EndProcedure
Procedure GetCurrentPosition(P_WinID.l)
If SeachInstances(P_WinID) <> -1
Instances()\PosX = WindowX(P_WinID)
Instances()\PosY = WindowY(P_WinID)
EndIf
EndProcedure
Procedure GetCurrentSize(P_WinID.l)
If SeachInstances(P_WinID) <> -1
Instances()\Width = WindowWidth(P_WinID)
Instances()\Height = WindowHeight(P_WinID)
EndIf
EndProcedure
Procedure GetCurrentPositionSize(P_WinID.l)
If SeachInstances(P_WinID) <> -1
Instances()\PosX = WindowX(P_WinID)
Instances()\PosY = WindowY(P_WinID)
If Instances()\ReadWritePrefFlag = #True
Instances()\Width = WindowWidth(P_WinID)
Instances()\Height = WindowHeight(P_WinID)
EndIf
EndIf
EndProcedure
Procedure VerifyPosition(P_WinID.l)
If SeachInstances(P_WinID) <> -1
If ExamineDesktops()
If Instances()\PosX > DesktopWidth(0) Or Instances()\PosX < 0
Instances()\PosX = 50
EndIf
If Instances()\PosY > DesktopHeight(0) Or Instances()\PosY < 0
Instances()\PosY = 50
EndIf
If (Instances()\PosX + Instances()\Width) > DesktopWidth(0)
Instances()\PosX = Instances()\PosX - Instances()\Width
EndIf
If (Instances()\PosY + Instances()\Height) > DesktopHeight(0)
Instances()\PosY = Instances()\PosY - Instances()\Height
EndIf
If Instances()\ReadWritePrefFlag = #True
If Instances()\Width > DesktopWidth(0)
Instances()\Width = DesktopWidth(0) - Instances()\PosX
EndIf
If Instances()\Height > DesktopHeight(0)
Instances()\Height = DesktopHeight(0) - Instances()\PosY
EndIf
EndIf
Else
Instances()\PosX = 50
Instances()\PosY = 50
EndIf
EndIf
EndProcedure
EndModule
DeclareModule Insert
Declare Initialize()
Declare Reset()
Declare BasicType_To_Gadget(GadgetID)
EndDeclareModule
Module Insert
Enumeration
#INSERT_TYPE_BYTE
#INSERT_TYPE_ASCII
#INSERT_TYPE_CHARACTER
#INSERT_TYPE_UNICODE
#INSERT_TYPE_WORD
#INSERT_TYPE_LONG
#INSERT_TYPE_INTEGER
#INSERT_TYPE_QUAD
#INSERT_TYPE_FLOAT
#INSERT_TYPE_DOUBLE
#INSERT_TYPE_MAX
EndEnumeration
Global StartCounter.b
Global Dim Type.s(#INSERT_TYPE_MAX)
Procedure Initialize()
StartCounter = 0
Type(#INSERT_TYPE_BYTE) = "Byte"
Type(#INSERT_TYPE_ASCII) = "Ascii"
Type(#INSERT_TYPE_CHARACTER) = "Character"
Type(#INSERT_TYPE_UNICODE) = "Unicode"
Type(#INSERT_TYPE_WORD) = "Word"
Type(#INSERT_TYPE_LONG) = "Long"
Type(#INSERT_TYPE_INTEGER) = "Integer"
Type(#INSERT_TYPE_QUAD) = "Quad"
Type(#INSERT_TYPE_FLOAT) = "Float"
Type(#INSERT_TYPE_DOUBLE) = "Double"
EndProcedure
Procedure Reset()
StartCounter = 0
FreeArray(Type())
EndProcedure
Procedure BasicType_To_Gadget(GadgetID)
If StartCounter < 3
StartCounter = StartCounter + 1
Else
StartCounter = 0
For TypeID = 0 To #INSERT_TYPE_MAX - 1
AddGadgetItem(GadgetID, TypeID, Type(TypeID))
Next
EndIf
EndProcedure
EndModule
DeclareModule WrapString
Declare Initialize()
Declare EventManager()
EndDeclareModule
Module WrapString
#Version = " - V2.0.0"
Enumeration
#MainWin
#Text_Before
#String_Before
#Text_After
#String_After
#Btn_WrapIt
#Btn_StripIt
#Btn_UCase
#Btn_LCase
#Btn_Language
#Btn_Clipboard
#Editor_Content
#ShortCut_Insert
EndEnumeration
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
#PathSep = "\"
CompilerCase #PB_OS_Linux
#PathSep = "/"
CompilerCase #PB_OS_MacOS
#PathSep = "/"
CompilerEndSelect
Global PrefFileName.s
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< OpenWrapStringPreferences (Private) <<<<<
Procedure OpenWrapStringPreferences()
If OpenPreferences(PrefFileName)
Window::ReadPreferenceWindow("MainWin", #MainWin)
Language::ReadPreferenceLanguage("Language")
ClosePreferences()
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< CreateWrapStringPreferences (Private) <<<<<
Procedure CreateWrapStringPreferences()
If CreatePreferences(PrefFileName)
Window::WritePreferenceWindow("MainWin", #MainWin)
Language::WritePreferenceLanguage("Language")
ClosePreferences()
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< ShutDown (Private) <<<<<
Procedure ShutDown()
Window::GetCurrentPositionSize(#MainWin)
CreateWrapStringPreferences()
Language::Reset()
Window::Reset(-1)
Insert::Reset()
CloseWindow(#MainWin)
End
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Language_To_GUI (Private) <<<<<
Procedure Language_To_GUI()
SetWindowTitle(#MainWin, Language::Message("Wrap String") + #Version)
; I just copy/paste the constant from the Enumeration in the program editor to add "SetGadgetText("
; in front of the constant and ", Language::Message(""))" after the constant. Mush faster thant doing
; it manually ! Indeed the edition is not complete, I still have to add the string manually after.
SetGadgetText(#Text_Before, Language::Message("Before"))
SetGadgetText(#Text_After, Language::Message("After"))
SetGadgetText(#Btn_WrapIt, Language::Message("Wrap It !"))
SetGadgetText(#Btn_StripIt, Language::Message("Strip It !"))
SetGadgetText(#Btn_UCase, Language::Message("UCase It !"))
SetGadgetText(#Btn_LCase, Language::Message("LCase It !"))
SetGadgetText(#Btn_Language, Language::Message("Language"))
SetGadgetText(#Btn_Clipboard, Language::Message("Copy to Clipboard"))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< BuiltLanguageDefaultFiles (Private) <<<<<
CompilerIf #PB_Compiler_Debugger
Procedure BuiltLanguageDefaultFiles(P_PathName.s)
BuiltPathDirectory::DoIt(P_PathName)
Language::Initialize(P_PathName, "English.xml")
Language::AddTableElement("Wrap String", "Wrap String")
Language::AddTableElement("Before", "Before")
Language::AddTableElement("After", "After")
Language::AddTableElement("Wrap It !", "Wrap It !")
Language::AddTableElement("Strip It !", "Strip It !")
Language::AddTableElement("UCase It !", "UCase It !")
Language::AddTableElement("LCase It !", "LCase It !")
Language::AddTableElement("Copy to Clipboard", "Copy to Clipboard")
Language::AddTableElement("Language", "Language")
Language::AddTableElement("Language Requester", "Choose Language")
Language::AddTableElement("OK", "OK")
Language::AddTableElement("Cancel", "Cancel")
Language::CreateTableFile()
Language::Reset()
Language::Initialize(P_PathName, "Français.xml")
Language::AddTableElement("Wrap String", "Wrap String")
Language::AddTableElement("Before", "Devant")
Language::AddTableElement("After", "Après")
Language::AddTableElement("Wrap It !", "Wrap It !")
Language::AddTableElement("Strip It !", "Strip It !")
Language::AddTableElement("UCase It !", "UCase It !")
Language::AddTableElement("LCase It !", "LCase It !")
Language::AddTableElement("Copy to Clipboard", "Presse Papier")
Language::AddTableElement("Language", "Langue")
Language::AddTableElement("Language Requester", "Choix de la langue")
Language::AddTableElement("OK", "OK")
Language::AddTableElement("Cancel", "Annuler")
Language::CreateTableFile()
Language::Reset()
EndProcedure
CompilerEndIf
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Initialize (Public) <<<<<
Procedure Initialize()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
UserPath.s = GetEnvironmentVariable("APPDATA") + #PathSep + "WrapString" + #PathSep
If Left(UserPath, 2) <> "C:"
UserPath = "C:" + #PathSep + UserPath
EndIf
CompilerCase #PB_OS_Linux
UserPath.s = GetHomeDirectory() + ".wrap_string" + #PathSep
CompilerEndSelect
BuiltPathDirectory::DoIt(UserPath)
LanguagePath.s = GetPathPart(ProgramFilename()) + "language" + #PathSep
CompilerIf #PB_Compiler_Debugger
BuiltLanguageDefaultFiles(LanguagePath)
CompilerEndIf
PrefFileName = UserPath + "WrapString.prefs"
Window::Initialize(#MainWin, 50, 50, 800, 600, #False)
Language::Initialize(LanguagePath, "Français.xml", @Language_To_GUI())
Insert::Initialize()
If FileSize(PrefFileName) = -1
CreateWrapStringPreferences()
Else
OpenWrapStringPreferences()
EndIf
Language::LoadTableFile()
Window::VerifyPosition(#MainWin)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< EventManager (Public) <<<<<
Procedure EventManager()
If Window::CreateWindow(#MainWin)
TextGadget(#Text_Before, 5, 8, 80, 30, "", #PB_Text_Right)
StringGadget(#String_Before, GadgetLocate::RightOf(#Text_Before, 5), 5, 340, 30, "")
TextGadget(#Text_After, 5, GadgetLocate::DownOf(#String_Before, 8), 80, 30, "", #PB_Text_Right)
StringGadget(#String_After, GadgetLocate::RightOf(#Text_After, 5), GadgetLocate::DownOf(#String_Before, 5), 340, 30, "")
ButtonGadget(#Btn_WrapIt, GadgetLocate::RightOf(#String_Before, 5), 5, 100, 30, "")
ButtonGadget(#Btn_StripIt, GadgetLocate::RightOf(#String_After, 5), GadgetLocate::DownOf(#Btn_WrapIt, 5), 100, 30, "")
ButtonGadget(#Btn_UCase, GadgetLocate::RightOf(#Btn_WrapIt, 5), 5, 100, 30, "")
ButtonGadget(#Btn_LCase, GadgetLocate::RightOf(#Btn_StripIt, 5), GadgetLocate::DownOf(#Btn_UCase, 5), 100, 30, "")
ButtonGadget(#Btn_Language, GadgetLocate::RightOf(#Btn_UCase, 5), 5, 150, 30, "")
ButtonGadget(#Btn_Clipboard, GadgetLocate::RightOf(#Btn_UCase, 5), GadgetLocate::DownOf(#Btn_Language, 5), 150, 30, "")
EditorGadget(#Editor_Content, 5, GadgetLocate::DownOf(#String_After, 5), 790, 520)
AddKeyboardShortcut(#MainWin, #PB_Shortcut_Control | #PB_Shortcut_F1, #ShortCut_Insert)
Language_To_GUI()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case #ShortCut_Insert
Insert::BasicType_To_Gadget(#Editor_Content)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_WrapIt
For ItemID = 0 To CountGadgetItems(#Editor_Content)
SetGadgetItemText(#Editor_Content, ItemID, GetGadgetText(#String_Before) + Trim(GetGadgetItemText(#Editor_Content, ItemID)) + GetGadgetText(#String_After))
Next
Case #Btn_StripIt
For ItemID = 0 To CountGadgetItems(#Editor_Content)
SetGadgetItemText(#Editor_Content, ItemID, RemoveString(RemoveString(Trim(GetGadgetItemText(#Editor_Content, ItemID)), GetGadgetText(#String_Before)), GetGadgetText(#String_After)))
Next
Case #Btn_UCase
For ItemID = 0 To CountGadgetItems(#Editor_Content)
SetGadgetItemText(#Editor_Content, ItemID, UCase(GetGadgetItemText(#Editor_Content, ItemID)))
Next
Case #Btn_LCase
For ItemID = 0 To CountGadgetItems(#Editor_Content)
SetGadgetItemText(#Editor_Content, ItemID, LCase(GetGadgetItemText(#Editor_Content, ItemID)))
Next
Case #Btn_Language
Language::Requester()
Case #Btn_Clipboard
SetClipboardText(GetGadgetText(#Editor_Content))
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #MainWin
ShutDown()
EndSelect
EndSelect
ForEver
EndIf
EndProcedure
EndModule
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Program Initialization <<<<<
WrapString::Initialize()
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Events Manager <<<<<
WrapString::EventManager()
; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<