class main.Body(**kw)[source]

The main layout for the application. It handles menu values, their appropriate functions, filtering of user’s input and functions for accessing Data file in main.Table.

New in version 0.1.0.

_export_data(selection, fname, *args)[source]

Exports all available Data (visible as tabs) as Data file into path selected in Dialog.

New in version 0.1.1.

static _extract_rows(data)[source]

Extract values from main.Table‘s dictionary into a flat list.


Data1 Data2 Data3
1 2.0 3

[u’Data1’, u’Data2’, u’Data3’, u‘1’, 2.0, 3, ...]

New in version 0.1.0.

_import_data(selection, *args)[source]

Imports Data file from path selected in Dialog and puts it to main.Table.

New in version 0.1.0.


Opens a wizard for creating a new Data if a Project is available or shows a warning if it doesn’t exist.

New in version 0.1.3.


Closes already opened Project if available and opens a dialog for creating a new one.

New in version 0.1.2.

_open_project(selection, *args)[source]

Opens a Project from path selected in Dialog and imports Data file.

New in version 0.1.7.

_save_data(wizard, *args)[source]

Gets data from the wizard, puts them into main.Table and exports them into Data file.

New in version 0.1.4.

_save_project(selection=None, fname=None, *args)[source]

Saves a Project to path selected in Dialog and exports Data file.

New in version 0.1.2.

static about(*args)[source]

Displays about page of the app and includes other credits.

New in version 0.1.0.


Clears all important variables, removes all Data available in main.Table and switches to main.ProcessFlow.

New in version 0.1.0.

from_address(table, address, extended=False, *args)[source]

Gets value(s) from main.Table according to the address such as A1 or A1:B2. Values are fetched in the way that the final list contains even empty (u'') values. It is not expected of user to use Task for strings and most of them won’t even run. To get non-empty values for a Task use for example Python’s filter():

values = filter(lambda x: len(str(x)), values)

This filter, however, will remain values such as None untouched.

New in version 0.1.0.

Changed in version 0.3.5: Added extended options and a possibility to get :all values from data.

new(button, *args)[source]

Opens a submenu for New menu.

New in version 0.1.0.

set_page(task, result, result_type='text', footer='time')[source]

Creates a main.PageBox for a result. The header consists of the Task‘s name, the footer is by default the time when the result was created and the content depends on result_type which can be - text, image(path to image) or widget. If result_type == ‘widget’, result has to be an instance of a widget (obviously containing the output), e.g.:

b = Button(text='my output')
set_page('MyTask', b, result_type='widget')


When exporting pages, everything is converted into images (pngs), therefore making fancy behaving widgets is irrelevant.

New in version 0.2.0.

Changed in version 0.3.2: Added tables as a result type.

class main.CreateWizard(**kw)[source]

A popup handling the behavior for creating a new Data, i.e a wizard.

New in version 0.1.3.

class main.Dialog(**kw)[source]

A dialog handling the behavior for creating or opening files e.g. Project or Data.

New in version 0.1.0.

class main.ErrorPop(**kw)[source]

An error popup to let user know something is missing or typed wrong when console is disabled.

New in version 0.1.2.

class main.ImgButton(**kwargs)[source]

A button with an image of square shape in the middle.

New in version 0.2.0.

class main.KrySA(**kwargs)[source]

The main class of the application through which is handled the communication of other classes with getting an instance of the app via App.get_running_app().

Other than that, it holds important variables of Project, sql blacklist for Data file creating and updating or the application properties themselves.


Default Kivy function for getting the root widget of application.


alias of ErrorPop

on_project_exists(instance, exists)[source]

Checks change of main.KrySA.project_exists and if Project exists, schedules updating of its tree to 5 second interval.

New in version 0.3.0.


alias of Table

class main.MenuDrop(**kw)[source]

A list of main.SizedButton s displayed as a menu, where each button may create another menu depending on the function bound to it. The main menu is handled through a single instance of main.MenuDrop which is instantiated before function.

Each click/tap on the menu button then assigns a value to it from dictionary according to its name in kv file.

New in version 0.1.0.

class main.NewDataColumn(**kw)[source]

A layout handling the behavior of type, values(NewDataValue) and some buttons for each new column in Data.

New in version 0.1.4.

checklock(disable, coltype, check, *args)[source]

Disables all cells in the column, then check them against a list of strings that could be used to corrupt Data file . If the check is done without an error, another check is made to protect against using an empty string '' as a value, which if used inappropriately results in a crash.

New in version 0.1.4.

static free(items)[source]

Frees all locked cells in the column except a column type. If a wrong type is used, removing the whole column is necessary. (protection against corrupting Data file)

New in version 0.1.4.

paste(values, sep)[source]

Paste a value(s) from a user’s clipboard as a column values. A user can choose what kind of separator was used on the values, for example:

1 2 3 4 5     # (space)
1\t2\t3\t4\t  # (tab)
1\n2\n3\n4\n  # Unix-like new line character (<enter>/<return>)

If in doubt and your values were copied from a column (e.g. spreadsheet), use OS default, which will choose between \n (Unix-like) or \r\n (Windows) new line separators.

New in version 0.3.4.

class main.NewDataLayout(**kw)[source]

A layout handling the behavior of NewDataColumn and some inputs for each new value in Data.

New in version 0.1.3.

class main.NewDataValue(**kw)[source]

A layout handling the behavior of inputs and button for each new value in Data.

New in version 0.1.4.

class main.PageBox(**kwargs)[source]

A layout that includes Page widget together with transparent separator. It’s used for adding new results from Tasks.

New in version 0.2.0.

class main.PaperLabel(**kwargs)[source]

A label with visual properties as a paper sheet.

New in version 0.2.0.

class main.ProcessFlow(**kw)[source]

A canvas on which will be displayed actions for each Data related to them, such as used tasks connected with result of the tasks.

New in version 0.1.0.

(Not implemented yet)

class main.ResultGrid(**kwargs)[source]

A black gridlayout, together with main.Wrap makes a table container for results that need a table.

New in version 0.3.2.

class main.SideItem(**kwargs)[source]

Supposed to be a part of settings, most likely will be removed/replaced.

New in version 0.1.0.

class main.SizedButton(**kwargs)[source]

A button with width automatically customized according to text length of its siblings, which makes every sibling the same size as the one with the longest text string.

New in version 0.1.0.

class main.Table(**kw)[source]

A view handling the behavior of the inputs from Data file. Separates the values from Data file according to its Data‘s column types into three Python categories - int, float or unicode and assigns an alphabetic order for each column together with row number to each value.

New in version 0.1.0.


Removes all data from main.Table

New in version 0.1.0.


Gets a list of letters the same length as Data‘s columns.

New in version 0.1.0.



New in version 0.1.0.

class main.TableItem(**kwargs)[source]

An item handling the behavior or each separate value in the main.Table such as updating/editing values in Data.

New in version 0.1.0.

on_focus(widget, focused)[source]

Makes sure the unconfirmed value is discarded e.g. when clicked outside of the widget.

update_value(txt, *args)[source]

On <enter> (return) key updates the values main.TableItem.text and main.TableItem.old_text in main.Table.

New in version 0.1.0.

class main.Wrap(**kwargs)[source]

A white label with automatically wrapped text.

New in version 0.3.2.