-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DISCUSSION] A friendly interface #1
Comments
Now that you mention it, since the native scripts are technically scripts, it does sound like a good idea to give them their own screen; maybe even have their source code editable from Godot too. |
I'm making a mockup screen now to see how it would look. |
@SIsilicon I'm not sure I'd go that far. I actually (thus far looking at the addons) much prefer your approach of using a bottom panel, especially since it better matches the way Mono support works (it's a context-sensitive viewer panel). If you really want official script editing support for a language then it should be done with a PluginScript, not NativeScript, and that's not what these native integration tools are designed to help with. At least, that's my thought on it. Even if you manage the content from Godot, I would still expect people to primarily edit the files from a separate dedicated text editor with existing tools for syntax highlighting, autocompletion, and other things related to the language in question. |
Oh yeah, I definitely agree with editing the source from another application. I mean like, to be able to at most, preview the source code. Definitely don't want it to be the main editor of said source code. |
@SIsilicon If all someone wants to do is preview the source code, that should already be doable with the existing ScriptEditor or, as a last resort, the existing FileEditor plugin maintained by fenixhub. |
yeah agree with @willnationsdev , for that a option called "Import source files after build" is doable when users want to share their native source code. Now about the bottom panel, it will be a problem when lot of classes need to be managed! |
Ok, gotcha. |
unless whe have a button to popup a window that can show a lot of classes at same time! |
I fail to see how it would be a problem. You would conceivably have just as much space as the FileSystemDock, and the library/class stuff should probably be modeled in a similar manner. Something like...
Just use a Tree node inside of a ScrollContainer and you can do pretty much everything you need from there. Have a different icon on the left depending on whether something is a library or a folder, and then if it's a class, use a default "class" icon or the script class icon if one is defined for the resource. Then allow users to choose where any given LibraryN should exist (in |
See, that's thing. The list is a scroll container so it would never run out of room. Plus, there is a button to expand the bottom panel too, so I doubt space would be an issue as @willnationsdev states. |
hmm thats ok then, about naming, is better using |
I think |
Library, since Project is already kind of used by Godot Engine itself. BUT, it's also a fact that any given "library" could really consist of multiple compiled libraries that have interdependencies, so I'd almost think we need a whole different term, similar to how Visual Studio uses a "solution" to hold multiple "projects". Not sure if we should use the same terminology, but, something to that effect. |
There should be a 1-to-1 ratio between an explicit collection of source files that are intended to be compiled together into a dynamic library and any given GDNativeLibrary resource. But you might have multiple GDNativeLibraries that need to exist separately and also be compileable together as a single unit. That's why, in my original proposal, I suggested having generic GDNativeBuild resources that define all the information necessary to execute a build, and why they also have child Build resources for nested/recursive building. That way you can do some form of dependency management with all the source code packages being independently operable with all necessary build information adjacent to the code. |
Wait, for example its possible to this? user compiles HelloWorld.cpp and generate Hello.dll if not, I was thinking on something called "merge libraries" which would imply in copying source files in another library LOL |
@nonunknown Yeah, either that, or something where the headers/source files/dependent library lists all get merged into a single trio of master lists at the top level of the hierarchy and are built into their own .dll.
Yes, OR user compiles HelloLib: [HelloWorld.cpp] > generate hellolib.dll If nesting the dlls is possible, that'd be better though. |
awesome, creating with source files is better due to x-platform compiling |
Source files are mandatory to be in Editor Data Folder, local sources only for versioning (copy of EDF ones) |
Wouldn't the project's source code make more sense to be within the project? Auto importing can easily be nullified by using |
@SIsilicon not if you want to have independently developed libraries that are shared between projects (like, actual Godot C++ addons). |
Granted, you could always just mandate that in-project files be used, and have users handle the decision of how to get files from one project to another. But if we wanted to have the plugin facilitate that stuff for them for package management, then you'd need it to actually do the work of keeping the files in a separate location on the computer. Now, maybe I'm wrong, and it's not a good idea to keep the files separate? Idk. The simplest way to answer the question would be to just create a poll on Twitter/Reddit and try to get feedback from the community about what they would actually want to do in practice (since those are what problems we should be solving). If you do end up using the addon system for all the work, and make the users handle it themselves, then eventually whenever an addon-sharing package management system is developed, people's native script addons would automatically get that same support. So, whatever solution we come up with, it might be a good idea to ensure that it at least supports the in-engine stuff naturally, but then can also support more if necessary (for the short term ability to share code more easily). |
yep, if the files where inside project, we couldnt benefit from reuse bindings and sources from other projects too easy! @willnationsdev this pool makes no sense for me, since its more about cross-project stuff than usability! |
Hmm, well in that case it could just be an option. |
@SIsilicon Yeah, I think that's more or less what @nonunknown means when he mentions having the ability to copy files from a centralized location to the project. Users should have the option to choose in which place they keep the files, and we can automate moving the files for them for that purpose. |
@nonunknown , @willnationsdev , so during testing, I discovered a downside of the tkinter python module. It's not guaranteed to be part of a python installation so it doesn't always work. |
Hi, I'm back! Was thinking about this plugin and wanted to leave this idea out. We should definitely have some sort of auto-build functionality like Mono. |
Here we can discuss the best approach for the interface, I'll made a blueprint and show here soon!
For mine I've used a popup, you've seems to be using the Output bottom tabs. I was thinking using it as main screen control like file editor plugin:
the goods of using this way, is that when the user has too many classes, there's no issue to seeing them! Also classes listing should be something like Multiple selectable items so the user can delete multiples at the same time, (checkboxes can be a good approach when user wants to build ignoring some classes)
The text was updated successfully, but these errors were encountered: