wiki:Wizard

Version 2 (modified by Sven Rech, 10 years ago) (diff)

--

The CrypTool 2.0 Wizard

The Wizard was designed for easier access to special cryptographic scenarios for users that are not familiar with CT2. It also helps users to explore the CT2 functionality. Please keep that in mind before making changes to the plugin or its configuration and read the guidelines at first.

Configuration Guidelines

Please make sure the configuration meets the following criteria:

  • Configure only one task per page so the page's content is not overloaded
  • Add a meaningful headline that fits to the task
  • Add explanatory descriptions
  • Configure icons that fit to the current page

Configuration via the XML configuration files

Within the "Wizard" project in the CT2 solution, there exists the "Config" directory, which contains all the configuration files which can easily be altered and extended. They are written in a easily human readable XML format. For maintainability reasons, the configuration is split into many different files, each of which is related to a special cryptographic topic. The configuration files can be referenced in another file, to include it in the global wizard configuration tree. (If you want to add a new config file later, don't forget to set its "Build Action" to "Embedded Ressource") The starting point is represented by the "wizard.config.start.xml" file.

The wizard can be configured by setting up different "pages". The availability and content of these pages are described by special XML elements. Because of the tree-like nature of XML formats, the relations of wizard pages are also represented by a tree of pages, i.e. by nesting page decriptions.

There are mainly two different kind of pages: "category" and "input". While "category" represents a page, which gives the user the possibility to select amongst different given options (like: "Which one of these algorithms you want to use?"), the "input" page gives the possibility to let the user to fill in some kind of data, which will be used to set up a special workspace for him.

There is also another kind of page type, which is related to "input". This page type is called "sampleViewer" and is used to show the actual data of an underlying running workspace. For this reason, "sampleViewer" can be seen as some kind of output page. Another way to see it is to regard it as some kind of mask for an underlying workspace.

Another element, which conceptually stands on the same level as the above described pages, but which isn't a page in the real sense, is the "loadSample" element. As soon as the wizard user reaches a page like this, a given template file is opened in the workspace manager and is shown externally (i.e. outside of the wizard).

The nesting of different pages leads to special pathes, which directly serves the purpose of a given scenario. This means, that the different pages on this path can gather informations from the user, which are used in the last action of the path, which should always be the loading of a template and the filling of it with the user informations. This means, that a path should end with either an "loadSample" or an "sampleViewer" action.

The semantics of most wizard pathes is, that the user first has to select, which algorithm he wants to use (this selection is spread amongst many category pages). Then he has to fill in an input page, and in the last step, he sees the corresponding template in action.

Element details

Take a look at the "wizard.dtd" file to see which XML elements exists for the wizard configuration and how they relate to each other. This file is also used to check the config file on wizard startup. So, if you infringe with those rules, an error message will be thrown.

You can reference another xml config file by the "file" attribut. Take a look at the starting xml file, to see how this is used. An example is:

<file resource="Wizard.Config.Analysis.wizard.config.analysis.xml" />

Please note that the resource string has to be given by this special resource path for technical reasons.

Now follows a detailed description of the usage of the important elements.

Category

A category page is a standard page, which content consists of some other pages. By this, it gives the user the possibility to select one of those different pages. An easy example is:

<category image="Classic">
  <name lang="en" >Classic Encryption</name>
  <name lang="de" >Klassische Verschlüsselung</name>
  <description lang="en" >Selecting this allows you to analyze a ciphertext that was encrypted by a classic algorithm. You can choose which classic algorithm you want to use for doing this.</description>
  <description lang="de-DE" >Wählen Sie diesen Punkt, um einen chiffrierten Text, der mit einem klassischen Algorithmus verschlüsselt wurde, zu analysieren. Der dafür verwendete Algorithmus kann von Ihnen ausgewählt werden.</description>

  <!-- This is the step's headline. It should be short, but precise. -->
  <headline lang="en" >Algorithm Selection</headline>
  <headline lang="de">Algorithmusauswahl</headline>

  <!-- This is the step's description. -->
  <task lang="en" >Select a classic encryption algorithm.</task>
  <task lang="de" >Wählen Sie einen klassischen Verschlüsselungsalgorithmus.</task>

  <!-- Caesar input -->
  <input image="Caesar">
    <name lang="en" >Caesar</name>
	...    
  </input>

  <!-- Vigenère input -->
  <input image="Vigenere">
    <name lang="en" >Vigenère</name>
	...
  </input>
</category>
Input

t.b.d.

SampleViewer

t.b.d.

LoadSample

t.b.d.

Configuration unit test

t.b.d.

Possible improvements

In this section possible improvements according to a user survey result will be listed soon...