Using registries

Registries in SuperMemo are universal object repositories. Each registry is composed of a set of registry members sorted by their name. For example, image registry is a set of image members, sorted by image names and associated with image files stored in a given collection. By using registries, SuperMemo minimizes the space used by multimedia files by making sure that each object is stored only once are reused by particular elements through access to particular registries. For example, if you import an image file into an image component of a given element (using Import file), you can later link another image component with the stored image object by providing its registry name (using Links : Registry member). By default, the name is the same as the original image filename, but you can change it at the moment of import.

The following are the types of registries used in SuperMemo:

  • lexicon registry stores words used in the collection and keeps the record of text registry members that use a given word. Lexicon registry is available with Search : Find word or with Search on the navigation toolbar)
  • text registry stores all text strings used in the collection (including RTF texts, HTML texts and Spell-Pad texts). Text registry is available with Search : Text
  • translation registry stores translation texts that correspond with the text registry in the currently selected translation language (Tools : Options : Language : Collection translation). Translation registry, if created, is available with Search : Other texts : <Language> registry (<language> here is the name of the translation language, e.g. Polish, German, etc.). Current translation registry language can be changed with Tools : Options : Language : Collection translation
  • phonetic transcription registry is the only twin registry that is built of two conjunct registries: one containing individual words and the other containing their respective transcriptions. Transcription registry, if installed, is available from Search : Other texts : Pronunciation by word (individual words) or Search : Other texts : Pronunciation by sound (transcriptions). You can select a transcription registry suitable to a given language with Tools : Options : Language : Phonetic transcription
  • image registry stores all images used by the collection (e.g. BMP, GIF, JPG, etc.). Image registry is available with Search : File : Image
  • sound registry stores all sounds used by the collection (e.g. WAV, MID, RMI, etc.). Sound registry is available with Search : File : Sound
  • video registry stores AVI video files. Video registry is available with Search : File : Vide
  • OLE registry stores OLE objects imported from other applications (such a an MS Word file or Excel Chart). OLE registry is available with Search : File : OLE object
  • program registry stores external binary files executed by your collection (DLL and EXE). Program registry is available with Search : File : Program
  • script registry stores all scripts used in the collection. Script registry is available with Search : File : Script
  • font registry stores all non-default fonts used in the collection. Font registry is available with Search : Font
  • template registry stores all templates defined in the collection. Unlike with other registries, you cannot link a template to an element or to a component. Instead, you apply a template to an element and replace the contents of a topic or item (read: Using templates). Template registry is available with Search : Template

It is worth noting that the lexicon registry stores all words used in a collection. The difference between the lexicon registry and the remaining registries is that individual words are not stored as links to a registry; therefore, deleting a word from the lexicon registry does not delete it from the collection. Instead, this word becomes unavailable from Search : Find word (Ctrl+H).

Text translations are also stored as registries. These are equivalent to text registries and can be easily replaced by means of copying and renaming registry files. For example, if you have translated your collection to German by creating a translation registry called German, you can copy German.* to text.* in the registry directory and your original texts in the collection will be replaced with their translations to German (note that you will need to rebuild the lexicon in order to generate a lexicon of German words).

Components which use particular registry objects store only registry references, not objects themselves. For example, a sound component may store a reference to a sound registry for its sound file, and to text registry for its text. This approach makes sure that large objects (e.g. video files) can be reused without wasting disk space. Each time you import an new object with Import file on component pop-up menu, you add it to the appropriate registry. Similarly, each time you type a new text to text, spell-pad or sound components, you add it to the text registry.

Each time you link a registry member with Links : Registry member, the reference count of this particular member is incremented. In other words, SuperMemo knows how many components in the collection use that particular member. If you delete the last reference to a particular member, i.e. its reference count drops to zero, the corresponding registry object will be deleted with or without confirmation. For example, if the last component using a given image is deleted, you will be asked if you want that image to be removed from the image registry. However, if the last reference to a given text is deleted from the collection, its corresponding registry member will be deleted without confirmation