AS IS

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

libbiji

  • 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.

bjb

  • 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.

TO BE

On the coding side... See wishlist below

Wishlist

  • 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.

Apps/Bijiben/Hacking (last edited 2017-09-12 00:51:48 by IsaqueGaldino)