From 3f36b51f6c2a4a71e0157d8de172adfac34cce27 Mon Sep 17 00:00:00 2001 From: Christian Hammacher Date: Sun, 11 Dec 2005 17:31:06 +0000 Subject: [PATCH] Added the plugins directory to CVS and updated the files --- .../Functions and Events-Dateien/filelist.xml | 8 + .../Functions and Events-Dateien/sheet001.htm | 664 ++++++++++++++++++ .../Functions and Events-Dateien/sheet002.htm | 379 ++++++++++ .../stylesheet.css | 75 ++ .../Functions and Events-Dateien/tabstrip.htm | 33 + .../studio/plugins/Functions and Events.htm | 344 +++++++++ editor/studio/plugins/Hello World - CPP.dll | Bin 0 -> 53248 bytes .../studio/plugins/Hello World - Delphi.dll | Bin 0 -> 90624 bytes .../plugins/Hello_World CPP/Hello_World.dsp | 113 +++ .../plugins/Hello_World CPP/Hello_World.dsw | 29 + .../plugins/Hello_World CPP/Hello_World.opt | Bin 0 -> 49664 bytes .../plugins/Hello_World CPP/Hello_World.plg | 33 + .../plugins/Hello_World CPP/Hello_World.sln | 20 + .../plugins/Hello_World CPP/Hello_World.suo | Bin 0 -> 11264 bytes .../Hello_World CPP/Hello_World.vcproj | 255 +++++++ ...lo_World.vcproj.PC-BASIC.Basic-Master.user | 65 ++ .../studio/plugins/Hello_World CPP/sample.cpp | 26 + .../studio/plugins/Hello_World CPP/sample.h | 9 + .../plugins/Hello_World CPP/studio_api.h | 195 +++++ .../plugins/Hello_World Delphi/HelloWorld.cfg | 38 + .../plugins/Hello_World Delphi/HelloWorld.dpr | 49 ++ .../plugins/Hello_World Delphi/HelloWorld.res | Bin 0 -> 876 bytes .../plugins/Hello_World Delphi/studioapi.pas | 194 +++++ 23 files changed, 2529 insertions(+) create mode 100644 editor/studio/plugins/Functions and Events-Dateien/filelist.xml create mode 100644 editor/studio/plugins/Functions and Events-Dateien/sheet001.htm create mode 100644 editor/studio/plugins/Functions and Events-Dateien/sheet002.htm create mode 100644 editor/studio/plugins/Functions and Events-Dateien/stylesheet.css create mode 100644 editor/studio/plugins/Functions and Events-Dateien/tabstrip.htm create mode 100644 editor/studio/plugins/Functions and Events.htm create mode 100644 editor/studio/plugins/Hello World - CPP.dll create mode 100644 editor/studio/plugins/Hello World - Delphi.dll create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.dsp create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.dsw create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.opt create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.plg create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.sln create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.suo create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.vcproj create mode 100644 editor/studio/plugins/Hello_World CPP/Hello_World.vcproj.PC-BASIC.Basic-Master.user create mode 100644 editor/studio/plugins/Hello_World CPP/sample.cpp create mode 100644 editor/studio/plugins/Hello_World CPP/sample.h create mode 100644 editor/studio/plugins/Hello_World CPP/studio_api.h create mode 100644 editor/studio/plugins/Hello_World Delphi/HelloWorld.cfg create mode 100644 editor/studio/plugins/Hello_World Delphi/HelloWorld.dpr create mode 100644 editor/studio/plugins/Hello_World Delphi/HelloWorld.res create mode 100644 editor/studio/plugins/Hello_World Delphi/studioapi.pas diff --git a/editor/studio/plugins/Functions and Events-Dateien/filelist.xml b/editor/studio/plugins/Functions and Events-Dateien/filelist.xml new file mode 100644 index 00000000..c1baa3d6 --- /dev/null +++ b/editor/studio/plugins/Functions and Events-Dateien/filelist.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/editor/studio/plugins/Functions and Events-Dateien/sheet001.htm b/editor/studio/plugins/Functions and Events-Dateien/sheet001.htm new file mode 100644 index 00000000..bb5ad15b --- /dev/null +++ b/editor/studio/plugins/Functions and Events-Dateien/sheet001.htm @@ -0,0 +1,664 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functions + for AMXX-Studio
MessageDataIntDataDescription
SCM_SHOWPROGRESS-ReadOnly (0/1)Shows the progress panel
SCM_HIDEPROGRESS--Hides the progress panel
SCM_UPDATEPROGRESSProgress captionPositionSets the current progress
SCM_LOADCODESNIPPETSLanguage-Loads the Code-Snippets of a language
SCM_MIRC_CMDCommand-Performs a command in mIRC
SCM_RELOADINI--Reloads the ini configuration (Hint: the ini configuration is not the + whole config!)
SCM_SELECTLANGUAGELanguage-Sets the highlighter for your active document
SCM_LOADFILEFile-Loads a file
SCM_CURRPROJECTS--Returns the index of the current projects
SCM_COMPILE--Compiles the active document (only Pawn supported)
SCM_COMPILE_UPLOAD--Compiles the active document (only Pawn supported) and uploads the output
SCM_COMPILE_STARTHL--Compiles the active document (only Pawn supported) and starts Half-Life
SCM_MENU_LOADIMAGEFilename-Loads a bitmap and returns the image index
SCM_MENU_ADDITEMCategory->CaptionImage IndexAdds an item to the menu
SCM_MENU_ADDSUBITEMCategory->ItemImage IndexAdds a subitem to the menu
SCM_MENU_FAKECLICKCaption-Simulates a click on the item
SCM_MENU_SHOWITEMCaption-Shows a menu item
SCM_MENU_HIDEITEMCaption-Hides a menu item
SCM_PLUGIN_LOADFile in .\plugins\or Plugin IndexLoads a plugin
SCM_PLUGIN_UNLOADFile in .\plugins\or Plugin IndexUnloads a plugin
SCM_SETTINGS_CREATEPAGECaption-Creates a new page in the Settings dialog
SCM_SETTINGS_REMOVEPAGECaption-Removes a page from the Settings dialog
SCM_CODEINSPECTOR_CLEAR--Clears the code-inspector
SCM_CODEINSPECTOR_ADDName\nCategory\nValue-Adds a new item to the code-inspector
SCM_CODEINSPECTOR_ADDCOMBOName\nCategory\nValue\nValues-Adds a new combobox-item to the code-inspector
SCM_CODEINSPECTOR_SETVALUEName\nValue-Sets the value of an item in the code-inspector
SCM_CODEINSPECTOR_SETNAMEName\nNewName-Sets the name of an item in the code-inspector
SCM_CODEINSPECTOR_GETVALUEName-Gets the value of an item in the code-inspector
SCM_CODEINSPECTOR_GETNAMEValue-Gets the name of an item in the code-inspector
SCM_CODEINSPECTOR_COUNT--Returns the number of items in the code-inspector
SCM_CODEINSPECTOR_BEGINUPDATE--It's recommended to use this before you update the whole code-inspector
SCM_CODEINSPECTOR_ENDUPDATE--Use this when you've finished the update in the code-inspector
SCM_CODEINSPECTOR_DELETEName-Deletes an item in the code-inspector
SCM_PAWN_NEWFILEFilename-Adds a new file to the Pawn Projects
SCM_PAWN_SAVEFILE[Filename]IndexSaves a Pawn file
SCM_PAWN_CLOSEFILE-IndexCloses a file in the Pawn Projects
SCM_PAWN_ISUNTITLED-IndexReturns 1 if Pawn document is untitled, otherwise 0
SCM_PAWN_ACTIVATE--Activates the Pawn Projects
SCM_PAWN_ACTIVATEDOCFlagsIndexActivates a document in the Pawn Projects (Flags: r = Resore caret, s = + Save last document)
SCM_PAWN_GETNOTES-IndexGets the notes of a Pawn document as RTF
SCM_PAWN_SETNOTESNotesIndexSets the notes of a Pawn document
SCM_PAWN_GETFILENAME-IndexReturns the filename of a Pawn document as integer
SCM_PAWN_SETFILENAMEFilenameIndexSets the filename of a file (only in AMXX-Studio)
SCM_PAWN_FILECOUNT--Returns the number of loaded Pawn scripts
SCM_PAWN_GETTEXT-IndexReturns the text of a Pawn document as integer
SCM_CPP_NEWFILEFilename-Creates a new C++ file
SCM_CPP_SAVEFILE[Filename]IndexSaves a C++ file
SCM_CPP_CLOSEFILE-IndexCloses a C++ file
SCM_CPP_ISUNTITLED-IndexReturns 1 if Pawn document is untitled, otherwise 0
SCM_CPP_ACTIVATE--Activates the C++ Projects
SCM_CPP_ACTIVATEDOCFlagsIndexActivates a document in the C++ Projects (Flags: r = Resore caret, s = + Save last document)
SCM_CPP_ACTIVATEIDE-Enable (0/1)Activate the C++ IDE  
SCM_CPP_GETNOTES-IndexGets the notes of a C++ document as RTF
SCM_CPP_SETNOTESNotesIndexSets the notes of a C++ document
SCM_CPP_GETFILENAME-IndexReturns the filename of a C++ document as integer
SCM_CPP_SETFILENAMEFilenameIndexSets the filename of a file (only in AMXX-Studio)
SCM_CPP_FILECOUNT--Returns the number of loaded C(++) files
SCM_OTHER_NEWFILEFilename-Creates a new file
SCM_OTHER_SAVEFILE[Filename]IndexSaves a file
SCM_OTHER_CLOSEFILE-IndexCloses a file
SCM_OTHER_ISUNTITLED-IndexReturns 1 if the document is untitled, otherwise 0
SCM_OTHER_ACTIVATE--Activates the Other Projects
SCM_OTHER_ACTIVATEDOCFlagsIndexActivates a document in the Other Projects (Flags: r = Resore caret, s = + Save last document)
SCM_OTHER_GETNOTES-IndexGets the notes of a document as RTF
SCM_OTHER_SETNOTESNotesIndexSets the notes of a document
SCM_OTHER_GETFILENAME-IndexReturns the filename of a file
SCM_OTHER_SETFILENAMEFilenameIndexSets the filename of a file (only in AMXX-Studio)
SCM_OTHER_FILECOUNT--Returns the number of loaded textfiles
SCM_OUTPUT_SHOW--Shows the ouput list
SCM_OUTPUT_HIDE--Hides the output list
SCM_OUTPUT_ADDItem-Adds an item to the output list
SCM_OUTPUT_CLEAR--Clears the output list
SCM_OUTPUT_DELETE-Item IndexDeletes an item in the output list
SCM_OUTPUT_GETTEXT--Returns the output list as integer
SCM_OUTPUT_GETITEM-Item IndexReturns an output item as integer
SCM_OUTPUT_INDEXOFItem-Returns the index of an item in the output list
SCM_ACTIVE_DOCUMENT--Returns the index of the active document
SCM_ACTIVE_PROJECTS--Returns the index of the active projects
SCM_EDITOR_SETTEXTText-Sets the text of the editor
SCM_EDITOR_GETTEXT--Returns the text of the editor as integer
SCM_EDTIOR_SETCALLTIPSCalltips-Sets the calltips
SCM_EDITOR_SHOWCALLTIPDefinitionPositionShows a calltip
SCM_EDITOR_SETAUTOCOMPLETEList-Sets the autocomplete list
SCM_EDITOR_SHOWAUTOCOMPLETEListLength EnteredShows the autocomplete list
SCM_EDITOR_GETSELSTART--Returns the current selection start
SCM_EDTIOR_GETSELLENGTH--Returns the current selection length
SCM_EDITOR_SETSELSTART-Selection StartSets the selection start
SCM_EDITOR_SETSELLENGH-Selection LengthSets the selection length
SCM_REMOVE_MENUITEMCaption-Removes a menu item
SCM_REMOVE_IMAGE-Image IndexRemoves an image from the image list
SCM_SETTHEMETheme-Sets the current theme
SCM_GETTHEME--Returns the current theme as integer
All + functions should be called with SendStudioMsg(Message, Data, IntData). Each + "normal" function returns 1 on succeed, othwise 0.
+ + + + diff --git a/editor/studio/plugins/Functions and Events-Dateien/sheet002.htm b/editor/studio/plugins/Functions and Events-Dateien/sheet002.htm new file mode 100644 index 00000000..72281e42 --- /dev/null +++ b/editor/studio/plugins/Functions and Events-Dateien/sheet002.htm @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Events + for AMXX-Studio
EventParameters ( C )Parameters ( Delphi )Description
AppMessageHWND pHwnd; int pMessage; int pWParam; int pLParam; int pTime; POINT pPtpHwnd: HWND; pMessage: Integer; pWParam, pLParam: Integer; pTime: + Integer; pPt: TPointCalled when a message has been sent to the application
AutoCompleteSelectCHAR *pTextpText: PCharCalled when an item in the autocomplete list has been selected
AutoCompleteShowCHAR *pListpList: PCharCalled when the autocomplete list is being shown
CallTipClickint pPositionpPosition: IntegerCalled when a click on the calltip has been performed
CallTipShowCHAR *pListpList: PCharCalled when a calltip is being shown
Click--Called when a click on the editor has been performed
CodeSnippetClickCHAR *pTitle; CHAR *pCategory; CHAR *pCodepTitle, pCategory: PChar; pCode: PCharCalled when a click on a code-snippet has been performed
Compileint pCompileType; CHAR *Lang; CHAR *FilenamepCompileType: Integer; Lang, Filename: PCharCalled after a document has been compiled
Compilingint pCompileType; CHAR *Lang; CHAR *FilenamepCompileType: Integer; Lang, Filename: PCharCalled right before a document is being compiled
CreatedNewFilebyte ItemItem: ByteCalled after a document has been created (only called on a menu click)
CreatingNewFilebyte ItemItem: ByteCalled right before a document is being created (only called on a menu + click)
CustomItemClickCHAR *pCaptionpCaption: PCharCalled when a click on a custom menu item has been performed
DisplayingSearchCHAR *pExpression; CHAR *pSearchList; BOOL pCaseSensivity;BOOL + pWholeWords; pSearchFromCaret; BOOL pSelectedOnly; BOOL pRegEx; BOOL pForwardpExpression, pSearchList: PChar; pCaseSensivity, pWholeWords, + pSearchFromCaret, pSelectedOnly, pRegEx, pForward: BooleanCalled when the Search-Dialog is being shown
DocChangedint pIndex; CHAR *pFilename; CHAR *pHighlighter; BOOL pRestoreCaretpIndex: Integer; pFilename: PChar; pHighlighter: PChar; pRestoreCaret: + BooleanCalled when the active document has changed
DocChangingint pIndex; CHAR *pFilename; CHAR *pHighlighter; BOOL pRestoreCaretpIndex: Integer; pFilename: PChar; pHighlighter: PChar; pRestoreCaret: + BooleanCalled before the active document changes
KeyPressCHAR *pKeypKey: PCharCalled when a key has been pressed in the editor
LoadedCHAR *pFilenamepFilename: PCharCalled after a document has been opened
LoadingCHAR *pFilenamepFilename: PCharCalled when a new document is being loaded
ModifiedCHAR *pModifiedTextpModifiedText: PCharCalled when the code has been changed
OutputDoubleClickint pItemIndexpItemIndex: IntegerCalled when a double-click on the output list has been performed
OutputPopupint pItemIndexpItemIndex: IntegerCalled when the popup-menu of the output-list is being shown
PluginLoadload_info *LoadInfoLoadInfo: PLoadInfoCalled when the plugin is being loaded. Register menu items etc. here
PluginUnload--Called when the plugin is being unloaded. Remove registered objects here.
ProjectsChangedint pOldIndex; int pNewIndexpOldIndex, pNewIndex: IntegerCalled after the active projects have been changed
ProjectsChangingint pOldIndex; int pNewIndexpOldIndex, pNewIndex: IntegerCalled when the active projects change
SavedCHAR *pFilenamepFilename: PCharCalled after a document has been saved
SavingCHAR *pFilenamepFilename: PCharCalled when a document is being saved
SearchCHAR *pExpression; CHAR *pSearchList; BOOL pCaseSensivity;BOOL + pWholeWords; pSearchFromCaret; BOOL pSelectedOnly; BOOL pRegEx; BOOL pForwardpExpression, pSearchList: PChar; pCaseSensivity, pWholeWords, + pSearchFromCaret, pSelectedOnly, pRegEx, pForward: BooleanCalled when an expression is being searched
SearchAgainCHAR *pExpression; CHAR *pSearchList; BOOL pCaseSensivity;BOOL + pWholeWords; pSearchFromCaret; BOOL pSelectedOnly; BOOL pRegEx; BOOL pForwardpExpression, pSearchList: PChar; pCaseSensivity, pWholeWords, + pSearchFromCaret, pSelectedOnly, pRegEx, pForward: BooleanCalled when the user searches again an expression
SearchReplaceCHAR *pExpression; CHAR *pReplace; CHAR pExpList; CHAR *pRepList; BOOL + pCaseSensivity; BOOL pWholeWords; BOOL pSearchFromCaret; BOOL pSelectedOnly; + BOOL pRegEx; BOOL pForwardpExpression, pReplace, pExpList, pRepList: PChar; pCaseSensivity, + pWholeWords, pSearchFromCaret, pSelectedOnly, pRegEx, pForward: BooleanCalled when an expression is being replaced
Shortcutint pCharCode; int KeyDatapCharCode, pKeyData: IntegerCalled when a shortcut is being pressed
ShowHelpint pHelpTypepHelpType: IntegerCalled when the help is being opened
ThemeChangedCHAR *pThemepTheme: PCharCalled after the current theme has changed
UpdatedCodeExplorerCHAR *pLang; CHAR *pFilename; CHAR *pCurrProjectspLang, pFilename, pCurrProjects: PCharCalled after the code-explorer has been updated
UpdatedCodeInspectorCHAR *pLang; CHAR *pFilename; CHAR *pCurrProjectspLang, pFilename, pCurrProjects: PCharCalled after the code-inspector has been updated
UpdateSelint pSelStart; int pSelLength; int pFirstVisibleLinepSelStart, pSelLength, pFirstVisibleLine: IntegerCalled when the selection has been changed
UpdatingCodeExplorerCHAR *pLang; CHAR *pFilename; CHAR *pCurrProjectspLang, pFilename, pCurrProjects: PCharCalled when the code-explorer updates
UpdatingCodeInspectorCHAR *pLang; CHAR *pFilename; CHAR *pCurrProjectspLang, pFilename, pCurrProjects: PCharCalled when the code-inspector is being updated
VisibleControlChangeint pControl; BOOL pShowpControl: Integer; pShow: BooleanCalled when a visible control has been hidden or shown
You should + implement these events in this style:
Delphi: + function CustomItemClick(Caption: PChar): Integer; cdecl;
C: EXPORT + int CustomItemClick(CHAR *Caption)
All events + should return PLUGIN_CONTINUE, PLUGIN_HANDLED or PLUGIN_STOP
+ + + + diff --git a/editor/studio/plugins/Functions and Events-Dateien/stylesheet.css b/editor/studio/plugins/Functions and Events-Dateien/stylesheet.css new file mode 100644 index 00000000..f283e801 --- /dev/null +++ b/editor/studio/plugins/Functions and Events-Dateien/stylesheet.css @@ -0,0 +1,75 @@ +tr + {mso-height-source:auto;} +col + {mso-width-source:auto;} +br + {mso-data-placement:same-cell;} +.style0 + {mso-number-format:General; + text-align:general; + vertical-align:bottom; + white-space:nowrap; + mso-rotate:0; + mso-background-source:auto; + mso-pattern:auto; + color:windowtext; + font-size:10.0pt; + font-weight:400; + font-style:normal; + text-decoration:none; + font-family:Arial; + mso-generic-font-family:auto; + mso-font-charset:0; + border:none; + mso-protection:locked visible; + mso-style-name:Standard; + mso-style-id:0;} +td + {mso-style-parent:style0; + padding-top:1px; + padding-right:1px; + padding-left:1px; + mso-ignore:padding; + color:windowtext; + font-size:10.0pt; + font-weight:400; + font-style:normal; + text-decoration:none; + font-family:Arial; + mso-generic-font-family:auto; + mso-font-charset:0; + mso-number-format:General; + text-align:general; + vertical-align:bottom; + border:none; + mso-background-source:auto; + mso-pattern:auto; + mso-protection:locked visible; + white-space:nowrap; + mso-rotate:0;} +.xl24 + {mso-style-parent:style0; + font-weight:700; + font-family:Arial, sans-serif; + mso-font-charset:0; + text-align:center;} +.xl25 + {mso-style-parent:style0; + text-decoration:underline; + text-underline-style:single; + font-family:Arial, sans-serif; + mso-font-charset:0; + text-align:center;} +.xl26 + {mso-style-parent:style0; + text-align:center;} +.xl27 + {mso-style-parent:style0; + font-family:Arial, sans-serif; + mso-font-charset:0;} +.xl28 + {mso-style-parent:style0; + text-align:center;} +.xl29 + {mso-style-parent:style0; + text-align:left;} diff --git a/editor/studio/plugins/Functions and Events-Dateien/tabstrip.htm b/editor/studio/plugins/Functions and Events-Dateien/tabstrip.htm new file mode 100644 index 00000000..e92ebb07 --- /dev/null +++ b/editor/studio/plugins/Functions and Events-Dateien/tabstrip.htm @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + +
 Functions  Events 
+ + diff --git a/editor/studio/plugins/Functions and Events.htm b/editor/studio/plugins/Functions and Events.htm new file mode 100644 index 00000000..9aeecd89 --- /dev/null +++ b/editor/studio/plugins/Functions and Events.htm @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + <body> + <p>Diese Seite verwendet Frames. Frames werden von Ihrem Browser aber nicht unterstützt.</p> + </body> + + + diff --git a/editor/studio/plugins/Hello World - CPP.dll b/editor/studio/plugins/Hello World - CPP.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c1a18ee972275cbb2c066ab0cf6b8d67231b5a6 GIT binary patch literal 53248 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≠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 +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=Hello_World - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "Hello_World.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "Hello_World.mak" CFG="Hello_World - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "Hello_World - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") +!MESSAGE "Hello_World - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Hello_World - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HELLO_WORLD_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HELLO_WORLD_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "NDEBUG" +# ADD RSC /l 0x407 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 + +!ELSEIF "$(CFG)" == "Hello_World - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HELLO_WORLD_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HELLO_WORLD_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x407 /d "_DEBUG" +# ADD RSC /l 0x407 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "Hello_World - Win32 Release" +# Name "Hello_World - Win32 Debug" +# Begin Group "Quellcodedateien" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\sample.cpp +# End Source File +# End Group +# Begin Group "Header-Dateien" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\sample.h +# End Source File +# Begin Source File + +SOURCE=.\studio_api.h +# End Source File +# End Group +# Begin Group "Ressourcendateien" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.dsw b/editor/studio/plugins/Hello_World CPP/Hello_World.dsw new file mode 100644 index 00000000..488a64a6 --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/Hello_World.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "Hello_World"=".\Hello_World.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.opt b/editor/studio/plugins/Hello_World CPP/Hello_World.opt new file mode 100644 index 0000000000000000000000000000000000000000..3a7c254c3d5047620609d4bd7d2548b3727e38f3 GIT binary patch literal 49664 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 a(ck@6`Qg}-o$e{`Hg%5}AO_Zff&T%_z%F$F literal 0 HcmV?d00001 diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.plg b/editor/studio/plugins/Hello_World CPP/Hello_World.plg new file mode 100644 index 00000000..4e002d0e --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/Hello_World.plg @@ -0,0 +1,33 @@ + + +
+

Erstellungsprotokoll

+

+--------------------Konfiguration: Hello_World - Win32 Release-------------------- +

+

Befehlszeilen

+Erstellen der temporären Datei "C:\DOKUME~1\BASIC-~1\LOKALE~1\Temp\RSP9.tmp" mit Inhalten +[ +/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "HELLO_WORLD_EXPORTS" /Fp"Release/Hello_World.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +"C:\Dokumente und Einstellungen\Basic-Master\Eigene Dateien\Programmieren\AMXX-Studio\plugins\Hello_World CPP\sample.cpp" +] +Creating command line "cl.exe @"C:\DOKUME~1\BASIC-~1\LOKALE~1\Temp\RSP9.tmp"" +Erstellen der temporären Datei "C:\DOKUME~1\BASIC-~1\LOKALE~1\Temp\RSPA.tmp" mit Inhalten +[ +kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/Hello_World.pdb" /machine:I386 /out:"Release/Hello_World.dll" /implib:"Release/Hello_World.lib" +".\Release\sample.obj" +] +Erstellen der Befehlzeile "link.exe @"C:\DOKUME~1\BASIC-~1\LOKALE~1\Temp\RSPA.tmp"" +

Ausgabefenster

+Kompilierung läuft... +sample.cpp +Linker-Vorgang läuft... + Bibliothek Release/Hello_World.lib und Objekt Release/Hello_World.exp wird erstellt + + + +

Ergebnisse

+Hello_World.dll - 0 Fehler, 0 Warnung(en) +
+ + diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.sln b/editor/studio/plugins/Hello_World CPP/Hello_World.sln new file mode 100644 index 00000000..e7215c05 --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/Hello_World.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hello_World", "Hello_World.vcproj", "{A6E5B144-7439-4F23-A679-B6E8B42B606E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A6E5B144-7439-4F23-A679-B6E8B42B606E}.Debug|Win32.ActiveCfg = Debug|Win32 + {A6E5B144-7439-4F23-A679-B6E8B42B606E}.Debug|Win32.Build.0 = Debug|Win32 + {A6E5B144-7439-4F23-A679-B6E8B42B606E}.Release|Win32.ActiveCfg = Release|Win32 + {A6E5B144-7439-4F23-A679-B6E8B42B606E}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.suo b/editor/studio/plugins/Hello_World CPP/Hello_World.suo new file mode 100644 index 0000000000000000000000000000000000000000..9db80da556c8df57e602a0bb098cf91ac1e2748f GIT binary patch literal 11264 zcmeI2O>k625XWbOAmA4ejf#jXMg%1xAs-M>G+zipOduhE#KMp)fn<|SZ9;$os=Rsi zt;FFH&6}R->F(+2 zw?AB8{mUoU*8XZjwA(B((=#i~vaIqL*Mg;0#*}fP`{|jP8CPfwm-lHAN#Jk#`am#; zOF3)49|SAGa9{+RYf}w7I}c z7Ecvs>1~_O_7%BWSXDN>^4#<{u_Ziw|4CP)3yvu>Z1%zZ6j$x$e6CmXmQ~<|vZbB3 zV(5W%SJY$r&4d{-2h17HljbnT1by=56Ruj`W2GsJJ;77ohrAWD9>{0PwnV+~>#=i? zG$%QqH{F*16#W_Cst|2p{1sHvc+`hN_4QnSTQ)E9HtWyXKERjB7sv<5{^bW$F8kM6 zz98ENNEYgkruQlEG*}Cs0qelCU_E#a#KH4m19$;cf)~L?@Dfn_n}hQ!oVS1~Pz|<% z8c++ifjZ#(+sO5Humd!KonRMu6}$#^1J!+lb2DfGt)LCGgFWC)uovtDZvo%7&Tn(y z3A(^Ra0sZphx1|33yuV3$2h+Oj)Ok%E>PY73;k9;Rnhp@@y<`vXV(0<{#&{GlIT`z z$*+{uexb^;rTLKF{|U6BC4Fc>3SV&6jAD86h6xkrZp;jFZpR|WtdB^TBtMl8*?N6w zki3X2w#szaYrUJMMZM)}sjW7i>B*VkJ?H&~sM!zCQCpr4o;B0bQGQi;gh{v!@-#(@ z4Iy3_?J3<_4Uyh2gt7j?r!c!ttpp) zv!k$HC(y$VMmE5RQb;t#TCbR+m$C`Q*^kb~XX$wy@7+ghDQg#+hwa?&LtolCPtlU@ zrK?G5oZ{Y4`d{ZsuJaiYLLI;GR0`cj$g6jO-&fI%*5mg2JKC` z>0WZBjHYI0Vr3?Fpeb+?#$4Us6#I_*+Xc3M=I}-ABB4|x;%s0stTpxgsxZ-d0<$Kr z>Itg0ab0C=ZMS7Dw*C(4*YiwwHMZn3jwJV@R&5P`+&YnAY7N}Ai}nP{IBJ*r1mW%g zSL2NLlDUWjtU=1P$gu&XY(%0h$h9GmayzoDrK~BCXBE%tsHNxI__cy&dv%$~t0i(S zcFzCpkiNV>=PXNo$a7%=HElnAn0JEtAIJ2o3B>Niyw}w?uuCd-?lX4oudd#o`vso+ zY(dwFh&&6%DvGzSm|Da`W}2%D*W8 zp*%>j{OhUf-DxYM*WPi$#=;3Aop3Kar`%`dpTxJk1pe9a$1?K#;Z^T-k1+GvlZERJNikfBC3q0c$H z^T_b+gtwyl3|D2la`(+ehpM~W=B*a8Z@X-^Y9U*!&f0HZ3gYWJ!hvcmPB{#>^KW4` z6cA>{|N4SU{Sa2BI9s}(V2N{aZ!vvQq}z;D?4`(EGx594dawI7X30N)>HSDAfQ zzFy#eOU{2}`@g+t(V*o$#+Z}zW{+Kw)SEQAS%~J#ztgULNqRA6F_b0wHcHY3I)MC3 zUjJmxHv;+R-e|?KDwjRX{e1RDEchzCh^-*^C`*-srfR+2x;kx6vk{w}@pY5Afv*N< z(Jy6@2hcXB`SQL#GwkXWb5#EBcUrkyv)8jX!lxOnQV_T9nGw6Kzp?SppLg}Bb8mh# zk#cTps3dOD7wi$zC5qri@Y%{M*YK+)uF)}yj$T(hF?U+*ni!T|vFpB<*gDoE9nJ zYX!0?Wu=vsSDC)v>t978WeZfM9i^lu(k@VCn}K%Iy4F7j3XkaCTKfh*+WRqLvGUPB zDm+QHl9{J3`o vm}1A)pFfZ~gq2YDg1(S_2t?O_%Jk2n&w%JFpfdR=pUL~0YiR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/editor/studio/plugins/Hello_World CPP/Hello_World.vcproj.PC-BASIC.Basic-Master.user b/editor/studio/plugins/Hello_World CPP/Hello_World.vcproj.PC-BASIC.Basic-Master.user new file mode 100644 index 00000000..2509dd8f --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/Hello_World.vcproj.PC-BASIC.Basic-Master.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/editor/studio/plugins/Hello_World CPP/sample.cpp b/editor/studio/plugins/Hello_World CPP/sample.cpp new file mode 100644 index 00000000..33b40231 --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/sample.cpp @@ -0,0 +1,26 @@ +#include "sample.h" +#include "studio_api.h" +#include +#include +#include + + +EXPORT void PluginLoad(load_info *LoadInfo) { + LoadInfo->sPluginName = "C(++) Example"; // Set PlugIn-name + LoadInfo->sPluginDescription = "Simple example for creating plugins with C(++)"; // Set description + SendStudioMsg(SCM_MENU_ADDITEM, "Tools->Hello World! [C++]", -1); // Register menu items + /* [...] */ +} + +EXPORT void PluginUnload() { + SendStudioMsg(SCM_REMOVE_MENUITEM, "Hello World! [C++]", 0); +} + +EXPORT int CustomItemClick(CHAR *Caption) { + if (strcmp(Caption, "Hello World! [C++]") == 0) { // If caption is equal set text and return PLUGIN_HANDLED + SendStudioMsg(SCM_EDITOR_SETTEXT, "Hello World!\n\nThis is an example for C(++) plugins for AMXX-Studio.", 0); + return PLUGIN_HANDLED; + } + else + return PLUGIN_CONTINUE; +} \ No newline at end of file diff --git a/editor/studio/plugins/Hello_World CPP/sample.h b/editor/studio/plugins/Hello_World CPP/sample.h new file mode 100644 index 00000000..a86a1cbe --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/sample.h @@ -0,0 +1,9 @@ +#ifndef _MYPLUGIN_INCLUDE_H +#define _MYPLUGIN_INCLUDE_H + +#include "studio_api.h" + +EXPORT void PluginLoad(load_info *pInfo); +EXPORT void PluginUnload(); + +#endif //_MYPLUGIN_INCLUDE_H \ No newline at end of file diff --git a/editor/studio/plugins/Hello_World CPP/studio_api.h b/editor/studio/plugins/Hello_World CPP/studio_api.h new file mode 100644 index 00000000..f7fb0a01 --- /dev/null +++ b/editor/studio/plugins/Hello_World CPP/studio_api.h @@ -0,0 +1,195 @@ +/* studio_api.h by the AMX Mod X Dev Team */ + +#ifndef _INCLUDE_STUDIO_H +#define _INCLUDE_STUDIO_H + +#define WINDOWS_LEAN_AND_MEAN +#include +#include + +// DLL Export +#define EXPORT extern "C" __declspec(dllexport) +// Return values for functions +#define PLUGIN_CONTINUE 0 +#define PLUGIN_STOP 1 +#define PLUGIN_HANDLED 2 +// Important values for events +#define COMP_DEFAULT 0 +#define COMP_STARTHL 1 +#define COMP_UPLOAD 2 +#define HELP_DEFAULT 0 +#define HELP_SEARCH 1 +#define HELP_FORUMS 2 +#define HELP_ABOUT 3 +#define CTRL_OUTPUT 0 // Output list +#define CTRL_CODETOOLS_MAIN 1 // Code-Tools window +#define CTRL_CODETOOLS_ITEM 2 // Code-Tools tab +#define CTRL_NOTES 3 // Notes tab +#define NEW_PAWN_PLUGIN 0 +#define NEW_PAWN_EMPTYPLUGIN 1 +#define NEW_PAWN_HEADER 2 +#define NEW_CPP_MODULE 3 +#define NEW_CPP_UNIT 4 +#define NEW_CPP_HEADER 5 +#define NEW_OTHER_TEXTFILE 6 +#define NEW_OTHER_HTML 7 +#define NEW_OTHER_SQL 8 +#define NEW_OTHER_XML 9 + +// Messages (see "Functions and Events.txt" for further information) +#define SCM_SHOWPROGRESS WM_USER + 0x100 // Show progressbar +#define SCM_HIDEPROGRESS WM_USER + 0x101 // Hide progressbar +#define SCM_UPDATEPROGRESS WM_USER + 0x102 // Update progress +#define SCM_LOADCODESNIPPETS WM_USER + 0x103 // Load Code-Snippets of a language +#define SCM_CODESNIPPETCLICK WM_USER + 0x104 // Simulate click on a Code-Snippet +#define SCM_MIRC_CMD WM_USER + 0x105 // Send a command to mIRC (like /msg #amxmodx hello) +#define SCM_RELOADINI WM_USER + 0x106 // Reload configuration ini (Hint: This is not the whole configuration!) +#define SCM_SELECTLANGUAGE WM_USER + 0x107 // Set the highlighter language of the active document +#define SCM_LOADFILE WM_USER + 0x108 // Load a custom file +#define SCM_CURRPROJECTS WM_USER + 0x109 // Returns the current projects index +#define SCM_COMPILE WM_USER + 0x110 // Simulate click on the "Compile"-button +#define SCM_COMPILE_UPLOAD WM_USER + 0x111 // Simulate click on the "Compile and upload"-button +#define SCM_COMPILE_STARTHL WM_USER + 0x112 // Simulate click on the "Compile and Start HL"-button +#define SCM_MENU_LOADIMAGE WM_USER + 0x113 // Load an image (bitmap), returns the image index +#define SCM_MENU_ADDITEM WM_USER + 0x114 // Add a menu item +#define SCM_MENU_ADDSUBITEM WM_USER + 0x115 // Add a submenu item +#define SCM_MENU_FAKECLICK WM_USER + 0x116 // Fake a click on a custom menu item +#define SCM_MENU_SHOWITEM WM_USER + 0x117 // Show an item +#define SCM_MENU_HIDEITEM WM_USER + 0x118 // Hide an item +#define SCM_PLUGIN_LOAD WM_USER + 0x119 // Load a plugin +#define SCM_PLUGIN_UNLOAD WM_USER + 0x120 // Unload a plugin +#define SCM_SETTINGS_CREATEPAGE WM_USER + 0x121 // Create a new settings-page, returns the new HWND +#define SCM_SETTINGS_REMOVEPAGE WM_USER + 0x194 // Removes a page from the settings dialog +#define SCM_CODEINSPECTOR_CLEAR WM_USER + 0x122 // Clear the code-inspector +#define SCM_CODEINSPECTOR_ADD WM_USER + 0x123 // Add a field to the code-inspector +#define SCM_CODEINSPECTOR_ADDCOMBO WM_USER + 0x124 // Add a combobox-item to the code-inspector +#define SCM_CODEINSPECTOR_SETVALUE WM_USER + 0x125 // Set a field of the code-inspector +#define SCM_CODEINSPECTOR_SETNAME WM_USER + 0x126 // Set the name of an item +#define SCM_CODEINSPECTOR_GETVALUE WM_USER + 0x127 // Get the value of an item +#define SCM_CODEINSPECTOR_GETNAME WM_USER + 0x128 // Get the name of an item +#define SCM_CODEINSPECTOR_COUNT WM_USER + 0x129 // Gets the count +#define SCM_CODEINSPECTOR_BEGINUPDATE WM_USER + 0x130 // Begin update +#define SCM_CODEINSPECTOR_ENDUPDATE WM_USER + 0x131 // End update +#define SCM_CODEINSPECTOR_DELETE WM_USER + 0x132 // Deletes a field in the code-inspector + +#define SCM_PAWN_NEWFILE WM_USER + 0x133 // Create new Pawn-file +#define SCM_PAWN_SAVEFILE WM_USER + 0x134 // Save a Pawn-file +#define SCM_PAWN_CLOSEFILE WM_USER + 0x135 // Close a Pawn-file +#define SCM_PAWN_ISUNTITLED WM_USER + 0x136 // Returns 1 if untitled, otherwise 0 +#define SCM_PAWN_ACTIVATE WM_USER + 0x137 // Activate the Pawn Projects +#define SCM_PAWN_ACTIVATEDOC WM_USER + 0x138 // Activate a Pawn document +#define SCM_PAWN_GETNOTES WM_USER + 0x139 // Gets the notes text (RTF) +#define SCM_PAWN_SETNOTES WM_USER + 0x140 // Set the notes text (RTF) +#define SCM_PAWN_GETFILENAME WM_USER + 0x141 // Gets the filename of a document +#define SCM_PAWN_SETFILENAME WM_USER + 0x142 // Sets the filename +#define SCM_PAWN_FILECOUNT WM_USER + 0x195 // Returns the number of loaded scripts +#define SCM_PAWN_GETTEXT WM_USER + 0x143 // Gets the text of a document +#define SCM_PAWN_SETTEXT WM_USER + 0x144 // Sets the text of a document + +#define SCM_CPP_NEWFILE WM_USER + 0x145 // Create new Pawn-file +#define SCM_CPP_SAVEFILE WM_USER + 0x146 // Save a Pawn-file +#define SCM_CPP_CLOSEFILE WM_USER + 0x147 // Close a Pawn-file +#define SCM_CPP_ISUNTITLED WM_USER + 0x148 // Returns 1 if untitled, otherwise 0 +#define SCM_CPP_ACTIVATE WM_USER + 0x149 // Activate the Pawn Projects +#define SCM_CPP_ACTIVATEDOC WM_USER + 0x150 // Activate a Pawn document +#define SCM_CPP_ACTIVATEIDE WM_USER + 0x151 // Activate the C++ IDE +#define SCM_CPP_GETNOTES WM_USER + 0x152 // Gets the notes text (RTF) +#define SCM_CPP_SETNOTES WM_USER + 0x153 // Set the notes text (RTF) +#define SCM_CPP_GETFILENAME WM_USER + 0x154 // Gets the filename of a document +#define SCM_CPP_SETFILENAME WM_USER + 0x155 // Sets the filename +#define SCM_CPP_FILECOUNT WM_USER + 0x196 // Returns the number of loaded C(++) files +#define SCM_CPP_GETTEXT WM_USER + 0x156 // Gets the text of a document +#define SCM_CPP_SETTEXT WM_USER + 0x157 // Sets the text of a document + +#define SCM_OTHER_NEWFILE WM_USER + 0x158 // Create a new file +#define SCM_OTHER_SAVEFILE WM_USER + 0x159 // Save a file +#define SCM_OTHER_CLOSEFILE WM_USER + 0x160 // Close a file +#define SCM_OTHER_ISUNTITLED WM_USER + 0x161 // Returns 1 if untitled, otherwise 0 +#define SCM_OTHER_ACTIVATE WM_USER + 0x162 // Activate a file +#define SCM_OTHER_ACTIVATEDOC WM_USER + 0x163 // Activate a document +#define SCM_OTHER_GETNOTES WM_USER + 0x164 // Gets the notes text (RTF) +#define SCM_OTHER_SETNOTES WM_USER + 0x165 // Set the notes text (RTF) +#define SCM_OTHER_GETFILENAME WM_USER + 0x166 // Gets the filename of a document +#define SCM_OTHER_SETFILENAME WM_USER + 0x167 // Sets the filename +#define SCM_OTHER_FILECOUNT WM_USER + 0x197 // Returns the number of loaded files +#define SCM_OTHER_GETTEXT WM_USER + 0x168 // Gets the text of a document +#define SCM_OTHER_SETTEXT WM_USER + 0x169 // Sets the text of a document + +#define SCM_OUTPUT_SHOW WM_USER + 0x170 // Show the output +#define SCM_OUTPUT_HIDE WM_USER + 0x171 // Hide the output +#define SCM_OUTPUT_ADD WM_USER + 0x172 // Add an item to the output +#define SCM_OUTPUT_CLEAR WM_USER + 0x173 // Clear the output +#define SCM_OUTPUT_DELETE WM_USER + 0x174 // Delete an item in the output +#define SCM_OUTPUT_GETTEXT WM_USER + 0x175 // Get the whole output +#define SCM_OUTPUT_GETITEM WM_USER + 0x176 // Get the text of a specific item +#define SCM_OUTPUT_INDEXOF WM_USER + 0x177 // Gets the item index of an item, returns -1 if not found +#define SCM_ACTIVE_DOCUMENT WM_USER + 0x178 // Returns the index of the active document +#define SCM_ACTIVE_PROJECTS WM_USER + 0x179 // Returns the index of the active projects +#define SCM_EDITOR_SETTEXT WM_USER + 0x180 // Sets the editor's text +#define SCM_EDITOR_GETTEXT WM_USER + 0x181 // Gets the editor's text +#define SCM_EDTIOR_SETCALLTIPS WM_USER + 0x182 // Sets the calltips +#define SCM_EDITOR_SHOWCALLTIP WM_USER + 0x183 // Shows the calltip +#define SCM_EDITOR_SETAUTOCOMPLETE WM_USER + 0x184 // Sets the autocomplete list +#define SCM_EDITOR_SHOWAUTOCOMPLETE WM_USER + 0x185 // Show the autocomplete list +#define SCM_EDITOR_GETSELSTART WM_USER + 0x186 // Gets the sel start +#define SCM_EDITOR_GETSELLENGTH WM_USER + 0x187 // Gets the sel length +#define SCM_EDITOR_SETSELSTART WM_USER + 0x188 // Set sel start +#define SCM_EDITOR_SETSELLENGH WM_USER + 0x189 // Set sel length + +#define SCM_REMOVE_MENUITEM WM_USER + 0x190 // Remove an item from the menu +#define SCM_REMOVE_IMAGE WM_USER + 0x191 // Remove an image from the image list +#define SCM_SETTHEME WM_USER + 0x192 // Set theme +#define SCM_GETTHEME WM_USER + 0x193 // Get theme + + +struct load_info { + /* Plugin Values */ + const CHAR *sPluginName; + const CHAR *sPluginDescription; + /* Form Handles */ + HWND *hModuleHandle; + HWND *hAllFilesForm; + HWND *hAutoIndent; + HWND *hClose; + HWND *hConnGen; + HWND *hGoToLine; + HWND *hHTMLPreview; + HWND *hHudMsgGenerator; + HWND *hInfo; + HWND *hIRCPaster; + HWND *hMainForm; + HWND *hMenuGenerator; + HWND *hMOTDGen; + HWND *hPluginsIniEditor; + HWND *hReplace; + HWND *hSearch; + HWND *hSelectColor; + HWND *hSettings; + HWND *hSocketsTerminal; + HWND *hParamEdit; + /* Important Control Handles */ + HWND *hOutput; + HWND *hCodeExplorer; + HWND *hCodeInspector; + HWND *hNotes; + /* Other */ + void *pApplication; +}; + +int SendStudioMsg(int Message, const CHAR *Data, int IntData) { + HWND StudioHandle; + StudioHandle = FindWindow("TfrmMain", "AMXX-Studio"); + if (StudioHandle != 0) { + COPYDATASTRUCT sMessage; + sMessage.dwData = IntData; + sMessage.cbData = strlen(Data) + 1; + sMessage.lpData = (void *) Data; + return SendMessage(StudioHandle, WM_COPYDATA, (WPARAM)Message, (LPARAM)&sMessage); + } + else + return -1; +} + +// If you receive strings as integer, simply cast them with (CHAR *) SendStudioMsg(...); + +#endif \ No newline at end of file diff --git a/editor/studio/plugins/Hello_World Delphi/HelloWorld.cfg b/editor/studio/plugins/Hello_World Delphi/HelloWorld.cfg new file mode 100644 index 00000000..662b86fe --- /dev/null +++ b/editor/studio/plugins/Hello_World Delphi/HelloWorld.cfg @@ -0,0 +1,38 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-LE"c:\programme\borland\delphi7\Projects\Bpl" +-LN"c:\programme\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/editor/studio/plugins/Hello_World Delphi/HelloWorld.dpr b/editor/studio/plugins/Hello_World Delphi/HelloWorld.dpr new file mode 100644 index 00000000..2a0b95d8 --- /dev/null +++ b/editor/studio/plugins/Hello_World Delphi/HelloWorld.dpr @@ -0,0 +1,49 @@ +library HelloWorld; + + +uses + SysUtils, + Classes, + Windows, + Messages, + studioapi; + +{$R *.res} + +{ Commands here } + +procedure PluginLoad(LoadInfo: PLoadInfo); cdecl; +begin + // Set Plugin infos after load + LoadInfo.sPluginName := 'Hello World'; + LoadInfo.sPluginDescription := 'Simple Hello World example (Delphi).'; + // Create menu item in Tools with the caption "Hello World! [Delphi]" and with ImageIndex -1 (no image) + SendStudioMsg(SCM_MENU_ADDITEM, 'Tools->Hello World! [Delphi]', -1); +end; + +procedure PluginUnload; cdecl; +begin + // Remove menu stuff etc. + SendStudioMsg(SCM_REMOVE_MENUITEM, 'Hello World! [Delphi]', -1); +end; + +function CustomItemClick(pCaption: PChar): Integer; cdecl; +begin + // Handle custom click + if pCaption = 'Hello World! [Delphi]' then begin + SendStudioMsg(SCM_EDITOR_SETTEXT, 'Hello World!' + #13 + #13 + 'This is a simple example for creating plugins for AMXX-Studio in Delphi.', 0); + Result := PLUGIN_HANDLED; + end + else + Result := PLUGIN_CONTINUE; +end; + +exports // Export all DLL functions + PluginLoad, + PluginUnload, + CustomItemClick; + +begin + +end. + diff --git a/editor/studio/plugins/Hello_World Delphi/HelloWorld.res b/editor/studio/plugins/Hello_World Delphi/HelloWorld.res new file mode 100644 index 0000000000000000000000000000000000000000..1e4099ba3d5b244035f1f4e2788cda692b773db3 GIT binary patch literal 876 zcmZuwv1;5v5PdocERb=|5U@KR!r18&p)wFV#5lM}{0|{mZ8(CqOJrO`pu)d$MonNE zrOIyv(zv|NftZZntfb2YGThV7+xKR6*}VmT8KK&P=|6Eh8TF8!z-!a#Ml_n9Fqsj@ zM1WzMHUEza;15;R5BxGEDs){(!8T!o_5;8Dz7$EeZ84?lBaxhut$18FHnHL`mT!-C zpss6?o4?!}GDIgQ!(1cn4WiSs945#!ye^81^4L4-rp+b?Wmy#OJx{1loGadyA6MKt zH&2TTUl7-ld0q|;MDktAqmGdu^nP%GUFTAlroJ9A7r1uw!*%}Uj`F@=54OOZ4Sz>H zw}v~1E`7QfIFDo}b#7k<9yjfDlBP%o19|49(ZGhr6B!J(*nuV@^1=If=roW6tsU=k z&$%w(uOpW>r%_nXEYDeJ+zJ}zBDJ*ENaSn7`(QK!U-XoBWO_1g$cV)PRiHYe3snuv z@Jg3k(B&pRFJm12G5~vq`!)PwP8=Ed_cHA1<<+%T`dz#GP`gio{&?|-(gqO{mqbT= pBYvvt-DB?J8KJs`H+YFNyd_@YoZ}el@4{X~fY~haufkqYfCrhd(P97q literal 0 HcmV?d00001 diff --git a/editor/studio/plugins/Hello_World Delphi/studioapi.pas b/editor/studio/plugins/Hello_World Delphi/studioapi.pas new file mode 100644 index 00000000..5508db64 --- /dev/null +++ b/editor/studio/plugins/Hello_World Delphi/studioapi.pas @@ -0,0 +1,194 @@ +unit studioapi; + +interface + +uses SysUtils, Windows, Messages; + +type TLoadInfo = record + { Plugin values } + sPluginName: PChar; + sPluginDescription: PChar; + { Form Handles } + hAllFilesForm: PHandle; + hAutoIndent: PHandle; + hClose: PHandle; + hConnGen: PHandle; + hGoToLine: PHandle; + hHTMLPreview: PHandle; + hHudMsgGenerator: PHandle; + hInfo: PHandle; + hIRCPaster: PHandle; + hMainForm: PHandle; + hMenuGenerator: PHandle; + hMOTDGen: PHandle; + hPluginsIniEditor: PHandle; + hReplace: PHandle; + hSearch: PHandle; + hSelectColor: PHandle; + hSettings: PHandle; + hSocketsTerminal: PHandle; + { Important Control Handles } + hOutput: PHandle; + hCodeExplorer: PHandle; + hCodeInspector: PHandle; // even if it won't be useful + hNotes: PHandle; + { Other } + pApplication: Pointer; // this is only useful for Delphi developers +end; + +type PLoadInfo = ^TLoadInfo; + TLoadPlugin = procedure (LoadInfo: PLoadInfo); cdecl; + TUnloadPlugin = procedure; cdecl; + +const { Return values for dlls } + PLUGIN_CONTINUE = 0; // continue... + PLUGIN_STOP = 1; // stop calling funcs and don't handle the command + PLUGIN_HANDLED = 2; // don't handle the command + { Compile values } + COMP_DEFAULT = 0; + COMP_STARTHL = 1; + COMP_UPLOAD = 2; + { Help values } + HELP_DEFAULT = 0; + HELP_SEARCH = 1; + HELP_FORUMS = 2; + HELP_ABOUT = 3; + { Controls for visible state } + CTRL_OUTPUT = 0; // Output list + CTRL_CODETOOLS_MAIN = 1; // Code-Tools window + CTRL_CODETOOLS_ITEM = 2; // Code-Tools tab + CTRL_NOTES = 3; // Notes tab + { Languages } + NEW_PAWN_PLUGIN = 0; + NEW_PAWN_EMPTYPLUGIN = 1; + NEW_PAWN_HEADER = 2; + NEW_CPP_MODULE = 3; + NEW_CPP_UNIT = 4; + NEW_CPP_HEADER = 5; + NEW_OTHER_TEXTFILE = 6; + NEW_OTHER_HTML = 7; + NEW_OTHER_SQL = 8; + NEW_OTHER_XML = 9; + +const SCM_SHOWPROGRESS = WM_USER + $100; + SCM_HIDEPROGRESS = WM_USER + $101; + SCM_UPDATEPROGRESS = WM_USER + $102; + SCM_LOADCODESNIPPETS = WM_USER + $103; + SCM_CODESNIPPETCLICK = WM_USER + $104; + SCM_MIRC_CMD = WM_USER + $105; + SCM_RELOADINI = WM_USER + $106; + SCM_SELECTLANGUAGE = WM_USER + $107; + SCM_LOADFILE = WM_USER + $108; + SCM_CURRPROJECTS = WM_USER + $109; + SCM_COMPILE = WM_USER + $110; + SCM_COMPILE_UPLOAD = WM_USER + $111; + SCM_COMPILE_STARTHL = WM_USER + $112; + SCM_MENU_LOADIMAGE = WM_USER + $113; + SCM_MENU_ADDITEM = WM_USER + $114; + SCM_MENU_ADDSUBITEM = WM_USER + $115; + SCM_MENU_FAKECLICK = WM_USER + $116; + SCM_MENU_SHOWITEM = WM_USER + $117; + SCM_MENU_HIDEITEM = WM_USER + $118; + SCM_PLUGIN_LOAD = WM_USER + $119; + SCM_PLUGIN_UNLOAD = WM_USER + $120; + SCM_SETTINGS_CREATEPAGE = WM_USER + $121; + SCM_CODEINSPECTOR_CLEAR = WM_USER + $122; + SCM_CODEINSPECTOR_ADD = WM_USER + $123; + SCM_CODEINSPECTOR_ADDCOMBO = WM_USER + $124; + SCM_CODEINSPECTOR_SETVALUE = WM_USER + $125; + SCM_CODEINSPECTOR_SETNAME = WM_USER + $126; + SCM_CODEINSPECTOR_GETVALUE = WM_USER + $127; + SCM_CODEINSPECTOR_GETNAME = WM_USER + $128; + SCM_CODEINSPECTOR_COUNT = WM_USER + $129; + SCM_CODEINSPECTOR_BEGINUPDATE = WM_USER + $130; + SCM_CODEINSPECTOR_ENDUPDATE = WM_USER + $131; + SCM_CODEINSPECTOR_DELETE = WM_USER + $132; + + SCM_PAWN_NEWFILE = WM_USER + $133; + SCM_PAWN_SAVEFILE = WM_USER + $134; + SCM_PAWN_CLOSEFILE = WM_USER + $135; + SCM_PAWN_ISUNTITLED = WM_USER + $136; + SCM_PAWN_ACTIVATE = WM_USER + $137; + SCM_PAWN_ACTIVATEDOC = WM_USER + $138; + SCM_PAWN_GETNOTES = WM_USER + $139; + SCM_PAWN_SETNOTES = WM_USER + $140; + SCM_PAWN_GETFILENAME = WM_USER + $141; + SCM_PAWN_SETFILENAME = WM_USER + $142; + SCM_PAWN_GETTEXT = WM_USER + $143; + SCM_PAWN_SETTEXT = WM_USER + $144; + + SCM_CPP_NEWFILE = WM_USER + $145; + SCM_CPP_SAVEFILE = WM_USER + $146; + SCM_CPP_CLOSEFILE = WM_USER + $147; + SCM_CPP_ISUNTITLED = WM_USER + $148; + SCM_CPP_ACTIVATE = WM_USER + $149; + SCM_CPP_ACTIVATEDOC = WM_USER + $150; + SCM_CPP_ACTIVATEIDE = WM_USER + $151; + SCM_CPP_GETNOTES = WM_USER + $152; + SCM_CPP_SETNOTES = WM_USER + $153; + SCM_CPP_GETFILENAME = WM_USER + $154; + SCM_CPP_SETFILENAME = WM_USER + $155; + SCM_CPP_GETTEXT = WM_USER + $156; + SCM_CPP_SETTEXT = WM_USER + $157; + + SCM_OTHER_NEWFILE = WM_USER + $158; + SCM_OTHER_SAVEFILE = WM_USER + $159; + SCM_OTHER_CLOSEFILE = WM_USER + $160; + SCM_OTHER_ISUNTITLED = WM_USER + $161; + SCM_OTHER_ACTIVATE = WM_USER + $162; + SCM_OTHER_ACTIVATEDOC = WM_USER + $163; + SCM_OTHER_GETNOTES = WM_USER + $164; + SCM_OTHER_SETNOTES = WM_USER + $165; + SCM_OTHER_GETFILENAME = WM_USER + $166; + SCM_OTHER_SETFILENAME = WM_USER + $167; + SCM_OTHER_GETTEXT = WM_USER + $168; + SCM_OTHER_SETTEXT = WM_USER + $169; + + SCM_OUTPUT_SHOW = WM_USER + $170; + SCM_OUTPUT_HIDE = WM_USER + $171; + SCM_OUTPUT_ADD = WM_USER + $172; + SCM_OUTPUT_CLEAR = WM_USER + $173; + SCM_OUTPUT_DELETE = WM_USER + $174; + SCM_OUTPUT_GETTEXT = WM_USER + $175; + SCM_OUTPUT_GETITEM = WM_USER + $176; + SCM_OUTPUT_INDEXOF = WM_USER + $177; + SCM_ACTIVE_DOCUMENT = WM_USER + $178; + SCM_ACTIVE_PROJECTS = WM_USER + $179; + SCM_EDITOR_SETTEXT = WM_USER + $180; + SCM_EDITOR_GETTEXT = WM_USER + $181; + SCM_EDTIOR_SETCALLTIPS = WM_USER + $182; + SCM_EDITOR_SHOWCALLTIP = WM_USER + $183; + SCM_EDITOR_SETAUTOCOMPLETE = WM_USER + $184; + SCM_EDITOR_SHOWAUTOCOMPLETE = WM_USER + $185; + SCM_EDITOR_GETSELSTART = WM_USER + $186; + SCM_EDITOR_GETSELLENGTH = WM_USER + $187; + SCM_EDITOR_SETSELSTART = WM_USER + $188; + SCM_EDITOR_SETSELLENGH = WM_USER + $189; + + SCM_REMOVE_MENUITEM = WM_USER + $190; + SCM_REMOVE_IMAGE = WM_USER + $191; + SCM_SETTHEME = WM_USER + $192; + SCM_GETTHEME = WM_USER + $193; + +function SendStudioMsg(eMessage: Integer; eData: String; eIntData: Integer): Integer; + +implementation + +function SendStudioMsg(eMessage: Integer; eData: String; eIntData: Integer): Integer; +var eStudioHandle: HWND; + eCopyDataStruct: TCopyDataStruct; +begin + with eCopyDataStruct do begin + dwData := eIntData; + cbData := Length(eData) + 1; + lpData := PChar(eData); + end; + + eStudioHandle := FindWindow('TfrmMain', 'AMXX-Studio'); + if eStudioHandle <> 0 then + Result := SendMessage(eStudioHandle, WM_COPYDATA, eMessage, LongInt(@eCopyDataStruct)) + else + Result := 0; +end; + +end.