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 )
|
||||
SET(PROJECT_PREFIX find_object)
|
||||
|
||||
ADD_DEFINITIONS(-DPROJECT_NAME="${PROJECT_NAME}")
|
||||
ADD_DEFINITIONS(-DPROJECT_PREFIX="${PROJECT_PREFIX}")
|
||||
|
||||
#######################
|
||||
# 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(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) #######
|
||||
ADD_SUBDIRECTORY( src )
|
||||
|
||||
@ -81,12 +99,31 @@ IF(WIN32)
|
||||
#SET(CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\${PROJECT_NAME}.exe)
|
||||
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ${CPACK_PACKAGE_EXECUTABLES})
|
||||
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)
|
||||
|
||||
#######################
|
||||
# OUTPUT INFO
|
||||
#######################
|
||||
MESSAGE(STATUS "--------------------------------------------")
|
||||
MESSAGE(STATUS "Info :")
|
||||
MESSAGE(STATUS " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}")
|
||||
MESSAGE(STATUS " CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
||||
IF(APPLE)
|
||||
MESSAGE(STATUS " BUILD_AS_BUNDLE = ${BUILD_AS_BUNDLE}")
|
||||
ENDIF(APPLE)
|
||||
MESSAGE(STATUS "--------------------------------------------")
|
||||
29
README
29
README
@ -1,13 +1,38 @@
|
||||
|
||||
+---------------------------------------------------
|
||||
+ Build from source
|
||||
+---------------------------------------------------
|
||||
Requirements :
|
||||
-Cmake (tested on 2.8.2)
|
||||
-Qt4 (tested on 4.7)
|
||||
-OpenCV (tested on 2.3.1)
|
||||
-MinGW (only on Windows)
|
||||
|
||||
Build from source:
|
||||
Ubuntu / Mac OS X
|
||||
$ cd find_object/build
|
||||
$ cmake ..
|
||||
$ make
|
||||
$ cd ../bin
|
||||
$ ./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###
|
||||
|
||||
|
||||
|
||||
|
||||
SET(SRC_FILES
|
||||
./MainWindow.cpp
|
||||
./AddObjectDialog.cpp
|
||||
@ -63,15 +61,24 @@ SET(LIBRARIES
|
||||
INCLUDE_DIRECTORIES(${INCLUDE_DIRS})
|
||||
|
||||
# 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
|
||||
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
|
||||
OUTPUT_NAME ${PROJECT_NAME})
|
||||
ENDIF(WIN32)
|
||||
|
||||
ELSE()
|
||||
SET_TARGET_PROPERTIES(find_object PROPERTIES
|
||||
OUTPUT_NAME ${PROJECT_PREFIX})
|
||||
ENDIF()
|
||||
|
||||
#---------------------------
|
||||
# Installation stuff
|
||||
@ -79,12 +86,25 @@ ENDIF(WIN32)
|
||||
INSTALL(TARGETS find_object
|
||||
RUNTIME DESTINATION bin 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}")
|
||||
IF(WIN32)
|
||||
IF((APPLE AND BUILD_AS_BUNDLE) OR WIN32)
|
||||
SET(plugin_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
|
||||
# One can cull what gets copied by using 'REGEX "..." EXCLUDE'
|
||||
# Exclude debug libraries
|
||||
@ -97,6 +117,9 @@ IF(WIN32)
|
||||
# install a qt.conf file
|
||||
# this inserts some cmake code into the install script to write the file
|
||||
SET(QT_CONF_FILE [Paths]\nPlugins=plugins)
|
||||
IF(APPLE)
|
||||
SET(QT_CONF_FILE [Paths]\nPlugins=MacOS/plugins)
|
||||
ENDIF(APPLE)
|
||||
INSTALL(CODE "
|
||||
file(WRITE \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${qtconf_dest_dir}/qt.conf\" \"${QT_CONF_FILE}\")
|
||||
" COMPONENT runtime)
|
||||
@ -115,5 +138,5 @@ IF(WIN32)
|
||||
include(\"BundleUtilities\")
|
||||
fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
|
||||
" 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()));
|
||||
|
||||
QByteArray geometry;
|
||||
#ifdef WIN32
|
||||
//TODO Maybe use the Documents and Settings
|
||||
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);
|
||||
|
||||
ui_->toolBox->setupUi();
|
||||
@ -73,13 +78,18 @@ MainWindow::~MainWindow()
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent * event)
|
||||
{
|
||||
#ifdef WIN32
|
||||
//TODO Maybe use the Documents and Settings
|
||||
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);
|
||||
}
|
||||
|
||||
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())
|
||||
{
|
||||
QFile file(fileName);
|
||||
@ -113,7 +123,7 @@ void MainWindow::loadObjects()
|
||||
}
|
||||
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.endsWith(".obj"))
|
||||
|
||||
@ -381,10 +381,17 @@ void Object::contextMenuEvent(QContextMenuEvent * event)
|
||||
if(action == _saveImage)
|
||||
{
|
||||
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");
|
||||
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
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ ParametersMap Settings::defaultParameters_;
|
||||
ParametersMap Settings::parameters_;
|
||||
ParametersType Settings::parametersType_;
|
||||
Settings Settings::dummyInit_;
|
||||
const char * Settings::iniDefaultFileName = "./" PROJECT_NAME ".ini";
|
||||
const char * Settings::iniDefaultFileName = "config.ini";
|
||||
|
||||
void Settings::loadSettings(const QString & fileName, QByteArray * windowGeometry)
|
||||
{
|
||||
|
||||
@ -116,7 +116,7 @@ class Settings
|
||||
public:
|
||||
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 saveSettings(const QString & fileName = iniDefaultFileName, const QByteArray & windowGeometry = QByteArray());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user