Giter Site home page Giter Site logo

haikuarchives / paladin Goto Github PK

View Code? Open in Web Editor NEW
62.0 21.0 21.0 16.41 MB

Paladin is an open source integrated development environment (IDE) for Haiku OS

License: MIT License

C++ 90.71% C 5.79% Shell 0.44% Lua 0.98% Makefile 0.92% HTML 1.16%

paladin's Introduction

Paladin

Paladin is an open source integrated development environment (IDE) modeled after BeOS' BeIDE. It can use fastdep and ccache to speed up builds if you have them installed.

To build: run pkgman install devel:libpcre unittest++_devel and then run ./buildsuite.sh 1

Features

  • Command-line build support

  • Quick Find a file by name with Alt+F, with abbreviations (E.g. QFW finds QuickFindWindow.cpp)

  • Multithreaded builds

  • Revision control-friendly project files

  • More run options for projects

  • Explicit support for debugging with gdb under Haiku

  • Bundled helper tools

  • Streamlined project settings

  • Out-of-the-box support for Lex and Yacc

  • Support for text and binary resource files

  • Projects can include notes and other files that aren't source code

  • Project templates

  • Out-of-the-box makefile generation

  • Integrated source code management

  • 1-click project backups

Starting a Project

  • Install Paladin from HaikuDepot.

  • Open Paladin.

  • Select Create New Project.

Screenshot

  • Select Project Type from the dropdown menu, give your project a name, a file name and save destination and click Create Project.

Screenshot

  • Select the file you want to code in.

Here's how an editor window looks like:

Screenshot

(Code excerpt from HexVexed)

  • Press Alt+R to compile and run your program.

Some Very Useful Features

Dealing with Errors

While warnings will not stop Paladin from continuing to build a project, if an error occurs, Paladin will stop the build so that the errors can be corrected. Errors are listed in pink; warnings are listed in yellow. Double-clicking on an error or warning will open up the file containing it in the editor. The Copy to Clipboard button will copy all visible errors and/or warnings to the system clipboard for pasting into other documents.

Screenshot

Backing Up Projects

Your project can be quickly placed into a compressed archive in a folder of your choosing with your project's name and timestamp for the backup with just a click of this menu item.

Screenshot

Helper Tools

Developers seem to need a wide variety of tools when writing code. Paladin includes a few small accessories to complement the main development environment. An ASCII table, Regular expression tester, Symbol finder and a tool to easily choose a license for your project can be accessed from the Tools menu.

License

MIT

paladin's People

Contributors

aarroyoc avatar adamfowleruk avatar bachtothefuture avatar diversys avatar ithamar avatar jscipione avatar kapix avatar korli avatar louis77 avatar mbrumbelow avatar osomat123 avatar pahefu avatar posobin avatar pulkomandy avatar scottmc avatar tgkokk avatar waddlesplash avatar widelec-bb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paladin's Issues

Selecting New Group results in renaming group

Right clicking the 'Source files' group show New Group, Rename Group, and Sort Group. If you select New Group, it actually displays the rename group dialog.

Rename group and sort group work as expected.

hrev52346
x86_64
Paladin built from latest master source

Consider an option to show relative paths rather than file names

In complex projects there are multiple source folders. Might be nice to have an option so in the file list the relative path within the project is shown for the item rather than just the file name.

As an extension, would be nice to also have the option of relative path sub folder between the group folder and the source file item.

Consider adding progress bar for long running process(es)

Builds, global search and replace, set licenses - all take time.

Consider adding a progress bar to the status bar, with perhaps a clickable 'full details' button that opens a detailed panel showing all concurrently running processes.

Ensure dependency files are updated in the UI

Double check in the code that dependencies are updated in the new dependency list when:-

  • New source files (and header files) are created
  • Existing files are added to the project
  • The Project -> Update Dependencies option is selected
  • Files are removed from the project
  • After a build
  • Whenever the project is saved/updated by Paladin

Project Add New Files doesn't work

In the Paladin.pld project, try to add PaladinFileFilter.cpp to the Source files group. You can select and click ok, but the file isn't added or written to the pld file.

Question: UX issues in how Paladin works with Pe

Not sure how people wanted to address the below, so thought I'd put a question in GitHub about them.

Quitting Paladin should quit child Pe windows

If you're editing a project with many windows of code open, it would be nice for all the Pe windows that were opened by Paladin to be closed by Paladin. Not sure how feasible this is with the current way of launching them though.

Pe windows created by Paladin should be stacked

A nice feature of Koder is that all newly opened code windows are stacked rather than independent. Would be good to do this also. (Also, unlike Koder, the file paths should be relative to the project root, not absolute paths, in order to save screen real estate)

Pe editing options are file based, not project based

Most projects use a consistent set of editing settings. E.g. tabs at 4 spaces width. Pe's preferences for this are file based or global (to the user) - not project based. Again, not sure if this can be resolved give Pe is an external app.

Cross file code references

Pe has the f(x) button which can skip to a named function within a file. It would be good to expand upon this functionality so that hitting a key shortcut looks up the function/class under the cursor, whether in the same file or another one. Again, as Pe is a single file editor it won't know how to resolve a project's references, so not sure how feasible this is.

Pe's .h button doesn't work

Pe successfully lists the correct header files in the .h toolbar button drop down, but clicking on them does nothing. Doesn't open them. Leads to a little confusion for the user.

In Summary

Given the above, is it best to stick with Pe, or should the option be considered of having a Paladin managed editor window? Whether that is an embedded Pe frame, or Koder's approach. I'm not sure what is technically possible integration wise with Pe as a separate external app.

Status bar issues

** Misalignment **
See the below image. Slight misalignment with the status bar.

paladin-status-scroll-bars

** Status bar area not used **
Should probably write out the status here at some point. E.g. last saved/opened/new file added, built OK, etc.

DEPENDENCY line includes the source file that the dependency is for

E.g. for Paladin.pld:-

SOURCEFILE=SourceControl/SVNSourceControl.cpp
DEPENDENCY=SourceControl/SVNSourceControl.cpp|SourceControl/SVNSourceControl.h|SourceControl/SourceControl.h|ThirdParty/DPath.h

I think this is more of a bug than a feature. Rather superfluous to add this as a dependency I would have thought?

List header files

Currently the list of files in a project doesn't list the header files just the .cpp (and other files). It would be useful if it could list the header files too.

Consider multiple mechanisms for builds

Trying to build Paladin fails - it uses the build sh file to set up make, so we need an option to run this.

Support potentially:-

  • Makefile
  • Jamfile
  • Bash script

Also support choices for 'error detection'. E.g. gcc errors, bash failures, etc. - then display these in the errors and warnings pane.

UX: Ease of launching tools

Give a shortcut key codes for all tools.

Consider a quick show/hide toolbar toggles for the tools, perhaps just above the Project Window status bar.

Consider adding a Locales list item group for Locale editing

Could introspect LOCALE in the Makefile, or check for the presence of <Locale.h> in source files, to determine if Locales are supported.

On double clicking a Locale, instead of loading Pe we could launch CatKeysEditor or similar.

As an extension, if make is called, also call make bindcatalogs immediately after.

Error Window's title bar appears entirely off screen

When you run a build or run the binary, an error window pops up with an issue. This window appears such that it's entire title bar area appears off screen, necessitating Strl+Alt+Click-dragging to get on to the screen.

Also set the windows proportions more sensibly (to be much wider)

Add support for issuing a GitHub pull request

Will require GitHub login Window

Will require setting local github author info (E.g. email, username (GitHub), username (local)) in ~/.git

Also allow 'view PR in GitHub' after creation

Settings: Compiler choice and header paths

Commenting for clarification.
When creating a makefile with Paladin
SYSTEM_INCLUDE_PATHS = /boot/system/develop/headers/cpp
However, this is a BeOS path. Depending on whether gcc2 or gcc5 is being used, the Haiku path is:
gcc2 - /boot/system/develop/headers/c++/2.95.3
gcc5 - /boot/system/develop/tools/x86/lib/gcc/i586-pc-haiku/5.4.0/include/c++

Update revision, version info

As major and minor issues are resolved in Paladin, we should consider when/if to do major and minor point releases. The appropriate files will need to get updated to reflect this versioning info and then a matching tagged release can be made. We should verify Paladin's stability at each release prior to tagging.

Nonexistent libraries aren't kept

  1. Open a project that has libraries that are not on the system
  2. Select "Keep" when asked.
  3. Close Paladin.

The file does not contain the nonexistent libraries anymore...

Diagnose debug message from Project Settings

Open project settings from the menu bar. Don't edit anything. Close project settings. See this in the terminal output (Running Paladin -d -v):-

Range: 86.000000 - 1.000000
Range: 86.000000 - 358.000000
Unlocking BLocker with sem 71685488 from wrong thread 58951, current holder 58545 (see issue #6400).

Drop Licenses directory and pull them from system/data/licenses instead

Rather than keeping the license text for the various open source license types in duplicate locations, Paladin should be updated to pull the license text from the system/data/licenses directory that comes with Haiku by default. This will likely require some code changes, so don't drop the licenses dir until the code is fixed.

Errors window fails to open

Clicking on the Tools -> Error Window... menu results in no window appearing, but a small icon does appear in the Deskbar. Clicking on that icon results in nothing appearing.

I'll attempt to find the root cause in the code

version 1.4 d1 hrev52346

Open Project allows selecting of an App executable not just pld, causing App Window to close

Installed the devel libraries and built as per instructions. Launching the built Paladin works, but trying to open the Paladin/Paladin/Paladin project file results in my last loaded app being shown in the project explorer, not the Paladin code project.

Trying to import that project too does nothing in the import screen.

No error messages, and no explanation. Nothing on the command line when running Paladin -d -v.

I'm not sure at this point whether this is a bug in the code or user error - I have no feedback to determine this.

Investigate how developers write tests for Haiku classes

Questions:-

  • Which testing frameworks are used (Cppunit et al)
  • Are there common test classes that can be templated?
  • How are tests integrated in to Makefile builds? Separately make target? Separate script?
  • What output is generated, and how do people act upon it?

Display test output

Consider if in the Errors & Warnings Window, or elsewhere. Automatically display upon executing tests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.