diff --git a/.gitignore b/.gitignore
index 6cdf42eb..6de0441e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,6 +50,9 @@ Thumbs.db
.settings
Makefile.Sankore*
+*.swp
+*.vim
+
# Build files #
###############
build
@@ -58,6 +61,8 @@ Makefile
Makefile.Debug
Makefile.Release
+buildContext
+
# plugins #
###########
diff --git a/OpenBoard.pro b/OpenBoard.pro
index 5f073bea..4558b666 100644
--- a/OpenBoard.pro
+++ b/OpenBoard.pro
@@ -9,17 +9,22 @@ CONFIG += debug_and_release \
VERSION_MAJ = 1
-VERSION_MIN = 02
+VERSION_MIN = 3
+VERSION_PATCH = 0
VERSION_TYPE = r # a = alpha, b = beta, rc = release candidate, r = release, other => error
-VERSION_PATCH = 10
+VERSION_BUILD = 0
+
+VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_PATCH}-$${VERSION_TYPE}.$${VERSION_BUILD}"
+
+equals(VERSION_TYPE, r) {
+ VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_PATCH}"
+}
-VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_TYPE}.$${VERSION_PATCH}"
-VERSION = $$replace(VERSION, "\\.r", "")
LONG_VERSION = "$${VERSION}.$${SVN_VERSION}"
macx:OSX_VERSION = "$${VERSION} (r$${SVN_VERSION})"
-VERSION_RC = $$VERSION_MAJ,$$VERSION_MIN,$$VERSION_TYPE,$$VERSION_PATCH
+VERSION_RC = $$VERSION_MAJ,$$VERSION_MIN,$$VERSION_PATCH,$$VERSION_TYPE,$$VERSION_BUILD
VERSION_RC = $$replace(VERSION_RC, "a", "160") # 0xA0
VERSION_RC = $$replace(VERSION_RC, "b", "176") # 0xB0
VERSION_RC = $$replace(VERSION_RC, "rc", "192" ) # 0xC0
@@ -109,12 +114,20 @@ RCC_DIR = $$BUILD_DIR/rcc
UI_DIR = $$BUILD_DIR/ui
win32 {
+
+
+ LIBS += -lUser32
+ LIBS += -lGdi32
+ LIBS += -lAdvApi32
+ LIBS += -lOle32
+
RC_FILE = resources/win/OpenBoard.rc
- CONFIG += qaxcontainer
+ CONFIG += axcontainer
exists(console):CONFIG += console
QMAKE_CXXFLAGS += /MP
+ QMAKE_CXXFLAGS += /MD
QMAKE_CXXFLAGS_RELEASE += /Od /Zi
- QMAKE_LFLAGS_RELEASE += /DEBUG
+ QMAKE_LFLAGS += /VERBOSE:LIB
UB_LIBRARY.path = $$DESTDIR
UB_I18N.path = $$DESTDIR/i18n
UB_ETC.path = $$DESTDIR
@@ -124,36 +137,41 @@ win32 {
system(echo "$$LONG_VERSION" > $$BUILD_DIR/longversion)
system(echo "$$SVN_VERSION" > $$BUILD_DIR/svnversion)
+ DEFINES += NOMINMAX # avoids compilation error in qdatetime.h
+
+
}
macx {
LIBS += -framework Foundation
+ LIBS += -framework Cocoa
+ LIBS += -framework Carbon
+ LIBS += -framework AVFoundation
+ LIBS += -framework CoreMedia
LIBS += -lcrypto
- CONFIG(release, debug|release):CONFIG += x86
-
- # [03-02-2011] We must use the 32bit version for the moment
- # because the Quicktime components used by this application
- # are not yet available in 64bits.
- CONFIG(debug, debug|release):CONFIG += x86
+ CONFIG(release, debug|release):CONFIG += x86_64
+ CONFIG(debug, debug|release):CONFIG += x86_64
- QMAKE_MAC_SDK = "/Developer/SDKs/MacOSX10.6.sdk"
- QMAKE_MACOSX_DEPLOYMENT_TARGET = "10.5"
+ QMAKE_MAC_SDK = macosx
+ QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10
- VERSION_RC_PATH = "$$BUILD_DIR/version_rc"
+ QMAKE_CXXFLAGS += -Wno-overloaded-virtual
+ #VERSION_RC_PATH = "$$BUILD_DIR/version_rc"
+ # No references to breakpad in the code =>is this still used?
# Embed version into executable for breakpad
- QMAKE_LFLAGS += -sectcreate \
- __DATA \
- __version \
- $$VERSION_RC_PATH
+ #QMAKE_LFLAGS += -sectcreate \
+ # __DATA \
+ # __version \
+ # $$VERSION_RC_PATH
QMAKE_CXXFLAGS_RELEASE += -gdwarf-2 \
-mdynamic-no-pic
- QMAKE_CFLAGS += -fopenmp
- QMAKE_CXXFLAGS += -fopenmp
- QMAKE_LFLAGS += -fopenmp
+# QMAKE_CFLAGS += -fopenmp
+ # QMAKE_CXXFLAGS += -fopenmp
+ # QMAKE_LFLAGS += -fopenmp
CONTENTS_DIR = "Contents"
RESOURCES_DIR = "Contents/Resources"
@@ -364,7 +382,7 @@ macx {
system(mkdir -p $$BUILD_DIR)
system(printf \""$$OSX_VERSION"\" > $$BUILD_DIR/osx_version)
system(printf \""$$VERSION"\" > $$BUILD_DIR/version)
- system(printf "%02x%02x%02x%02x" `printf $$VERSION_RC | cut -d ',' -f 1` `printf $$VERSION_RC | cut -d ',' -f 2` `printf $$VERSION_RC | cut -d ',' -f 3` `printf $$VERSION_RC | cut -d ',' -f 4` | xxd -r -p > "$$VERSION_RC_PATH")
+ # system(printf "%02x%02x%02x%02x" `printf $$VERSION_RC | cut -d ',' -f 1` `printf $$VERSION_RC | cut -d ',' -f 2` `printf $$VERSION_RC | cut -d ',' -f 3` `printf $$VERSION_RC | cut -d ',' -f 4` | xxd -r -p > "$$VERSION_RC_PATH")
}
linux-g++* {
diff --git a/README b/README
deleted file mode 100644
index ad854867..00000000
--- a/README
+++ /dev/null
@@ -1,3 +0,0 @@
-[Ubuntu Linux]
-Fonts
- - If you want to use the web compatible fonts, you need to install the package ttf-mscorefonts-installer.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..aa7b7276
--- /dev/null
+++ b/README.md
@@ -0,0 +1,38 @@
+# OpenBoard
+OpenBoard is an open source cross-platform interactive white board application designed primarily for use in schools. It was originally forked from Open-Sankoré, which was itself based on Uniboard.
+
+Supported platforms are Windows (7+), OS X (10.9+) and Linux (tested on Ubuntu 14.04 and 16.04).
+
+
+## Installing
+
+Installers are available for Windows, OS X and Ubuntu on the [wiki](https://github.com/DIP-SEM/OpenBoard/wiki/Downloads).
+
+## Building from source
+First, obtain the third party libraries from the OpenBoard-ThirdParty repository, and build them (instructions are provided for each library).
+
+Then, you may use the build (and packaging) scripts which are provided for all three platforms. These take care of compiling OpenBoard, including the translations (for OpenBoard and for Qt), stripping the debug symbols, creating the installers etc.
+Minor modification to those scripts may be necessary depending on your configuration, to set the correct Qt path for example.
+
+Alternatively, you can easily build OpenBoard with qmake and make:
+
+ qmake OpenBoard.pro -spec linux-g++-64 # replace linux-g++-64 by macx or win32 for other platforms
+ make
+
+Compilers used are gcc (Linux), clang (OS X) and MSVC 2010 (Windows). Make sure that your version of Qt matches this, as it is not possible e.g to build OpenBoard with clang if Qt was built with gcc.
+
+## Dependencies
+The latest version (1.3) requires Qt 5.5. (While it has been shown to mostly work with Qt 5.2, we cannot guarantee compatibility with Qt versions other than 5.5.)
+
+### Qt 5.5 on Linux
+
+Due to a shared library conflict within Qt 5 in some distributions / some Qt versions (the Multimedia and Webkit modules were built against different versions of gstreamer by default), a specific installation of Qt5.5 may be needed for all of OpenBoard's features to work correctly.
+
+It can either be built from source, with the configure flag `-gstreamer 1.0` (see [here](http://doc.qt.io/qt-5/linux-building.html)), or installed from Stephan Binner's PPAs on Ubuntu.
+In the latter case, simply add the repositories and install Qt 5.5.1 like so (example provided for Ubuntu 14.04, aka "Trusty"):
+
+ sudo add-apt-repository ppa:beineri/opt-qt551-trusty
+ sudo apt-get update
+ sudo apt-get install qt-latest
+
+Some distributions, such as Ubuntu 16.04, provide Qt 5.5.1 packages that work perfectly with OpenBoard, so you can simply install Qt from the official repository.
diff --git a/TEST_OpenBoard_Win32.txt b/TEST_OpenBoard_Win32.txt
deleted file mode 100644
index 92c418a0..00000000
--- a/TEST_OpenBoard_Win32.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- ****************************
- * TEST OpenBoard *
- * under Win32 (Windows 7) *
- * *
- ****************************
-
-
-======================|====================|
- Modules | Status |
-======================|====================|
-Network Manager | web OK |
-----------------------|--------------------|
- the video media |.avi not working |
- | .mp4 works in small|
- | format |
-----------------------|--------------------|
- audio | OK |
-----------------------|--------------------|
- | |
-----------------------|--------------------|
- | |
-----------------------|--------------------|
- | |
-----------------------|--------------------|
diff --git a/buildDebianPackage.sh b/buildDebianPackage.sh
deleted file mode 100755
index e7adcbca..00000000
--- a/buildDebianPackage.sh
+++ /dev/null
@@ -1,427 +0,0 @@
-#!/bin/bash
-# --------------------------------------------------------------------
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-# ---------------------------------------------------------------------
-
-
-#**********************
-# functions
-#**********************
-
-checkUser()
-{
- if [ `id -u` -ne 0 ]; then
- echo "Please run the script as root, may be using fakeroot command as follow"
- echo "fakeroot ./buildDebianPackage.sh [options]"
- exit 1
- fi
-}
-
-initializeVariables()
-{
- APPLICATION_NAME="OpenBoard"
- MAKE_TAG=true
- STANDARD_QT_USED=false
-
- PRODUCT_PATH="build/linux/release/product"
- QT_PATH="/usr/local/Trolltech/Qt-4.8.0"
- PLUGINS_PATH="$QT_PATH/plugins"
- GUI_TRANSLATIONS_DIRECTORY_PATH="../Qt-4.8/translations"
- QT_LIBRARY_DEST_PATH="$PRODUCT_PATH/qtlib"
- QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib"
- if [ -z $ARCHITECTURE ]; then
- ARCHITECTURE=`uname -m`
- if [ "$ARCHITECTURE" == "x86_64" ]; then
- ARCHITECTURE="amd64"
- fi
- if [ "$ARCHITECTURE" == "i686" ]; then
- ARCHITECTURE="i386"
- fi
- fi
- NOTIFY_CMD=`which notify-send`
- QMAKE_PATH="$QT_PATH/bin/qmake"
- LRELEASES="$QT_PATH/bin/lrelease"
- ZIP_PATH=`which zip`
-
-}
-
-
-notifyError(){
- if [ -e "$NOTIFY_CMD" ]; then
- $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
- fi
- printf "\033[31merror:\033[0m $1\n"
- exit 1
-}
-
-notifyProgress(){
- if [ -e "$NOTIFY_CMD" ]; then
- $NOTIFY_CMD "$1" "$2"
- fi
- printf "\033[32m--> Achieved task:\033[0m $1:\n\t$2\n"
-}
-
-alertIfPreviousVersionInstalled(){
- APT_CACHE=`which apt-cache`
- if [ ! -e "$APT_CACHE" ]; then
- notifyError "apt-cache command not found"
- else
- SEARCH_RESULT=`$APT_CACHE search ${APPLICATION_NAME}`
- if [ `echo $SEARCH_RESULT | grep -c ${APPLICATION_NAME}` -ge 1 ]; then
- notifyError "Found a previous version of ${APPLICATION_NAME}. Remove it to avoid to put it as dependency"
- fi
- fi
-}
-
-checkDir(){
- if [ ! -d "$1" ]; then
- notifyError "Directory not found : $1"
- fi
-}
-
-checkExecutable(){
- if [ ! -e "$1" ]; then
- notifyError "$1 command not found"
- fi
-}
-
-copyQtLibrary(){
- if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then
- cp $QT_LIBRARY_SOURCE_PATH/$1.so.? "$QT_LIBRARY_DEST_PATH/"
- cp $QT_LIBRARY_SOURCE_PATH/$1.so.?.?.? "$QT_LIBRARY_DEST_PATH/"
- else
- notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH"
- fi
-}
-
-
-buildWithStandardQt(){
- STANDARD_QT=`which qmake-qt4`
- if [ $? == "0" ]; then
- QT_VERSION=`$STANDARD_QT --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"`
- if [ `echo $QT_VERSION | sed -e "s/\.//g"` -gt 480 ]; then
- notifyProgress "Standard QT" "A recent enough qmake has been found. Using this one instead of custom one"
- STANDARD_QT_USED=true
- QMAKE_PATH=$STANDARD_QT
- LRELEASES=`which lrelease`
- if [ "`arch`" == "i686" ] || [ "$ARCHITECTURE" == "i386" ]; then
- QT_PATH="/usr/lib/i386-linux-gnu"
- else
- QT_PATH="/usr/lib/`arch`-linux-gnu"
- fi
- PLUGINS_PATH="$QT_PATH/qt4/plugins"
- fi
- fi
-}
-
-buildImporter(){
- IMPORTER_DIR="../OpenBoard-Importer/"
- IMPORTER_NAME="OpenBoardImporter"
- checkDir $IMPORTER_DIR
- cd ${IMPORTER_DIR}
-
- rm moc_*
- rm -rf debug release
- rm *.o
-
- git reset --hard
- git pull
-
- $QMAKE_PATH ${IMPORTER_NAME}.pro
- make clean
- make -j4
- checkExecutable $IMPORTER_NAME
- cd -
-}
-
-#**********************
-# script
-#**********************
-checkUser
-
-for var in "$@"
-do
- if [ $var == "notag" ]; then
- MAKE_TAG=false
- fi
-# forcing a architecture because of cross compiling
- if [ $var == "i386" ]; then
- ARCHITECTURE="i386"
- fi
- if [ $var == "amd64" ]; then
- ARCHITECTURE="amd64"
- fi
-done
-
-initializeVariables
-buildWithStandardQt
-
-alertIfPreviousVersionInstalled
-
-# check of directories and executables
-checkDir $QT_PATH
-checkDir $PLUGINS_PATH
-checkDir $GUI_TRANSLATIONS_DIRECTORY_PATH
-
-checkExecutable $QMAKE_PATH
-checkExecutable $LRELEASES
-checkExecutable $ZIP_PATH
-
-#build third party application
-buildImporter
-notifyProgress "OpenBoardImporter" "Built Importer"
-
-# cleaning the build directory
-rm -rf "build/linux/release"
-rm -rf install
-
-notifyProgress "QT" "Internalization"
-$LRELEASES ${APPLICATION_NAME}.pro
-cd $GUI_TRANSLATIONS_DIRECTORY_PATH
-$LRELEASES translations.pro
-cd -
-
-notifyProgress "${APPLICATION_NAME}" "Building ${APPLICATION_NAME}"
-
-if [ "$ARCHITECTURE" == "amd64" ]; then
- $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++-64
-else
- $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++
-fi
-
-make -j 4 release-install
-
-if [ ! -e "$PRODUCT_PATH/${APPLICATION_NAME}" ]; then
- notifyError "${APPLICATION_NAME} build failed"
-fi
-
-notifyProgress "Git Hub" "Make a tag of the delivered version"
-
-VERSION=`cat build/linux/release/version`
-
-if [ ! -f build/linux/release/version ]; then
- notifyError "version not found"
-else
- LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
- if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
- if [ $MAKE_TAG == true ]; then
- git tag -a "OBv$VERSION" -m "OpenBoard setup for v$VERSION"
- git push origin --tags
- fi
- fi
-fi
-
-cp resources/linux/run.sh $PRODUCT_PATH
-chmod a+x $PRODUCT_PATH/run.sh
-
-cp -R resources/linux/qtlinux/* $PRODUCT_PATH/
-
-notifyProgress "QT" "Copying plugins and library ..."
-cp -R $PLUGINS_PATH $PRODUCT_PATH/
-
-# copying customization
-cp -R resources/customizations $PRODUCT_PATH/
-
-# copying importer
-mkdir -p $PRODUCT_PATH/Importer
-cp -R ${IMPORTER_DIR}/${IMPORTER_NAME} $PRODUCT_PATH/Importer
-
-if [ $STANDARD_QT_USED == false ]; then
-#copying custom qt library
- mkdir -p $QT_LIBRARY_DEST_PATH
- copyQtLibrary libQtDBus
- copyQtLibrary libQtScript
- copyQtLibrary libQtSvg
- copyQtLibrary libQtXmlPatterns
- copyQtLibrary libQtNetwork
- copyQtLibrary libQtXml
- copyQtLibrary libQtGui
- copyQtLibrary libQtCore
- copyQtLibrary libphonon
- copyQtLibrary libQtWebKit
-fi
-
-notifyProgress "QT" "Internalization"
-if [ ! -e $PRODUCT_PATH/i18n ]; then
- mkdir $PRODUCT_PATH/i18n
-fi
-#copying qt gui translation
-cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $PRODUCT_PATH/i18n/
-
-rm -rf install/linux
-mkdir -p install/linux
-
-#Removing .svn directories ...
-cd $PRODUCT_PATH
-find . -name .svn -exec rm -rf {} \; 2> /dev/null
-cd -
-
-notifyProgress "Building ${APPLICATION_NAME}" "Finished to build ${APPLICATION_NAME} building the package"
-
-BASE_WORKING_DIR="packageBuildDir"
-
-#creating package directory
-mkdir $BASE_WORKING_DIR
-mkdir "$BASE_WORKING_DIR/DEBIAN"
-mkdir -p "$BASE_WORKING_DIR/usr/share/applications"
-mkdir -p "$BASE_WORKING_DIR/usr/local"
-
-
-cat > "$BASE_WORKING_DIR/DEBIAN/prerm" << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-# ---------------------------------------------------------------------
-
-xdg-desktop-menu uninstall /usr/share/applications/${APPLICATION_NAME}.desktop
-exit 0
-#DEBHELPER#
-EOF
-
-cat > "$BASE_WORKING_DIR/DEBIAN/postint" << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-# ---------------------------------------------------------------------
-
-xdg-desktop-menu install --novendor /usr/share/applications/${APPLICATION_NAME}.desktop
-exit 0
-#DEBHELPER#
-EOF
-
-
-APPLICATION_DIRECTORY_NAME="${APPLICATION_NAME}-$VERSION"
-PACKAGE_DIRECTORY="$BASE_WORKING_DIR/usr/local/$APPLICATION_DIRECTORY_NAME"
-#move build directory to packages directory
-cp -R $PRODUCT_PATH $PACKAGE_DIRECTORY
-
-
-cat > $BASE_WORKING_DIR/usr/local/$APPLICATION_DIRECTORY_NAME/run.sh << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-# ---------------------------------------------------------------------
-
-env LD_LIBRARY_PATH=/usr/local/$APPLICATION_DIRECTORY_NAME/qtlib:$LD_LIBRARY_PATH /usr/local/$APPLICATION_DIRECTORY_NAME/${APPLICATION_NAME}
-EOF
-
-
-CHANGE_LOG_FILE="$BASE_WORKING_DIR/DEBIAN/changelog-${APPLICATION_NAME}-$VERSION.txt"
-CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control"
-CHANGE_LOG_TEXT="changelog.txt"
-
-echo "${APPLICATION_NAME} ($VERSION) $ARCHITECTURE; urgency=low" > "$CHANGE_LOG_FILE"
-echo >> "$CHANGE_LOG_FILE"
-cat $CHANGE_LOG_TEXT >> "$CHANGE_LOG_FILE"
-echo >> "$CHANGE_LOG_FILE"
-echo "-- Claudio Valerio `date`" >> "$CHANGE_LOG_FILE"
-
-echo "Package: ${APPLICATION_NAME}" > "$CONTROL_FILE"
-echo "Version: $VERSION" >> "$CONTROL_FILE"
-echo "Section: education" >> "$CONTROL_FILE"
-echo "Priority: optional" >> "$CONTROL_FILE"
-echo "Architecture: $ARCHITECTURE" >> "$CONTROL_FILE"
-echo "Essential: no" >> "$CONTROL_FILE"
-echo "Installed-Size: `du -s $PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE"
-echo "Maintainer: ${APPLICATION_NAME} Developers team " >> "$CONTROL_FILE"
-echo "Homepage: http://www.openboard.org" >> "$CONTROL_FILE"
-echo -n "Depends: " >> "$CONTROL_FILE"
-unset tab
-declare -a tab
-let count=0
-for l in `objdump -p $PACKAGE_DIRECTORY/${APPLICATION_NAME} | grep NEEDED | awk '{ print $2 }'`; do
- for lib in `dpkg -S $l | awk -F":" '{ print $1 }'`; do
- #echo $lib
- presence=`echo ${tab[*]} | grep -c "$lib"`;
- if [ "$presence" == "0" ]; then
- tab[$count]=$lib;
- ((count++));
- fi;
- done;
-done;
-
-for ((i=0;i<${#tab[@]};i++)); do
- if [ $i -ne "0" ]; then
- echo -n ", " >> "$CONTROL_FILE"
- fi
- echo -n "${tab[$i]} (>= "`dpkg -p ${tab[$i]} | grep "Version: " | awk '{ print $2 }' | sed -e 's/\([:. 0-9?]*\).*/\1/g' | sed -e 's/\.$//'`") " >> "$CONTROL_FILE"
-done
-echo "" >> "$CONTROL_FILE"
-echo "Description: This a interactive white board that uses a free standard format." >> "$CONTROL_FILE"
-
-find $BASE_WORKING_DIR/usr/ -exec md5sum {} > $BASE_WORKING_DIR/DEBIAN/md5sums 2>/dev/null \;
-APPLICATION_SHORTCUT="$BASE_WORKING_DIR/usr/share/applications/${APPLICATION_NAME}.desktop"
-echo "[Desktop Entry]" > $APPLICATION_SHORTCUT
-echo "Version=$VERSION" >> $APPLICATION_SHORTCUT
-echo "Encoding=UTF-8" >> $APPLICATION_SHORTCUT
-echo "Name=${APPLICATION_NAME} ($VERSION)" >> $APPLICATION_SHORTCUT
-echo "GenericName=${APPLICATION_NAME}" >> $APPLICATION_SHORTCUT
-echo "Comment=Logiciel de création de présentations pour tableau numérique interactif (TNI)" >> $APPLICATION_SHORTCUT
-echo "Exec=/usr/local/$APPLICATION_DIRECTORY_NAME/run.sh" >> $APPLICATION_SHORTCUT
-echo "Icon=/usr/local/$APPLICATION_DIRECTORY_NAME/${APPLICATION_NAME}.png" >> $APPLICATION_SHORTCUT
-echo "StartupNotify=true" >> $APPLICATION_SHORTCUT
-echo "Terminal=false" >> $APPLICATION_SHORTCUT
-echo "Type=Application" >> $APPLICATION_SHORTCUT
-echo "Categories=Education" >> $APPLICATION_SHORTCUT
-cp "resources/images/${APPLICATION_NAME}.png" "$PACKAGE_DIRECTORY/${APPLICATION_NAME}.png"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint"
-
-mkdir -p "install/linux"
-DEBIAN_PACKAGE_NAME="${APPLICATION_NAME}_`lsb_release -is`_`lsb_release -rs`_${VERSION}_$ARCHITECTURE.deb"
-
-chown -R root:root $BASE_WORKING_DIR
-dpkg -b "$BASE_WORKING_DIR" "install/linux/$DEBIAN_PACKAGE_NAME"
-
-#clean up mess
-rm -rf $BASE_WORKING_DIR
-
-notifyProgress "${APPLICATION_NAME}" "Package built"
-
-
-exit 0
diff --git a/changes_porting_qt5.txt b/changes_porting_qt5.txt
deleted file mode 100644
index 4c1324ae..00000000
--- a/changes_porting_qt5.txt
+++ /dev/null
@@ -1,844 +0,0 @@
- *******************************
- * PORTING QT4->QT5 *
- * CHANGES *
- * win32 compilaton &exec *
- *******************************
-
-
-
-
-
-
-
-
-
- QtSingleApplication replacement for Qt5
-----------------------------------------
-
-http://blog.kadu.im/2015/01/qtsingleapplication-replacement-for-qt5.html
-
-
-
-
-UBWidgetMessageAPI.cpp
-------------------------
-
--replace mGraphicsWidgetItem->page()->mainFrame()->evaluateJavaScript(js); by (Line 67)
-
-QtWebKitWidgets
-
-
-UBGraphicsWidgetItem.h
----------------------
-
-- add #include
-
-
-UBGraphicsMediaItem.cpp
-*-----------------------
-
-- comment //Phonon::createPath(mMediaObject, mAudioOutput); (line 109)
-- replace //mMediaObject->setCurrentSource(QMediaSource(absoluteMediaFilename)); by mMediaObject->setMedia(QUrl::fromLocalFile(absoluteMediaFilename)); (Line 191)
-- replace //mAudioOutput = new QMediaPlayer(format, this); by mAudioOutput = new QMediaPlayer;
-- replace //mMediaObject->seek(mInitialPos); by mMediaObject->setPosition(mInitialPos);
-
-
-UBGraphicsMediaItem.h
------------------------
-
-- replace QAudioOutput *mAudioOutput; by QMediaPlayer *mAudioOutput;
-
-- replace //mMediaObject->setTickInterval(50); by mMediaObject->setPosition(50);
-
-UBGraphicsMediaItemDelegate.h
--------------------------------
-
-- add #include header file
-
-
-UBGraphicsMediaItemDelegate.cpp
--------------------------------
-
-- replace UBGraphicsMediaItemDelegate::UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pDelegated, QMediaObject* pMedia, QObject * parent)
-
-by UBGraphicsMediaItemDelegate::UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pDelegated, QMediaPlayer* pMedia, QObject * parent)
-
-
-- replace //mMediaObject->setCurrentSource(mSource); by mMediaObject->setMedia(QUrl::fromLocalFile(pMediaFileUrl));
-
-- replace //QMediaObject* media = delegated()->mediaObject(); by QMediaPlayer* media = delegated()->mediaObject();
-
-- replace //remainingTime() by ((media->duration()-media->position()) <= 0) {
-
-
-- replace totalTime()); by duration() (L246)
-
-- replace //QMediaObject* media = delegated()->mediaObject();
- QMediaPlayer* media = delegated()->mediaObject();
- //mMediaControl->totalTimeChanged(media->totalTime());
- mMediaControl->totalTimeChanged(media->duration()); (line 267)
-
-- replace QMediaPlayer* media = delegated()->mediaObject();if (media->state() == QMediaPlayer::PlayingState)
-
-- replace // delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl());
- delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl());
-
-- replace // delegated()->mediaObject()->setCurrentSource(delegated()->mediaFileUrl());
- delegated()->mediaObject()->setMedia(delegated()->mediaFileUrl()); line 230
-
-UBGraphicsItemDelegate.cpp
-----------------------------
-
--replace //mDelegate->mediaObject()->seek(tickPos); by mDelegate->mediaObject()->setPosition(tickPos); (line 1445)
-- replace //button->scale(0.8,0.8); by button->setScale(0.8);
-
-
-
-UBGraphicsGroupContainerItem.cpp
-----------------------------------
-
-replace //foreach(QGraphicsItem *child, children()) by foreach(QGraphicsItem *child, childItems()) Line 287
-
-
-
-UBGraphicsScene.cpp
--------------------
-
-- replace //graphicsWidget->scale(ssf, ssf); by graphicsWidget->setScale(ssf); (1394)
-- replace //svgItem->scale(sscale, sscale); by svgItem->setscale(sscale); (1521)
-
-- replace //item->scale(ratio, ratio); by item->setscale(ratio); (1817)
-- replace //pixmapItem->scale(pScaleFactor, pScaleFactor); by pixmapItem->setScale(pScaleFactor); (1273)
-
-
-UBFileSystemUtils.cpp
---------------------
-
-
-- replace QDesktopServices by QStandardPaths ; (line 138,139,
-
-
-UBGraphicsMediaItem
--------------------
-
-- replace //translate(translation.x(), translation.y()); by setPos(translation.x(), translation.y()); line 355
-
-UBGraphicsDelegateFrame.cpp
-----------------------------
-
- - replace //translate(center.x(), center.y()); by setPos(center.x(), center.y()); line 840
- - replace //translate(-center.x(), -center.y()); by setPos(-center.x(), -center.y()); line 840
- - replace rotate(-angle); by setRotation(rotation() - angle); line 840
-
-
-GraphicsPDFItem.cpp
-----------------------
-- replace //#include by #include
-
-
-UBThumbnailWidget.cpp
----------------------
-
-- replace //setAcceptsHoverEvents(true); by setAcceptHoverEvents(enabled); (line775) (accept without "s")
-
-
-UBFeaturesWidget.cpp
---------------------
-
-- add #include
-- add #include header()->setResizeMode(eItemColumn_Desc, QHeaderView::Stretch);
- mpTree->header()->setSectionResizeMode(eItemColumn_Desc, QHeaderView::Stretch);
-
- //mpTree->header()->setResizeMode(eItemColumn_Close, QHeaderView::Custom);
- mpTree->header()->setSectionResizeMode(eItemColumn_Close, QHeaderView::Custom); (Line 64)
-
-UBWebPluginPDFWidget.cpp
---------------------------
-
-- add //#include by #include
-
-
-UBSpinningWheel.h
-------------------
-
-- add #include
-
-
-UBFeaturesWidget.cpp
----------------------
-
-- add replace QWidget *eventSource = (QWidget*)event->source(); by QWidget *eventSource = event->source();
-
-
-UBSpinningWheel.cpp
--------------------
-
-- replace //painter.rotate(30 * (mPosition % 12)); by int val = mPosition.load(); and painter.rotate(30 * (val % 12));
-
-PDFRenderer.cpp
----------------
-
-- replace //if (mRefCount == 0) by if (mRefCount.load() == 0)
-
-
-UBThumbnailWidget.cpp
----------------------
-
-- replace //mLassoRectItem = new QGraphicsRectItem(0, scene()); by QRectF rect_init(0,0,0,0); and mLassoRectItem = new QGraphicsRectItem(rect_init, (QGraphicsItem *)scene());
-
-
-UBDocumentThumbnailWidget.cpp
------------------------------
-
--replace //mDropCaretRectItem = new QGraphicsRectItem(0, scene()); by QRectF rectInit(0,0,0,0); and mDropCaretRectItem = new QGraphicsRectItem(rectInit, (QGraphicsItem*)scene());
-
-
-UBPlatformUtils_win.cpp
-------------------------
-
-- replace //#include by #include
-
-
-XPDFRenderer.cpp
-----------------
-
-- replace //if (sInstancesCount == 0 && globalParams) by if (sInstancesCount.load() == 0 && globalParams)
-
-
-C:\Qt_ide\5.2.1\msvc2010\include\QtCore\qdatetime.h
----------------------------------------------------
-qdatetime.h.patch
-------------------
-
-
-- error C2589: '(': jeton non conforme droite de '::'
-- error C2059: erreur de syntaxe: '::'
-
---- qtbase/src/corelib/tools/qdatetime.h 9 03:11:14 2013
-+++ qtbase/src/corelib/tools/qdatetime.h 30 18:15:30 2013
-@@ -120,7 +120,7 @@
- inline qint64 toJulianDay() const { return jd; }
-
- private:
-- static inline qint64 nullJd() { return std::numeric_limits::min(); }
-+ static inline qint64 nullJd() { return (std::numeric_limits::min)(); }
- static inline qint64 minJd() { return Q_INT64_C(-784350574879); }
- static inline qint64 maxJd() { return Q_INT64_C( 784354017364); }
-
-
-UBDisplayManager.h
---------------------
-
-- replace //#include by #include
-
-
-UBDockPalette.cpp
-----------------
-
-- replace //iconPixmap.setAlphaChannel(transparencyPix); by the block codes as following :
-
- //----------------------------------------------
- QImage image = iconPixmap.toImage() ;
- image.setAlphaChannel(transparencyPix.toImage());
- iconPixmap = iconPixmap.fromImage(image);
- //-----------------------------------------------
-
-
-UBWindowsMediaFile.cpp
----------------------
-
-- replace //#include by #include
-- replace //if (FAILED(mWMWriter->AllocateSample(pImage.numBytes(), &sampleBuffer))) by if (FAILED(mWMWriter->AllocateSample(pImage. byteCount()(), &sampleBuffer)))
-
-- replace //memcpy((void*) rawBuffer, imageBuffer, pImage.numBytes()); by memcpy((void*) rawBuffer, imageBuffer, pImage.byteCount());
-
-UBWaveRecorder.cpp
--------------------
-
-
-UBGraphicsProtractor.h
-----------------------
-- replace //#include by #include
-
-
-UBGraphicsCompass.cpp
-----------------------
-
-- replace //setAcceptsHoverEvents(true); by setAcceptHoverEvents(true);
-
-
-UBGraphicsProtractor.h
-----------------------
-
-- replace //#include by
-#include
-#include
-#include
-
-
-UBGraphicsProtractor.cpp
--------------------------
-
--replace //translate(rect().center().x(), rect().center().y()); by setPos(rect().center().x(), rect().center().y()); line 205
-
--replace //translate(-rect().center().x(), -rect().center().y()); by setPos(-rect().center().x(), -rect().center().y()); line 210
--replace //mResetSvgItem->translate(-resetButtonRect().left(), -resetButtonRect().top()); by mResetSvgItem->setpos(-resetButtonRect().left(), -resetButtonRect().top());
- all translate->setPos (Lines 464,468,473,475,477,480,482,484,
-
-- replace //mMarkerSvgItem->rotate(- mStartAngle - mCurrentAngle); by mMarkerSvgItem->setRotation(- mStartAngle - mCurrentAngle);
-- replace //mRotateSvgItem->rotate(-mStartAngle); by mRotateSvgItem->setRotation( -mStartAngle); (Line 482)
-
-- replace //mResetSvgItem->rotate(-mStartAngle); by mResetSvgItem->setRotation(-mStartAngle); (Line 467)
-- replace //mResizeSvgItem->rotate(-mStartAngle); by mResizeSvgItem->setRotation(-mStartAngle); Line 478)
-
-
-
-- replace //mMarkerSvgItem->scale(scale, scale);//this do not impact the bounding box of thr svg item... by mMarkerSvgItem->setScale( scale);//this do not impact the bounding box of thr svg item...
-
- (line 503)
-
-- replace //mRotateSvgItem->scale(scale, scale);//this do not impact the bounding box of thr svg item... (Line 492)
- mRotateSvgItem->setScale(scale);//this do not impact the bounding box of thr svg item...
-
-- replace //mResetSvgItem->scale(scale * antiSc, scale * antiSc);//this do not impact the bounding box of thr svg item...
- mResetSvgItem->setScale(scale * antiSc);//this do not impact the bounding box of thr svg item... (Line 473)
-
-
-
-- replace //scale(1.5, 1.5); by setScale(1.5); (Line 82)
-
-- replace //mCloseSvgItem->rotate(-mStartAngle); by mCloseSvgItem->setRotation(-mStartAngle); (Line 458)
-
-- replace //scale(scaleFactor); by setScale(scaleFactor);
-
-- replace //mCloseSvgItem->scale(scale * antiSc, scale * antiSc);//this do not impact the bounding box of thr svg item... by
- mCloseSvgItem->setSale(scale * antiSc);//this do not impact the bounding box of thr svg item... (Line 467)
-
-- replace // mResizeSvgItem->scale(scale * antiSc, scale * antiSc);//this do not impact the bounding box of thr svg item...
- mResizeSvgItem->setScale(scale * antiSc);//this do not impact the bounding box of thr svg item... (Line 490)
-
-
-
-UBAbstractDrawRuler.h
-----------------------
-
- - replace //#include by
-#include
-
-
-UBWaveRecorder.cpp
--------------------
-
--replace // QString deviceName = QString:: fromUtf16(caps.szPname); by QString deviceName = QString::fromWCharArray(caps.szPname) ; (Line 67)
-
--replace //devices << QString::fromUtf16(caps.szPname); by devices << QString::fromWCharArray(caps.szPname); (Line 242)
-
-
-
-UBAbstractDrawRuler.cpp
-------------------------
-
-- replace //item.setAcceptsHoverEvents(true); by item.setAcceptHoverEvents(true);
-
-UBCustomCaptureWindow.h
-------------------------
-
-- replace //#include by include
-
-
-
-UBWebKitUtils.h
----------------
-
--replace //#include by #include
-
-
-UBWindowCaptureDelegate_win.h
-------------------------------
- - replace //#include by #include
-
-UBOEmbedParser.cpp
-------------------
-
--replace toAscii--> toLatin1 qurl.setEncodedUrl(url.toLatin1()); (line 230)
-
--replace
-
-
-WBSqueezeLabel.h
------------------
-
-- replace //#include by #include
-
-
-UBWindowCaptureDelegate_win.cpp
---------------------------------
-
-- replace //mCapturedPixmap = QPixmap::grabWindow(mCurrentWindow);
- mCapturedPixmap = QScreen::grabWindow(mCurrentWindow);
-
-UBOEmbedParser.cpp
------------------
-
-- replace //qurl.setEncodedUrl(url.toAscii()); by qurl.setUrl(url.toLatin1(),QUrl::TolerantMode);
-
-
-
-WBChaseWidget.cpp
-------------------
-
-- replace //#include by #include
-
-
-WBChaseWidget.h
------------------
-
--replace //#include by #include
-
-
-
-WBModelMenu.h
---------------
-
--replace //#include by #include
-
-
-
-WBUrlLineEdit.cpp
------------------
- -replace //#include by #include
-
-
-WBEditTableView.cpp
---------------------
-
-- replace //#include by #include
-
-WBEditTableView.h
-------------------
- -replace //#include by #include
-
-
-WBSearchLineEdit.cpp
----------------------
-
--replace //#include by
-#include
-
-WBToolBarSearch.cpp
--------------------
-
-//#include
-#include
-
-//#include
-#include
-
-
-WBToolBarSearch.h
-------------------
-
-
--replace //#include
-#include
-
-WBSearchLineEdit.h
-------------------
-
-//#include
-#include
-
-WBWebTrapWebView.cpp
----------------------
-
-
-- replace
-//#include
-//#include
-by
-#include
-#include
-
-
-
-WBWebTrapWebView.h
--------------------
-
-- replace
-//#include
-//#include
-by
-#include
-#include
-
-
-WBToolBarSearch.cpp
--------------------
-
-
--add on the top of the file
-#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
-# include
-#endif
-
-
-WBUrlLineEdit.h
----------------
-- replace //#include by //#include
-
-
-WBWebView.h
------------
-
-
-- replace //#include
-//#include
-
-#include
-#include
-
-WBDownloadManager.cpp
-----------------------
-
-- replace storageLocation by QStandardPaths => QStandardPaths::writableLocation( QStandardPaths::DesktopLocation
-
-
-
-WBToolBarSearch.cpp
---------------------
-
- urlQuery1.addQueryItem(QLatin1String("q"), searchText);
- url.setQuery(urlQuery1);
-
- urlQuery2.addQueryItem(QLatin1String("ie"), QLatin1String("UTF-8"));
- url.setQuery(urlQuery2);
-
- urlQuery3.addQueryItem(QLatin1String("oe"), QLatin1String("UTF-8"));
- url.setQuery(urlQuery3);
-
- urlQuery4.addQueryItem(QLatin1String("client"), QLatin1String("uniboard-browser"));
- url.setQuery(urlQuery4);
-
-
- /*url.addQueryItem(QLatin1String("q"), searchText);
- url.addQueryItem(QLatin1String("ie"), QLatin1String("UTF-8"));
- url.addQueryItem(QLatin1String("oe"), QLatin1String("UTF-8"));
- url.addQueryItem(QLatin1String("client"), QLatin1String("uniboard-browser"));
- */
-
-
-WBTabWidget.cpp
-----------------
-
--replace //#include by #include
-
-
-WBTabWidget.h
--------------
-- replace //#include by #include
-
-Utils.cpp
----------
-
-- replace toascii() by toLatin1()
-
-****
-TODO
-****
-- solve //mCapturedPixmap = QPixmap::grabWindow(mCurrentWindow);
- mCapturedPixmap = QScreen::grabWindow((HWND)mCurrentWindow);
-
-UBGlobals.h
------------
-
-replace //#ifdef Q_WS_WIN by #ifdef Q_OS_WIN
-
-
-UBCFFAdaptor.cpp
-----------------
-
-************************************************
- TODO
-************************************************
-
-- to solve dstList.setInsertInOrder(true); (Line 1954)
-
-qtsingleapplication.h
----------------------
-
-- replace //#include by #include
-
-- comment //QtSingleApplication(int &argc, char **argv, Type type);
-
-
-WBTabWidget.h
---------------
-
-- replace //#include by #include
-
-
-WBBrowserWindow.h
-------------------
-
-- replace //#include ;//#include by
-
-#include
-#include
-
-
-WBHistory.h
------------
- - replace //#include ;//#include by
-
-#include
-#include
-
-
-
-UBGlobals.h
-------------
-
-- replace //#ifdef Q_WS_WIN by #ifdef Q_OS_WIN
-
-UBWindowCaptureDelegate_win.cpp
--------------------------------
-
-- solve the HWND -->WId window conversion from //mCapturedPixmap = QPixmap::grabWindow(mCurrentWindow);
-=> solution : add into the UBWindowCaptureDelegate_win.h header : the inclusion header #include
-
-UBWindowCaptureDelegate_win.h
--------------------------------
-#ifdef Q_OS_WIN
-#include
-#endif
-
-
-
-
-qtsingleapplication.cpp
-------------------------
-
-- replace the content by the source file repository (CW)
-
-qtsingleapplication.h
-------------------------
-
-- replace the content by the source file repository (CW)
-
-
-
-UBWindowCaptureDelegate_win.cpp
---------------------------------
-
-
-************************************************
- TODO
-************************************************
-
-- solve the // mCapturedPixmap = QPixmap::grabWindow(mCurrentWindow); => pb of conversion between HWND and WId.
-
-
-qtlockedfile_win.cpp
----------------------
-
-- add #if QT_VERSION >= 0x050000
-#define QT_WA(unicode, ansi) unicode
-#endif
-
-qtsingleapplication.cpp
--------------------------
-
-- remove the contentfrom source repository(CW).
-
-qtsingleapplication.h
--------------------------
-
-- remove the contentfrom source repository(CW).
-
-qtlocalpeer.h
--------------
-
-- replace the content by the old basis source repository (OpenBoard-Third-party)
-
-qtlocalpeer.cpp
----------------
-- replace the content by the old basis source repository (OpenBoard-Third-party)
-
-
-UBNetworkAccessManager.cpp
---------------------------
-- replace //#include by #include
-
-
-- replace // introMessage = introMessage.arg(Qt::escape(reply->url().toString())).arg(Qt::escape(reply->url().toString())); by :
-
- introMessage = introMessage.arg(QString(reply->url().toString())).toHtmlEscaped().arg(QString(reply->url().toString())).toHtmlEscaped();
-
-
-WBHistory.cpp
---------------
-- replace //#include by #include
-
-- replace reset() by beginResetModel();
- m_sourceRowCache.clear();
- endResetModel(); (Line 1213,1268,)
-
-
--replace //reset(); by
- beginResetModel();
- endResetModel(); (Line 999,1006..)
-}
-
-- replace createIndex(row, column, 0); by (Line 969,1131,1140)
- createIndex(row, column);
-
-WBHistory.h
-------------
-
-- replace class WBHistoryFilterModel : public QAbstractProxyModel, by
-class WBHistoryFilterModel : public QAbstractProxyModel, public QAbstractItemModel
-
-
-
-- ?? pb at the level of compiler error:
-
-
-UBBoardView.cpp
-----------------
-
-************************************************
- TODO done cf below
-************************************************
-
-SOLVE THE ItemAt
-
-- comment the mouseReleaseEvent method
-- comment the mousePressEvent method
-
-
-
-
-WBHistory.cpp
---------------
-
-- comment and remove //beginResetModel(); and //endResetModel(); (Line 247)
-- comment and remove //beginResetModel(); and //endResetModel(); (Line 837-843)
-
-
-UBApplication.cpp
-------------------
-
--remove and comment //QApplication::setStyle(new UBStyle()); // Style is owned and deleted by the application.
-
-
-UBTrapFlashController.h
------------------------
-
-- replace //#include by #include .
-
-UBTrapFlashController.cpp
--------------------------
-- replace //#ifdef Q_WS_WIN // Defined on Windows. by#ifdef Q_OS_WIN // Defined on Windows.
-
-
-UBPodcastController.cpp
--------------------------
-
--replace QDesktopServices::storageLocation. (Line 715)
-
--replace by QStandardPaths::writableLocation.
-
-- replace repaintRect = repaintRect.unite(mSceneRepaintRectQueue.dequeue()); by repaintRect = repaintRect.united(mSceneRepaintRectQueue.dequeue());
-
-- replace QRectF maxRect = rect.intersect(viewportRect); by RectF maxRect = rect.intersected(viewportRect);
-
-- replace repaintRect = repaintRect.unite(mWidgetRepaintRectQueue.dequeue()); by repaintRect = repaintRect.united(mWidgetRepaintRectQueue.dequeue());
-
-
-
-
-main.cpp
-----------
-
-
-- move QMessageLogContext context_m; on line 58
-
-- replace // qt_message_output(type, msg); by qt_message_output(type,context_m, msg);
-
-
-
-COMPILATION STATUS IN DEBUG STATUS :
-************************************
-
-- compile all libraries (freetype.lib quazip.lib,xpdf.lib) with success
-- issue: error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0'
-
-=> solution: complation in RELEASE MODE
-
-
-- problem : LINK : fatal error LNK1123: chec lors de la conversion en fichier COFF msvc 2010 qt 5.2
-=> solution :
-Visual C++ 2010 SP1 Compiler Update for the Windows SDK 7.1
-
-- install the followin tools in your computer quth the msvc 2010 config:
- cf https://support.microsoft.com/fr-fr/kb/2934068 :
-
-
- support microsoft : " Erreur se produit lorsque vous installez le Kit de dveloppement logiciel Windows pour Windows 7 et.NET Framework 4 "
-
-steps :
-------
-1) remove and reinstall Microsoft Visual C++ 2010 SP1 Redistributable Package (x32) : vcredist_x32.exe
-
-2) remove and reinstall Microsoft Visual C++ 2010 SP1 Redistributable Package (x64) : vcredist_x64.exe
-
-3) install Microsoft Windows SDK for Windows 7 and .NET Framework 4 (ISO).
-
-4) reinstall Microsoft Visual Studio 2010 Service Pack 1 (Installer) download the iso from the link https://www.microsoft.com/en-us/download/confirmation.aspx?id=23691
-
-cf link : https://msdn.microsoft.com/fr-fr/library/7dz62kfh.aspx
-
-cf http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval
-
-=> solution : the tools cvtres.exe was broken so copy C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe
-
-into C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
-
-
-
-OpenBoard.pro
---------------
-- pb: fatal error LNK1123: chec lors de la conversion en fichier COFF vs 2010 qt 5.2 => add QMAKE_LFLAGS += /INCREMENTAL:NO
-
-
-
-
-UBBoardView.cpp
-----------------
-
-the ItemAt issue was solved by the last update methods from the repository.
-
-
-UBGraphicsTextItem.cpp
-----------------------
-
-
-- replace //#include by #include .
-
-
-
-
-
-
diff --git a/release_scripts/linux/build.sh b/release_scripts/linux/build.sh
new file mode 100755
index 00000000..5158e019
--- /dev/null
+++ b/release_scripts/linux/build.sh
@@ -0,0 +1,173 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+# ---------------------------------------------------------------------
+
+initializeVariables()
+{
+ APPLICATION_NAME="OpenBoard"
+ STANDARD_QT_USED=false
+
+ # Root directory
+ SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+ PROJECT_ROOT="$SCRIPT_PATH/../.."
+ BUILD_DIR="$PROJECT_ROOT/build/linux/release"
+ PRODUCT_PATH="$BUILD_DIR/product"
+
+ # Qt installation path. This may vary across machines
+ QT_PATH="/usr/lib/x86_64-linux-gnu/qt5"
+ PLUGINS_PATH="$QT_PATH/plugins"
+ GUI_TRANSLATIONS_DIRECTORY_PATH="/usr/share/qt5/translations"
+ QMAKE_PATH="$QT_PATH/bin/qmake"
+ LRELEASES="$QT_PATH/bin/lrelease"
+
+ NOTIFY_CMD=`which notify-send`
+ ZIP_PATH=`which zip`
+
+ if [ -z $ARCHITECTURE ]; then
+ ARCHITECTURE=`uname -m`
+ if [ $ARCHITECTURE == "x86_64" ]; then
+ ARCHITECTURE="amd64"
+ fi
+ fi
+}
+
+notifyError(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
+ fi
+ printf "\033[31merror:\033[0m $1\n"
+ exit 1
+}
+
+notifyProgress(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD "$1" "$2"
+ fi
+ printf "\033[32m--> Achieved task:\033[0m $1:\n\t$2\n"
+}
+
+checkDir(){
+ if [ ! -d "$1" ]; then
+ notifyError "Directory not found : $1"
+ fi
+}
+
+checkExecutable(){
+ if [ ! -e "$1" ]; then
+ notifyError "$1 command not found"
+ fi
+}
+
+buildWithStandardQt(){
+ # if both Qt4 and Qt5 are installed, choose Qt5
+ export QT_SELECT=5
+ STANDARD_QT=`which qmake`
+ if [ $? == "0" ]; then
+ QT_VERSION=`$STANDARD_QT --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"`
+ if [ `echo $QT_VERSION | sed -e "s/\.//g"` -gt 480 ]; then
+ notifyProgress "Standard QT" "A recent enough qmake has been found. Using this one instead of custom one"
+ STANDARD_QT_USED=true
+ QMAKE_PATH=$STANDARD_QT
+ LRELEASES=`which lrelease`
+ PLUGINS_PATH="$STANDARD_QT/../plugins"
+ fi
+ fi
+}
+
+buildImporter(){
+ IMPORTER_DIR="../OpenBoard-Importer/"
+ IMPORTER_NAME="OpenBoardImporter"
+ checkDir $IMPORTER_DIR
+ cd ${IMPORTER_DIR}
+
+ rm moc_*
+ rm -rf debug release
+ rm *.o
+
+ notifyProgress "Building importer"
+
+ $QMAKE_PATH ${IMPORTER_NAME}.pro
+ make clean
+ make -j4
+ checkExecutable $IMPORTER_NAME
+ cd -
+}
+
+createBuildContext() {
+ BUILD_CONTEXT="buildContext"
+ echo $ARCHITECTURE > $BUILD_CONTEXT
+}
+
+
+
+# Check command-line arguments to force an architecture
+
+for var in "$@"
+do
+ if [ $var == "i386" ]; then
+ ARCHITECTURE="i386"
+ fi
+ if [ $var == "amd64" ]; then
+ ARCHITECTURE="amd64"
+ fi
+done
+
+
+initializeVariables
+#buildWithStandardQt
+createBuildContext
+
+cd $PROJECT_ROOT
+
+# check of directories and executables
+checkDir $QT_PATH
+checkDir $PLUGINS_PATH
+checkDir $GUI_TRANSLATIONS_DIRECTORY_PATH
+
+checkExecutable $QMAKE_PATH
+checkExecutable $LRELEASES
+checkExecutable $ZIP_PATH
+
+#build third party application
+buildImporter
+notifyProgress "OpenBoardImporter" "Built Importer"
+
+
+# cleaning the build directory
+rm -rf $BUILD_DIR
+
+# Generate translations
+notifyProgress "QT" "Internationalization"
+$LRELEASES ${APPLICATION_NAME}.pro
+cd $GUI_TRANSLATIONS_DIRECTORY_PATH
+$LRELEASES translations.pro
+cd -
+
+notifyProgress "${APPLICATION_NAME}" "Building ${APPLICATION_NAME}"
+
+if [ "$ARCHITECTURE" == "amd64" ] || [ "$ARCHITECTURE" == "x86_64" ]; then
+ $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++-64
+else
+ $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++
+fi
+
+
+make -j4 release-install
+
+if [ ! -e "$PRODUCT_PATH/${APPLICATION_NAME}" ]; then
+ notifyError "${APPLICATION_NAME} build failed"
+else
+ notifyProgress "Finished building OpenBoard. You may now run the packaging script."
+fi
diff --git a/release_scripts/linux/debian_package_files/prerm b/release_scripts/linux/debian_package_files/prerm
new file mode 100644
index 00000000..5b1612c1
--- /dev/null
+++ b/release_scripts/linux/debian_package_files/prerm
@@ -0,0 +1,19 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu uninstall /usr/share/applications/openboard.desktop
+rm -f /usr/bin/openboard
+exit 0
diff --git a/release_scripts/linux/package.sh b/release_scripts/linux/package.sh
new file mode 100755
index 00000000..1bdf72db
--- /dev/null
+++ b/release_scripts/linux/package.sh
@@ -0,0 +1,402 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+# ---------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Packaging script for OpenBoard, for Debian-compatible distributions.
+#
+# This should be run after `build.sh`.
+#
+# The generated package structure is as follows :
+#
+# DEBIAN/
+# | control
+# | md5sums
+# | prerm
+# | postinst
+# usr/
+# | bin/
+# | | openboard <-- actually a symlink to run.sh or OpenBoard
+# | share/
+# | | applications/
+# | | | openboard.desktop
+# opt/
+# | openboard/
+# | | importer/
+# | | library/
+# | | etc/
+# | | qtlib/ (*)
+# | | plugins/ (*)
+# | | OpenBoard
+# | | OpenBoard.png
+# | | run.sh (*)
+#
+# (*) Only included if Qt libs and plugins are bundled. It is necessary to
+# bundle these if the target system doesn't provide Qt 5.5.1, for example.
+# ----------------------------------------------------------------------------
+
+initializeVariables()
+{
+ # This script's path
+ SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+ PROJECT_ROOT="$SCRIPT_PATH/../.."
+
+ # Where the application was built (see build.sh)
+ BUILD_DIR="$PROJECT_ROOT/build/linux/release"
+ PRODUCT_PATH="$BUILD_DIR/product"
+ IMPORTER_DIR="$PROJECT_ROOT/../OpenBoard-Importer/"
+ IMPORTER_NAME="OpenBoardImporter"
+
+ # Where the package is built to
+ PACKAGE_BUILD_DIR="$PROJECT_ROOT/install"
+
+ # Temporary folder, where we put all the files that will be built into the
+ # package
+ BASE_WORKING_DIR="debianPackage"
+
+ APPLICATION_NAME="OpenBoard"
+ APPLICATION_CODE="openboard"
+ APPLICATION_PATH="opt"
+
+ PACKAGE_DIRECTORY=$BASE_WORKING_DIR/$APPLICATION_PATH/$APPLICATION_CODE
+ QT_PLUGINS_DEST_PATH="$PACKAGE_DIRECTORY/plugins"
+ QT_LIBRARY_DEST_PATH="$PACKAGE_DIRECTORY/qtlib"
+
+ DESKTOP_FILE_PATH="$BASE_WORKING_DIR/usr/share/applications"
+ APPLICATION_SHORTCUT="$DESKTOP_FILE_PATH/${APPLICATION_CODE}.desktop"
+
+ DESCRIPTION="OpenBoard, an interactive white board application"
+ VERSION=`cat $BUILD_DIR/version`
+ ARCHITECTURE=`cat buildContext`
+
+
+ # Include Qt libraries and plugins in the package, or not
+ # (this is necessary if the target system doesn't provide Qt 5.5.1)
+ BUNDLE_QT=false
+
+ # Qt installation path. This may vary across machines
+ QT_PATH="/usr/lib/x86_64-linux-gnu/qt5"
+ QT_PLUGINS_SOURCE_PATH="$QT_PATH/plugins"
+ GUI_TRANSLATIONS_DIRECTORY_PATH="/usr/share/qt5/translations"
+ QT_LIBRARY_SOURCE_PATH="$QT_PATH/.."
+
+ NOTIFY_CMD=`which notify-send`
+ ZIP_PATH=`which zip`
+}
+
+checkUser()
+{
+ if [ `id -u` -ne 0 ]; then
+ echo "Please run the script as root"
+ exit 1
+ fi
+}
+
+checkBuild()
+{
+ if [ -z "$ARCHITECTURE" ]; then
+ echo "Make sure you have built the software first using ./build.sh"
+ exit 1
+ fi
+}
+
+notifyError(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
+ fi
+ printf "\033[31merror:\033[0m $1\n"
+ exit 1
+}
+
+notifyProgress(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD "$1" "$2"
+ fi
+ printf "\033[32m--> \033[0m $1:\n\t$2\n"
+}
+
+copyQtLibrary(){
+ echo -e "\t $1"
+ if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.? "$QT_LIBRARY_DEST_PATH/"
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.? "$QT_LIBRARY_DEST_PATH/"
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.?.? "$QT_LIBRARY_DEST_PATH/"
+
+ strip $QT_LIBRARY_DEST_PATH/$1.so.?.?.?
+ chmod 644 $QT_LIBRARY_DEST_PATH/$1.so.?.?.? # 644 = rw-r-r
+ else
+ notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH"
+ fi
+}
+
+copyQtPlugin(){
+ echo -e "\t $1"
+ if ls "$QT_PLUGINS_SOURCE_PATH/$1" &> /dev/null; then
+ cp -r $QT_PLUGINS_SOURCE_PATH/$1 $QT_PLUGINS_DEST_PATH/
+
+ strip $QT_PLUGINS_DEST_PATH/$1/*
+ chmod 644 $QT_PLUGINS_DEST_PATH/$1/* # 644 = rw-r-r
+ chmod +rx $QT_PLUGINS_DEST_PATH/$1
+
+ else
+ notifyError "$1 plugin not found in path: $QT_PLUGINS_SOURCE_PATH"
+ fi
+}
+
+
+# ----------------------------------------------------------------------------
+# Copying the application, libs etc. to the temporary working directory
+# ----------------------------------------------------------------------------
+
+
+initializeVariables
+
+checkBuild
+checkUser
+
+cd $PROJECT_ROOT
+
+rm -rf $PACKAGE_DIRECTORY
+mkdir -p $PACKAGE_DIRECTORY
+
+rm -rf $PACKAGE_BUILD_DIR
+
+
+notifyProgress "Copying product directory and resources"
+cp -R $PRODUCT_PATH/* $PACKAGE_DIRECTORY
+chown -R root:root $PACKAGE_DIRECTORY
+
+cp -R resources/customizations $PACKAGE_DIRECTORY/
+cp resources/linux/openboard-ubz.xml $PACKAGE_DIRECTORY/etc/
+
+if $BUNDLE_QT; then
+ cp -R resources/linux/run.sh $PACKAGE_DIRECTORY/
+ chmod a+x $PACKAGE_DIRECTORY/run.sh
+fi
+
+notifyProgress "Copying importer"
+mkdir -p $PACKAGE_DIRECTORY/importer
+cp -R "$IMPORTER_DIR/$IMPORTER_NAME" "$PACKAGE_DIRECTORY/importer"
+
+notifyProgress "Stripping importer and main executable"
+strip $PACKAGE_DIRECTORY/$APPLICATION_NAME
+strip $PACKAGE_DIRECTORY/importer/$IMPORTER_NAME
+
+if $BUNDLE_QT; then
+ notifyProgress "Copying and stripping Qt plugins"
+ mkdir -p $QT_PLUGINS_DEST_PATH
+ copyQtPlugin audio
+ copyQtPlugin generic
+ copyQtPlugin iconengines
+ copyQtPlugin imageformats
+ copyQtPlugin mediaservice
+ copyQtPlugin platforminputcontexts
+ copyQtPlugin platforms
+ copyQtPlugin platformthemes
+ copyQtPlugin position
+ copyQtPlugin printsupport
+ copyQtPlugin qtwebengine
+ copyQtPlugin sceneparsers
+ copyQtPlugin xcbglintegrations
+
+ notifyProgress "Copying and stripping Qt libraries"
+ mkdir -p $QT_LIBRARY_DEST_PATH
+ copyQtLibrary libQt5Core
+ copyQtLibrary libQt5DBus
+ copyQtLibrary libQt5Gui
+ copyQtLibrary libQt5Multimedia
+ copyQtLibrary libQt5MultimediaWidgets
+ copyQtLibrary libQt5Network
+ copyQtLibrary libQt5OpenGL
+ copyQtLibrary libQt5Positioning
+ copyQtLibrary libQt5PrintSupport
+ copyQtLibrary libQt5Qml
+ copyQtLibrary libQt5Quick
+ copyQtLibrary libQt5Script
+ copyQtLibrary libQt5Sensors
+ copyQtLibrary libQt5Sql
+ copyQtLibrary libQt5Svg
+ copyQtLibrary libQt5WebChannel
+ copyQtLibrary libQt5WebKit
+ copyQtLibrary libQt5WebKitWidgets
+ copyQtLibrary libQt5Widgets
+ copyQtLibrary libQt5XcbQpa
+ copyQtLibrary libQt5Xml
+ copyQtLibrary libQt5XmlPatterns
+ copyQtLibrary libqgsttools_p
+fi
+
+notifyProgress "Copying Qt translations"
+mkdir -p $PACKAGE_DIRECTORY/i18n
+cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $PACKAGE_DIRECTORY/i18n/
+
+
+# ----------------------------------------------------------------------------
+# DEBIAN directory of package (control, md5sums, postinst etc)
+# ----------------------------------------------------------------------------
+notifyProgress "Generating control files for package"
+
+mkdir -p "$BASE_WORKING_DIR/DEBIAN"
+
+# Copy prerm script
+cp -r "$SCRIPT_PATH/debian_package_files/prerm" "$BASE_WORKING_DIR/DEBIAN/"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
+
+# Generate postinst script (can't copy it like prerm because some paths vary depending on
+# the values of the variables in this script)
+
+SYMLINK_TARGET="/$APPLICATION_PATH/$APPLICATION_CODE/$APPLICATION_NAME"
+if $BUNDLE_QT ; then
+ SYMLINK_TARGET="/$APPLICATION_PATH/$APPLICATION_CODE/run.sh"
+fi
+
+cat > "$BASE_WORKING_DIR/DEBIAN/postinst" << EOF
+#!/bin/bash
+# --------------------------------------------------------------------
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu install --novendor /usr/share/applications/${APPLICATION_CODE}.desktop
+xdg-mime install --mode system /$APPLICATION_PATH/$APPLICATION_CODE/etc/openboard-ubz.xml
+xdg-mime default /usr/share/applications/${APPLICATION_CODE}.desktop application/ubz
+
+ln -s $SYMLINK_TARGET /usr/bin/$APPLICATION_CODE
+
+exit 0
+EOF
+
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/postinst"
+
+
+# Generate md5 sums of everything in the application path (e.g /opt) and the desktop entry
+cd $BASE_WORKING_DIR
+find $APPLICATION_PATH/ -exec md5sum {} > DEBIAN/md5sums 2>/dev/null \;
+find $DESKTOP_FILE_PATH/ -exec md5sum {} >> DEBIAN/md5sums 2>/dev/null \;
+cd $PROJECT_ROOT
+
+# Generate control file
+CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control"
+
+echo "Package: ${APPLICATION_CODE}" > "$CONTROL_FILE"
+echo "Version: $VERSION" >> "$CONTROL_FILE"
+echo "Section: education" >> "$CONTROL_FILE"
+echo "Priority: optional" >> "$CONTROL_FILE"
+echo "Architecture: $ARCHITECTURE" >> "$CONTROL_FILE"
+echo "Essential: no" >> "$CONTROL_FILE"
+echo "Installed-Size: `du -s $PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE"
+echo "Maintainer: ${APPLICATION_NAME} Developers team " >> "$CONTROL_FILE"
+echo "Homepage: https://github.com/DIP-SEM/OpenBoard" >> "$CONTROL_FILE"
+
+# Generate dependency list
+echo -n "Depends: " >> "$CONTROL_FILE"
+
+unset tab
+declare -a tab
+let count=0
+
+if $BUNDLE_QT; then
+ for l in `objdump -p $PACKAGE_DIRECTORY/${APPLICATION_NAME} | grep NEEDED | awk '{ print $2 }'`; do
+ for lib in `dpkg -S $l | grep -v "libqt5" | grep -v "qt55" | awk -F":" '{ print $1 }'`; do
+ presence=`echo ${tab[*]} | grep -c "$lib"`;
+ if [ "$presence" == "0" ]; then
+ tab[$count]=$lib;
+ ((count++));
+ fi;
+ done;
+ done;
+else
+ for l in `objdump -p $PACKAGE_DIRECTORY/${APPLICATION_NAME} | grep NEEDED | awk '{ print $2 }'`; do
+ for lib in `dpkg -S $l | awk -F":" '{ print $1 }'`; do
+ presence=`echo ${tab[*]} | grep -c "$lib"`;
+ if [ "$presence" == "0" ]; then
+ tab[$count]=$lib;
+ ((count++));
+ fi;
+ done;
+ done;
+fi
+
+
+for ((i=0;i<${#tab[@]};i++)); do
+ if [ $i -ne "0" ]; then
+ echo -n ", " >> "$CONTROL_FILE"
+ fi
+
+ echo -n "${tab[$i]} (>= "`dpkg -p ${tab[$i]} | grep "Version: " | awk '{ print $2 }' | sed -e 's/\([:. 0-9?]*\).*/\1/g' | sed -e 's/\.$//'`") " >> "$CONTROL_FILE"
+done
+echo -n ", onboard" >> "$CONTROL_FILE"
+
+if $BUNDLE_QT; then
+ # Listing some dependencies manually; ideally we should use dpkg -p recursively
+ # to get the dependencies of the bundled shared libs & plugins. Or use static libs.
+ echo -n ", libxcb-render-util0" >> "$CONTROL_FILE"
+ echo -n ", libxcb-icccm4" >> "$CONTROL_FILE"
+ echo -n ", libxcb-xkb1" >> "$CONTROL_FILE"
+else
+ echo -n ", libqt5multimedia5-plugins" >> "$CONTROL_FILE"
+fi
+
+echo "" >> "$CONTROL_FILE"
+echo "Description: $DESCRIPTION" >> "$CONTROL_FILE"
+
+# ----------------------------------------------------------------------------
+# .desktop file
+# ----------------------------------------------------------------------------
+mkdir -p $DESKTOP_FILE_PATH
+echo "[Desktop Entry]" > $APPLICATION_SHORTCUT
+echo "Version=$VERSION" >> $APPLICATION_SHORTCUT
+echo "Encoding=UTF-8" >> $APPLICATION_SHORTCUT
+echo "Name=${APPLICATION_NAME}" >> $APPLICATION_SHORTCUT
+echo "Comment=$DESCRIPTION" >> $APPLICATION_SHORTCUT
+echo "Exec=$APPLICATION_CODE %f" >> $APPLICATION_SHORTCUT
+echo "Icon=/$APPLICATION_PATH/$APPLICATION_CODE/${APPLICATION_NAME}.png" >> $APPLICATION_SHORTCUT
+echo "StartupNotify=true" >> $APPLICATION_SHORTCUT
+echo "Terminal=false" >> $APPLICATION_SHORTCUT
+echo "Type=Application" >> $APPLICATION_SHORTCUT
+echo "MimeType=application/ubz" >> $APPLICATION_SHORTCUT
+echo "Categories=Education;" >> $APPLICATION_SHORTCUT
+cp "resources/images/${APPLICATION_NAME}.png" "$PACKAGE_DIRECTORY/${APPLICATION_NAME}.png"
+
+
+
+# ----------------------------------------------------------------------------
+# Building the package
+# ----------------------------------------------------------------------------
+notifyProgress "Building package"
+mkdir -p "$PACKAGE_BUILD_DIR/linux"
+PACKAGE_NAME="${APPLICATION_NAME}_`lsb_release -is`_`lsb_release -rs`_${VERSION}_$ARCHITECTURE.deb"
+PACKAGE_NAME=`echo "$PACKAGE_NAME" | awk '{print tolower($0)}'`
+
+dpkg -b "$BASE_WORKING_DIR" "$PACKAGE_BUILD_DIR/linux/$PACKAGE_NAME"
+
+#clean up mess
+rm -rf $BASE_WORKING_DIR
+
+notifyProgress "${APPLICATION_NAME}" "Package built"
+
+
+exit 0
diff --git a/OpenBoard.packproj b/release_scripts/osx/OpenBoard.packproj
similarity index 100%
rename from OpenBoard.packproj
rename to release_scripts/osx/OpenBoard.packproj
diff --git a/release.macx.sh b/release_scripts/osx/release.macx.sh
similarity index 89%
rename from release.macx.sh
rename to release_scripts/osx/release.macx.sh
index 8db95f16..2dd65a3d 100755
--- a/release.macx.sh
+++ b/release_scripts/osx/release.macx.sh
@@ -14,23 +14,26 @@
# along with this program. If not, see .
# ---------------------------------------------------------------------
+SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_ROOT="$SCRIPT_PATH/../.."
+
APPLICATION_NAME="OpenBoard"
-BASE_TROLLTECH_DIRECTORY=/usr/local/Trolltech/Qt-4.8.0
+BASE_QT_DIR=~/Qt/5.5/clang_64
# Executables
-QMAKE=$BASE_TROLLTECH_DIRECTORY/bin/qmake
-MACDEPLOYQT=$BASE_TROLLTECH_DIRECTORY/bin/macdeployqt
-DMGUTIL="`pwd`/../Sankore-ThirdParty/refnum/dmgutil/dmgutil.pl"
+QMAKE=$BASE_QT_DIR/bin/qmake
+MACDEPLOYQT=$BASE_QT_DIR/bin/macdeployqt
+DMGUTIL="$PROJECT_ROOT/../OpenBoard-ThirdParty/refnum/dmgutil/dmgutil.pl"
DSYMUTIL=/usr/bin/dsymutil
STRIP=/usr/bin/strip
PLISTBUDDY=/usr/libexec/PlistBuddy
ICEBERG=/usr/local/bin/freeze
-LRELEASE=$BASE_TROLLTECH_DIRECTORY/bin/lrelease
+LRELEASE=$BASE_QT_DIR/bin/lrelease
# Directories
-BUILD_DIR="build/macx/release"
+BUILD_DIR="$PROJECT_ROOT/build/macx/release"
PRODUCT_DIR="$BUILD_DIR/product"
-BASE_QT_TRANSLATIONS_DIRECTORY=../Qt4.8/translations
+BASE_QT_TRANSLATIONS_DIRECTORY=$BASE_QT_DIR/translations
function notify {
GROWLNOTIFY=`which growlnotify`
@@ -90,8 +93,8 @@ function addImporter {
fi
cd ${importerDir}
- git reset --hard
- git pull
+# git reset --hard
+# git pull
rm -rf ${importerName}.app
rm MakeFile*
rm -rf release
@@ -106,6 +109,8 @@ trap "defaults write org.oe-f.OpenBoard.release Running -bool NO" EXIT
notify "Running OpenBoard release script (`date`)"
+cd $PROJECT_ROOT
+
script_is_running=`defaults read org.oe-f.OpenBoard.release Running 2>/dev/null`
if [[ $? -eq 0 ]] && [[ "$script_is_running" = "1" ]]; then
trap EXIT
@@ -149,7 +154,7 @@ notify "Compiling ..."
make -j4 release
notify "Qt Translations ..."
-$LRELEASE $BASE_QT_TRANSLATIONS_DIRECTORY/translations.pro
+#$LRELEASE $BASE_QT_TRANSLATIONS_DIRECTORY/translations.pro
addQtTranslations
cp -R resources/customizations $PRODUCT_DIR/$APPLICATION_NAME.app/Contents/Resources
@@ -159,19 +164,19 @@ VERSION=`cat "$BUILD_DIR/version"`
if [ ! -f "$BUILD_DIR/version" ]; then
echo "version not found"
exit 1
-else
- notify "Tagging ..."
- LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
- if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
- echo creating a tag with the version $VERSION
+#else
+# notify "Tagging ..."
+# LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
+# if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
+# echo creating a tag with the version $VERSION
# git tag -a "v$VERSION" -m "Generated setup for v$VERSION"
# git push origin --tags
- fi
+# fi
fi
-if [ $? != 0 ]; then
- abort "compilation failed"
-fi
+#if [ $? != 0 ]; then
+# abort "compilation failed"
+#fi
DMG="$APPLICATION_NAME.dmg"
@@ -200,7 +205,7 @@ $DSYMUTIL "$APP/Contents/MacOS/$APPLICATION_NAME" -o "$DSYM"
$STRIP -S "$APP/Contents/MacOS/$APPLICATION_NAME"
if [ "$1" == "pkg" ]; then
- BASE_ICEBERG_CONFIG_FILE="$APPLICATION_NAME.packproj"
+ BASE_ICEBERG_CONFIG_FILE="$SCRIPT_PATH/$APPLICATION_NAME.packproj"
#copy the standard file for working with
ICEBERG_CONFIG_FILE="$APPLICATION_NAME-working.packproj"
cp -r $BASE_ICEBERG_CONFIG_FILE $ICEBERG_CONFIG_FILE
diff --git a/OpenBoard.iss b/release_scripts/windows/OpenBoard.iss
similarity index 57%
rename from OpenBoard.iss
rename to release_scripts/windows/OpenBoard.iss
index 0a2e0f29..f3fea20f 100644
--- a/OpenBoard.iss
+++ b/release_scripts/windows/OpenBoard.iss
@@ -8,7 +8,7 @@
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
-AppId={{F6E79ADE-83AE-4A2E-92D7-145BDC014271}
+AppId={{8CCA6AC7-BBF9-4DD2-8E70-A907E0FCA38F}}
AppName=OpenBoard
AppVerName=OpenBoard {#ApplicationVersion}
AppPublisher=Open Education Foundation
@@ -20,9 +20,11 @@ AppUpdatesURL=http://get.openboard.org
DefaultDirName={pf}\OpenBoard
DefaultGroupName=OpenBoard
-OutputDir=.\install\win32\
+#define ProjectRoot GetEnv('PROJECT_ROOT')
+
+OutputDir={#ProjectRoot}\install\win32\
OutputBaseFilename=OpenBoard
-SetupIconFile=.\resources\win\OpenBoard.ico
+SetupIconFile={#ProjectRoot}\resources\win\OpenBoard.ico
Compression=lzma
SolidCompression=yes
@@ -46,62 +48,84 @@ Type: filesandordirs ; Name: "{app}\plugins"
Type: filesandordirs ; Name: "{app}\i18n"
Type: files ; Name: "{app}\*.dll"
+
+#define QtLibs GetEnv('QT_BIN')
+#define QtDir GetEnv('QT_DIR')
+
[Files]
-Source: "..\OpenBoard-ThirdParty\microsoft\vcredist_x86.exe"; DestDir:"{tmp}"
-Source: "build\win32\release\product\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "{#ProjectRoot}\..\OpenBoard-ThirdParty\microsoft\vcredist_x86.exe"; DestDir:"{tmp}"
+Source: "{#ProjectRoot}\build\win32\release\product\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
;OpenSSL
-Source: "..\OpenBoard-ThirdParty\openssl\openssl-1.0.0d\out32dll\libeay32.dll"; DestDir:"{app}"; Flags: ignoreversion
-Source: "..\OpenBoard-ThirdParty\openssl\openssl-1.0.0d\out32dll\ssleay32.dll"; DestDir:"{app}"; Flags: ignoreversion
+Source: "{#ProjectRoot}\..\OpenBoard-ThirdParty\openssl\openssl-1.0.2-win32\lib\libeay32.lib"; DestDir:"{app}"; Flags: ignoreversion
+Source: "{#ProjectRoot}\..\OpenBoard-ThirdParty\openssl\openssl-1.0.2-win32\lib\ssleay32.lib"; DestDir:"{app}"; Flags: ignoreversion
;Qt base dll
-Source: "..\Qt-4.8\lib\QtScript4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtGui4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtXml4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtCore4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtWebKit4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\phonon4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtNetwork4.dll"; DestDir: "{app}"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtSvg4.dll"; DestDir: "{app}"; Flags: ignoreversion
-
-;Qt plugins
-Source: "..\Qt-4.8\plugins\accessible\qtaccessiblecompatwidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\accessible\qtaccessiblewidgets4.dll"; DestDir: "{app}\accessible"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\bearer\qgenericbearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\bearer\qnativewifibearer4.dll"; DestDir: "{app}\bearer"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\codecs\qcncodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\codecs\qjpcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\codecs\qkrcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\codecs\qtwcodecs4.dll"; DestDir: "{app}\codecs"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\graphicssystems\qglgraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\graphicssystems\qtracegraphicssystem4.dll"; DestDir: "{app}\graphicssystems"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\iconengines\qsvgicon4.dll"; DestDir: "{app}\iconengines"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qgif4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qico4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qjpeg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qmng4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qsvg4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\imageformats\qtiff4.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
-Source: "..\Qt-4.8\plugins\phonon_backend\phonon_ds94.dll"; DestDir: "{app}\phonon_backend"; Flags: ignoreversion
+;Source: "OpenBoard.exe"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Core.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Gui.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Multimedia.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5MultimediaWidgets.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Network.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Opengl.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5PrintSupport.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Qml.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Script.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Sql.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Svg.dll"; DestDir: "{app}"
+;Source: "Qt5V8.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5WebKit.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5WebKitWidgets.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Widgets.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Xml.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\libGLESv2.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Quick.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Positioning.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Sensors.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5WebChannel.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\libEGL.dll"; DestDir: "{app}"
+;Source: "/etc/freezedWidgetWrapper.html"; DestDir: "{app}"
+;Source: "*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
+
+Source: "{#QtLibs}\icudt54.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\icuin54.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\icuuc54.dll"; DestDir: "{app}"
+
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
-;qt multimedia plugins
-Source: "c:\OpenBoard\plugins\mediaservice\qtmedia_audioengine.dll"; DestDir: "c:\OpenBoard\plugins\mediaservice"; Flags: ignoreversion
-Source: "c:\OpenBoard\plugins\mediaservice\qtmedia_audioengined.dll"; DestDir: "c:\OpenBoard\plugins\mediaservice"; Flags: ignoreversion
-Source: "c:\OpenBoard\plugins\mediaservice\dsengine.dll"; DestDir: "c:\OpenBoard\plugins\mediaservice"; Flags: ignoreversion
-Source: "c:\OpenBoard\plugins\mediaservice\dsengined.dll"; DestDir: "c:\OpenBoard\plugins\mediaservice"; Flags: ignoreversion
+;Qt windows plugins
+Source: "{#QtDir}\plugins\platforms\qminimal.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\platforms\qoffscreen.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\platforms\qwindows.dll"; DestDir: "{app}\platforms"; Flags: ignoreversion
-Source: "c:\OpenBoard\plugins\playlistformats\qtmultimediakit_m3u.dll"; DestDir: "c:\OpenBoard\plugins\playlistformats"; Flags: ignoreversion
-Source: "c:\OpenBoard\plugins\playlistformats\qtmultimediakit_m3ud.dll"; DestDir: "c:\OpenBoard\plugins\playlistformats"; Flags: ignoreversion
+
+;Qt images formats plugins
+Source: "{#QtDir}\plugins\imageformats\qgif.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\imageformats\qico.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\imageformats\qjpeg.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\imageformats\qmng.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\imageformats\qsvg.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\imageformats\qtiff.dll"; DestDir: "{app}\imageformats"; Flags: ignoreversion
+
+;qt icon engine plugins
+Source: "{#QtDir}\plugins\iconengines\qsvgicon.dll"; DestDir: "{app}\iconengines"; Flags: ignoreversion
+
+;qt multimedia plugins
+Source: "{#QtDir}\plugins\mediaservice\dsengine.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\mediaservice\dsengined.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\mediaservice\qtmedia_audioengine.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\mediaservice\qtmedia_audioengined.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\mediaservice\wmfengine.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
+Source: "{#QtDir}\plugins\mediaservice\wmfengined.dll"; DestDir: "{app}\mediaservice"; Flags: ignoreversion
;OpenBoardImporter
-Source: "..\OpenBoard-Importer\release\OpenBoardImporter.exe"; DestDir: "c:\OpenBoard\Importer"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtGui4.dll"; DestDir: "c:\OpenBoard\Importer"; Flags: ignoreversion
-Source: "..\Qt-4.8\lib\QtCore4.dll"; DestDir: "c:\OpenBoard\Importer"; Flags: ignoreversion
+Source: "{#ProjectRoot}\..\OpenBoard-Importer\release\OpenBoardImporter.exe"; DestDir: "{app}\Importer"; Flags: ignoreversion
+Source: "{#QtLibs}\Qt5Core.dll"; DestDir: "{app}"
+Source: "{#QtLibs}\Qt5Gui.dll"; DestDir: "{app}"
;fonts for xpdf
-Source: "resources\windows\xpdfrc"; DestDir: "{app}"; Flags: ignoreversion
-Source: "resources\fonts\*"; DestDir: "{app}\fonts"; Flags: ignoreversion
+Source: "{#ProjectRoot}\resources\windows\xpdfrc"; DestDir: "{app}"; Flags: ignoreversion
+Source: "{#ProjectRoot}\resources\fonts\*"; DestDir: "{app}\fonts"; Flags: ignoreversion
[Icons]
Name: "{group}\OpenBoard"; Filename: "{app}\OpenBoard.exe"
diff --git a/release.win7.vc9.bat b/release_scripts/windows/release.win7.vc9.bat
similarity index 81%
rename from release.win7.vc9.bat
rename to release_scripts/windows/release.win7.vc9.bat
index b53a6b22..369526f3 100644
--- a/release.win7.vc9.bat
+++ b/release_scripts/windows/release.win7.vc9.bat
@@ -1,4 +1,5 @@
-echo off
+@echo off
+@echo off
REM --------------------------------------------------------------------
REM This program is free software: you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by
@@ -14,18 +15,20 @@ REM You should have received a copy of the GNU General Public License
REM along with this program. If not, see .
REM ---------------------------------------------------------------------
+set SCRIPT_PATH=%~dp0
+set PROJECT_ROOT=%SCRIPT_PATH%\..\..
set APPLICATION_NAME=OpenBoard
-set QT_DIR=..\Qt-4.8
+set QT_DIR=C:\Qt\5.5\msvc2010
set QT_BIN=%QT_DIR%\bin
-set PROGRAMS_FILE_PATH=C:\Program Files
+set PROGRAMS_FILE_PATH=C:\Program Files (x86)
set GIT_BIN=%PROGRAMS_FILE_PATH%\Git\bin
-set VS_BIN=%PROGRAMS_FILE_PATH%\Microsoft Visual Studio 9.0\VC\bin
+set VS_BIN=%PROGRAMS_FILE_PATH%\Microsoft Visual Studio 10.0\VC\bin
set WIN_SDK_BIN=%PROGRAMS_FILE_PATH%\Microsoft SDKs\Windows\v6.0A\Bin
set INNO_EXE=%PROGRAMS_FILE_PATH%\Inno Setup 5\iscc.exe
-set BUILD_DIR=build\win32\release
+set BUILD_DIR=%PROJECT_ROOT%\build\win32\release
set LRELEASE=%QT_DIR%\bin\lrelease
set BASE_QT_TRANSLATIONS_DIRECTORY=%QT_DIR%\translations
@@ -35,11 +38,14 @@ call "%VS_BIN%\vcvars32.bat"
echo %PATH%
+cd %PROJECT_ROOT%
+
REM Third party impoter application
set IMPORTER_NAME=OpenBoardImporter
-set IMPORTER_PATH="%cd%\..\OpenBoard-Importer"
+set IMPORTER_PATH="..\OpenBoard-Importer"
IF NOT EXIST "%IMPORTER_PATH%" GOTO EXIT_WITH_ERROR
+
set HOME_DIR="%cd%"
cd %IMPORTER_PATH%
IF EXIST "release" (del "release\*.*" /Q)
@@ -47,7 +53,7 @@ IF EXIST "debug" (del "debug\*.*" /Q)
IF EXIST "MakeFile" (del "MakeFile*" /Q)
IF EXIST "MakeFile" (del "MakeFile*" /Q)
IF EXIST "%IMPORTER_NAME%.exe" (del "%IMPORTER_NAME%.exe" /Q)
-"%QT_BIN%\qmake.exe" %IMPORTER_NAME%.pro"
+"%QT_BIN%\qmake.exe" %IMPORTER_NAME%.pro
nmake release
IF NOT EXIST release\"%IMPORTER_NAME%.exe" GOTO EXIT_WITH_ERROR
cd %HOME_DIR%
@@ -55,7 +61,7 @@ cd %HOME_DIR%
REM this checks if the custom qt directory path
REM is correct. This is important because installer
REM pick up dll from this directory
-IF NOT EXIST "%QT_DIR%\lib\QtCore4.dll" GOTO EXIT_WITH_ERROR
+REM IF NOT EXIST "%QT_DIR%\bin\Qt5Core.dll" GOTO EXIT_WITH_ERROR
rmdir /S /Q %BUILD_DIR%
rmdir /S /Q install
@@ -81,8 +87,8 @@ REM echo %LAST_TAG_VERSION%
nmake release-install
IF NOT EXIST build\win32\release\product\%APPLICATION_NAME%.exe GOTO EXIT_WITH_ERROR
-xcopy C:\%APPLICATION_NAME%\lib\*.dll build\win32\release\product\
-xcopy %QT_DIR%\lib\QtOpenGL4.dll build\win32\release\product\
+xcopy C:\%APPLICATION_NAME%\bin\*.dll build\win32\release\product\
+xcopy %QT_DIR%\bin\Qt5OpenGL.dll build\win32\release\product\
set CUSTOMIZATIONS=build\win32\release\product\customizations
mkdir %CUSTOMIZATIONS%
@@ -96,7 +102,7 @@ del build\win32\release\product\i18n\qt_help*
del "build\win32\release\product\%APPLICATION_NAME%.pdb"
-call "%INNO_EXE%" "%APPLICATION_NAME%.iss" /F"%APPLICATION_NAME%_Installer_%VERSION%"
+call "%INNO_EXE%" "%SCRIPT_PATH%\%APPLICATION_NAME%.iss" /F"%APPLICATION_NAME%_Installer_%VERSION%"
GOTO END
diff --git a/resources/OpenBoard.qrc b/resources/OpenBoard.qrc
index e1a44529..07f0d10a 100644
--- a/resources/OpenBoard.qrc
+++ b/resources/OpenBoard.qrc
@@ -60,9 +60,9 @@
images/toolbar/background.png
images/toolbar/documents.png
images/toolbar/newPage.png
- images/toolbar/nextPage.png
+ images/toolbar/next.png
images/toolbar/nextPageOn.png
- images/toolbar/previousPage.png
+ images/toolbar/previous.png
images/toolbar/previousPageOn.png
images/toolbar/redo.png
images/toolbar/redoOn.png
diff --git a/resources/etc/OpenBoard.config b/resources/etc/OpenBoard.config
new file mode 100644
index 00000000..cdef9239
--- /dev/null
+++ b/resources/etc/OpenBoard.config
@@ -0,0 +1,133 @@
+[App]
+AngleTolerance=4
+EnableAutomaticSoftwareUpdates=false
+EnableSoftwareUpdates=true
+EnableStartupHints=true
+FavoriteToolURIs=openboardtool://openboard/mask, openboardtool://ruler, openboardtool://compass, openboardtool://protractor, openboardtool://triangle, openboardtool://magnifier, openboardtool://cache
+IsInSoftwareUpdateProcess=false
+LastSessionDocumentUUID=
+LastSessionPageIndex=0
+LookForOpenSankoreInstall=true
+OnlineUserName=
+PageCacheSize=20
+PreferredLanguage=
+ProductWebAddress=http://www.openboard.ch
+StartMode=
+SwapControlAndDisplayScreens=false
+ToolBarDisplayText=true
+ToolBarOrientationVertical=false
+ToolBarPositionedAtTop=true
+TutorialUrl=http://www.openboard.ch
+UseMultiscreenMode=true
+UseSystemOnScreenKeyboard=true
+
+[Board]
+AutoSaveIntervalInMinutes=3
+CrossedBackground=0
+DarkBackground=0
+DefaultPageSize=@Size(1280 960)
+EraserCircleWidthIndex=1
+FeatureSliderPosition=40
+KeyboardPaletteKeyBtnSize=16x16
+LeftLibPaletteBoardModeIsCollapsed=true
+LeftLibPaletteBoardModeWidth=270
+LeftLibPaletteDesktopModeIsCollapsed=true
+LeftLibPaletteDesktopModeWidth=270
+MagnifierDrawingMode=0
+MarkerAlpha=0.5
+MarkerColorIndex=0
+MarkerDarkBackgroundColors=#FFFF00, #FF4400, #66C0FF, #81FF5C, #B68360, #FF497E, #8D69FF, #FFFFFF
+MarkerDarkBackgroundSelectedColors=#FFFF00, #FF4400, #66C0FF, #81FF5C, #B68360
+MarkerFineWidth=12
+MarkerLightBackgroundColors=#E3FF00, #FF0000, #004080, #008000, #C87400, #800040, #008080, #000000
+MarkerLightBackgroundSelectedColors=#E3FF00, #FF0000, #004080, #008000, #C87400
+MarkerMediumWidth=24
+MarkerPressureSensitive=false
+MarkerStrongWidth=48
+PenColorIndex=0
+PenDarkBackgroundColors=#FFFFFF, #FF3400, #66C0FF, #81FF5C, #FFFF00, #B68360, #FF497E, #8D69FF, #000000
+PenDarkBackgroundSelectedColors=#FFFFFF, #FF3400, #66C0FF, #81FF5C, #FFFF00
+PenFineWidth=1.5
+PenLightBackgroundColors=#000000, #FF0000, #004080, #008000, #FFDD00, #C87400, #800040, #008080, #5F2D0A, #FFFFFF
+PenLightBackgroundSelectedColors=#000000, #FF0000, #004080, #008000, #FFDD00
+PenLineWidthIndex=0
+PenMediumWidth=3
+PenPressureSensitive=true
+PenStrongWidth=8
+RightLibPaletteBoardModeIsCollapsed=true
+RightLibPaletteBoardModeWidth=270
+RightLibPaletteDesktopModeIsCollapsed=true
+RightLibPaletteDesktopModeWidth=270
+ShowEraserPreviewCircle=true
+ShowMarkerPreviewCircle=true
+ShowToolsPalette=false
+StartupKeyboardLocale=0
+UseHighResTabletEvent=true
+ZoomFactor=1.4099999999999999
+pageDpi=0
+
+[Community]
+CredentialsPersistence=false
+Password=
+Username=
+
+[Document]
+EmptyGroupNames=@Invalid()
+ThumbnailWidth=150
+
+[IntranetPodcast]
+Author=
+PublishToIntranet=false
+PublishingUrl=
+
+[Library]
+AnimationsDirectory=./library/animations
+ApplicationsDirectory=./library/applications
+AudiosDirectory=./library/audios
+ImageDirectory=./library/pictures
+ImageThumbnailWidth=150
+InteractivitiesDirectory=./library/interactivities
+LibIconSize=80
+ShapeDirectory=./library/shape
+ShapeThumbnailWidth=50
+SoundThumbnailWidth=50
+VideoThumbnailWidth=80
+VideosDirectory=./library/videos
+
+[Mirroring]
+RefreshRateInFramePerSecond=2
+
+[PDF]
+Margin=20
+PageFormat=A4
+Resolution=300
+
+[Podcast]
+AudioRecordingDevice=Default
+FramesPerSecond=10
+PublishToYouTube=false
+QuickTimeQuality=High
+VideoSize=Medium
+WindowsMediaBitsPerSecond=1700000
+
+[SVG]
+ViewBoxMargin=50
+
+[Voting]
+ReplyPlusAddressingMode=static
+ReplyPlusConnectionURL=USB
+ReplyPlusMaxKeypads=100
+ReplyWWSerialPort=3
+
+[Web]
+AddBookmarkURL="http://www.myuniboard.com/bookmarks/save/?url="
+BookmarksPage=http://www.myuniboard.com
+HistoryLimit=15
+Homepage=http://www.openboard.ch
+ShowAddBookmarkButton=false
+ShowPageImediatelyOnMirroredScreen=false
+UseExternalBrowser=false
+
+[YouTube]
+CredentialsPersistence=false
+UserEMail=
diff --git a/resources/etc/OpenBoard.css b/resources/etc/OpenBoard.css
index 35245152..b5779e22 100644
--- a/resources/etc/OpenBoard.css
+++ b/resources/etc/OpenBoard.css
@@ -321,7 +321,7 @@ QTabBar::tab
border-top-left-radius: 3px;
border-top-right-radius: 3px;
- min-width: 15ex;
+ min-width: 12ex;
margin: 2px;
margin-top: 6px;
margin-bottom: 2px;
diff --git a/resources/etc/npapi-wrapper.application.x-shockwave-flash.swf.htm b/resources/etc/npapi-wrapper.application.x-shockwave-flash.swf.htm
index 7d99bf8c..909d19d1 100644
--- a/resources/etc/npapi-wrapper.application.x-shockwave-flash.swf.htm
+++ b/resources/etc/npapi-wrapper.application.x-shockwave-flash.swf.htm
@@ -22,7 +22,7 @@