Everything is coded in C. Bijiben is divided in two parts:
- libbiji is the internal lib to provide notes abstraction; and
- bjb is the UI
- manager handles the providers (actually it's a bit more).
- provider (backend), there are three of them:
- local == local files (xml for metadata + xhtml for content);
- ownCloud == webdav files (plain text) in Notes folder; and
- memo = vjournal storage, through evolution-data-server (and its accounts).
- item is the base class for Notes and Notebooks. Note is a base class for providers implementation.
BjbBijiben is the GApplication.
BjbWindowBase is the GtkWindow with its usual GtkStack.
- Controller is the whole UI controller.
Implementing a new provider (backend)
As of today providers are not plugins. There are plain C code. To implement provider XXX:
- Create a BijiXXXProvider class. Make sure to implement some methods. Start with pseudo methods printing "ouch!" =); and
- Create a BijiXXXNote. You need, too, to implement some methods, and also to provide a way for your provider to generate notes from relevant arguments.
Especially, at startup provider should load notes and emit the signal ("loaded") so manager displays these notes. Creation might be implemented distinctly, but today there is no mechanism for providers not allowing creation. I could code this if useful. Similarly, there is no mechanism for read-only notes, but if necessary this might be added.
On the coding side... See wishlist below
Get rid of Clutter.
Migrate from webkitgtk to webkit2gtk => GSoC 2014 https://github.com/xuchunyang/bijiben.)--
- use gnome-online-miners.
- Split UI Controller into several.
- Annotate libbiji.
- Use ui files.
- Remember the last used view (grid or list) and use it upon restart.
- Allow deleting notebooks.
Reduce font size options => mockups https://raw.githubusercontent.com/gnome-design-team/gnome-mockups/master/notes/preferences-wireframes.png.
- Follow new GObject standards.
- Fix coding standards.
- Meson support.
- Autotools removal.
- Improve owncloud support.
- amend "Last Updated" footer to make this.. well, a footer, which should not overlap text.
mail as storage => GSoC 2014 https://github.com/xuchunyang/bijiben.
- inline images.
- improve drag and drop : handle utf8 and fils (.txt, .html, .org... import).
- export (need to think about that one. maybe html, tomboy, .org).
- Evernote support.
- Folder, lists, notebooks, tags support.
port to GtkTextView.