Project Metadata

Ok we need project metadata.

We should probably at least have:

  1. .pida-metadata in project directory:
    1. .pida-metadata/plugin-name/
      Plugins are free to store data in their directory as they wish.
    2. .pida-metadata/plugin-name.conf
      Only well defined, often used, data goes in the top level directory.
      API for configuration files because they are needed most often. File format: vellum or ini (tbd)
  1. Global Metadata
    1. $PIDA_HOME/data/plugin-name/
    2. $PIDA_HOME/data/plugin-name.conf

API:

1.i) pida.core.service.Service.project_metadata_dir (property which ensures that the directory exists when the user reads the property)
1.ii) pida.core.service.Service.project_metadata (vellum or some ini object)
2.i) pida.core.service.Service.global_metadata_dir
2.ii) pida.core.service.Service.global_metadata

Something like that.

Use cases:

project options:
- pdftex-preview: needs to save the target which is used to compile the pdf file and the resulting pdf filename
- bookmark plugin: save bookmarks project wide

global / project options:
- filemanager/file hidden checker: checkers have global or project scope which means that the state of some checkers (e.g. dot files) are saved globally but others (e.g. python compiles) are saved project wide.

session options:
- plugin loader: loaded/unloaded state of a plugin should be session depended

BTW: Currently there are global options that can be changed with a preferences dialog (OptionsManager?, Service: OptionsConfig?) (saved with gconf), but we might not need this for all global options (e.g. why should the user change active file hidden checkers in preferences?)