OK, I`ll try to make it short, but it`s a lot
0.) Make it possible to set Callbackfunctions for many Events (and also for 2. of this list)
It could look like this
Code: Select all
PBIDE_AddFunction_OnEvent(#PBIDE_EVENT_MENU,#PBIDE_MENU_COMPILER_START,#PBIDE_CALLBACK_CALLBEFORE,@Start_Aufruf())
-On Menu-Events (See 1.3)
-On Highlighting, Typing and Autocompleting-Events
-On Debugger-Events
-On Events that belong to request 2.)
1.)Those things that are possible with the current IDE
1.1)Editing Possibilities
-Getting and Setting the active Tab
-Moving Tabs (Like "Sort SourceCodes")
-Getting and Setting the caretpos in the Editor-Tab
-Getting and Setting Selection
-Getting and Setting the Text in the Current Line
1.2)Files
-Open/Close Files
1.3)Menu
-Please create a List of Constants for each MenuItem
-Make it possible to read/write the Menuitem Entrie names
-Make it possible to simulate a Menu Event
1.4)AutoComplete
-Make it possible to access (add/delete/make (in)visible Items, If possibly like that:) the full list and the List that fits to the current typed code
It could look like this
Code: Select all
Enumeration ;AutoComplete-Types (Could be done PB-Intern)
#PBIDE_AUTOCOMPLETE_TYPE_VAR
#PBIDE_AUTOCOMPLETE_TYPE_CONSTANT
#PBIDE_AUTOCOMPLETE_TYPE_PROCEDURE
...
EndEnumeration
Enumeration ;AutoComplete Extensionss (Could be done PB-Intern)
#PBIDE_AUTOCOMPLETE_EXT_2DDrawing
#PBIDE_AUTOCOMPLETE_EXT_GADGETS
#PBIDE_AUTOCOMPLETE_EXT_NETWORK
...
EndEnumeration
Structure PBIDE_Definition
file.s ;Path of the file
line.l
description; at first, this could be the full line Text
EndStructure
Structure PBIDE_AUTOCOMPLETE
name.s ;Name of the Autocomplete-Item; this is what would be auto-completed
intern_extrn.b;Indecates, if This is a PB-Intern Var/Proc or a userdefined var/proc...
type.b;Function, Procedure, etc, Var_Global,Var_Protected, Var_Static.....
type_extension.b;A list of Extensions for PB-intern Procedures
Definition.PBIDE_Definition
EndStructure
Global NewList Entries.PBIDE_AUTOCOMPLETE()
...
;We only write projects without Network Support
PBIDE_AutoComplete_GetFullList(Entries())
ForEach Entries()
if Entries()\intern=#PBIDE_AutoComplete_Intern and Entries()\type_Extension=#PBIDE_AUTOCOMPLETE_EXT_NETWORK
DeleteElement(Entries())
EndIf
Next
PBIDE_AutoComplete_SetFullList(Entries())
;There Must be some way to even hold these Extra-Programs alive
Repeat
Delay(10)
event= PBIDE_WorkOutEvents()
Until event=#PBIDE_EVENT_CloseMe
;On finish reset the list
PBIDE_AutoComplete_ResetFullList(Entries())
END
Reseting could be done by the IDE itself, filling the Structure with things like "definition\description" could be done by IDE-Tools
1.5)Changing WindowLayout
-Changing IDE-Highlighting
-Moving the Spliters to resize the bottom/left lines
-Change the layout of the Toolbar
2.)Some things, that would be "Todo"
A little prolog
All this should aim to a new multiple-vs-unique-Window-Management for the IDE. Something like Docking and Undocking and Extern-GUI-Customizing.
I`d like to see, that Extern tools could be included as Panelentries on the tools Bar or the bottombar or in the Tablist
as well as Code-Files could be opened in Extra windows, the tools bar or the bottombar.
I'm not quite sure how hard this is to implement, but I'm sure it would be great.
2.1)That ListView on the Bottom, that only shows the Compiler-Output is IMHO lost space. I saw in other IDEs, that they have a panel there with different Entries:
-Compiler Output
-FindList for Search (see here also 2.6)
-DebugOutput
-Information-Panel
For PBIDE I would like to ask for a Panelgadget with different panels like in the toolsbar on the right/left of the Editor.
2.2)Make PanelEntries moveable and Dockable. When just setting all Panel-Entries on extra Container-Gadgets, it should be possible to assign them to different panelgadgets or to new Childwindows.(on windows it would be done with SetParent, I think) and this way it would be easy to customize the IDE for everyone. For example, moving a Code-Tab to the toolsbar would make it possible to compare to Codefiles.
2.3)Allow extern PanelEntries.
What I mean is to make it possible to add Tools with an own GUI inside the PureBasic-IDE and controlling this GUI (Button-Events, Filling Listviews etc.) by callbacks.
Some Things, that could become possible with this
2.3.1)Strg+Alt+Left MouseClick on a Tab should open a Window that includes a ScintillaGadget with the code.
Doing this again should close this Window. It should be marked, that there is an open Window.
2.3.2)Nearly same thing. Strg+Alt+ Left MouseClick on a Procedure Call should open such a window and navigate to the Procedures Declaration
2.3.3)I`d liked to have a search-function for whole projects that can do the following:
-Fill a ListView with all found lines; Clicking on an Entry should navigate to the specific tab and line
-Code-Specific-Searching, which means: Search Strings, Search Variables, Search Procedures, Search Constants, etc
-Mark the found lines in the Listview: For example for Variables: Declaration-Lines are green, "Setting Value to the Variable"-Lines are blue,"Getting Value"-Lines are Red.
-Perhaps marking, what is to be found.
2.3.4)Advanced Options like renaming Variables could be done from Inside the IDE
2.3.5)A multiple line Information. In big projects, one line of Description is not enough to declare, what a function does and what the variables are REALLY used for.
Espacially point 2.3.3 and 2.3.5 are things that should belong to the IDE, and so they should (in my opinion) not be opened in extra windows.
So, I think, I can understand, that you're wishing to say "sorry, this wount come" and I know, that it´s not done in one day, but I think it could help to make IDE-Tools more effective and more people would think about to write things like advanced Search and so on.
So, thanks for reading this thousands of lines, I would have written a little shorter, if possible, but it took some time to write all this understandable and short.
Greetings
Franky
PS: If Point 2 is to far away from the question of this thread, I could also move it to an extra one. But I thought, It would in fit here.