Skip to content

Requirements

Jakub Šimo edited this page Mar 18, 2017 · 4 revisions

1) Visuals

Vertices

Vertices should have 2 colours, inner one and optional outside border (for highlighting of selected vertices).

Values of vertices should be displayed, preferably in the interior, but exterior could also work.

Edges

Edges should have colours and their individual thickness. However, only 2 thicknesses should be required, one normal and one thicker for highlighting selected edge.

Values of edges should also be displayed next to edges.


Values may overlap in both the edges and vertices, however it is preferable for it to be legible.

2) GraphGUI user modes

The user should be able to handle the graphs in GraphGUI in a functional, intuitive way using their mouse. The current solution calls for four distinct modes the GUI can be set to, depending on the user's intent.

View Mode

In this mode, clicking with the mouse selects/deselects vertices and edges. Dragging vertices should/could move them around the screen.

Edit/Build Mode

In this mode, clicking creates a new vertex with incrementally higher ID. Edges can be added between existing vertices by selecting the source, and dragging it, while pressed, to the destination.

Colouring/Value-setting Mode

In this mode, the user can choose to alter the colour and value of edges/vertices (one or both). Selecting an edge or vertex sets the selected data to the chosen value(s). After exiting, new edges and vertices will receive this data by default.

Delete Mode

In this mode, selecting vertices and edges removes them from the graph.

3) Data import/export

The user should be able to import and export all the data from the program such that if data is exported and then imported in the next program instance, the result is the same. This means that all the visual data about the graph, such as colours need to be exported. Selected items need not be exported.

The data should be importable both through file chooser and a textarea where the user can paste the data. Export should too be possible both into a file and preferably directly into the clipboard or into a textarea.

The program should also have persistent settings, such as the one for accessibility mode.

4) Functionality for the visually impaired

GraphGUI should be as accessible for the visually impaired as possible. Currently the three main proposed ideas are:

Keybinds

Requiring the use of the mouse can cause problems for the visually impaired. To avoid it, as many functionalities of GraphGUI as possible should be able to be performed using the keyboard; in particular, keybinds should be set for (as many/all) actions that the user can undertake. A rough list of plausible actions includes, but is not limited to,:

  • Switching between modes discussed in 2)
  • Selecting vertices (for example, numbers bound to their ID)
  • Selecting edges (for example, once a vertex is selected, using the arrow keys, with enter to select)
  • Setting colours/values of vertices/edges

Text representation

The ability to, on demand, produce a text representation of the graph. It should be compatible with the format graphs are saved in 3). It should present all information about the graph in an organized manner, for example number of vertices, then for each vertex its data and a list of edges connected to it (and their data).

Text manipulation

Graphs could be edited in a text fashion. Two current ideas:

Using the text representation of the graph (discussed above), as a text file/field, could simply be edited to manipulate the graph.

Using the console, commands could be implemented to manipulate the graph. A list of commands would be presented. Concept idea, for example: 'remove X' removes vertex with ID X, 'remove X Y' removes edge from X to Y, 'add X' adds vertex X, 'set colour XYZ' sets the colour of added vertices to XYZ, et cetera.

Clone this wiki locally