ich habe mein code jetzt totel um gewürfelt und habe jetzt nur noch eine eventschleife...
Code: Alles auswählen
Enumeration
#Main_Fenster
#Neu_Projekt
#StringEditor
EndEnumeration
Enumeration
#Editor
#Menue
#Panel
#AddOn
#Projct
#NeuPro_ProName
#NeuPro_OrdnerName
#NeuPro_ProVerzeichnis
#NeuPro_ButtonVerzeichnis
#NeuPro_ButtonOK
#NeuPro_ButtonAbbruch
#StringEditorListView
#StringEditorStringNeu
#StringEditorButtonNeu
#StringEditorButtonOK
#StringEditorButtonAbbruch
EndEnumeration
Global NewList Strings.s()
Global NewList Variabeln.s()
Global Ergebnis$
Global Image0
Image0 = CatchImage(0, ?Image0)
DataSection
Image0:
IncludeBinary "IMG\dll.ico"
EndDataSection
Procedure.s GetExePath()
Prg.s = Space(#MAX_PATH)
GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
Prg = GetPathPart(Prg)
If (FindString(prg,"\PureBasic\Compilers", 1))
Prg.s = Space(#MAX_PATH)
GetCurrentDirectory_(#MAX_PATH,@Prg)
EndIf
If Right(Prg, 1) <> "" : Prg + "" : EndIf
If #PB_Compiler_Debugger = 1
ProcedureReturn "E:\Eigene Dateien\Programmieren\QuellentextPB40\Programm Maker\Editor"
Else
ProcedureReturn Prg
EndIf
teste$ = Prg.s
EndProcedure
Procedure.s Setting(Lesen$)
If ReadFile(0,"Setting.inf")
While Eof(0) = 0
T$ = ReadString(0)
If FindString(T$,Lesen$+": ",1)
A$ = RemoveString(T$,Lesen$+": ")
If FindString(A$,":",1)
CloseFile(0)
ProcedureReturn A$
Else
CloseFile(0)
ProcedureReturn GetExePath()+A$
EndIf
EndIf
Wend
Else
MessageRequester("ERROR","Die Datei 'Setting.inf' konnte leider nicht gefunden Werden! Eine neu Installation könnte das Problem beheben.")
End
EndIf
EndProcedure
;{ Fenster
;- ---->>Fenster<<----
Procedure Main()
If OpenWindow(#Main_Fenster,0,0,900,600,"Dll Maker",#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_SystemMenu)
If CreateMenu(#Menue, WindowID(#Main_Fenster))
MenuTitle("&Datei")
MenuItem(1,"&Neues Projekt")
MenuItem(2,"Ö&ffnen")
MenuItem(3,"&Speichern")
MenuBar()
OpenSubMenu("&Exportieren")
MenuItem(4,"Text &Editor")
MenuItem(5,"Text &Datei")
CloseSubMenu()
OpenSubMenu("&Inportieren")
MenuItem(6,"Text &Datei")
CloseSubMenu()
MenuBar()
MenuItem(7,"&Beenden")
MenuTitle("Bearbeiten")
MenuItem(8,"&Neuer Befehl")
MenuItem(9,"&Befehl Bearbeiten")
MenuItem(10,"Befehl &Löschen")
MenuItem(11,"Befehl &Kopieren")
MenuItem(12,"Befehl &Einfürgen")
MenuBar()
MenuItem(13,"&Add On verwnden")
MenuItem(14,"Add On &Configurieren")
MenuTitle("&Projekt")
MenuItem(15,"&Testen")
MenuItem(16,"Test &Abbrechen")
MenuBar()
MenuItem(17,"Win. &Rechner")
MenuItem(18,"Win. &Editor")
MenuTitle("&Hilfe")
MenuItem(19,"&Hilfe")
MenuItem(20,"Ü&ber")
EndIf
If CreateGadgetList(WindowID(#Main_Fenster))
ListViewGadget(#Editor,2,2,896,400)
AddGadgetItem(#Editor,-1,"[]")
PanelGadget(#Panel,2,404,896,174)
AddGadgetItem(#Panel, -1, "Add On")
ListIconGadget(#AddOn,2,2,892,170,"",892,#PB_ListIcon_GridLines)
ChangeListIconGadgetDisplay(#AddOn, 0)
AddGadgetItem(#AddOn,-1,"Leer",Image0)
AddGadgetItem(#Panel, -1, "Projekt")
ListIconGadget(#Projct,2,2,892,170,"",892,#PB_ListIcon_GridLines)
ChangeListIconGadgetDisplay(#Projct, 0)
AddGadgetItem(#Projct,-1,"Leer",Image0)
EndIf
EndIf
EndProcedure
Procedure Window_NeuProjekt(Window)
If OpenWindow(#Neu_Projekt,0,0,350,100,"Neues Projekt",#PB_Window_WindowCentered,WindowID(Window)) And CreateGadgetList(WindowID(#Neu_Projekt))
TextGadget(1,2,2,100,20,"Projekt Name:")
StringGadget(#NeuPro_ProName,2,16,167,20,"Projekt")
TextGadget(2,177,2,100,20,"Ordner Name:")
StringGadget(#NeuPro_OrdnerName,179,16,167,20,"Projekt")
TextGadget(0,2,39,100,20,"Projekt Verzeichnis:")
StringGadget(#NeuPro_ProVerzeichnis,2,53,324,20,Setting("Projekt Verzeichnis"))
ButtonGadget(#NeuPro_ButtonVerzeichnis,328,53,20,20,"...")
ButtonGadget(#NeuPro_ButtonOK,278,78,70,20,"OK",#PB_Button_Default)
ButtonGadget(#NeuPro_ButtonAbbruch,200,78,70,20,"Abbrechen")
EndIf
EndProcedure
Procedure Window_String_Editor(Typ$,Window)
If OpenWindow(#StringEditor,0,0,200,300,"String/Variabel ("+Typ$+") Editor",#PB_Window_WindowCentered,WindowID(Window)) And CreateGadgetList(WindowID(#StringEditor))
ListViewGadget(#StringEditorListView,2,2,196,240)
TextGadget(#PB_Any,2,242,196,20,"Neu Anlegen:")
StringGadget(#StringEditorStringNeu,2,256,166,20,"")
ButtonGadget(#StringEditorButtonNeu,170,256,25,20,"Neu")
ButtonGadget(#StringEditorButtonOK,99,278,97,20,"OK",#PB_Button_Default)
ButtonGadget(#StringEditorButtonAbbruch,2,278,97,20,"Abbruch")
EndIf
If Typ$ = "!"
ForEach Strings()
AddGadgetItem(#StringEditorListView,-1,Strings())
Next
ElseIf Typ$ = "&"
ForEach Variabeln()
AddGadgetItem(#StringEditorListView,-1,Variabeln())
Next
EndIf
EndProcedure
;- ---->>Fenster Ende<<----
;}
;{ Syntax Generator
;- ---->>Syntax Generator<<----
Macro NeuProjekt()
ElseIf GadgetID = #NeuPro_ProVerzeichnis
ElseIf GadgetID = #NeuPro_ButtonOK
ElseIf GadgetID = #NeuPro_ButtonAbbruch
CloseWindow(#Neu_Projekt)
EndMacro
Macro String_Editor()
ElseIf GadgetID = #StringEditorButtonNeu
T$ = GetGadgetText(#StringEditorStringNeu)
If Typ$ = "!"
a = CountString(T$,"!")
b = FindString(T$,"!",1)
c = Len(T$)
If FindString(T$,"!",1)
If a = 1 And b = 1 And c > 1 And c <> 0
ForEach Strings()
If Strings() = T$:d=1:Break:EndIf
Next
If d = 1
MessageRequester("'ERROR'","Der String kann nur einmal in der liste vorhanden sein!"):d = 0
Else
AddElement(Strings())
Strings() = T$
ClearGadgetItemList(#StringEditorListView)
ForEach Strings()
AddGadgetItem(#StringEditorListView,-1,Strings())
Next
EndIf
Else
MessageRequester("'Syntax ERROR'","Der Angegebene !String kann in dieser form nicht verwendet werden!")
EndIf
ElseIf c <> 0
T$ = "!"+T$
ForEach Strings()
If Strings() = T$:d=1:Break:EndIf
Next
If d = 1
MessageRequester("'ERROR'","Der String kann nur einmal in der liste vorhanden sein!"):d = 0
Else
AddElement(Strings())
Strings() = T$
ClearGadgetItemList(#StringEditorListView)
ForEach Strings()
AddGadgetItem(#StringEditorListView,-1,Strings())
Next
EndIf
EndIf
ElseIf Typ$ = "&"
a = CountString(T$,"&")
b = FindString(T$,"&",1)
c = Len(T$)
If FindString(T$,"&",1)
If a = 1 And b = 1 And c > 1 And C <> 0
ForEach Variabeln()
If Variabeln() = T$:d=1:Break:EndIf
Next
If d = 1
MessageRequester("'ERROR'","Die Variabel kann nur einmal in der liste vorhanden sein!"):d = 0
Else
AddElement(Variabeln())
Variabeln() = T$
ClearGadgetItemList(#StringEditorListView)
ForEach Variabeln()
AddGadgetItem(#StringEditorListView,-1,Variabeln())
Next
EndIf
Else
MessageRequester("'Syntax ERROR'","Die Angegebene &Variabel kann in dieser form nicht verwendet werden!")
EndIf
ElseIf c <> 0
T$ = "&"+T$
ForEach Variabeln()
If Variabeln() = T$:d=1:Break:EndIf
Next
If d = 1
MessageRequester("'ERROR'","Die Variabel kann nur einmal in der liste vorhanden sein!"):d = 0
Else
AddElement(Variabeln())
Variabeln() = T$
ClearGadgetItemList(#StringEditorListView)
ForEach Variabeln()
AddGadgetItem(#StringEditorListView,-1,Variabeln())
Next
EndIf
EndIf
EndIf
ElseIf GadgetID = #StringEditorButtonOK
A$ = GetGadgetText(#StringEditorListView)
If A$ <> ""
CloseWindow(#StringEditor)
; ProcedureReturn A$
Else
If Typ$ = "!"
MessageRequester("Fehler","Sie müssen vorerst einen !String aus der liste wählen.")
ElseIf Typ$ = "&"
MessageRequester("Fehler","Sie müssen vorerst eine &Variabel aus der liste wählen.")
EndIf
EndIf
ElseIf GadgetID = #StringEditorButtonAbbruch
CloseWindow(#StringEditor)
EndMacro
;- ---->>Syntax Generator Ende<<----
;}
Main()
Window_NeuProjekt(#Main_Fenster)
;Window_String_Editor("!",#Main_Fenster)
Typ$ = "!"
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Editor
String_Editor()
NeuProjekt()
EndIf
EndIf
Until Exit = 1