Settings default filename is now "config.ini"
On Mac OS X and ubuntu, configuration file is saved in ~/.find_object Added Mac OS X packaging (DragNDrop) git-svn-id: http://find-object.googlecode.com/svn/trunk/find_object@16 620bd6b2-0a58-f614-fd9a-1bd335dccda9
This commit is contained in:
parent
a600190f80
commit
ca47c87b67
@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.2)
|
|||||||
PROJECT( FindObject )
|
PROJECT( FindObject )
|
||||||
SET(PROJECT_PREFIX find_object)
|
SET(PROJECT_PREFIX find_object)
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
|
ADD_DEFINITIONS(-DPROJECT_PREFIX="${PROJECT_PREFIX}")
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# VERSION
|
# VERSION
|
||||||
@ -37,6 +37,24 @@ SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
|
|||||||
FIND_PACKAGE(OpenCV REQUIRED) # tested on 2.3.1
|
FIND_PACKAGE(OpenCV REQUIRED) # tested on 2.3.1
|
||||||
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui) # tested on Qt4.7
|
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui) # tested on Qt4.7
|
||||||
|
|
||||||
|
####### OSX BUNDLE CMAKE_INSTALL_PREFIX #######
|
||||||
|
OPTION(BUILD_AS_BUNDLE "Set to ON to build as bundle (DragNDrop)" OFF)
|
||||||
|
IF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
#Force to Off, easiest to package into the bundle
|
||||||
|
SET( BUILD_SHARED_LIBS OFF )
|
||||||
|
|
||||||
|
# Required when packaging, and set CMAKE_INSTALL_PREFIX to "/".
|
||||||
|
SET(CPACK_SET_DESTDIR TRUE)
|
||||||
|
|
||||||
|
SET(CMAKE_BUNDLE_NAME
|
||||||
|
"${PROJECT_NAME}")
|
||||||
|
SET(CMAKE_BUNDLE_LOCATION "/")
|
||||||
|
|
||||||
|
# make sure CMAKE_INSTALL_PREFIX ends in /
|
||||||
|
SET(CMAKE_INSTALL_PREFIX
|
||||||
|
"/${CMAKE_BUNDLE_NAME}.app/Contents")
|
||||||
|
ENDIF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
|
||||||
####### SOURCES (Projects) #######
|
####### SOURCES (Projects) #######
|
||||||
ADD_SUBDIRECTORY( src )
|
ADD_SUBDIRECTORY( src )
|
||||||
|
|
||||||
@ -81,12 +99,31 @@ IF(WIN32)
|
|||||||
#SET(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${PROJECT_NAME}.exe)
|
#SET(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${PROJECT_NAME}.exe)
|
||||||
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ${CPACK_PACKAGE_EXECUTABLES})
|
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ${CPACK_PACKAGE_EXECUTABLES})
|
||||||
SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}" ${CPACK_CREATE_DESKTOP_LINKS})
|
SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}" ${CPACK_CREATE_DESKTOP_LINKS})
|
||||||
ENDIF(WIN32)
|
ELSEIF(APPLE)
|
||||||
|
IF(BUILD_AS_BUNDLE)
|
||||||
|
# On APPLE and if BUILD_AS_BUNDLE=ON, the project is created as a bundle
|
||||||
|
# over the main app (see ./src).Here we package only this bundle. Note
|
||||||
|
# that we set CMAKE_INSTALL_PREFIX to "/" when packaging to DragNDrop...
|
||||||
|
SET(CPACK_GENERATOR "DragNDrop")
|
||||||
|
ELSE()
|
||||||
|
SET(CPACK_GENERATOR "PackageMaker;TBZ2")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
SET(CPACK_SOURCE_GENERATOR "TBZ2")
|
||||||
|
|
||||||
|
#SET(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/app/src/${PROJECT_NAME}.icns")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INCLUDE(CPack)
|
INCLUDE(CPack)
|
||||||
|
|
||||||
|
#######################
|
||||||
|
# OUTPUT INFO
|
||||||
|
#######################
|
||||||
MESSAGE(STATUS "--------------------------------------------")
|
MESSAGE(STATUS "--------------------------------------------")
|
||||||
MESSAGE(STATUS "Info :")
|
MESSAGE(STATUS "Info :")
|
||||||
MESSAGE(STATUS " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
|
MESSAGE(STATUS " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
|
||||||
MESSAGE(STATUS " CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
MESSAGE(STATUS " CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
||||||
|
IF(APPLE)
|
||||||
|
MESSAGE(STATUS " BUILD_AS_BUNDLE = ${BUILD_AS_BUNDLE}")
|
||||||
|
ENDIF(APPLE)
|
||||||
MESSAGE(STATUS "--------------------------------------------")
|
MESSAGE(STATUS "--------------------------------------------")
|
||||||
29
README
29
README
@ -1,13 +1,38 @@
|
|||||||
|
|
||||||
|
+---------------------------------------------------
|
||||||
|
+ Build from source
|
||||||
|
+---------------------------------------------------
|
||||||
Requirements :
|
Requirements :
|
||||||
-Cmake (tested on 2.8.2)
|
-Cmake (tested on 2.8.2)
|
||||||
-Qt4 (tested on 4.7)
|
-Qt4 (tested on 4.7)
|
||||||
-OpenCV (tested on 2.3.1)
|
-OpenCV (tested on 2.3.1)
|
||||||
|
-MinGW (only on Windows)
|
||||||
|
|
||||||
Build from source:
|
Ubuntu / Mac OS X
|
||||||
$ cd find_object/build
|
$ cd find_object/build
|
||||||
$ cmake ..
|
$ cmake ..
|
||||||
$ make
|
$ make
|
||||||
$ cd ../bin
|
$ cd ../bin
|
||||||
$ ./find_object
|
$ ./find_object
|
||||||
(enjoy!)
|
|
||||||
|
Windows
|
||||||
|
$ cd find_object/build
|
||||||
|
$ cmake -G"MinGW Makefiles" ..
|
||||||
|
$ make
|
||||||
|
$ cd ../bin
|
||||||
|
$ find_object
|
||||||
|
|
||||||
|
+---------------------------------------------------
|
||||||
|
+ Packaging
|
||||||
|
+---------------------------------------------------
|
||||||
|
MacOSX (DragNDrop) :
|
||||||
|
> cd build
|
||||||
|
> cmake -DBUILD_AS_BUNDLE=ON ..
|
||||||
|
> make -j4
|
||||||
|
> make package
|
||||||
|
|
||||||
|
Windows :
|
||||||
|
> cd build
|
||||||
|
> cmake -G"MinGW Makefiles" ..
|
||||||
|
> make -j4
|
||||||
|
> make package
|
||||||
@ -29,8 +29,6 @@ QT4_WRAP_CPP(moc_srcs ${headers_ui})
|
|||||||
### Qt Gui stuff end###
|
### Qt Gui stuff end###
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SET(SRC_FILES
|
SET(SRC_FILES
|
||||||
./MainWindow.cpp
|
./MainWindow.cpp
|
||||||
./AddObjectDialog.cpp
|
./AddObjectDialog.cpp
|
||||||
@ -63,15 +61,24 @@ SET(LIBRARIES
|
|||||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRS})
|
INCLUDE_DIRECTORIES(${INCLUDE_DIRS})
|
||||||
|
|
||||||
# create an executable file
|
# create an executable file
|
||||||
ADD_EXECUTABLE(find_object WIN32 ${SRC_FILES})
|
IF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
ADD_EXECUTABLE(find_object MACOSX_BUNDLE ${SRC_FILES})
|
||||||
|
ELSE()
|
||||||
|
ADD_EXECUTABLE(find_object WIN32 ${SRC_FILES})
|
||||||
|
ENDIF()
|
||||||
# Linking with Qt libraries
|
# Linking with Qt libraries
|
||||||
TARGET_LINK_LIBRARIES(find_object ${LIBRARIES})
|
TARGET_LINK_LIBRARIES(find_object ${LIBRARIES})
|
||||||
|
|
||||||
IF(WIN32)
|
IF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
SET_TARGET_PROPERTIES(find_object PROPERTIES
|
||||||
|
OUTPUT_NAME ${CMAKE_BUNDLE_NAME})
|
||||||
|
ELSEIF(WIN32)
|
||||||
SET_TARGET_PROPERTIES(find_object PROPERTIES
|
SET_TARGET_PROPERTIES(find_object PROPERTIES
|
||||||
OUTPUT_NAME ${PROJECT_NAME})
|
OUTPUT_NAME ${PROJECT_NAME})
|
||||||
ENDIF(WIN32)
|
ELSE()
|
||||||
|
SET_TARGET_PROPERTIES(find_object PROPERTIES
|
||||||
|
OUTPUT_NAME ${PROJECT_PREFIX})
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
#---------------------------
|
#---------------------------
|
||||||
# Installation stuff
|
# Installation stuff
|
||||||
@ -79,12 +86,25 @@ ENDIF(WIN32)
|
|||||||
INSTALL(TARGETS find_object
|
INSTALL(TARGETS find_object
|
||||||
RUNTIME DESTINATION bin COMPONENT runtime
|
RUNTIME DESTINATION bin COMPONENT runtime
|
||||||
BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime)
|
BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime)
|
||||||
|
|
||||||
|
#---------------------------
|
||||||
|
# Dependencies packaging
|
||||||
|
#---------------------------
|
||||||
|
IF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
INSTALL(CODE "execute_process(COMMAND ln -s \"../MacOS/${CMAKE_BUNDLE_NAME}\" ${PROJECT_NAME}
|
||||||
|
WORKING_DIRECTORY \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin)")
|
||||||
|
ENDIF(APPLE AND BUILD_AS_BUNDLE)
|
||||||
|
|
||||||
SET(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}")
|
SET(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}")
|
||||||
IF(WIN32)
|
IF((APPLE AND BUILD_AS_BUNDLE) OR WIN32)
|
||||||
SET(plugin_dest_dir bin)
|
SET(plugin_dest_dir bin)
|
||||||
SET(qtconf_dest_dir bin)
|
SET(qtconf_dest_dir bin)
|
||||||
|
IF(APPLE)
|
||||||
|
SET(plugin_dest_dir MacOS)
|
||||||
|
SET(qtconf_dest_dir Resources)
|
||||||
|
SET(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/MacOS/${CMAKE_BUNDLE_NAME}")
|
||||||
|
ENDIF(APPLE)
|
||||||
|
|
||||||
# Install needed Qt plugins by copying directories from the qt installation
|
# Install needed Qt plugins by copying directories from the qt installation
|
||||||
# One can cull what gets copied by using 'REGEX "..." EXCLUDE'
|
# One can cull what gets copied by using 'REGEX "..." EXCLUDE'
|
||||||
# Exclude debug libraries
|
# Exclude debug libraries
|
||||||
@ -97,6 +117,9 @@ IF(WIN32)
|
|||||||
# install a qt.conf file
|
# install a qt.conf file
|
||||||
# this inserts some cmake code into the install script to write the file
|
# this inserts some cmake code into the install script to write the file
|
||||||
SET(QT_CONF_FILE [Paths]\nPlugins=plugins)
|
SET(QT_CONF_FILE [Paths]\nPlugins=plugins)
|
||||||
|
IF(APPLE)
|
||||||
|
SET(QT_CONF_FILE [Paths]\nPlugins=MacOS/plugins)
|
||||||
|
ENDIF(APPLE)
|
||||||
INSTALL(CODE "
|
INSTALL(CODE "
|
||||||
file(WRITE \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"${QT_CONF_FILE}\")
|
file(WRITE \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"${QT_CONF_FILE}\")
|
||||||
" COMPONENT runtime)
|
" COMPONENT runtime)
|
||||||
@ -115,5 +138,5 @@ IF(WIN32)
|
|||||||
include(\"BundleUtilities\")
|
include(\"BundleUtilities\")
|
||||||
fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
|
fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
|
||||||
" COMPONENT runtime)
|
" COMPONENT runtime)
|
||||||
ENDIF(WIN32)
|
ENDIF((APPLE AND BUILD_AS_BUNDLE) OR WIN32)
|
||||||
|
|
||||||
|
|||||||
@ -32,7 +32,12 @@ MainWindow::MainWindow(QWidget * parent) :
|
|||||||
connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(update()));
|
connect(&cameraTimer_, SIGNAL(timeout()), this, SLOT(update()));
|
||||||
|
|
||||||
QByteArray geometry;
|
QByteArray geometry;
|
||||||
|
#ifdef WIN32
|
||||||
|
//TODO Maybe use the Documents and Settings
|
||||||
Settings::loadSettings(Settings::iniDefaultFileName, &geometry);
|
Settings::loadSettings(Settings::iniDefaultFileName, &geometry);
|
||||||
|
#else
|
||||||
|
Settings::loadSettings(QString("%1/.%2/%3").arg(QDir::homePath()).arg(PROJECT_PREFIX).arg(Settings::iniDefaultFileName), &geometry);
|
||||||
|
#endif
|
||||||
this->restoreGeometry(geometry);
|
this->restoreGeometry(geometry);
|
||||||
|
|
||||||
ui_->toolBox->setupUi();
|
ui_->toolBox->setupUi();
|
||||||
@ -73,13 +78,18 @@ MainWindow::~MainWindow()
|
|||||||
|
|
||||||
void MainWindow::closeEvent(QCloseEvent * event)
|
void MainWindow::closeEvent(QCloseEvent * event)
|
||||||
{
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
//TODO Maybe use the Documents and Settings
|
||||||
Settings::saveSettings(Settings::iniDefaultFileName, this->saveGeometry());
|
Settings::saveSettings(Settings::iniDefaultFileName, this->saveGeometry());
|
||||||
|
#else
|
||||||
|
Settings::saveSettings(QString("%1/.%2/%3").arg(QDir::homePath()).arg(PROJECT_PREFIX).arg(Settings::iniDefaultFileName), this->saveGeometry());
|
||||||
|
#endif
|
||||||
QMainWindow::closeEvent(event);
|
QMainWindow::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::loadObjects()
|
void MainWindow::loadObjects()
|
||||||
{
|
{
|
||||||
QString fileName = QFileDialog::getOpenFileName(this, tr("Load objects..."), "", "*.obj");
|
QString fileName = QFileDialog::getOpenFileName(this, tr("Load objects..."), QDir::homePath(), "*.obj");
|
||||||
if(!fileName.isEmpty())
|
if(!fileName.isEmpty())
|
||||||
{
|
{
|
||||||
QFile file(fileName);
|
QFile file(fileName);
|
||||||
@ -113,7 +123,7 @@ void MainWindow::loadObjects()
|
|||||||
}
|
}
|
||||||
void MainWindow::saveObjects()
|
void MainWindow::saveObjects()
|
||||||
{
|
{
|
||||||
QString fileName = QFileDialog::getSaveFileName(this, tr("Save objects..."), Settings::currentDetectorType()+Settings::currentDescriptorType()+QString("%1.obj").arg(objects_.size()), "*.obj");
|
QString fileName = QFileDialog::getSaveFileName(this, tr("Save objects..."), (QDir::homePath() + "/") +Settings::currentDetectorType()+Settings::currentDescriptorType()+QString("%1.obj").arg(objects_.size()), "*.obj");
|
||||||
if(!fileName.isEmpty())
|
if(!fileName.isEmpty())
|
||||||
{
|
{
|
||||||
if(!fileName.endsWith(".obj"))
|
if(!fileName.endsWith(".obj"))
|
||||||
|
|||||||
@ -381,10 +381,17 @@ void Object::contextMenuEvent(QContextMenuEvent * event)
|
|||||||
if(action == _saveImage)
|
if(action == _saveImage)
|
||||||
{
|
{
|
||||||
QString text;
|
QString text;
|
||||||
|
if(_savedFileName.isEmpty())
|
||||||
|
{
|
||||||
|
#ifndef WIN32
|
||||||
|
_savedFileName = QDir::homePath();
|
||||||
|
#endif
|
||||||
|
_savedFileName+="/figure.png";
|
||||||
|
}
|
||||||
text = QFileDialog::getSaveFileName(this, tr("Save figure to ..."), _savedFileName, "*.png *.xpm *.jpg *.pdf");
|
text = QFileDialog::getSaveFileName(this, tr("Save figure to ..."), _savedFileName, "*.png *.xpm *.jpg *.pdf");
|
||||||
if(!text.isEmpty())
|
if(!text.isEmpty())
|
||||||
{
|
{
|
||||||
if(!text.endsWith(".png") && !text.endsWith(".png") && !text.endsWith(".png") && !text.endsWith(".png"))
|
if(!text.endsWith(".png") && !text.endsWith(".xpm") && !text.endsWith(".jpg") && !text.endsWith(".pdf"))
|
||||||
{
|
{
|
||||||
text.append(".png");//default
|
text.append(".png");//default
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ ParametersMap Settings::defaultParameters_;
|
|||||||
ParametersMap Settings::parameters_;
|
ParametersMap Settings::parameters_;
|
||||||
ParametersType Settings::parametersType_;
|
ParametersType Settings::parametersType_;
|
||||||
Settings Settings::dummyInit_;
|
Settings Settings::dummyInit_;
|
||||||
const char * Settings::iniDefaultFileName = "./" PROJECT_NAME ".ini";
|
const char * Settings::iniDefaultFileName = "config.ini";
|
||||||
|
|
||||||
void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometry)
|
void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometry)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class Settings
|
|||||||
public:
|
public:
|
||||||
virtual ~Settings(){}
|
virtual ~Settings(){}
|
||||||
|
|
||||||
static const char * iniDefaultFileName; // "./" PROJECT_NAME ".ini"
|
static const char * iniDefaultFileName; // "config.ini"
|
||||||
|
|
||||||
static void loadSettings(const QString & fileName = iniDefaultFileName, QByteArray * windowGeometry = 0);
|
static void loadSettings(const QString & fileName = iniDefaultFileName, QByteArray * windowGeometry = 0);
|
||||||
static void saveSettings(const QString & fileName = iniDefaultFileName, const QByteArray & windowGeometry = QByteArray());
|
static void saveSettings(const QString & fileName = iniDefaultFileName, const QByteArray & windowGeometry = QByteArray());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user