itom Changelog

What's new in itom 4.1.0

Mar 10, 2021
  • Compiled with Visual Studio 2017
  • Qt 5.12.6
  • OpenCV 4.2.0
  • PointCloudLibrary 1.10.0
  • VTK 8.2.0
  • Python 3.8.7
  • The following python packages including their dependencies are pre-installed in the setup and portable version:
  • pip 21.0.1
  • wheel 0.36.2
  • Setuptools 49.2.1
  • numpy 1.20.1
  • flake8 3.8.4
  • black 20.8b1
  • jedi 0.18.0
  • scipy 1.6.1
  • matplotlib 3.3.4
  • scikit-image 0.18.1
  • opencv-python 4.5.1.48
  • other dependencies of the packages mentioned

New in itom 3.0.0 (Apr 18, 2017)

  • demoDataObject.py modified for a clearer overview of important features
  • demo about image distortion simulation and determination added
  • demo for paramEditorWidget added to demo/ui
  • fixes due to high-dpi display
  • added message in the CMake-files in pluginTemplates to print the plugin name in the CMake output
  • documentation: workaround of vtk linker exception under linux
  • added some classinfo descriptions for motorAxisController and paramEditorWidget
  • added documentation with demo script of how to set legendTitles in a 1d plot with the help of tags.
  • update documentation of 1d and 2d plot
  • updated documentation due to modified widget wrappers (QComboBox::itemText accessible via python call)
  • fix in ItomBuildMacros.cmake, macro POST_BUILD_COPY_FILE_TO_LIB_FOLDER if the given library list is empty
  • added a paramEditorWidget which can for eg. can be used to acess parameters of a geniCam instance
  • added itemText method to qlistview (widgetWrapper) and some code formatting
  • documentation updated for new pickerChanged signal of itom1dqwtplot
  • updated setup documentation of itom
  • added python_unittest function checking the behavior of dstack
  • modified widgetWrapper member function to return ito::RetVal instead of bool, for better error diagnostics
  • style sheet adaptation for plugin documentation
  • fixes for some missing type registrations in Qt meta type system
  • added python-based cameraToolbox, containing a module ‘distortion’ to determine radial distortion, scaling and rotation of a distorted grid of points (including their undistortion). This can be used for characterizing optical systems e.g. based on single chessboard or regular point-grid patterns.
  • incremented AddInInterface to 3.1.0 due to further, binary-compatibility breaking changes in AddInManager and other parts
  • from Qt5.5 on, an automatic parsing of enumerations and their keys in terms of strings is possible. Added this feature to improve python slot-calls.
  • added a static dataObject function called dstack to stack different dataObjects
  • added a new python command to copy the whole dataobject meta information of a dataObject
  • pythonEngine, load Variables: name/key compatibility improvements
  • itom_unittests dataObject saturate_cast_test fix problems with rounding of rgba to gray values.
  • itom_unittests operatorTest changed, that the operation: matrix divided my matrix has no zero values.
  • bugfix in ito::DataObject::deepCopyPartial for 1xm vs. mx1 objects where the lhs object is a roi of a bigger object. Including unittest in python_unittests environment.
  • added marker for docked or undocked scriptEditorWidget
  • improvements in unittest: application will be build in itom-build directory for a better access to required libraries
  • show size of numpy array in detail window
  • unittest and changes in dataObject::copyTo (no reallocation if rhs dataObject has already the right size and type)
  • changed behavior of copyTo, rhs is not reallocated when regionOnly is passed and it already has the correct type and size.
  • improvements in unittest: application will be build in itom-build directory for a better access to required libraries
  • added unittest for externally started AddInManager
  • Qt4 compatible version of AddInManagerDLLr
  • updated German translation
  • some security checks and comments added to new constructor of DataObject.
  • changes in tex_demo.py. There seems to be a bug in matplotlib 2.0.0, when using savefig command in combination with unicode!?
  • added dataobject contructor for single cv::Mat
  • added some documentation about the Latex support for Matplotlib Text layout
  • re-add missing LinguistTools library
  • Integrated changes in commontk project: https://github.com/commontk/CTK/commit/5db3f9320ed50b9d8179236cd3e84694dd7153ec
  • Updates in conf.py of user documentation due to changed default settings in QtHelpBuilder of Sphinx
  • update all-in-one development setup documentation
  • documentation: brief section of the global plot settings. Added some new settings
  • improved documentation about unfound font in Matplotlib
  • added max function for complex valued dataObjects, returning the largest magnitude (and its position)
  • Added function to check for gui support to addInInterfaceBase and AddInBase
  • added more features to some ParamMeta classes
  • contributors adapted
  • removed some memory leaks in Python C-code and removed some unused methods in PythonEngine
  • fixes issues with special characters in filename of itom.loadMatlabMat and itom.saveMatlabMat
  • some test scripts with scipy added (can also be used to check proper installation of scipy)
  • added Redistributable Visual Studio 2015 to setup
  • documentation: package list for linux updated
  • more cmake information for linux
  • added default style settings for qwt plots into the properties
  • redesign of dataObjectFuncs to provide a clearer helper class for verifying, comparing and preparing dataObjects
  • domain itom.bitbucket.org replaced by itom.bitbucket.io
  • ito::ParamBase::Type: flag NotAvailable added for temporarily unavailable parameters
  • added PenCreator Button, BrushCreatorButton and FontButton to UI-Designer
  • ito::Param::getMetaT<_Tp>() added as templated-version for ito::Param::getMeta() such that the C-cast can easily be replaced by the template parameter.
  • Bugfix application stall on closing, when using AddInManager dll
  • overloaded sizeHint in PenCreatorButton and added a brushCreatorButton
  • implemeted a fontButton
  • added “item” slot for qListWidget, which retrieves the text of the “item”th row
  • added version.h (qitom / git) to sdk, added apifunction to read out filter version, author and plugin name
  • added option for Python path as itom subdirectory
  • added commonQtVersion.h and pclVersion.h to SDK files
  • AddInManager now starts an instance of QCoreApplication if none is found
  • unified names between IOHelper and FileSystemDockWidget
  • added some missing metatypes
  • added missing pcl integration
  • pip manager adapted to changes for pip >= 9.0
  • documentation added how to build itom under Fedora (tested with Fedora 25)
  • changed order of methods in dataobj.cpp to support gcc under Fedora
  • CMake syntax fix for CMake < 3.0.0
  • prepare FindOpenCV.cmake to support Fedora
  • moved apiFunctions to addin manager and restructured them, i.e. removing gui related functions. These were moved apiFunctionsGraph (which should be renamed to apiFunctionsGui actually)
  • added addinmanager to sdk lib files, some minor cmake cleanup
  • docstrings of itom.pointCloud, itom.point and itom.polygonMesh improved
  • Clean up of unused includes
  • plugin widgets can now be opened by plugin dock widget even if they have mandatory or optional initialization parameters
  • Move AddInManager to DLL initial version
  • property editor has context menu entry to select between sorted and unsorted representation
  • pointCloud.moveXYZ added (offsets every point in a point cloud, comparable to pointCloud.scaleXYZ)
  • closeItom event can be stopped by click on the Cancel button or press the ESC Key on the keyboard.
  • console: double click on any type of warning (not only runtimeWarning) will open the corresponding script.
  • make matplotlib itom backend backward compatible with matplotlib 1.4.x
  • added openmp to dataObject
  • dialog added to close itom, even if python is still running. User will be asked if itom really should be closed.
  • itom debug icons changed into 64x64 size for 4k optimization. svg files of the icons added, too.
  • itomWidgets: plotInfoDObject can handle rgba32 dataObjects
  • improved error messages
  • fix in matplotlib backend: avoid using single-shot zero-delay timer in “soft-draw” method to only redraw if the gui is idle. However, an itom.timer cannot be used in python multi-threaded applications
  • matplotlib demo about surface3d plot added
  • warning added to itom.timer if it is started in another python thread
  • docked toolbar icons as well as margins of script editor are scaled based on screen dpi
  • set remote search for Python documentation to python version 3.5
  • global rework of all icons
  • support 4k monitors: changed icons to 64x64 px and scaled UI items by the ratio (screen dpi / default dpi: 96)
  • added pyparsing-2.1.10 to setup
  • bugfix in WorkspaceDockWidget::updateActions(). Sometimes the return value of m_pWorkspaceWidget->numberOfSelectedItems() is different to the return item.size() of m_pWorkspaceWidget->selectedItems()
  • pluginTemplates updated
  • many bugfixes under Linux and Windows

New in itom 2.2.0 (Oct 13, 2016)

  • Class figure now provides the optional parameters x0,y0,width and height to initially position the figure. This is e.g. used by matplotlib.
  • added itom.dataObject.splitColor() function. Now the colors of a rgba dataObject can be splitted.
  • ito::PCLPointCloud::copy() and ito::PCLPointCloud::scaleXYZ(...) added to pointClouds library. Method itom.pointCloud.scaleXYZ(...) added to Python class.
  • bugfix in dialogOpenFileWithFilter when loading Rgba32 dataObjects due to char-array access out of range for Rgba32
  • mat and idc files can be loaded as packed or unpacked version in workspace
  • If a RuntimeWarning is now displayed in the command line, a double click will open the file at the indicated line
  • bugfix crash in dataObjectIterator
  • improved message if numpy is tried to be upgraded via pip manager. If pip manager is started as standalone application, itom can be started afterwards from the dialog.
  • Dialog added to scripts menu to show all currently active timer instances. They can be stopped and restarted from this dialog.
  • improved roughnessEvaluator tool to provide a GUI for the 1D roughness evaluation
  • statusLED widget added to itomWidgets
  • itom.dataObject.fromNumpyColor() and itom.dataObject.toNumpyColor() added to load and write coloured numpy arrays (3 dimensions with last dimension of size 3 or 4) to a rgba32 data object. This is interesting if objects are processed using cv2 (OpenCV) in Python.
  • generic snapshot dialog added that is available for all camera instances (e.g. by their context menu)
  • improved drag&drop of files to the console. Hourglass is shown as cursor while a file is loaded.
  • documentation added how to directly start the package manager with an argument to qitom.exe
  • bugfix in matrix multiplication operator of DataObject: The data object has to be reallocated both for * and *= operators if the size of the multiplied matrix is different than the size of
  • method meanValue implemented in dataObjectFuncs using the quick median algorithm.
  • added available colorMaps in plot documentation
  • maximum number of threads that should be used for algorithms and filter plugins can be set in property dialog. In plugins use ito::AddInBase::getMaximumThreadCount() (static) to request this value. It is always bound between 1 and the maximum number of avaiable threads on the computer.
  • context menu of command line reimplemented to provide itom-specific commands and respect that executed command cannot be removed any more
  • redesign of matplotlib backend to enable faster rendering and updates only if necessary
  • Proper installation of Python is checked at startup of itom. If Python Home directory could not be properly resolved (e.g. its search pathes do not contain the script ‘os.py’ as built-in script, an error is set and python is not started. The user can define a user-defined PYTHONHOME variable in the property dialog of itom.
  • added Dialog for opening various files at once (getOpenFileNames())
  • dataObjects (as well as numpy.arrays), polygonMeshes and pointClouds can now be plot from context menu of corresponding variables in workspace toolboxes
  • mainWindow: menu “View” shows now also a list of all opened scripts
  • == and != operator added for ito::ParamBase. This checks if types are equal and if so, if the content is equal. Double and complex values (single and arrays) are checked using their corresponding epsilon-tolerance.
  • CMake Option BUILD_OPENMP_ENABLE inserted to all plugins. If this is disabled, the pre-compiler USEOPENMP is disabled, even if a release build is started and OpenMP is available. Plugins can now get the maximum number of cores by static in AddInBase::getMaximumThreadCount(). This value can be limited by the user in the ini-setting file. Background: Sometimes, it is better to not use all available threads.
  • user dialog: always pre-selects the user profile with the name of the currently logged user or - if not available - the last used profile
  • slots with enumeration types can be called now (only Qt5). For Qt < 5.5, only integer values can be passed; later also the name of the desired enumeration types.
  • Method getQtToolPath() added
  • Improved support of style sheets in itom. Default stype sheets can be set in property editor. Styles of command line and scripts can now also be fully adjusted via property editor.
  • checkableComboBox of itomWidgets now has the property ‘checkedIndices’ to get a list of indices which are checked or set them.
  • added new generic widget motorAxisController to itomWidgets library. This widget can control any actuator plugin, either in any GUI or the internal toolbox of the plugin. Due to this, the library commonQtLib was split into commonQtLib and commonPlotLib
  • command line is not automatically scrolled to the end of the text if the mouse wheel is turned. The automatic scrolling is re-enabled once a new command is entered or the command line is cleared
  • returned handles of itom.plot or itom.liveImage now also have the outer window as baseItem such that connect commands to these plots are successful
  • script plot_help_to_rst_format.py added to convert the output of itom.plotHelp(...) to a rst-string format
  • sphinx extension ‘numpydoc’ updated
  • ensure that saveIDC() (pickle.dump) always saves with the defined protocol version 3 (default for Python 3).
  • better auto-documentation of designer plot widgets, parsed in the C++ or python context. Slots marked with the ITOM_PYNOTACCESSIBLE macro are excluded from the Python context.
  • From Qt 5.6 on, itom is shipped with a built-in help viewer based on QtWebEngineView. QtAssistant is not used any more for this purpose.
  • Added method showHelpViewer() to open help viewer
  • PythonEngine: added slots pickleSingleParam and saveMatlabSingleParam to save objects to idc and mat by a C++ code
  • many settings of command line and scripts can now be adjusted via property dialog (e.g. spacing between lines)
  • many docstrings of Python methods improved
  • documentation about build for raspberry pi added
  • linux fixes for FindQScintilla: able to detect package libqt5scintilla
  • ito::areEqual added to numeric.h in commonLib
  • pip manager: added message under windows that some packages depend on certain versions of the MSVC redistributable package
  • error messages emitted by debugger (e.g. cannot add breakpoint...) can now also be parsed by double click event in command line such that indicated script is opened.
  • ItomUi: autoslot also possible with window or dialog itself (by its objectName)
  • typeDefs.h reduced to values that are important both for the core and plugins. Core-only enumerations have been moved to global.h
  • plugins and filters can now also provide parameters of type complex or complex array
  • auto grabbing interval (in ms) for grabbers can now be read and adjusted by getAutoGrabbingInterval() and setAutoGrabbingInterval(). Better error messages inserted in startDevice fails if a live image is created.
  • AddInGrabber: Auto grabbing is disabled if errors occurred consecutively during the last 10 runs.
  • user documentation extended
  • added AutoGrabbing to toolbar
  • further path variables can now either be appended or prepended to the global PATH variable (see property dialog)
  • Init-Dialog of plugin instances now also provide a GUI for array parameters (e.g. integer or float array)
  • Python Matlab engine now dynamically resolves functions from libeng.dll and libmx.dll of Matlab. Therefore, itom can be build with Matlab support and matlab must not necessarily be available on the destination computer.
  • documentation added, how to create the all-in-one development setup
  • frosted syntax check can now also detect the usage of an unreference variable.
  • added optional parameter parent to getText(), getInt(), getDouble()
  • bugfix: itom crashed by calling pixToPhys() with negativ axis
  • improvements and fixes concerning interpreter lock GIL of Python
  • itom.font.isFamilyInstalled() and itom.font.installedFontFamilies() added to itom.font
  • modifications in PaletteOrganizer, e.g. add of new matplotlibs colormap viridis and improved line colors
  • new class QPropertyHelper added to C++ sources to bundle all conversions between Q_PROPERTY properties and other Qt classes.
  • fixes in itomWidgets, partially due to commits to the original ctkCommon project, colorPickerButton and colorDialog added to itomWidgets (taken from ctkCommon project)
  • Python type None can now be assigned to slots of type QVector, QSharedPointer, ...
  • workaround in doubleSpinBox of itomWidgets for Qt < 5.5 such that the minimum size of the spinbox will not be huge if for instance its minimum or maximum value is +/- Inf.
  • ito::DataObject::bitwise_not added to create a bitwise inversion. This method is also connected to the ~operator of itom.dataObject
  • param validator can now parse the name of the parameter in error messages
  • improved range check for ‘areaIndex’ added to itom.figure.plot(), itom.figure.liveImage() and itom.figure.matplotlibFigure()
  • bugfix in mapping set of itom.dataObject if a numpy-array with the same squeezed shape but different unsqueezed shape is given.
  • static methods of ui (like itom.ui.msgInformation()) can obtain uiItem, ui, figure or plotItem as parent argument
  • matplotlib designer widgets are now handled like any other plot. They can be docked or stacked into sub-figures. The command close() also closes matplotlib figures.
  • many demo scripts added to demo folder and its subfolders (e.g. plots, shapes, matplotlib...)
  • more checks and features added at startup to better improve foreign text codecs (e.g. Russian). Bugfix in PythonEngine::stringEncodingChanged()
  • ito::pclHelper::dataObjToEigenMatrix added
  • settings of plots are not only read from ini-setting file but are also tried to be inherited from parent plot (e.g. 1D plot as child of 2D plot)
  • first plot / figure get the number 1 instead of 2.
  • Fixes to display WaitCursor during long operations (e.g. file load)
  • bugfix if a dataObject is freed in special cases.
  • improved help rendering in plugin help toolbox.
  • dataObject.zeros, ones, eye, randN and rand returned int8 as default type, but the documentation said uint8 (like the default constructor). This was a bug. It is fixed now, all static constructors return uint8 per default.
  • Improvements for displaying help about plugins (e.g. in command line, added scripts to semi-automatically render help for documentation...)
  • methods isNotZero, isFinite, isNaN and isInf moved from dataobj.h to numeric.h of Common library
  • createMask() added to create a mask object from one or multiple shapes.
  • enumerations based on QFlags (bitmask) can now be set via property in Python. These properties are now also changeable in property editor toolbox.
  • SDK adapted to support shapes in plots (rectangles, circles, points...). These shapes are accessible via :py:class:`itom.shape`and defined in Shape library. Old-style primitives (dataObject based) in plots replaced by shapes.
  • Implementation for generic toolboxes for markers, pickers and shapes of plots
  • many bugfixes

New in itom 2.1.0 (Mar 5, 2016)

  • user documentation enhanced
  • more demo scripts added
  • fix in package manager for pip >= 8.0.0
  • indexing of itom.dataObject works now also with numpy.array as mask, e.g. myDataObj[myNpArray > 0.5] = 2
  • setVal of ito::Param now also works with const pointers, e.g. const ito::DataObject*.
  • ito::autoInterval and itom.autoInterval (Python) homogenized: The default is always (-inf,+inf) and auto = True!
  • ui-properties of type dataIO and actuator can be read by python.
  • fixes of Q_WS_... and Q_OS_... symbols since Q_WS_... does not exist in Qt5.
  • bugfix in ‘goto next or previous bookmark’
  • Navigator in ScriptEditorWidget can now also read multi-line definitions of methods or functions
  • AddInInterface incremented to 2.3.0. Reason: itom sometimes crashed when a dock widget of a plugin was visible, the plugin quiet busy (e.g. long integration time) and itom was closed. When closing the main window, it implicitly deleted all dock widgets while a dockWidgetVisibilityChanged signal, that was sent long before but did not arrive due to the blocked plugin, is emitted after and tries to access the deleted dock widget. Now, dock widget is guarded by QPointer in AddInInterface.cpp. For better maintaining, some private members of ito::AddInBase are not moved to a private subclass.
  • bugfix when executing selected parts in a script. If an indented block ended with one or more empty lines, an error occurred. This is fixed now.
  • file suffix check when dropping to workspace is case insensitive now.
  • RoughnessEvaluator tool added as example for the roughness filters
  • fix in version number of windows qitom(d).exe
  • incremented AddInInterface Version to 2.2.0 (improvements in pluginThreadCtrl to have the same, good things like in the deprecated classes helperActuator and helperGrabber; add of ito::DataObject::getStep, ...)
  • AbstractDockWidgets will be raised on top of a possible tabified stack if they are docked again.
  • modifications in PluginThreadCtrl for improved compatibility with old classes threadActuator and threadDataIO. Like the old classes, waitForSemaphore can be used to finally wait for the last semaphore-protected function to be finished. The merge of this branch requires an increment of the plugin interface
  • QFlags based enumeration bitmask can now also be set as property
  • itom.ui.availableWidgets() added to obtain a list of available designer widgets
  • updated function validateStringMeta (paramHelper)
  • For matplotlib >= 1.5.0: if matplotlib is run within itom, the output is automatically rendered in the itom_backend now (new environment variable MPLBACKEND).
  • demo dataObjectTableDemo added
  • bugfix when setting fake properties (like horizontalHeaderVisible of QTableView or derived classes)
  • ui.createNewPluginWidget2() added for a detailed parameterization of plugin based widgets (dockable, deleteOnClose...)
  • demos added for creating different types of GUIs with Python.
  • if available, output parameters are added to the exemplary filter call string in the help dock widget.
  • pythonPlugins.cpp: if getExecFuncsInfo is applied with keyword “detailLevel = 1”, all execFunction of instance are returned. Before it was only possible to return detailLevels of each execFunc.
  • child-items from workspace widget can now directly be exported, deleted and renamed. Drag&Drop one or multiple items (also child-items) from workspace to console in order to get their full path name. If an item and its sub-item is selected, the sub-item is ignored since it is part of the parent item.
  • bugfixes in python class itom.rgba. Method toGray added to itom.rgba
  • one or more pathes to python files (suffix .py) can be appended as argument to Qitom.exe. These files are then opened in a script at startup. Connect py-files with Qitom.exe to open them with a double-click.
  • html documentation updated using the read-the-docs theme
  • when loading files using algorithms, the python variable is checked for existence. If it already exists, a warning is shown and the user has to decide if the existing name should be overwritten.
  • timeouts are available via file >> Properties dialog, tab Application / General. New timeout added for file load and save operations.
  • improved and new demos about visualizing meshes, point clouds...
  • addInInterface incremented to 2.1.0: deprecated classes helperActuator, helperGrabber removed, removed unused non-const getter functions in pclStructures, improved AbstractFigure: more than one dock widget can be added to each plot, put private members to AbstractFigurePrivate class to provide better binary compatibility for the future, slight changes in other interface classes for better binary compatibility support in future releases.
  • Qt type QVector2D, QVector3D, QVector4D can be handled by QPropertyEditor
  • QObject property types QVector2D/3D/4D can now be parsed to a python sequence of 2, 3 or 4 float values.
  • timeout for plots increased in order to better debug OpenGL based figures in debug mode.
  • improvements and bugfixes in AbstractDObjPCLFigure interface without destroying the binary compatibility. The macro USE_PCL is now automatically set by find_itom_sdk in order to avoid strange crashes if PCL support is differently set in itom and plugins. This is forbidden.
  • itom.rgba value can be multiplied by positive float (only r,g,b is scaled, not alpha)
  • demo “convert falseColor To gray or hotIron” added
  • improvements and fixes for matplotlib rendering: FileSaveAs and other dialogs are now displayed based on their parent widget even if the parent widget is derived from AbstractDockWidget. Saving matplotlib figures to files remembers now the filename of the last run.
  • further improvements: all special characters are now explicitly created as unicode character signs.
  • charset-independent fix in paramInputParser
  • German umlauts in source code replaced by unicode representations (e.g. for chinese operating systems)
  • demo: convertFalseColorToGray improved
  • Python package Axiovert200M added
  • pip package manager can also install from zip archive, not only tar.gz
  • commit of python package thorlabsLabJack to control the thorlabs labjack MLJ050 (requires python package FTDI)
  • itom.plot() and itom.liveImage() command can now also be called with the short-hand aliases ‘1d’, ‘2d’ or ‘2.5d’ as className. This enables a quick plot using the default plot for the given object type depending on the desired base style (e.g. 1d plot).
  • CMake cleanup, e.g. removed SVN support since not used any more.
  • bugfix in FindITOM_SDK.cmake for detection of itom SDK compiled with MSVC2012 or MSVC2013
  • splitter position of helpTreeDockWidget is restored at restart.
  • ito::dObjHelper::verify2DDataObject and ito::dObjHelper::verify3DDataObject: if numberOfAllowedTypes is 0, all types are accepted. This is a feasible assumption since numberOfAllowedTypes == 0 would deny all dataObjects in the old implementation.
  • added error marker to ScriptEditorWidget. If an error in the command line is double-clicked, the corresponding line is opened and marked in a script editor widget.
  • ito::pclHelper::normalsAtCogFromPolygonMesh added to get an interpolated point cloud with normal vectors from a polygonal mesh. This function is used in the filter “pclGetNormalsAtCogFromMesh” from PCLTools.
  • method added to pythonDataObject to create a new PyDataObject from a numpy array (if possible)
  • unittest for ito::Rgba32 added
  • fold options added to context menu of editor
  • property fold style added to adjust the fold style of any script editor
  • about dialog modified (some owners of 3rd party libraries changed their name)
  • fix in rangeSlider for very high value ranges leading to buffer overflows.
  • python debugger: 50ms sleep inserted into while loop waiting for new debug commands at breakpoint. Without the sleep, the CPU load was very high at different computers (Qt4 and Qt5).
  • OpenCV randn and randu initialized (seed value) in main thread, python thread and all plugin threads in order to generate more random values. The seed value is thread dependent.
  • bugfix in dataobj: no exception was raised for +/-/+=/-=... operators if one of both dataObjects was empty. Unified and improved check for consistent type and size added using a #define-macro.
  • faster implementation of MSize == and != operator in dataobj (using memcmp instead of for-loop). Unittest added for this.
  • class ito::AutoInterval now makes sure, that min fix to return organized clouds if the incoming data objects have a height > 1
  • fixes issue #39: Add “additional search pathes” to Properties >> Application page
  • fixes issue #42: ignore trailing >> characters when copying strings from command line
  • fixes issue #43: continue a search operation in script editor widget with F3
  • indexing of itom.dataObject works now also with numpy.array as mask, e.g. myDataObj[myNpArray > 0.5] = 2
  • Method getStep added to ito::DataObject in order to get the number of value steps one has to go in order to reach the next value in the given axis.
  • == and != comparison for ito::dataObject with type complex64 or complex128 implemented, since this operator is well defined.
  • bugfixes in return type of itom.dataObject.deleteTag() and itom.dataObject.getTagListSize
  • bugfix in ito::DataObject::makeContinuous for >2d data objects with an active ROI. Python unittest added for this.
  • bugfix when assigning 1d-values (e.g. tuple) to a one-dimensional ROI of a dataObject with more than 2 dimensions. Python-Unittest added.
  • dataObject.zeros(), ones, eye, randN and rand returned int8 as default type, but the documentation said uint8 (like the default constructor). This was a bug. It is fixed now, all static constructors return uint8 per default.
  • bugfix in cout stream of ito::DataObject: wrong type printed.
  • itom.dataObject.reshape is now working
  • bugfix in method CreateFuncWithCVPlanes of dataobj.cpp: If a roi was already set to the given CV planes, their original size was wrongly copied to the data object leading for instance to iterator errors in subsequent calls.
  • ito::DataObject::reshape added -> itom.dataObject.reshape() works now and does not throw a ‘not implemented’ exception.
  • ito::DataObject::squeeze and itom.dataObject.squeeze() can now also reduce the two last dimensions (x and y). If this is the case, a deep copy and no shallow copy is returned. Additional bugfix in cout stream of data object.
  • ito::abs(ito::DataObject...) func did not compile with various compilers for unsigned int objects. This is resolved now.
  • itom.dataObject.physToPix() raises warning if pixel-value is out of axis bounds and therefore clipped to these bounds.
  • some docstring improvements in itom.dataObject
  • bugfix in itom.dataObject ** operator -> returned a wrong result until now. Now the methods ito::DataObject::pow and ito::DataObject::sqrt are available.
  • ito::dataObject and itom.dataObject support now +,+=,-,-=,*,*= for complex128 scalar
  • __repr__ method of itom.dataObject returns “dataObject(...)” instead of “DataObject(...)” for better consistency
  • better cout data method for dataObject (correct handling for complex and rgba values, too)
  • it is possible now to assign to an itom.dataObject or a slice of it any structure that can be converted to an array and has the same shape and size (e.g. dataObj[0,:,1] = (2,3,4))
  • fix for ito::DataObject::convertTo function if alpha != 1 or beta != 0. Until now, alpha and beta was converted to destination type before the operation dest = src * alpha + beta was executed. If alpha was < 0.5, it was cast to 0 if destination type was uint8 or similar. This is wrong. Now, alpha and beta are casted to double, complex64 or complex128 depending on source type and then used as operands before the final saturate_cast to the destination type.
  • bugfix in itom.dataObject for subtraction-operator (case scalar - dataObject)
  • like in previous commit, faster implementation of == operator of class ito::DataObject::MROI using memcmp. Binary compatibility still given.
  • ito::DataObject::rowPtr can now also be called as templated version ito::uint8* myPtr = myObj->rowPtr(0,0). This is an overloaded version of the non-templated one and follows the same concept than cv::Mat::ptr.
  • bugfix in itom.dataObject: was not correctly recognized for PyIter_Check(...) in C-code
  • bugfix in DataObject::deepCopyPartial: itom.dataObject and numpy.array allowed to partially copy arrays to other arrays if the type and the sequence of sizes is equal where all sizes equal to 1 are omitted. However the c-code crashed for obj5x1x1=obj1x5. This is fixed and works now. Several tests for this are added to the unittest_dataobject.
  • further improvements in convertTo method of ito::DataObject especially with respect to rgba32 type.
  • many encoding fixes (due to Qt5 introduction). Avoid German umlauts in source code for easier compilation on non-western compilers.
  • source code and user documentation improved.
  • Modified FindNumPy.cmake to work with Numpy 1.10.0b1 version numbers
  • adaptions to work with OpenCV 2.4.x and 3.x
  • introduction of the Python Interpreter Lock (GIL). This allows the execution of Python code from the modules threading or concurrent. See the demos threadPoolExecutor.py or worker_thread.py in the demo folder. While an itom filter is executed, the GIL is released, such that other Python threads can be run in the meantime.
  • many bugfixes
  • Version 2.0.0 (2015-07-20)
  • (more than 290 commits in itom repository)
  • easier compilation under Windows 8
  • welcome message removed since it bothers upon regular usage.
  • modified icons and splash screen in preparation for upcoming major version 2.0.
  • demo about saving and loading data objects added
  • default plugins for category DObjLiveImage changed to itom2dqwtplot and PerspectivePlot to twipOGLFigure
  • script added in plugin help section to automatically parse the parameter section in a plugin’s documentation file from a running instance of the plugin
  • some improvements when pressing key up or down in console while also pressing the ctrl or shift buttons
  • plots (e.g. itom1dqwtplot and itom2dqwtplot) can now display axes labels in various ways. Enum UnitLabelStyle added.
  • It is now possible to a translation file (qm) to a python-loaded ui file
  • added linguist application to setup to create user defined translations for user-defined GUIs.
  • addin interface incremented to 2.0.0: branch embedded line plot merged, read-write-lock of data object removed, deprecated methods removed, cleanup in AddInBase, AddInActuator and AddInDataIO (things from SDK-change issue on bitbucket)
  • embedded line plot added to allow redirecting a line cut or z-stack in the designer plugin itom2dqwtplot to an existing itom1dqwtplot that is already contained in an user-defined GUI (demo available)
  • improvements in plugin parameter validator: rectMeta information is now better checked with more precise error messages
  • setup comes now with Numpy 1.9.2 (MKL-version)
  • algorithm plugin auto documentation improved to also show parameters and descriptions of filters
  • itom.font for wrapping font information. This allows changing axisFont, labelFont... properties of plots
  • fix to convert between QColor-property and Python (itom.rgba, hex-color, string-color-name) in both directions
  • improved documentation style sheet for Qt5
  • itom.actuator and itom.dataIO can now be observed using weak references (python module weakref)
  • deprecated class itom.npDataObject removed.
  • demoFitData.py added to demo files to show how to fit 2D polygons to data.
  • itom.timer now accepts an interval of 0ms. The interval must now always be an integer. Further argument singleShot added to constructor in order to allow a single shot timer that only fires once after a start.
  • If “find word” widget in script editor is opened and user presses Esc key, the widget will be closed and the focus set to the parent script again.
  • fix such that running or debugging script snippets in the command line always print the result of every evaluated command (even in multiline commands).
  • bugfixes concerning changed default encoding between Qt4/Qt5. itom’s default econding is latin1 (like Qt4). In Qt5 it changed to utf-8.
  • children() added to get a dictionary with all children of this uiItem (widget), optional: recursive scan of sub-children, too.
  • insert codec string feature added to script editor to insert the # coding=... line in any script.
  • help dock widget can now also be undocked as main window (like scripts or plots)
  • let user choose if unsaved files should always/never be saved before script execution or debugging (revertable via property dialog)
  • introduction of Python Package Manager (via module pip). This dialog allows updating and installing python packages and its dependencies from pypi.python.org or wheel files.
  • fromXYZRGBA() and fromOrganizedCloud() added.
  • demo about statusbar in main windows added
  • fix in DataObject::mul and DataObject::div: axis tags and tag map from first operand are copied to resulting object.
  • new api methods apiSendParamToPyWorkspace and apiSendParamsToPyWorkspace added.
  • removal of unused DataObject::lockRead(), DataObject::unlock(), DataObject::lockWrite() methods.
  • support for Mac OSX, 64bit. The build process is mainly supported by the package brew.
  • virtual slots currentRow and currentColumn added to QTableWidget for accessing these slots via Python.
  • negative indices of dataObject indexing is now allowed and wraps around: obj[-1,-1] accesses the last element.
  • change in ito::dObjHelper::squeezeConvertCheck2DDataObject: parameter convertToType: -1 means no conversion will be done, this was 0 before. However 0 collides with int8.
  • phyToPix() and pixToPhys() added
  • info() can now print more properties, slots and signals if called with parameter 1 or 2.
  • unifications of OS-dependent macros. For itom, plugins and designerPlugins the following pre-compiler directives are set: WIN32, _WIN32 for all Win-Systems; additionally WIN64, _WIN64 for x64 build; linux, Linux for Linux(Unix) based systems, __APPLE__ for Apple systems.
  • added gitignore with respect to linux,windows,osx,c++,xcode,visualstudio,tortoisegit,cmake,python,ipythonnotebook,qt
  • compare operators with real, scalar operand inserted for data object (support in C++ and Python itom.dataObject).
  • mapping set of data object can now get a mask (e.g. itom.dataObject a; a[b > 0] = 2).
  • setTo-method and at-method with mask parameter added to DataObject. It is then possible to set a scalar value to masked values or to return a new data object that only contains masked values in a 1xM object.
  • bugfix: designer.exe could not be started in setup environment (Windows). This is fixed now.
  • createMask() can get a bounding rectangle such that the returned mask data object can be adjusted concerning its size and offset.
  • many bugfixes

New in itom 2.0.0 (Aug 21, 2015)

  • easier compilation under Windows 8
  • welcome message removed since it bothers upon regular usage.
  • modified icons and splash screen in preparation for upcoming major version 2.0.
  • demo about saving and loading data objects added
  • default plugins for category DObjLiveImage changed to itom2dqwtplot and PerspectivePlot to twipOGLFigure
  • script added in plugin help section to automatically parse the parameter section in a plugin’s documentation file from a running instance of the plugin
  • some improvements when pressing key up or down in console while also pressing the ctrl or shift buttons
  • plots (e.g. itom1dqwtplot and itom2dqwtplot) can now display axes labels in various ways. Enum UnitLabelStyle added.
  • It is now possible to a translation file (qm) to a python-loaded ui file
  • added linguist application to setup to create user defined translations for user-defined GUIs.
  • addin interface incremented to 2.0.0: branch embedded line plot merged, read-write-lock of data object removed, deprecated methods removed, cleanup in AddInBase, AddInActuator and AddInDataIO (things from SDK-change issue on bitbucket)
  • embedded line plot added to allow redirecting a line cut or z-stack in the designer plugin itom2dqwtplot to an existing itom1dqwtplot that is already contained in an user-defined GUI (demo available)
  • improvements in plugin parameter validator: rectMeta information is now better checked with more precise error messages
  • setup comes now with Numpy 1.9.2 (MKL-version)
  • algorithm plugin auto documentation improved to also show parameters and descriptions of filters
  • itom.font for wrapping font information. This allows changing axisFont, labelFont... properties of plots
  • fix to convert between QColor-property and Python (itom.rgba, hex-color, string-color-name) in both directions
  • improved documentation style sheet for Qt5
  • itom.actuator and itom.dataIO can now be observed using weak references (python module weakref)
  • deprecated class itom.npDataObject removed.
  • demoFitData.py added to demo files to show how to fit 2D polygons to data.
  • itom.timer now accepts an interval of 0ms. The interval must now always be an integer. Further argument singleShot added to constructor in order to allow a single shot timer that only fires once after a start.
  • If “find word” widget in script editor is opened and user presses Esc key, the widget will be closed and the focus set to the parent script again.
  • fix such that running or debugging script snippets in the command line always print the result of every evaluated command (even in multiline commands).
  • bugfixes concerning changed default encoding between Qt4/Qt5. itom’s default econding is latin1 (like Qt4). In Qt5 it changed to utf-8.
  • children() added to get a dictionary with all children of this uiItem (widget), optional: recursive scan of sub-children, too.
  • insert codec string feature added to script editor to insert the # coding=... line in any script.
  • help dock widget can now also be undocked as main window (like scripts or plots)
  • let user choose if unsaved files should always/never be saved before script execution or debugging (revertable via property dialog)
  • introduction of Python Package Manager (via module pip). This dialog allows updating and installing python packages and its dependencies from pypi.python.org or wheel files.
  • fromXYZRGBA() and fromOrganizedCloud() added.
  • demo about statusbar in main windows added
  • fix in DataObject::mul and DataObject::div: axis tags and tag map from first operand are copied to resulting object.
  • new api methods apiSendParamToPyWorkspace and apiSendParamsToPyWorkspace added.
  • removal of unused DataObject::lockRead(), DataObject::unlock(), DataObject::lockWrite() methods.
  • support for Mac OSX, 64bit. The build process is mainly supported by the package brew.
  • virtual slots currentRow and currentColumn added to QTableWidget for accessing these slots via Python.
  • negative indices of dataObject indexing is now allowed and wraps around: obj[-1,-1] accesses the last element.
  • change in ito::dObjHelper::squeezeConvertCheck2DDataObject: parameter convertToType: -1 means no conversion will be done, this was 0 before. However 0 collides with int8.
  • phyToPix() and pixToPhys() added
  • info() can now print more properties, slots and signals if called with parameter 1 or 2.
  • unifications of OS-dependent macros. For itom, plugins and designerPlugins the following pre-compiler directives are set: WIN32, _WIN32 for all Win-Systems; additionally WIN64, _WIN64 for x64 build; linux, Linux for Linux(Unix) based systems, __APPLE__ for Apple systems.
  • added gitignore with respect to linux,windows,osx,c++,xcode,visualstudio,tortoisegit,cmake,python,ipythonnotebook,qt
  • compare operators with real, scalar operand inserted for data object (support in C++ and Python itom.dataObject).
  • mapping set of data object can now get a mask (e.g. itom.dataObject a; a[b > 0] = 2).
  • setTo-method and at-method with mask parameter added to DataObject. It is then possible to set a scalar value to masked values or to return a new data object that only contains masked values in a 1xM object.
  • bugfix: designer.exe could not be started in setup environment (Windows). This is fixed now.
  • createMask() can get a bounding rectangle such that the returned mask data object can be adjusted concerning its size and offset.
  • many bugfixes

New in itom 1.4.0 (Aug 21, 2015)

  • improved getting started documentation
  • CMake adapted for detection Visual Studio versions > 2010
  • dockWidgetArea added as optional parameter for itom.ui-class such that windows of type ui.TYPEDOCKWIDGET can be placed at different locations.
  • find_package(OpenMP) added to ItomBuildMacros for all compilers, since Visual Studio Express does not provide this tool.
  • improved drag&drop from variable names from workspace to console
  • redesigned user management dialogs
  • python access key to variables in workspace widget can now be inserted into console or scripts via drag&drop, detailed variables window also contain the right access key for dicts, list, tuples, attributes...
  • itom.plotItem.PrimitiveEllipse, PrimitiveLine... added as constants to the class plotItem of itom module in Python.
  • double click on Python error message (filename, line-number) in console opens the script at the indicated line
  • increased buffer size of data object protocol strings since sprintf crashes upon buffer overflow (even sprintf_s, debug assertion)
  • Improved itom.plotHelp()-command to get a list of all plot widget
  • new demo scripts added (see demo subfolder)
  • pointCloud.copy() for deep copies added
  • Make Python loops interruptible from GUI
  • Added functions to edit, add and read out color maps bases on rgba-values
  • itom.addMenu() / itom.removeMenu() / itom.addButton() / itom.removeButton(): the methods to add a button or menu element always return an unique handle to the recently added item. The methods to remove them can be called with this handle to exactly delete the element that has been added (does not remove an element with the same name that replaced the previously added one). With this change, a bug has been fixed: In some cases methods or functions connected to menu items have not been released when deleting the parent menu element.
  • observeInvocation in AbstractAddInConfigDialog and abstractAddInDockWidget now use the waitAndProcessEvents method of ItomSharedSemaphore instead of a “self-programmed” version doing the same.
  • itom.addButton() returns handle to button, this handle can be used to call :py:meth:`itom.removeButton`(handle) to exactly delete this button. The existing method :py:meth:`itom.removeButton`(toolbarName, buttonName) still exists as other possibility
  • AddInManager::initAddIn: let this method also processEvents when it waits for the plugin’s init method to be finished. Then, the plugin can directly invoke slots from GUI-related elements of the plugin within its init method. * Bugfix in dataObject.toGray() with default parameter (type)
  • QPropertyEditor can now handle QStringList properties (with list editor dialog for editing the QStringList)
  • methods removeItem, setItemData and insertItem of QComboBox are now callable from Python (via .call(...) command)
  • Qt5 fixes and adaptions (encodings, qmessagehandler, linkage against shell32 for Qt5.4 and Windows, ...)
  • ‘log’ can be passed as argument to the executable to redirect debug outputs to itomlog.txt.
  • always set Environmental Variable MPLCONFIGDIR to itom-packages/mpl_itom such that an individual matplotlibrc config file can be placed there. You can set the backend within this config file to module://mpl_itom.backend_itomagg such that matplotlib always renders to itom windows if used within itom.
  • All-In-One build environment for Qt5, Python 3.4, VS2010, 32 or 64bit, PCL 1.8.0, VTK 6.1 created. Documentation about all-in-one build environment added.
  • Added more flexible thread-safe control classes for all types of dataIO (grabber, ADDA, rawIO) and actuators (using inheritance).
  • added multi-parameter slot getParamVector to ito::AddInBase (similar to setParamVector).
  • class CameraThreadCtrl inserted in helperGrabber.h (part of SDK; replacement for threadCamera). The new class guards the camera by temporarily incrementing its reference counter, checks the isAlive() flag when waiting for semaphores and directly frees the semaphore after usage. A camera pointer can directly be passed to this class.
  • some checks inserted to avoid crashes at startup if Python could not be found.
  • theme for html documentation adapted
  • replaced c-cast in REMOVE_PLUGININSTANCE by qobject_cast (due to some rare problems deleting plugins)
  • documentation: sphinx extension Breathe updated to version 3.1
  • improved parameter validation for floating point parameters (consider epsilon value)
  • typedef ParamMap and ParamMapIterator as simplification for QMap ... inserted
  • better detection of OpenCV under linux
  • fix in backend of matplotlib (timer from threading package to redraw canvas for instance after a zoom or home operation did not work. Replaced by itom.timer)
  • range: (min,max,step) and value: (min,max,step) also added for rangeWidget of itomWidgets project. rangeSlider and rangeWidget can now also be parametrized passing an IntervalMeta or RangeMeta object.
  • RangeSlider widgets now have the properties minimumRange, maximumRange, stepSizeRange, stepSizePosition
  • some new widgets added to itomWidgets project
  • IntervalMeta, RangeMeta, DoubleIntervalMeta, CharArrayMeta, IntArrayMeta, DoubleArrayMeta, RectMeta added as inherited classes from paramMeta. AddInInterface incremented to 1.3.1.
  • bugfix in dataObject when creating a huge (1000x500x500, complex128) object (continuous mode).
  • method uiItem.exists added in order to check if the widget, wrapped by uiItem, still exists.
  • bugfix in squeezeConvertCheck2DDataObject if numberOfAllowedTypes = 0 (all types allowed)
  • Python script navigator added to script editor window (dropdown boxes for classes and methods)
  • implicit cast of ito::Rgba32 value to setVal of ito::Param of type integer.
  • improved integration of class itom.autoInterval and the corresponding c++ class ito::AutoInterval. Conversion to other data types added.
  • documentation about programming of AD-converter plugins (dataIO, type ADDA) added
  • several bugfixes in breakPointModel (case-insensitivity of filenames, better error message if breakpoint is in empty line, ...)
  • many other bugs fixed
  • improvements in documentation

New in itom 1.3.0 (Aug 21, 2015)

  • fixes big bug in assignment operator of dataObjects if d2=d1 and d1 shares its data with an external object (owndata=0). In the fixed version, d2 also has the owndata flag set to 0 (before 1 in any cases!)
  • replace dialog for replacing text within a selection fixed
  • API function apiValidateAndCastParam added. This is an enhanced version of apiValidateParam used in setParam of plugins. The enhanced version is able to modify possible double parameters in order to fit to possibly given step sizes.
  • support of PyMatlab integrated into CMake system (check BUILD_WITH_PYMATLAB to enable the python module ‘matlab’ and indicate the include directory and some libraries of Matlab)
  • Add twipOGL-Plugin (from twip Optical Solutions GmbH) to plotToolBar if present
  • dataObject: axisUnits, axisDescriptions, valueUnit and valueDescription can now handle encoded strings (different than UTF8)
  • QDate, QDateTime and QTime are now marshalled to python datetime.date, datetime.datetime and datetime.time (useful for QDateTimeEdit or QDateEdit widgets)
  • text from console widget is never deleted when drag&dropping it to any script widget
  • state of python reloader is stored and restored using the settings
  • warning is displayed if figure class could not be found and default fallback is applied
  • itom.plotLoaded() and plotHelp() added
  • Improved protocol functionality for dataObject related python functions
  • Fixed missing copy of rotationMatrix metadata for squeeze() function in dataobj.cpp
  • Added copyAxisTagsTo and copyTagMapTo to ito::absFunc, ito::realFunc, ito::imagFunc, ito::argFunc to keep dataTags
  • example about modal property dialogs added to demo folder
  • QScintilla version string added to version helper and about dialog
  • itom.clc() added to clear the command line from a script (useful for overfull command line output)
  • AutoInterval class published in common-SDK. This class can be used as datatype for an min/max-interval (floats) with an additional auto-flag.
  • public methods selectedRows, selectedTexts and selectRows of QListWidget can now be called via itom.uiItem.call()
  • itom.dataObject operator / and /= for scalar operand implemented (via inverse multiplication operator) fixed casting issue in multiplication operator for double scalar (multiply with double precision -> then cast)
  • configured QPropertyEditor as shared library (dll) instead of static library. This was the last library that was not shared yet.
  • reduced size of error messages during live image grab
  • fix when reloading module, that contains syntax or other errors: these errors are displayed for better handling
  • If an instance of QtDesigner is opened and then an ui-file is loaded, this file was opened in a new instance of QtDesigner. This is fixed now.
  • some crashes when not starting with full user rights are fixed
  • Added demofile for data fitting
  • if last tab in script window is closed, the entire window is closed as well
  • types ito::DataObject, QMap... are no registered for signal/slot in addInManager such that this needs not to be done in plugins any more.
  • class enum in itomPackages renamed to itomEnum since Python 3.3 introduces its own class enum.
  • check for AMD-CPUs and adjust environment variable for these processors in order to avoid a KMP_AFFINITY error using Matplotlib (and OpenMP).
  • enhanced output for class function itom.ui.info().
  • optional properties argument added to commands itom.plot() and itom.liveImage(). Pass a dictionary with properties that are directly applied to the plot widget at startup.
  • recently opened file menu added to itom main window and script windows
  • improved loaded plugins dialog
  • some fixes in data object: fixed constructor for existing cv::Mat and type RGBA32, fixed bug in assignment operator for rhs-dataObjects that do not own their data block.
  • property dialog documented
  • improved python module auto reloader integrated into itom (based on iPython implementation). This reloader can be enabled by the menu script >> reload modules.
  • some examples from the matplotlib gallery added to the demo scripts
  • bugfix when changing the visibility of undocked plots
  • the designer plugin matplotlib has now the same behaviour than other plot widgets (can be docked into main window, property toolbox available...)
  • some improvements with tooltip texts displaying optional python syntax bugs (python module frosted required)
  • unified signatures passed to Q_ARG-macro of Qt.
  • the search bar is not hidden again if Ctrl-F is pressed another time.
  • detailed descriptions of plugins are now also displayed in help toolbox
  • improvements to reject the insertion of breakpoints in commented or empty lines
  • improved breakpoint toolbox that allows en-/disabling single or all breakpoints, deleting breakpoints... Breakpoints are reloaded at new startup.
  • unused or duplicated code removed and cleaned
  • project itomWidgets synchronized to changes in mother project commonCTK
  • german translations improved
  • itom and the plugins now support a build with Qt5. The setup is still compiled with Qt4.8.
  • support for CMake 3.0 added

New in itom 1.2.0 (Aug 21, 2015)

  • itom.dataObject.toGray() added in order to return a grayscale dataObject from type rgba32.
  • Drag&drop python files to command line in order to open them
  • itom.actuator.setInterrupt() added in order to interrupt the current movement of an actuator (async-mode only, general interrupt must be implemented by plugin)
  • Window bugfix (improper appearance) in Qt5 (windows) as well as some linux distributions (Qt4/Qt5)
  • Breakpoint toolbox improved.
  • Open scripts and current set of breakpoints is saved at shutdown and restored at new startup.
  • Python, Numpy, Scipy, Matplotlib and itom script references can be automatically downloaded and updated from an itom online repository. These references can then be shown in the itom help toolbox.
  • CMake: Improvements in find_package(ITOM_SDK...) COMPONENTS dataObject, pointCloud, itomWidgets, itomCommonLib and itomCommonQtLib can be chosen. Since dataObject and pointCloud require the core components of OpenCV and PCL respectively, these depending libraries are detected as well and automatically added to ITOM_SDK_LIBRARIES and ITOM_SDK_INCLUDE_DIRS.
  • itom.npDataObject removed (reasons see: http://itom.58578.x6.nabble.com/itom-discussions-deprecated-class-itom-npDataObject-td3.html)
  • Designer plugins can now display point clouds and polygon meshes (itomIsoGLFigurePlugin displays pointClouds)
  • improved codec handling. Default codec is latin1 (ISO 8859-1) now, Python’s codec is synchronized to Qt codec.
  • Modified / new templates added for creating a grabber, actuator and algorithm plugin.
  • ito::DataObject registered as meta type in itom. Plugins do not need to do this any more.
  • Styles in property editor can be reset to default, size of all styles can be globally increased or decreased
  • C-Api: new base classes for plugin configuration dialogs and dock widgets added to SDK: ito::AbstractAddInDockWidget and ito::AbstractAddInConfigDialog
  • modified and improved user documentation
  • itom extension added for sphinx for semi-automatic plugin documentation
  • More CMake macros added for easier implementation of plugins: FIND_PACKAGE_QT, PLUGIN_TRANSLATION, PLUGIN_DOCUMENTATION
  • Python commands itom.pluginHelp() and itom.filterHelp() either return dict with information or print information (depending on arguments)
  • Plugin can provide a rst-based documentation file. The documentation of all available plugins is then integrated in the itom help system.
  • Python syntax check in script editors introduced. Install the python package frosted in order to obtain the syntax check (can be disabled in property dialog)
  • meta information stepSize introduced for ito::IntMeta and ito::DoubleMeta
  • glew is not necessary if building against Qt5 with OpenGL.
  • New shared library itomWidgets added to SDK. itom, user defined GUIs and plugins have now access to further widgets. These widgets are mainly taken from the CTK project (the common toolkit).
  • Python class enum in itom-packages renamed to itomEnum since a class enum (with similar functionality is introduced with Python >= 3.4)
  • All signaling_NaNs replace by quiet_NaNs (signaling_NaNs raise C exception under certain build settings)
  • Unittests for ito::ByteArray, ito::RetVal and ito::Param added
  • User management partially available via Python.
  • itom can now be build and run using Qt4 or Qt5. Usually the Qt-version installed on the computer is automatically detected, if both versions are available use the CMake variable BUILD_QTVERSION and set it to Qt4 or Qt5 for manual choice.
  • Help toolbox also shows information about all loaded hardware plugins (actuator, dataIO)
  • Help toolbox in itom shows information about filters and widgets provided by algorithm plugins. Exemplary code snippet for all filters added.
  • itom can be build without PCL support, hence the point cloud library is not required. The library pointCloud is not available then (see BUILD_WITH_PCL in CMake)
  • C-Api: New shared libraries created: itomCommon (RetVal, Param,...), itomCommonQt (ItomSharedSemaphore, AddInInterface,...), dataObject, pointCloud, itomWidgets. Plugins link agains these shared libraries. This allows an improved bugfix in these components. Additionally, many changes in these libraries don’t require a new version number for the plugin interface (unless the binary compatibility is not destroyed).
  • C-Api: error message in ito::RetVal, name and info string of ito::Param are now stored as ito::ByteArray class that is based on a shared memory concept. Less memory copy operations are required.
  • crash fixed if itom is closed with user defined buttons and menus
  • fixes if some components are disabled by user management
  • C-Api: DesignerPlugins can now be used within other plugins (e.g. widgets in algorithm plugins)
  • many bugfixes

New in itom 1.1.0 (Aug 21, 2015)

  • help dock widget to show a searchable, online help for the script reference of several python packages, the itom module as well as a detailed overview of algorithms and widgets contained in plugins
  • revised documentation and python docstrings
  • optimization due to tool cppCheck
  • method apiGetParam added to api-functions
  • timeouts changeable by ini-file
  • size, position... of native dock widgets and toolbars is saved and reloaded at restart
  • further demos added
  • property editor for plots added
  • compilation without PointCloudLibrary possible (CMake setting)
  • easier compilation for linux
  • 2DQwtPlot enhanced within a code sprint to support geometric primitives that can be painted onto the plotted image. The parameters of the geometries can then be obtained via python and for instance be evaluated in the designer widget ‘evaluateGeometries’. Demo script added for demonstrating this functionality (uiMeasureToolMain demo)
  • many methods of dataObject now have int-parameters or return values instead of size_t -> better compatibility with respect to OpenCV
  • In itom.uiItem it is now possible to also assign a string (or an integer) to enumeration based properties of widgets.
  • itom.openScript() enhanced to also open the script where any object (class, method...) is defined in (if it exists)
  • itom.dataObject have the attributes ‘ndim’ and ‘shape’ for a better compliance to ‘numpy.ndarray’
  • color type ‘rgba32’ added for data objects. See also itom.rgba. The color class in C++ is contained in color.h. 2dgraphicview plot also supports color cameras. OpenCVGrabber can grab in color as well. Unittest of data object adapted to this.
  • better exception handling of any exception occurring in plugin algorithms.
  • type ‘ui.DOCKWIDGET’ now possible for itom.ui in order to dock any user defined window into the main window
  • drag&drop from last-command dock widget to console or script window
  • modified python debugger
  • added itom.compressData() and itom.uncompressData() in itom
  • normalize method for data objects added
  • many bugfixes