Imported Upstream version 9.1
Tobias Winchen
7 years ago
88 | 88 | --Package(s)-- --Comment-- |
89 | 89 | libfftw3-dev For computing fourier transforms. Tested with 3.3.3-7 |
90 | 90 | libjpeg-dev For reading jpeg image files (optional) |
91 | liblog4cpp-dev For logging. Tested with 1.0.4 | |
92 | libpng12-dev For reading png image files (optional) | |
91 | liblog4cpp-dev For logging. Tested with 1.0.4. Alternately, use log4cpp_null | |
92 | at https://github.com/markummitchell/log4cpp_null | |
93 | 93 | libopenjpeg-dev For reading jpeg2000 image files (optional). Compiles |
94 | 94 | with version 2.1.7 but not with version 2.1.3 |
95 | libpng12-dev For reading png image files (optional) | |
95 | 96 | |
96 | 97 | In Debian and Ubuntu distributions, the following packages are required for |
97 | 98 | building Engauge for your own use: |
99 | 100 | --Package(s)-- --Comment-- |
100 | 101 | libfftw3-dev Required for all distributions |
101 | 102 | libjpeg-dev Required for all distributions |
102 | liblog4cpp5-dev Replaces liblog4cpp-dev that is suggested above | |
103 | liblog4cpp5-dev Replaces liblog4cpp-dev that is suggested above. Alternately, | |
104 | use log4cpp_null at https://github.com/markummitchell/log4cpp_null | |
103 | 105 | libpng12-dev Required for all distributions |
104 | 106 | libqt5sql5-sqlite |
105 | 107 | qtbase5-dev |
106 | 108 | qtbase5-dev-tools |
107 | 109 | qttools5-dev |
108 | 110 | qttools5-dev-tools |
111 | ||
112 | Optional packages that are manually downloaded and installed: | |
113 | ||
114 | poppler Works with version 0.44.0 and 0.45.0 | |
109 | 115 | |
110 | 116 | 4) Run qmake on this file to generate make files. The qmake executable will |
111 | 117 | display what functionality will, and what functionality will not, be included |
7 | 7 | Less Easy - By downloading pre-built binaries for Windows and Linux. The pre-built binaries are available |
8 | 8 | from the engauge6 project on github.com, at: |
9 | 9 | |
10 | https://github.com/markummitchell/engauge6/releases | |
10 | https://github.com/markummitchell/engauge-digitizer/releases | |
11 | ||
12 | *************************************************************************** | |
13 | * * | |
14 | * Special instructions for AppImage releases, which require 'fuse': * | |
15 | * 1) 'sudo apt-get install fuse' * | |
16 | * 2) 'sudo modprobe fuse' * | |
17 | * 3) 'sudo usermod -a -G fuse <username>' * | |
18 | * 4) Logout and then log back in. These steps are only performed once * | |
19 | * * | |
20 | *************************************************************************** | |
11 | 21 | |
12 | 22 | Difficult - By downloading the source code and building Engauge according to the steps in the INSTALL file in |
13 | 23 | the highest level directory. The initial build process can take as little as 15 minutes or as long |
0 | 0 | <?xml version="1.0" encoding="UTF-8"?> |
1 | 1 | <!DOCTYPE QtCreatorProject> |
2 | <!-- Written by QtCreator 3.0.1, 2016-07-17T17:20:43. --> | |
2 | <!-- Written by QtCreator 3.0.1, 2016-07-30T12:37:45. --> | |
3 | 3 | <qtcreator> |
4 | 4 | <data> |
5 | 5 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
18 | 18 | # Be verbose |
19 | 19 | set -x |
20 | 20 | |
21 | # Sanity checks | |
22 | if [[ -z "$QTDIR" || $QTDIR == *"qt-3"* || $QTDIR == *"qt-4"* ]] ; then | |
23 | echo "Environment variable QTDIR must point to a qt5 installation" | |
24 | exit 1 | |
25 | fi | |
26 | ||
21 | 27 | # TODO: move to a library function |
22 | 28 | git_pull_rebase_helper() |
23 | 29 | { |
30 | 36 | if [ -z "$NO_DOWNLOAD" ] ; then |
31 | 37 | # Enable EPEL repository; needed for recent Qt and |
32 | 38 | # install dependencies |
33 | sudo yum -y install wget epel-release git make libtool \ | |
39 | if [[ "$ARCH" = "i686" ]] ; then | |
40 | sudo yum -y install wget epel-release git make libtool \ | |
34 | 41 | libzip-devel libxml2-devel libxslt-devel libsqlite3x-devel \ |
35 | 42 | libudev-devel libusbx-devel libcurl-devel libssh2-devel mesa-libGL-devel sqlite-devel \ |
36 | 43 | tar gzip which make mesa-libEGL coreutils grep wget cmake gcc gcc-c++ |
44 | else | |
45 | sudo yum -y install wget epel-release git make libtool \ | |
46 | libzip-devel libxml2-devel libxslt-devel \ | |
47 | libudev-devel libusb-devel libcurl-devel libssh2-devel mesa-libGL-devel sqlite-devel \ | |
48 | tar gzip which make mesa-libEGL coreutils grep wget cmake gcc gcc-c++ | |
49 | fi | |
37 | 50 | |
38 | 51 | # Determine which architecture should be built |
39 | 52 | if [[ "$(/bin/arch)" = "i686" || "$(/bin/arch)" = "x86_64" ]] ; then |
59 | 72 | # EPEL is awesome - fresh Qt5 for old base systems |
60 | 73 | sudo yum -y install qt5-qtbase-devel \ |
61 | 74 | qt5-qtsvg-devel qt5-linguist qt5-qtconnectivity-devel \ |
62 | qt5-qttools-devel qt5-qttools log4cpp-devel fftw-devel \ | |
75 | qt5-qttools-devel qt5-qttools fftw-devel \ | |
63 | 76 | qt5-qttools-libs-help qt5-qttools-libs-clucene |
64 | 77 | fi |
65 | 78 | |
66 | 79 | if [ -z "$NO_DOWNLOAD" ] ; then |
67 | 80 | # Install AppImageKit build dependencies |
68 | sudo yum -y install binutils fuse glibc-devel glib2-devel fuse-devel gcc zlib-devel libpng12 # Fedora, RHEL, CentOS | |
81 | sudo yum -y install binutils fuse glibc-devel glib2-devel fuse-devel gcc zlib-devel libpng-devel # Fedora, RHEL, CentOS | |
69 | 82 | |
70 | 83 | # Build AppImageKit |
71 | 84 | if [ ! -d AppImageKit ] ; then |
84 | 97 | mkdir -p $HOME/$APP/$APP.AppDir |
85 | 98 | cd $HOME/$APP |
86 | 99 | |
87 | # Get latest engauge-digitizer project from git | |
100 | # Get latest engauge-digitizer and log4cpp_null projects from git | |
88 | 101 | if [ ! -d engauge-digitizer ] ; then |
89 | 102 | git clone https://github.com/markummitchell/engauge-digitizer.git |
90 | 103 | fi |
92 | 105 | git_pull_rebase_helper |
93 | 106 | cd .. |
94 | 107 | |
108 | if [ ! -d log4cpp_null ] ; then | |
109 | git clone https://github.com/markummitchell/log4cpp_null.git | |
110 | fi | |
111 | cd log4cpp_null | |
112 | git_pull_rebase_helper | |
113 | cd .. | |
114 | ||
95 | 115 | mkdir -p $HOME/$APP/$APP.AppDir/usr/bin |
96 | 116 | |
117 | # Build log4cpp | |
118 | LOG4CPP_HOME=$HOME/$APP/log4cpp_null | |
119 | cd $LOG4CPP_HOME | |
120 | qmake-qt5 log4cpp.pro | |
121 | make | |
122 | cd .. | |
123 | ||
124 | # Build engauge. Version is displayed | |
97 | 125 | cd $HOME/$APP/engauge-digitizer |
98 | 126 | |
99 | # Figure out $VERSION | |
100 | 127 | VERSION=$(git rev-parse --short=8 HEAD) |
101 | 128 | echo $VERSION |
102 | 129 | |
103 | export ENGAUGE_RELEASE=1 | |
104 | qmake-qt5 engauge.pro | |
130 | qmake-qt5 engauge.pro DEFINES+=APPIMAGE_RELEASE CONFIG+=pdf | |
105 | 131 | #Hack to nodebug |
106 | 132 | sed -i 's/ -g / /g' Makefile |
133 | make clean | |
107 | 134 | make |
135 | ||
136 | if [ ! -e ./bin/engauge ]; then | |
137 | echo "bin/engauge executable was not created relative to directory `pwd`" | |
138 | exit 1 | |
139 | fi | |
108 | 140 | |
109 | 141 | cp ./bin/engauge $HOME/$APP/$APP.AppDir/usr/bin |
110 | 142 | cp ./src/img/bannerapp_64.xpm $HOME/$APP/$APP.AppDir/engauge.xpm |
141 | 173 | # FIXME: How to find out which subset of plugins is really needed? I used strace when running the binary |
142 | 174 | mkdir -p ./usr/lib/qt5/plugins/ |
143 | 175 | |
144 | if [ -e $(dirname /usr/li*/qt5/plugins/bearer) ] ; then | |
145 | PLUGINS=$(dirname /usr/li*/qt5/plugins/bearer) | |
146 | else | |
147 | PLUGINS=../../5.5/gc*/plugins/ | |
148 | fi | |
149 | echo $PLUGINS # /usr/lib64/qt5/plugins if build system Qt is found | |
176 | # QTDIR can point to personal installation of Qt which can contain Help/Print modules that may be missing from official install | |
177 | PLUGINS=$QTDIR/plugins | |
178 | ||
150 | 179 | cp -r $PLUGINS/bearer ./usr/lib/qt5/plugins/ |
151 | 180 | cp -r $PLUGINS/iconengines ./usr/lib/qt5/plugins/ |
152 | 181 | cp -r $PLUGINS/imageformats ./usr/lib/qt5/plugins/ |
153 | 182 | cp -r $PLUGINS/platforminputcontexts ./usr/lib/qt5/plugins/ |
154 | 183 | cp -r $PLUGINS/platforms ./usr/lib/qt5/plugins/ |
155 | 184 | cp -r $PLUGINS/platformthemes ./usr/lib/qt5/plugins/ |
156 | #cp -r $PLUGINS/sensors ./usr/lib/qt5/plugins/ | |
185 | cp -r $PLUGINS/sqldrivers ./usr/lib/qt5/plugins/ | |
157 | 186 | cp -r $PLUGINS/xcbglintegrations ./usr/lib/qt5/plugins/ |
158 | 187 | |
159 | 188 | if [ -e $(dirname /usr/li*/libicudata.so.42) ] ; then |
164 | 193 | echo $LIB |
165 | 194 | cp -a $LIB/libicu* usr/lib |
166 | 195 | |
196 | # Poppler library, unlike fftw3, is dynamic so library must be copied | |
197 | cp -L $POPPLER_LIB/libpoppler-cpp.so usr/lib | |
198 | cp -L $POPPLER_LIB/libpoppler-cpp.so.0 usr/lib | |
199 | cp -L $POPPLER_LIB/libpoppler.so usr/lib | |
200 | cp -L $POPPLER_LIB/libpoppler.so.61 usr/lib | |
201 | cp -L $POPPLER_LIB/libpoppler-qt5.so usr/lib | |
202 | cp -L $POPPLER_LIB/libpoppler-qt5.so.1 usr/lib | |
203 | ||
167 | 204 | export LD_LIBRARY_PATH=./usr/lib/:../../5.5/gc*/lib/:$LD_LIBRARY_PATH |
168 | ldd bin/engauge | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true | |
205 | ldd $HOME/$APP/engauge-digitizer/bin/engauge | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true | |
169 | 206 | ldd usr/lib/qt5/plugins/platforms/libqxcb.so | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true |
170 | 207 | |
171 | 208 | # Copy in the indirect dependencies |
276 | 313 | FOUND=$(find "${APPDIR}" -type f -name "${FILE}" 2>/dev/null) |
277 | 314 | echo $FOUND |
278 | 315 | if [ ! -z "$FOUND" ] ; then |
279 | fatal "Blacklisted file ${FOUND} found" | |
316 | echo "Blacklisted file ${FOUND} found" | |
317 | exit 1 | |
280 | 318 | fi |
281 | 319 | done |
282 | 320 | |
288 | 326 | # GTK theme is broken |
289 | 327 | rm usr/lib/libgtk* usr/lib/libgdk* usr/lib/libpango* || true |
290 | 328 | |
291 | ||
292 | 329 | cd .. |
293 | 330 | find $APP.AppDir/ |
294 | 331 |
70 | 70 | cp /usr/lib/i386-linux-gnu/libicudata.so.52 $STAGINGDIR |
71 | 71 | cp /usr/lib/i386-linux-gnu/libicui18n.so.52 $STAGINGDIR |
72 | 72 | cp /usr/lib/i386-linux-gnu/libicuuc.so.52 $STAGINGDIR |
73 | cp /usr/lib/liblog4cpp.so.5 $STAGINGDIR | |
73 | cp $LOG4CPP_HOME/lib/liblog4cpp.so.1 $STAGINGDIR | |
74 | cp $POPPLER_LIB/libpoppler.so $STAGINGDIR | |
75 | cp $POPPLER_LIB/libpoppler.so.61 $STAGINGDIR | |
76 | cp $POPPLER_LIB/libpoppler-cpp.so $STAGINGDIR | |
77 | cp $POPPLER_LIB/libpoppler-cpp.so.0 $STAGINGDIR | |
78 | cp $POPPLER_LIB/libpoppler-qt5.so $STAGINGDIR | |
79 | cp $POPPLER_LIB/libpoppler-qt5.so.1 $STAGINGDIR | |
74 | 80 | cp /usr/lib/i386-linux-gnu/libQt5CLucene.so.5 $STAGINGDIR |
75 | 81 | cp /usr/lib/i386-linux-gnu/libQt5Core.so.5 $STAGINGDIR |
76 | 82 | cp /usr/lib/i386-linux-gnu/libQt5DBus.so.5 $STAGINGDIR |
87 | 93 | echo "***Rebuilding release executable" && |
88 | 94 | export ENGAUGE_RELEASE=1 && |
89 | 95 | cd ../.. && |
90 | qmake engauge.pro && | |
96 | qmake engauge.pro CONFIG+=pdf && | |
91 | 97 | make clean && |
92 | 98 | make && |
93 | 99 | cd dev/linux |
12 | 12 | <key>CFBundleExecutable</key> |
13 | 13 | <string>Engauge Digitizer</string> |
14 | 14 | <key>CFBundleVersion</key> |
15 | <string>9.0</string> | |
15 | <string>9.1</string> | |
16 | 16 | <key>CFBundleShortVersionString</key> |
17 | <string>9.0</string> | |
17 | <string>9.1</string> | |
18 | 18 | <key>LSApplicationCategoryType</key> |
19 | 19 | <string>public.app-category.utilities</string> |
20 | 20 | <key>CFBundleIdentifier</key> |
4 | 4 | Id='1262BCFA-A719-4249-85CC-8C4085E08644' |
5 | 5 | UpgradeCode='00A6792B-65ED-4894-A48B-B95D63C62CC6' |
6 | 6 | Language='1033' Codepage='1252' |
7 | Version='9.0'> | |
7 | Version='9.1'> | |
8 | 8 | <Package Id='*' Keywords='Installer' Description="Engauge Digitizer Installer" |
9 | 9 | Comments='Engauge Digitizer is available from github.com' Manufacturer='Engauge Open Source Developers' |
10 | 10 | InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> |
0 | 0 | # engauge.pro : Builds make files for engauge executable |
1 | 1 | # |
2 | 2 | # Comments: |
3 | # 1) This builds 'release' executables by default, to greatly reduce the chances of a 'debug' build getting deployed. | |
3 | # 1) Version numbers for the packages mentioned in the following comments are documented in the BUILD file | |
4 | # 2) This builds 'release' executables by default, to greatly reduce the chances of a 'debug' build getting deployed. | |
4 | 5 | # To get a 'debug' build, add 'CONFIG=debug' to the qmake command line: |
5 | 6 | # qmake CONFIG=debug |
6 | # 2) Add 'jpeg2000' to the qmake command line to include support for JPEG2000 input files. Requires: | |
7 | # 1) previous installation of OpenJPEG 2.1 development package | |
7 | # 3) Add 'jpeg2000' to the qmake command line to include support for JPEG2000 input files. Requires: | |
8 | # 1) previous installation of OpenJPEG development package | |
8 | 9 | # 2) OPENJPEG_INCLUDE environment variable pointing to directory with openjpeg.h |
9 | 10 | # 3) OPENJPEG_LIB environment variable pointing to directory with libopenjp2.so |
10 | 11 | # Sample command lines: |
11 | 12 | # qmake CONFIG+=jpeg2000 |
12 | 13 | # qmake "CONFIG+=debug jpeg2000" |
13 | 14 | # At some point, Qt may provide its own support for this format, at which point this can be skipped |
14 | # 3) Add 'pdf' to the qmake command line to include support for PDF input files. Requires | |
15 | # 1) previous installation of the poppler-qt5 development package. Engauge has been tested with versions 0.24.5 and 0.44.0 | |
15 | # 4) Add 'pdf' to the qmake command line to include support for PDF input files. Requires | |
16 | # 1) previous installation of the poppler-qt5 development package | |
16 | 17 | # 2) POPPLER_INCLUDE environment variable pointing to directory containing poppler-qt5.h |
17 | 18 | # 3) POPPLER_LIB environment variable pointing to directory containing libpoppler-qt5.so |
18 | 19 | # Sample command lines: |
19 | 20 | # qmake CONFIG+=pdf |
20 | 21 | # qmake "CONFIG+=debug pdf" |
21 | # 4) Set environment variable HELPDIR to override the default directory for the help files. On the command line, use | |
22 | # 5) Set environment variable HELPDIR to override the default directory for the help files. On the command line, use | |
22 | 23 | # qmake "DEFINES+=HELPDIR=<directory>". The <directory> is absolute or relative to the application executable directory |
23 | # 5) Gratuitous warning about import_qpa_plugin in Fedora is due to 'CONFIG=qt' but that option takes care of | |
24 | # 6) Gratuitous warning about import_qpa_plugin in Fedora is due to 'CONFIG=qt' but that option takes care of | |
24 | 25 | # include/library files in an automated and platform-independent manner, so it will not be removed |
25 | 26 | # |
26 | 27 | # More comments are in the INSTALL file, and below |
696 | 697 | LIBS += -lfftw3 -llog4cpp |
697 | 698 | } |
698 | 699 | |
700 | linux-* { | |
701 | INCLUDEPATH += $$(FFTW_HOME)/include \ | |
702 | $$(LOG4CPP_HOME)/include | |
703 | LIBS += -L/$$(FFTW_HOME)/lib -L$$(LOG4CPP_HOME)/lib | |
704 | } | |
705 | ||
699 | 706 | INCLUDEPATH += src \ |
700 | 707 | src/Background \ |
701 | 708 | src/Callback \ |
37 | 37 | QVector<QString> &distanceGraphBackward, |
38 | 38 | QVector<QString> &distancePercentBackward) const |
39 | 39 | { |
40 | m_strategies [connectAs]->calculateGeometry (points, | |
41 | modelCoords, | |
42 | modelMainWindow, | |
43 | transformation, | |
44 | funcArea, | |
45 | polyArea, | |
46 | x, | |
47 | y, | |
48 | distanceGraphForward, | |
49 | distancePercentForward, | |
50 | distanceGraphBackward, | |
51 | distancePercentBackward); | |
40 | if (transformation.transformIsDefined()) { | |
41 | ||
42 | m_strategies [connectAs]->calculateGeometry (points, | |
43 | modelCoords, | |
44 | modelMainWindow, | |
45 | transformation, | |
46 | funcArea, | |
47 | polyArea, | |
48 | x, | |
49 | y, | |
50 | distanceGraphForward, | |
51 | distancePercentForward, | |
52 | distanceGraphBackward, | |
53 | distancePercentBackward); | |
54 | } | |
52 | 55 | } |
53 |
242 | 242 | m_model->setItem (HEADER_ROW_FUNC_AREA, COLUMN_HEADER_VALUE, new QStandardItem (funcArea)); |
243 | 243 | m_model->setItem (HEADER_ROW_POLY_AREA, COLUMN_HEADER_VALUE, new QStandardItem (polyArea)); |
244 | 244 | |
245 | int row = NUM_HEADER_ROWS; | |
246 | int index = 0; | |
247 | for (; index < points.count(); row++, index++) { | |
248 | ||
249 | const Point &point = points.at (index); | |
250 | ||
251 | QPointF posGraph; | |
252 | transformation.transformScreenToRawGraph (point.posScreen (), | |
253 | posGraph); | |
254 | ||
255 | m_model->setItem (row, COLUMN_BODY_X, new QStandardItem (x [index])); | |
256 | m_model->setItem (row, COLUMN_BODY_Y, new QStandardItem (y [index])); | |
257 | m_model->setItem (row, COLUMN_BODY_INDEX, new QStandardItem (QString::number (index + 1))); | |
258 | m_model->setItem (row, COLUMN_BODY_DISTANCE_GRAPH_FORWARD, new QStandardItem (distanceGraphForward [index])); | |
259 | m_model->setItem (row, COLUMN_BODY_DISTANCE_PERCENT_FORWARD, new QStandardItem (distancePercentForward [index])); | |
260 | m_model->setItem (row, COLUMN_BODY_DISTANCE_GRAPH_BACKWARD, new QStandardItem (distanceGraphBackward [index])); | |
261 | m_model->setItem (row, COLUMN_BODY_DISTANCE_PERCENT_BACKWARD, new QStandardItem (distancePercentBackward [index])); | |
262 | m_model->setItem (row, COLUMN_BODY_POINT_IDENTIFIERS, new QStandardItem (point.identifier())); | |
245 | if (transformation.transformIsDefined()) { | |
246 | ||
247 | int row = NUM_HEADER_ROWS; | |
248 | int index = 0; | |
249 | for (; index < points.count(); row++, index++) { | |
250 | ||
251 | const Point &point = points.at (index); | |
252 | ||
253 | QPointF posGraph; | |
254 | transformation.transformScreenToRawGraph (point.posScreen (), | |
255 | posGraph); | |
256 | ||
257 | m_model->setItem (row, COLUMN_BODY_X, new QStandardItem (x [index])); | |
258 | m_model->setItem (row, COLUMN_BODY_Y, new QStandardItem (y [index])); | |
259 | m_model->setItem (row, COLUMN_BODY_INDEX, new QStandardItem (QString::number (index + 1))); | |
260 | m_model->setItem (row, COLUMN_BODY_DISTANCE_GRAPH_FORWARD, new QStandardItem (distanceGraphForward [index])); | |
261 | m_model->setItem (row, COLUMN_BODY_DISTANCE_PERCENT_FORWARD, new QStandardItem (distancePercentForward [index])); | |
262 | m_model->setItem (row, COLUMN_BODY_DISTANCE_GRAPH_BACKWARD, new QStandardItem (distanceGraphBackward [index])); | |
263 | m_model->setItem (row, COLUMN_BODY_DISTANCE_PERCENT_BACKWARD, new QStandardItem (distancePercentBackward [index])); | |
264 | m_model->setItem (row, COLUMN_BODY_POINT_IDENTIFIERS, new QStandardItem (point.identifier())); | |
265 | } | |
263 | 266 | } |
264 | 267 | |
265 | 268 | // Unselect everything |
8 | 8 | #include <QHash> |
9 | 9 | #include <QObject> |
10 | 10 | |
11 | const ImportCropping DEFAULT_IMPORT_CROPPING = IMPORT_CROPPING_NEVER; // Traditional, and simplest, option | |
11 | const ImportCropping DEFAULT_IMPORT_CROPPING = IMPORT_CROPPING_MULTIPAGE_PDFS; // Traditional, and simplest, option | |
12 | 12 | |
13 | 13 | ImportCroppingUtilBase::ImportCroppingUtilBase() |
14 | 14 | { |
61 | 61 | { |
62 | 62 | QString pathAndFile; // Return empty value in OSX which is unused |
63 | 63 | |
64 | #if !defined(OSX_RELEASE) && !defined(WIN_RELEASE) | |
64 | #if !defined(OSX_RELEASE) && !defined(WIN_RELEASE) && !defined(APPIMAGE_RELEASE) | |
65 | 65 | QProcessEnvironment env; |
66 | 66 | |
67 | 67 | // Make multiple attempts until a directory is found where the log file can be written |
5 | 5 | |
6 | 6 | #include "Version.h" |
7 | 7 | |
8 | const char *VERSION_NUMBER = "9.0"; | |
8 | const char *VERSION_NUMBER = "9.1"; | |
9 | 9 | |
10 | 10 | QString engaugeWindowTitle() |
11 | 11 | { |
0 | 640x622 |
0 | -errorreport ../test/add_points_without_transform.xml -regression -reset |
0 | <ErrorReport> | |
1 | <Application VersionNumber="9.0"/> | |
2 | <Document AxesPointsRequired="0" VersionNumber="9.0"> | |
3 | <Image Height="622" Width="640"><![CDATA[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]]></Image> | |
4 | <CoordSystem> | |
5 | <General ExtraPrecision="1" CursorSize="3"/> | |
6 | <Coords UnitsX="0" UnitsThetaString="Degrees (DDD.DDDDD)" UnitsY="0" TypeString="Cartesian" Type="0" UnitsRadiusString="Number" ScaleXThetaString="Linear" UnitsTimeString="HH:MM:SS" UnitsRadius="0" Coords="0" UnitsDate="3" ScaleXTheta="0" ScaleYRadiusString="Linear" UnitsYString="Number" UnitsXString="Number" ScaleYRadius="0" UnitsTime="2" UnitsTheta="0" UnitsDateString="YYYY/MM/DD"/> | |
7 | <DigitizeCurve CursorInnerRadius="5" CursorStandardCross="True" CursorLineWidth="2" CursorSize="1"/> | |
8 | <Export PointsSelectionFunctions="0" PointsIntervalUnitsFunctions="1" PointsIntervalRelations="10" PointsSelectionFunctionsString="InterpolateAllCurves" Delimiter="0" LayoutFunctionsString="AllPerLine" PointsSelectionRelations="0" PointsIntervalUnitsRelations="1" HeaderString="Simple" XLabel="x" OverrideCsvTsv="True" PointsIntervalFunctions="10" LayoutFunctions="0" Header="1" PointsSelectionRelationsString="Interpolate" DelimiterString="Commas"> | |
9 | <CurveNamesNotExported/> | |
10 | </Export> | |
11 | <AxesChecker Mode="1" LineColor="6" Seconds="3"/> | |
12 | <GridDisplay StopY="1" CountX="2" StartX="0" CountY="2" StartY="0" StepX="1" StepY="1" DisableX="0" Color="0" ColorString="Black" DisableY="0" Stable="False" StopX="1"/> | |
13 | <GridRemoval StopY="0" DefinedGridLines="False" CoordDisableYString="Count" CoordDisableX="0" CountX="2" StartX="0" CoordDisableXString="Count" CoordDisableY="0" CountY="2" StartY="0" CloseDistance="10" StepX="0" StepY="0" Stable="False" StopX="0"/> | |
14 | <PointMatch PointSize="48" ColorCandidate="7" ColorCandidateString="Yellow" ColorAcceptedString="Green" ColorRejected="6" ColorAccepted="4" ColorRejectedString="Red"/> | |
15 | <Segments LineColorString="Green" LineColor="4" MinLength="2" LineWidth="4" PointSeparation="25" FillCorners="False"/> | |
16 | <Curve CurveName="Axes"> | |
17 | <ColorFilter SaturationLow="50" Mode="2" ForegroundLow="0" HueHigh="360" ValueLow="0" IntensityHigh="50" HueLow="180" CurveName="Axes" ForegroundHigh="10" IntensityLow="0" SaturationHigh="100" ModeString="Intensity" ValueHigh="50"/> | |
18 | <CurveStyle CurveName="Axes"> | |
19 | <LineStyle ConnectAsString="ConnectSkipForAxisCurve" Color="8" ColorString="Transparent" ConnectAs="4" Width="0"/> | |
20 | <PointStyle Shape="1" LineWidth="1" ShapeString="Cross" Color="6" ColorString="Red" Radius="10"/> | |
21 | </CurveStyle> | |
22 | <CurvePoints/> | |
23 | </Curve> | |
24 | <CurvesGraphs> | |
25 | <Curve CurveName="Curve1"> | |
26 | <ColorFilter SaturationLow="50" Mode="2" ForegroundLow="0" HueHigh="360" ValueLow="0" IntensityHigh="50" HueLow="180" CurveName="Curve1" ForegroundHigh="10" IntensityLow="0" SaturationHigh="100" ModeString="Intensity" ValueHigh="50"/> | |
27 | <CurveStyle CurveName="Curve1"> | |
28 | <LineStyle ConnectAsString="FunctionSmooth" Color="1" ColorString="Blue" ConnectAs="0" Width="1"/> | |
29 | <PointStyle Shape="1" LineWidth="1" ShapeString="Cross" Color="1" ColorString="Blue" Radius="10"/> | |
30 | </CurveStyle> | |
31 | <CurvePoints/> | |
32 | </Curve> | |
33 | </CurvesGraphs> | |
34 | </CoordSystem> | |
35 | <OperatingSystem WordSize="32" Endian="LittleEndian"/> | |
36 | <File Imported="True"/> | |
37 | <CmdMediator> | |
38 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
39 | <Point ScreenX="90" ScreenY="264" Identifier="Curve1	point	0" Ordinal="1"/> | |
40 | <Point ScreenX="98" ScreenY="240" Identifier="Curve1	point	1" Ordinal="1"/> | |
41 | <Point ScreenX="105" ScreenY="216" Identifier="Curve1	point	2" Ordinal="1"/> | |
42 | </Cmd> | |
43 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
44 | <Point ScreenX="109" ScreenY="204" Identifier="Curve1	point	3" Ordinal="3.5"/> | |
45 | <Point ScreenX="118" ScreenY="181" Identifier="Curve1	point	4" Ordinal="3.5"/> | |
46 | <Point ScreenX="128" ScreenY="158" Identifier="Curve1	point	5" Ordinal="3.5"/> | |
47 | </Cmd> | |
48 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
49 | <Point ScreenX="135" ScreenY="142" Identifier="Curve1	point	6" Ordinal="6.5"/> | |
50 | <Point ScreenX="147" ScreenY="120" Identifier="Curve1	point	7" Ordinal="6.5"/> | |
51 | <Point ScreenX="161" ScreenY="99" Identifier="Curve1	point	8" Ordinal="6.5"/> | |
52 | </Cmd> | |
53 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
54 | <Point ScreenX="184" ScreenY="86" Identifier="Curve1	point	9" Ordinal="9.5"/> | |
55 | <Point ScreenX="206" ScreenY="95" Identifier="Curve1	point	10" Ordinal="9.5"/> | |
56 | <Point ScreenX="222" ScreenY="113" Identifier="Curve1	point	11" Ordinal="9.5"/> | |
57 | <Point ScreenX="234" ScreenY="135" Identifier="Curve1	point	12" Ordinal="9.5"/> | |
58 | </Cmd> | |
59 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
60 | <Point ScreenX="241" ScreenY="149" Identifier="Curve1	point	13" Ordinal="13.5"/> | |
61 | <Point ScreenX="250" ScreenY="172" Identifier="Curve1	point	14" Ordinal="13.5"/> | |
62 | </Cmd> | |
63 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
64 | <Point ScreenX="265" ScreenY="211" Identifier="Curve1	point	15" Ordinal="15.5"/> | |
65 | <Point ScreenX="273" ScreenY="235" Identifier="Curve1	point	16" Ordinal="15.5"/> | |
66 | <Point ScreenX="281" ScreenY="258" Identifier="Curve1	point	17" Ordinal="15.5"/> | |
67 | </Cmd> | |
68 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
69 | <Point ScreenX="286" ScreenY="274" Identifier="Curve1	point	18" Ordinal="18.5"/> | |
70 | <Point ScreenX="293" ScreenY="298" Identifier="Curve1	point	19" Ordinal="18.5"/> | |
71 | <Point ScreenX="300" ScreenY="322" Identifier="Curve1	point	20" Ordinal="18.5"/> | |
72 | </Cmd> | |
73 | <Cmd Type="CmdAddPointsGraph" CurveName="Curve1" Description="Add graph points"> | |
74 | <Point ScreenX="305" ScreenY="337" Identifier="Curve1	point	21" Ordinal="21.5"/> | |
75 | <Point ScreenX="312" ScreenY="361" Identifier="Curve1	point	22" Ordinal="21.5"/> | |
76 | <Point ScreenX="320" ScreenY="385" Identifier="Curve1	point	23" Ordinal="21.5"/> | |
77 | </Cmd> | |
78 | </CmdMediator> | |
79 | <Error Context="Shift+Control+E" Comment="userTriggered" File="src/main/MainWindow.cpp" Line="1355"/> | |
80 | </Document> | |
81 | </ErrorReport> |