Skip to content
Jaakko Kantojärvi edited this page Oct 25, 2013 · 4 revisions

IDE

UI

Consider Kate or KDevelop as base and implement IDE as plugins to those or write own Qt application that would use KDE's editor widgets. Using existing editor would make implementing easier and user could use existing plugins to make it more familiar (vim/emacs keys, project manager, c-tags, etc.).

Code layout

consider main.cpp:

#include <library.hh>
#include <library2.hh>

LcdDisplay lcd;
PortB6 greenLed;

#include "helper1.hh"
#include "helper2.hh"

void setup() {}
void main() {}

#include "helper3.hh"
#include "helper4.hh"

using tabs

In editor above would contain multiple tabs. Tabs would be:

  • Header - contains first includes (libraries) and device/module/pin definitions.
  • helper1 - contains file helper1.hh
  • helper2 - helper2.hh
  • main - contains middle part of the main.cpp (setup and loop in this case)
  • helper3 - helper3.hh
  • helper4 - helper4.hh

Need to think what happens if helper files would contain includes

In case of second SRC file (look secondfile in using tree) it would rename Header as API or add that one as first tab.

When user clicks "New Tab" IDE would create new header file with correct include guards and add include to correct location in main.cpp.

All tabs need to be marked it they are edited, but not saved.

using tree

Would look something like this:

  • TARGET
    • main.cpp
      • helper1.hh
      • helper2.hh
      • helper3.hh
        • foobar.hh
      • secondfile.hh
    • secondfile.cpp
      • secondfile.hh

Top most item is TARGET from Makefile. Multiple TARGETs are possible when project have multiple subfolders with data or user has opened multiple repositories/projects. Next level is SRC files. Under each SRC there would be all included local files (one file can occur multiple times if used in multiple SRCs. When selecting this file it would highlight all occurrences). We should mark in this lines which ones have been edited, but not saved. Header file's includes can be presented in tree better than with tabs.

hybrid

List TARGETs and SRCs in tree (show arrow or somthing to see all included files), but when opening source file all it's tabs would be opened too. So changing from one source to another all tabs would change. Also in this case tree need to mark source file as edited if any of it headers are (except when all files are shown).

Git integration

IDE should be integrated with git. Git commits would happen on safe, build or successful build (configurable). After a while or when closing, pressing a button, uploading the code, IDE would ask to add commit messages to all previous commits (rebase + ammend). That way user can work and only thing messages to changes afterwards. Also git commits should be filterable with working build, uploaded and other flags.

Some of the above behavior can be implemented in Makefile. On make buildwould first stage files, build code and mark success into commit message. After successful it could automatically commit the code.

Git integration would present good work flow and present handy history of project and allow undoing stuff over IDE restart (you can go back in history next time you start doing something). Also multiple branches would be nice.

Clone this wiki locally