Procházet zdrojové kódy

Merge branch 'master' of https://github.com/q-gears/q-gears

Conflicts:
	CMakeLists.txt
sithlord48 před 11 roky
rodič
revize
91f89e3182
38 změnil soubory, kde provedl 531 přidání a 104 odebrání
  1. 1 0
      .gitignore
  2. 128 43
      CMakeLists.txt
  3. 1 0
      PlugIns/Data/CMakeLists.txt
  4. 2 1
      QGearsMain/CMakeLists.txt
  5. 1 0
      QGearsMain/include/data/QGearsLGPArchive.h
  6. 8 1
      QGearsMain/src/data/QGearsLGPArchive.cpp
  7. 1 0
      SupportedGames/FinalFantasy7/CMakeLists.txt
  8. 8 0
      Tests/FinalFantasy7/CMakeLists.txt
  9. 13 0
      Tests/QGearsMain/CMakeLists.txt
  10. binární
      Tests/QGearsMain/misc/reference.lgp
  11. 52 57
      Tests/QGearsMain/src/test_QGearsLGPArchive.cpp
  12. 2 0
      dependencies/CMakeLists.txt
  13. 1 1
      dependencies/luajit
  14. 21 1
      readme.md
  15. 2 0
      utilities/CMakeLists.txt
  16. 1 0
      utilities/ffix_model_exporter/CMakeLists.txt
  17. 1 0
      utilities/ffix_script_dumper/CMakeLists.txt
  18. 1 0
      utilities/ffix_sound_dumper/CMakeLists.txt
  19. 1 0
      utilities/ffvii_battle_model_exporter/CMakeLists.txt
  20. 1 0
      utilities/ffvii_battle_scene_dumper/CMakeLists.txt
  21. 1 0
      utilities/ffvii_field_dat_dumper/CMakeLists.txt
  22. 1 0
      utilities/ffvii_field_model_exporter/CMakeLists.txt
  23. 1 0
      utilities/ffvii_field_model_exporter_pc/CMakeLists.txt
  24. 1 0
      utilities/ffvii_font_exporter/CMakeLists.txt
  25. 1 0
      utilities/ffvii_sound_dumper/CMakeLists.txt
  26. 1 0
      utilities/ffvii_sound_dumper_psf/CMakeLists.txt
  27. 1 0
      utilities/flevel/CMakeLists.txt
  28. 58 0
      utilities/installer/CMakeLists.txt
  29. 11 0
      utilities/installer/src/Main.cpp
  30. 48 0
      utilities/installer/src/mainwindow.cpp
  31. 30 0
      utilities/installer/src/mainwindow.h
  32. 125 0
      utilities/installer/src/mainwindow.ui
  33. 1 0
      utilities/lzs/CMakeLists.txt
  34. 1 0
      utilities/xeno_cd_extract/CMakeLists.txt
  35. 1 0
      utilities/xeno_model_exporter/CMakeLists.txt
  36. 1 0
      utilities/xeno_script_dumper/CMakeLists.txt
  37. 1 0
      utilities/xeno_sound_dumper/CMakeLists.txt
  38. 1 0
      utilities/xeno_walkmesh_exporter/CMakeLists.txt

+ 1 - 0
.gitignore

@@ -16,4 +16,5 @@ build/
 output/share
 output/include
 output/lib
+CMakeLists.txt.user
 

+ 128 - 43
CMakeLists.txt

@@ -9,6 +9,9 @@ set(QGears_VERSION_MAJOR 0)
 set(QGears_VERSION_MINOR 22)
 set(QGears_VERSION_PATCH 0)
 
+# Enable Visual Studio solution "folders"
+SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON) 
+
 #if (APPLE)
 #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
 #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
@@ -66,12 +69,12 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
   )
 endif()
 
-find_package( ZLIB REQUIRED )
-
+find_package(Qt4 REQUIRED)
+find_package(ZLIB REQUIRED)
 find_package(OGRE REQUIRED)
-
 find_package(OIS REQUIRED)
 
+
 if(NOT OIS_FOUND)
         message(SEND_ERROR "Failed to find OIS.")
 endif()
@@ -107,16 +110,16 @@ if (NOT OGRE_BUILD_PLATFORM_IPHONE)
 
         # Set up referencing of Boost
         include_directories(${Boost_INCLUDE_DIR})
-	if (NOT APPLE)        
-	add_definitions(-DBOOST_ALL_NO_LIB)
-	endif()
+    if (NOT APPLE)        
+    add_definitions(-DBOOST_ALL_NO_LIB)
+    endif()
 
         set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES})
 
         find_package(Boost COMPONENTS program_options filesystem QUIET)
         set(OGRE_LIBRARIES ${OGRE_LIBRARIES} ${Boost_LIBRARIES})
         set(QGears_LIBRARIES ${OGRE_LIBRARIES})
-		
+        
         if(QGears_SOUND)
             find_package(OpenAL REQUIRED)
             find_package(OggVorbis REQUIRED)
@@ -138,7 +141,7 @@ if (NOT OGRE_BUILD_PLATFORM_IPHONE)
         endif()
 
         if(QGears_BUILD_TESTS)
-	    message(STATUS "Looking for boost unit test..")
+        message(STATUS "Looking for boost unit test..")
             find_package(Boost COMPONENTS unit_test_framework REQUIRED)
             set(QGears_TEST_LIBRARIES
                 ${OGRE_LIBRARIES}
@@ -164,11 +167,11 @@ set(QGears_INCLUDE_DIRS
     ${OGRE_Overlay_INCLUDE_DIRS}
     ${OGRE_SAMPLES_INCLUDEPATH}
     ${CMAKE_CURRENT_SOURCE_DIR}/dependencies
-	${CMAKE_CURRENT_BINARY_DIR}/dependencies/luajit
-	${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luajit/src
-	${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind
-	${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind/luabind/detail
-	${CMAKE_CURRENT_SOURCE_DIR}/dependencies/tinyxml
+    ${CMAKE_CURRENT_BINARY_DIR}/dependencies/luajit
+    ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luajit/src
+    ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind
+    ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/luabind/luabind/detail
+    ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/tinyxml
 )
 
 
@@ -215,46 +218,51 @@ MESSAGE( STATUS "BOOST_ROOT:         " ${BOOST_ROOT} )
 
 #OS SPECIFIC 
 if(WIN32)
-	# On Windows generate MSI packages
-	SET(CPACK_GENERATOR "WIX")
-	
-	set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/wix.template.in")
-	SET(CPACK_WIX_UPGRADE_GUID 8fbb893f-5622-4f6d-a7f6-c221f7be5d52)
+    # On Windows generate MSI packages
+    SET(CPACK_GENERATOR "WIX")
+    
+    set(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/wix.template.in")
+    SET(CPACK_WIX_UPGRADE_GUID 8fbb893f-5622-4f6d-a7f6-c221f7be5d52)
 
 # TODO: Set MSI banner image, copyright info etc, also include startmenu/desktop shortcuts
-	#set the name of the installer default formating is name-version-os
-	
-	# If empty assume release
-	if ("${CMAKE_BUILD_TYPE}" STREQUAL "" OR "${CMAKE_BUILD_TYPE}" STREQUAL "release")
-		message("RELEASE installer build")
-		install(FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg DESTINATION ./)
-		install(FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OgreMain.dll DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/RenderSystem_GL.dll DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OGREOVERLAY.DLL DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OIS.DLL DESTINATION ./)
-	else()
-		message("DEBUG installer build")
-		install(FILES ${PROJECT_SOURCE_DIR}/output/resources_d.cfg DESTINATION ./)
-		install(FILES ${PROJECT_SOURCE_DIR}/output/plugins_d.cfg DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OgreMain_d.dll DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/RenderSystem_GL_d.dll DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OGREOVERLAY_D.DLL DESTINATION ./)
-		install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OIS_D.DLL DESTINATION ./)
-	endif()
+    #set the name of the installer default formating is name-version-os
+    
+    # If empty assume release
+    if ("${CMAKE_BUILD_TYPE}" STREQUAL "" OR "${CMAKE_BUILD_TYPE}" STREQUAL "release")
+        message("RELEASE installer build")
+        install(FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg DESTINATION ./)
+        install(FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OgreMain.dll DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/RenderSystem_GL.dll DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OGREOVERLAY.DLL DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OIS.DLL DESTINATION ./)
+        install(FILES ${QT_PLUGINS_DIR}/../bin/QtCore4.dll DESTINATION ./)
+        install(FILES ${QT_PLUGINS_DIR}/../bin/QtGui4.dll DESTINATION ./)
+    else()
+        message("DEBUG installer build")
+        install(FILES ${PROJECT_SOURCE_DIR}/output/resources_d.cfg DESTINATION ./)
+        install(FILES ${PROJECT_SOURCE_DIR}/output/plugins_d.cfg DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OgreMain_d.dll DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/RenderSystem_GL_d.dll DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OGREOVERLAY_D.DLL DESTINATION ./)
+        install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/debug/OIS_D.DLL DESTINATION ./)
+        install(FILES ${QT_PLUGINS_DIR}/../bin/QtCored4.dll DESTINATION ./)
+        install(FILES ${QT_PLUGINS_DIR}/../bin/QtGuid4.dll DESTINATION ./)
+    endif()
 elseif(APPLE)
-	# APPLE is also UNIX, so must check for APPLE before UNIX
-	SET(CPACK_GENERATOR "DragNDrop")
- 	install(FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg DESTINATION ./)
-	install(FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg DESTINATION ./)
+    # APPLE is also UNIX, so must check for APPLE before UNIX
+    SET(CPACK_GENERATOR "DragNDrop")
+    install(FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg DESTINATION ./)
+    install(FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg DESTINATION ./)
         install(FILES ${OGRE_CMAKE_MODULE_PATH}/../lib/macosx/Release/Ogre.framework/Ogre DESTINATION ./)
         install(FILES ${OGRE_CMAKE_MODULE_PATH}/../lib/macosx/Release/RenderSystem_GL.framework/Versions/1.9.0/RenderSystem_GL DESTINATION ./)
         install(FILES ${OGRE_CMAKE_MODULE_PATH}/../lib/macosx/Release/OgreOverlay.framework/Versions/1.9.0/OgreOverlay DESTINATION ./)
 
-	# TODO: Fix up other files and use "otool" to fix dynlib + framework paths
+    # TODO: Fix up other files and use "otool" to fix dynlib + framework paths
         #install(FILES ${OGRE_CMAKE_MODULE_PATH}/../bin/release/OIS.DLL DESTINATION ./)
         #install(FILES "${BOOST_ROOT}/stage/lib/BOOST_SYSTEM-VC120-MT-1_55.DLL" DESTINATION ./)
 elseif(UNIX)
+<<<<<<< HEAD
 	# On Linux generate TAR.GZ,DEB and RPM packages
 	#Find out what architecture are we running on and set the package architecture 
 	
@@ -327,8 +335,85 @@ elseif(UNIX)
 	  SET(CPACK_RPM_PACKAGE_DESCRIPTION)
 	  #REQUIREMENTS NEED TO BE CHECKED USING FEDORA.
 	  #SET(CPACK_RPM_PACKAGE_REQUIRES "ogre,ois,boost,vorbis,lua,zlib1g")
+=======
+    # On Linux generate TAR.GZ,DEB and RPM packages
+    #Find out what architecture are we running on and set the package architecture 
+    
+    # set the generic files needing to be installed
+    install( FILES ${PROJECT_SOURCE_DIR}/q-gears.png DESTINATION ./share/pixmaps/ )
+    install( FILES ${PROJECT_SOURCE_DIR}/q-gears.desktop DESTINATION ./share/applications/ )
+    install( FILES ${PROJECT_SOURCE_DIR}/debian/menu DESTINATION share/menu/ RENAME q-gears )
+    install( FILES ${PROJECT_SOURCE_DIR}/output/plugins.cfg_linux DESTINATION share/q-gears/ RENAME plugins.cfg PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_WRITE WORLD_READ)
+    install( FILES ${PROJECT_SOURCE_DIR}/output/resources.cfg_linux DESTINATION share/q-gears/ RENAME resources.cfg PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_WRITE WORLD_READ)
+    install( FILES ${PROJECT_SOURCE_DIR}/output/q-gears.cfg_linux DESTINATION share/q-gears/ RENAME q-gears.cfg PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_WRITE WORLD_READ)
+        
+    if(EXISTS "/usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so")
+      install( FILES /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so DESTINATION share/q-gears/plugins/ RENAME RenderSystem_GL.so.1.9.0 )
+    endif()
+        
+        
+    SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
+    SET(CPACK_GENERATOR "TGZ")
+    #detect Distro Family DEB , RPM 
+    if(EXISTS "/etc/lsb-release")
+        set(DistroType DEB)
+    elseif(EXISTS "/etc/debian_release")
+        set(DistroType DEB)
+    elseif(EXISTS "/etc/fedora-release")
+        set(DistroType RPM)
+    endif()
+    message(STATUS "Distro Detected: ${DistroType} ")
+
+    if(DistroType MATCHES "DEB")
+      # Setup DEB package properties
+      MESSAGE(STATUS "DEB ADDED TO GENERATION LIST")
+      SET(CPACK_GENERATOR "${CPACK_GENERATOR};DEB")
+    endif()
+    if(EXISTS "/usr/bin/rpmbuild")
+      MESSAGE(STATUS "RPM ADDED TO GENERATION LIST (RPM IS DISABLED IN CMAKELISTS)")
+    #  Uncomment to allow for rpm files to be built.   
+    #  SET(CPACK_GENERATOR "${CPACK_GENERATOR};RPM")
+    endif()
+    
+    # Setup DEB package properties
+    SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Chris Rizzitello <sithlord48@gmail.com>")
+    
+    
+    #Set DEBIAN INFO
+    SET(CPACK_DEBIAN_PACKAGE_SECTION games)
+    SET(CPACK_DEBIAN_PACKAGE_PRIORITY extra)
+    #SET(CPACK_PACKAGE_EXECUTABLE )
+    EXECUTE_PROCESS(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
+    MESSAGE (STATUS "Architecture: ${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
+    #we should need no longer need postinst since we have added extra install steps to what it would.
+    #SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ${CMAKE_SOURCE_DIR}/debian/postinst )
+    #set the name to be debian package like.
+    SET(CPACK_PACKAGE_FILE_NAME "q-gears_${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
+    #SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libogre-1.9, libois,libboost-program-options,libboost-filesystem,libvorbis,libopenal,libboost-test,zlib1g")
+    SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libogre-1.9.0, libois-1.3.0,libboost-program-options1.54.0,libboost-filesystem1.54.0,libvorbis0a,libvorbisfile3,libvorbisenc2,libopenal1,libboost-test1.54.0,zlib1g,liblua5.1-0")
+
+    #Set RPM info
+      SET(CPACK_RPM_PACKAGE_SUMMARY CPACK_PACKAGE_DESCRIPTION_SUMMARY)
+      SET(CPACK_RPM_PACKAGE_NAME CPACK_PACKAGE_NAME)
+      SET(CPACK_RPM_PACKAGE_VERSION CPACK_PACKAGE_VERSION)
+      SET(CPACK_RPM_PACKAGE_RELEASE 1)
+      SET(CPACK_RPM_PACKAGE_LICENSE "GPLv3+")
+      SET(CPACK_RPM_PACKAGE_GROUP games)
+      SET(CPACK_RPM_PACKAGE_VENDOR)
+      SET(CPACK_RPM_PACKAGE_DESCRIPTION)
+      #REQUIREMENTS NEED TO BE CHECKED USING FEDORA.
+      #SET(CPACK_RPM_PACKAGE_REQUIRES "ogre,ois,boost,vorbis,lua,zlib1g")
+>>>>>>> e41cccaa5f4ea95e769138c569a01b867c7f6486
 
 endif()
 
+SET_PROPERTY(TARGET liblua PROPERTY FOLDER "3rdparty")
+SET_PROPERTY(TARGET buildvm PROPERTY FOLDER "3rdparty")
+SET_PROPERTY(TARGET LuaBind PROPERTY FOLDER "3rdparty")
+SET_PROPERTY(TARGET luajit PROPERTY FOLDER "3rdparty")
+SET_PROPERTY(TARGET minilua PROPERTY FOLDER "3rdparty")
+SET_PROPERTY(TARGET TinyXml PROPERTY FOLDER "3rdparty")
+
+
 INCLUDE(CPack)
 #End of install instructions

+ 1 - 0
PlugIns/Data/CMakeLists.txt

@@ -77,6 +77,7 @@ add_library(DataPlugin MODULE
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET DataPlugin PROPERTY FOLDER "q-gears")
 
 set_target_properties(DataPlugin PROPERTIES
   PREFIX ${PLUGIN_PREFIX}

+ 2 - 1
QGearsMain/CMakeLists.txt

@@ -324,17 +324,18 @@ add_library(QGearsMain STATIC
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET QGearsMain PROPERTY FOLDER "q-gears")
 
 add_executable(q-gears
   src/Main.cpp
 )
+SET_PROPERTY(TARGET q-gears PROPERTY FOLDER "q-gears")
 
 
 if (APPLE)
 target_link_libraries(q-gears "-framework CoreFoundation -framework Cocoa -framework IOKit")
 endif()
 
-
 if( WIN32 AND NOT (CMAKE_BUILD_TYPE MATCHES "Debug") )
     set_target_properties( q-gears PROPERTIES WIN32_EXECUTABLE ON )
 	if (MSVC)

+ 1 - 0
QGearsMain/include/data/QGearsLGPArchive.h

@@ -95,6 +95,7 @@ namespace QGears
             virtual FileList& getFiles( void );
 
         protected:
+            void load( Ogre::DataStream* lgp );
 
         private:
             FileList            m_files;

+ 8 - 1
QGearsMain/src/data/QGearsLGPArchive.cpp

@@ -51,8 +51,15 @@ namespace QGears
     {
         //OGRE_LOCK_AUTO_MUTEX
         std::ifstream *ifs( OGRE_NEW_T( std::ifstream, Ogre::MEMCATEGORY_GENERAL )( mName.c_str(), std::ifstream::binary ) );
+        load( OGRE_NEW Ogre::FileStreamDataStream( ifs ) );
+    }
+
+    //-------------------------------------------------------------------------
+    void
+    LGPArchive::load( Ogre::DataStream* lgp )
+    {
         m_lgp_file.setNull();
-        m_lgp_file.bind( OGRE_NEW Ogre::FileStreamDataStream( ifs ) );
+        m_lgp_file.bind( lgp );
         LGPArchiveSerializer lgp_archive_serializer;
         lgp_archive_serializer.importLGPArchive( m_lgp_file, this );
 

+ 1 - 0
SupportedGames/FinalFantasy7/CMakeLists.txt

@@ -29,6 +29,7 @@ add_library(FinalFantasy7 STATIC
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET FinalFantasy7 PROPERTY FOLDER "q-gears")
 
 set(LIBRARIES
     ${OGRE_LIBRARIES}

+ 8 - 0
Tests/FinalFantasy7/CMakeLists.txt

@@ -15,6 +15,9 @@ set(LIBRARIES
 add_executable(TestFF7FLevelFileSerializer
     src/test_FF7FLevelFileSerializer
 )
+SET_PROPERTY(TARGET TestFF7FLevelFileSerializer PROPERTY FOLDER "tests")
+
+
 target_link_libraries(TestFF7FLevelFileSerializer ${LIBRARIES})
 add_test(TestFF7FLevelFileSerializer TestFF7FLevelFileSerializer)
 
@@ -22,6 +25,9 @@ add_test(TestFF7FLevelFileSerializer TestFF7FLevelFileSerializer)
 add_executable(TestFF7ModelListFileSerializer
     src/test_FF7ModelListFileSerializer.cpp
 )
+SET_PROPERTY(TARGET TestFF7ModelListFileSerializer PROPERTY FOLDER "tests")
+
+
 target_link_libraries(TestFF7ModelListFileSerializer ${LIBRARIES})
 add_test(TestFF7ModelListFileSerializer TestFF7ModelListFileSerializer)
 
@@ -29,5 +35,7 @@ add_test(TestFF7ModelListFileSerializer TestFF7ModelListFileSerializer)
 add_executable(TestFF7WalkmeshFileSerializer
     src/test_FF7WalkmeshFileSerializer.cpp
 )
+SET_PROPERTY(TARGET TestFF7WalkmeshFileSerializer PROPERTY FOLDER "tests")
+
 target_link_libraries(TestFF7WalkmeshFileSerializer ${LIBRARIES})
 add_test(TestFF7WalkmeshFileSerializer TestFF7WalkmeshFileSerializer)

+ 13 - 0
Tests/QGearsMain/CMakeLists.txt

@@ -13,6 +13,8 @@ set(LIBRARIES
 add_executable(TestQGearsAFileSerializer
     src/test_QGearsAFileSerializer.cpp
 )
+SET_PROPERTY(TARGET TestQGearsAFileSerializer PROPERTY FOLDER "tests")
+
 target_link_libraries(TestQGearsAFileSerializer ${LIBRARIES})
 add_test(TestQGearsAFileSerializer TestQGearsAFileSerializer)
 
@@ -20,6 +22,8 @@ add_test(TestQGearsAFileSerializer TestQGearsAFileSerializer)
 add_executable(TestQGearsMapFileXMLSerializer
     src/test_QGearsMapFileXMLSerializer.cpp
 )
+SET_PROPERTY(TARGET TestQGearsMapFileXMLSerializer PROPERTY FOLDER "tests")
+
 target_link_libraries(TestQGearsMapFileXMLSerializer ${LIBRARIES})
 add_test(TestQGearsMapFileXMLSerializer TestQGearsMapFileXMLSerializer)
 
@@ -27,6 +31,8 @@ add_test(TestQGearsMapFileXMLSerializer TestQGearsMapFileXMLSerializer)
 add_executable(TestQGearsWalkmeshFileXMLSerializer
     src/test_QGearsWalkmeshFileXMLSerializer.cpp
 )
+SET_PROPERTY(TARGET TestQGearsWalkmeshFileXMLSerializer PROPERTY FOLDER "tests")
+
 target_link_libraries(TestQGearsWalkmeshFileXMLSerializer ${LIBRARIES})
 add_test(TestQGearsWalkmeshFileXMLSerializer TestQGearsWalkmeshFileXMLSerializer)
 
@@ -34,6 +40,8 @@ add_test(TestQGearsWalkmeshFileXMLSerializer TestQGearsWalkmeshFileXMLSerializer
 add_executable(TestQGearsLGPArchive
     src/test_QGearsLGPArchive.cpp
 )
+SET_PROPERTY(TARGET TestQGearsLGPArchive PROPERTY FOLDER "tests")
+
 target_link_libraries(TestQGearsLGPArchive ${LIBRARIES})
 add_test(TestQGearsLGPArchive TestQGearsLGPArchive)
 
@@ -41,6 +49,8 @@ add_test(TestQGearsLGPArchive TestQGearsLGPArchive)
 add_executable(TestMapSerializer
     src/test_MapSerializer.cpp
 )
+SET_PROPERTY(TARGET TestMapSerializer PROPERTY FOLDER "tests")
+
 target_link_libraries(TestMapSerializer ${LIBRARIES})
 add_test(TestMapSerializer TestMapSerializer)
 
@@ -48,6 +58,9 @@ add_test(TestMapSerializer TestMapSerializer)
 add_executable(TestTxzSerializer
     src/test_TxzSerializer.cpp
 )
+SET_PROPERTY(TARGET TestTxzSerializer PROPERTY FOLDER "tests")
+
+
 target_link_libraries(TestTxzSerializer ${LIBRARIES})
 add_test(TestTxzSerializer TestTxzSerializer)
 

binární
Tests/QGearsMain/misc/reference.lgp


+ 52 - 57
Tests/QGearsMain/src/test_QGearsLGPArchive.cpp

@@ -30,55 +30,57 @@ THE SOFTWARE.
 
 #include "data/QGearsLGPArchiveFactory.h"
 
-BOOST_AUTO_TEST_CASE( stream )
-{
-    const char* file_name( "misc/reference.lgp" );
-    std::ifstream *ifs( OGRE_NEW_T( std::ifstream, Ogre::MEMCATEGORY_GENERAL )( file_name, std::ifstream::binary ) );
-    BOOST_REQUIRE( ifs->is_open() );
-    Ogre::FileStreamDataStream stream( ifs );
-    BOOST_REQUIRE( stream.isReadable() );
-    stream.close();
-}
-
 BOOST_AUTO_TEST_CASE( load )
 {
-    QGears::LGPArchiveFactory factory;
-    Ogre::Archive* archive = factory.createInstance( "misc/reference.lgp", true );
-    QGears::LGPArchive lgp( "misc/reference.lgp", "LGP" );
+    Ogre::LogManager        logMgr;
+    logMgr.createLog( "Default Log", true, true, true );
+    const char* filename_1( "Filename 1" );
+    const char* filename_2( "max length filename!" );
+
+    class TestLGPArchive : public QGears::LGPArchive
+    {
+        public:
+
+            TestLGPArchive() :
+                QGears::LGPArchive( "misc/reference.lgp", "LGP" )
+              , test_stream( NULL )
+            {}
+
+            void load()
+            {
+                QGears::LGPArchive::load( test_stream );
+            }
+
+        Ogre::DataStream* test_stream;
+    };
+
+    TestLGPArchive lgp;
+    // TODO: use Ogre::MemoryDataStream and include data via byte array
+    std::ifstream *ifs( OGRE_NEW_T( std::ifstream, Ogre::MEMCATEGORY_GENERAL )( lgp.getName().c_str(), std::ifstream::binary ) );
+    lgp.test_stream = OGRE_NEW Ogre::FileStreamDataStream( ifs );
 
     BOOST_CHECK_EQUAL(  true, lgp.getFiles().empty() );
-    BOOST_CHECK_EQUAL( false, lgp.exists( "aaac.p" ) );
-    BOOST_CHECK_EQUAL( false, lgp.exists( "mmmm.p" ) );
-    BOOST_CHECK_EQUAL( lgp.getFiles().empty(), archive->list()->empty() );
-    BOOST_CHECK_EQUAL( lgp.exists( "aaac.p" ), archive->exists( "aaac.p" ) );
-    BOOST_CHECK_EQUAL( lgp.exists( "mmmm.p" ), archive->exists( "mmmm.p" ) );
+    BOOST_CHECK_EQUAL( false, lgp.exists( filename_1 ) );
+    BOOST_CHECK_EQUAL( false, lgp.exists( filename_2 ) );
 
-    Ogre::LogManager        logMgr;
-    logMgr.createLog( "Default Log", true, true, true );
     lgp.load();
-    archive->load();
-    logMgr.destroyLog( "Default Log" );
 
-    BOOST_CHECK_EQUAL( 12649, lgp.getFiles().size() );
-    BOOST_CHECK_EQUAL(  true, lgp.exists( "aaac.p" ) );
-    BOOST_CHECK_EQUAL(  true, lgp.exists( "mmmm.p" ) );
+    BOOST_CHECK_EQUAL( 2, lgp.getFiles().size() );
+    BOOST_CHECK_EQUAL(  true, lgp.exists( filename_1 ) );
+    BOOST_CHECK_EQUAL(  true, lgp.exists( filename_2 ) );
     BOOST_CHECK_EQUAL( lgp.getFiles().size(), lgp.list()->size() );
     BOOST_CHECK_EQUAL( lgp.getFiles().size(), lgp.listFileInfo()->size() );
-    BOOST_CHECK_EQUAL( lgp.getFiles().size(), archive->list()->size() );
-    BOOST_CHECK_EQUAL( lgp.exists( "aaac.p" ), archive->exists( "aaac.p" ) );
-    BOOST_CHECK_EQUAL( lgp.exists( "mmmm.p" ), archive->exists( "mmmm.p" ) );
-
-    QGears::LGPArchive::FileEntry& entry( lgp.getFiles()[1] );
-    BOOST_CHECK_EQUAL( "aaad.rsd", entry.file_name );
-    BOOST_CHECK_EQUAL( entry.file_name, lgp.list()->at( 1 ) );
-    BOOST_CHECK_EQUAL( entry.file_name, archive->list()->at( 1 ) );
-    BOOST_CHECK_EQUAL( 0x00054ACB, entry.file_offset );
-    BOOST_CHECK_EQUAL( "AAAD.rsd", entry.data_file_name );
-    BOOST_CHECK_EQUAL( 0x0000003E, entry.data_size );
-    BOOST_CHECK_EQUAL( 0x00054AE3, entry.data_offset );
+
+    QGears::LGPArchive::FileEntry& entry( lgp.getFiles()[0] );
+    BOOST_CHECK_EQUAL( filename_1, entry.file_name );
+    BOOST_CHECK_EQUAL( entry.file_name, lgp.list()->at( 0 ) );
+    BOOST_CHECK_EQUAL( 0x00000050, entry.file_offset );
+    BOOST_CHECK_EQUAL( "FILENAME 1", entry.data_file_name );
+    BOOST_CHECK_EQUAL( 0x00000018, entry.data_size );
+    BOOST_CHECK_EQUAL( 0x00000068, entry.data_offset );
 
     Ogre::FileInfoListPtr file_infos( lgp.listFileInfo() );
-    Ogre::FileInfo& file_info( file_infos->at( 1 ) );
+    Ogre::FileInfo& file_info( file_infos->at( 0 ) );
     BOOST_CHECK_EQUAL( &lgp, file_info.archive );
     BOOST_CHECK_EQUAL( entry.file_name, file_info.filename );
     BOOST_CHECK_EQUAL( entry.file_name, file_info.basename );
@@ -86,31 +88,24 @@ BOOST_AUTO_TEST_CASE( load )
     BOOST_CHECK_EQUAL( entry.data_size, file_info.uncompressedSize );
     BOOST_CHECK_EQUAL( file_info.uncompressedSize, file_info.compressedSize );
 
-    BOOST_CHECK_EQUAL( 3209, lgp.find( "*.a" )->size() );
-    BOOST_CHECK_EQUAL(  385, lgp.find( "*.hrc" )->size() );
-    BOOST_CHECK_EQUAL(  695, lgp.find( "*.tex" )->size() );
-    BOOST_CHECK_EQUAL( 4180, lgp.find( "*.p" )->size() );
+    BOOST_CHECK_EQUAL( 1, lgp.find( "Filename*" )->size() );
+    BOOST_CHECK_EQUAL( 1, lgp.find( "*!" )->size() );
+    BOOST_CHECK_EQUAL( 2, lgp.find( "*name*" )->size() );
 
-    Ogre::StringVectorPtr found( lgp.find( "*.rsd" ) );
-    BOOST_CHECK_EQUAL( 4180, found->size() );
-    BOOST_CHECK_EQUAL( "aaad.rsd", found->at( 0 ) );
-    BOOST_CHECK_EQUAL( "aaib.rsd", found->at( 1 ) );
+    Ogre::StringVectorPtr found( lgp.find( "*name*" ) );
+    BOOST_CHECK_EQUAL( 2, found->size() );
+    BOOST_CHECK_EQUAL( filename_1, found->at( 0 ) );
+    BOOST_CHECK_EQUAL( filename_2, found->at( 1 ) );
 
-    Ogre::DataStreamPtr stream( lgp.open( "aaad.rsd" ) );
+    Ogre::DataStreamPtr stream( lgp.open( filename_1 ) );
     BOOST_CHECK_EQUAL( false, stream.isNull() );
     BOOST_CHECK_EQUAL( entry.data_size, stream->size() );
-    BOOST_CHECK_EQUAL( "@RSD940102", stream->getLine() );
-    BOOST_CHECK_EQUAL( "PLY=AAAE.PLY", stream->getLine() );
-    BOOST_CHECK_EQUAL( "MAT=AAAE.MAT", stream->getLine() );
-    BOOST_CHECK_EQUAL( "GRP=AAAE.GRP", stream->getLine() );
-    BOOST_CHECK_EQUAL( "NTEX=0", stream->getLine() );
+    BOOST_CHECK_EQUAL( "data of file 1 for test!", stream->getLine() );
     BOOST_CHECK_EQUAL( true, stream->eof() );
 
-    BOOST_CHECK_EQUAL( 1381049923, lgp.getModifiedTime( "aaad.rsd" ) );
-
     lgp.unload();
 
-    BOOST_CHECK_EQUAL( false, lgp.exists( "aaac.p" ) );
-    BOOST_CHECK_EQUAL( false, lgp.exists( "mmmm.p" ) );
-    factory.destroyInstance( archive );
+    BOOST_CHECK_EQUAL( false, lgp.exists( filename_1 ) );
+    BOOST_CHECK_EQUAL( false, lgp.exists( filename_2 ) );
+    logMgr.destroyLog( "Default Log" );
 }

+ 2 - 0
dependencies/CMakeLists.txt

@@ -9,6 +9,8 @@ include_directories(
 add_subdirectory(tinyxml)
 add_subdirectory(luajit)
 
+
+
  aux_source_directory( luabind/luabind LuaBind_header_FILES )
  aux_source_directory( luabind/luabind/details LuaBind_header_details_FILES )		
  aux_source_directory( luabind/src LuaBind_src_FILES )		

+ 1 - 1
dependencies/luajit

@@ -1 +1 @@
-Subproject commit ce623d1d7582517e65ea4e27f75e7ae983eef1fd
+Subproject commit 6c4a18258631ff01f963e9a1e64df57d7a453fd6

+ 21 - 1
readme.md

@@ -11,7 +11,7 @@ See here for builds http://qgears.itscovarr.com here you will find nightly build
 
 #### Ubuntu Linux 14.04
 
-Ogre version must be 1.9, Boost version must be 55, gcc version must be 4.9, QtCreator is optional - install if you want to use this as the IDE (recommended).
+Ogre version must be 1.9, Qt version 4.8, Boost version must be 55, gcc version must be 4.9, QtCreator is optional - install if you want to use this as the IDE (recommended).
 
 **Install required packages:**
 ```
@@ -26,6 +26,7 @@ Ogre version must be 1.9, Boost version must be 55, gcc version must be 4.9, QtC
 * sudo apt-get install qtcreator
 * sudo apt-get install libogre-1.9-dev
 * sudo apt-get install libois-dev
+* sudo apt-get install libqt4-dev
 ```
 
 **Sync down the QGears source code:**
@@ -78,6 +79,7 @@ Anyway here is what we need for Ubuntu 12.04 (Travis-CI) **WARNING** updating th
 * sudo apt-get install libglu-dev
 * sudo apt-get install libfreetype6-dev 
 * sudo apt-get install checkinstall
+* sudo apt-get install libqt4-dev
 ```
 
 **Sync down source for Ogre 1.9:**
@@ -185,6 +187,23 @@ http://zlib.net/zlib128-dll.zip
 ```
 Extract to the root of C drive.
 
+
+**Download Qt 4.8 source code:**
+```
+https://download.qt.io/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.zip
+```
+Again Extract to the root of C drive.
+
+**Build Qt:**
+
+Open a Visual Studio 2013 command prompt and enter:
+
+```
+configure -platform win32-msvc2013 -no-webkit -debug-and-release -no-phonon -no-qt3support -mp -no-scripttools -nomake demos -nomake examples -no-openssl 
+```
+
+Key in "o" to use the open source license and then "y" to agree. Once this is done enter "nmake" to finish compling Qt.
+
 Now sync down the QGears source code, first create a directory some where you want to sync the code to using Windows explorer. Then right in the newly created directory and select "GIT Bash here".
 
 In the git bash enter:
@@ -199,6 +218,7 @@ Now cd to where you synced the qgears source code to. For me this was "cd C:\Use
 ```
 mkdir build
 cd build
+set QTDIR=C:/qt-everywhere-opensource-src-4.8.6
 set OGRE_HOME=C:/OgreSDK/OgreSDK_vc12_v1-9-0
 cmake .. -DZLIB_ROOT=C:/zlib128-dll -DBOOST_ROOT=C:/boost_1_55_0
 ```

+ 2 - 0
utilities/CMakeLists.txt

@@ -45,6 +45,7 @@ target_link_libraries(Utility
     ${OIS_LIBRARIES}
     ${ZLIB_LIBRARIES}
 )
+SET_PROPERTY(TARGET Utility PROPERTY FOLDER "utilities")
 
 add_subdirectory(ffix_model_exporter)
 add_subdirectory(ffix_script_dumper)
@@ -58,6 +59,7 @@ add_subdirectory(ffvii_font_exporter)
 add_subdirectory(ffvii_sound_dumper)
 add_subdirectory(ffvii_sound_dumper_psf)
 add_subdirectory(flevel)
+add_subdirectory(installer)
 add_subdirectory(lzs)
 add_subdirectory(xeno_cd_extract)
 add_subdirectory(xeno_model_exporter)

+ 1 - 0
utilities/ffix_model_exporter/CMakeLists.txt

@@ -24,6 +24,7 @@ add_executable(ff9_model_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff9_model_exporter PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff9_model_exporter "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffix_script_dumper/CMakeLists.txt

@@ -22,6 +22,7 @@ add_executable(ff9_script_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff9_script_dumper PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(ff9_script_dumper PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/ffix_sound_dumper/CMakeLists.txt

@@ -28,6 +28,7 @@ add_executable(ff9_sound_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff9_sound_dumper PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff9_sound_dumper "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_battle_model_exporter/CMakeLists.txt

@@ -31,6 +31,7 @@ add_executable(ff7_battle_model_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_battle_model_exporter PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_battle_model_exporter "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_battle_scene_dumper/CMakeLists.txt

@@ -24,6 +24,7 @@ add_executable(ff7_battle_scene_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_battle_scene_dumper PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_battle_scene_dumper "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_field_dat_dumper/CMakeLists.txt

@@ -21,6 +21,7 @@ add_executable(ff7_field_dat_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_field_dat_dumper PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_field_dat_dumper "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_field_model_exporter/CMakeLists.txt

@@ -35,6 +35,7 @@ add_executable(ff7_field_model_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_field_model_exporter PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_field_model_exporter "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_field_model_exporter_pc/CMakeLists.txt

@@ -19,6 +19,7 @@ add_executable(ff7_field_model_exporter_pc
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_field_model_exporter_pc PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_field_model_exporter_pc "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_font_exporter/CMakeLists.txt

@@ -20,6 +20,7 @@ add_executable(ff7_font_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_font_exporter PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(ff7_font_exporter PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/ffvii_sound_dumper/CMakeLists.txt

@@ -26,6 +26,7 @@ add_executable(ff7_sound_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_sound_dumper PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(ff7_sound_dumper "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/ffvii_sound_dumper_psf/CMakeLists.txt

@@ -60,6 +60,7 @@ add_executable(ff7_sound_dumper_psf
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET ff7_sound_dumper_psf PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(ff7_sound_dumper_psf PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/flevel/CMakeLists.txt

@@ -18,6 +18,7 @@ add_executable(flevel
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET flevel PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(flevel PROPERTIES WIN32_EXECUTABLE ON)

+ 58 - 0
utilities/installer/CMakeLists.txt

@@ -0,0 +1,58 @@
+INCLUDE(${QT_USE_FILE})
+ADD_DEFINITIONS(${QT_DEFINITIONS})
+
+# This is where the ui generated header files end up
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+
+include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}/include
+)
+
+# define header and source files
+set(HEADER_FILES
+    src/mainwindow.h
+)
+set(SOURCE_FILES
+    src/Main.cpp
+    src/mainwindow.cpp
+)
+
+set(INSTALLER_FORMS
+   src/mainwindow.ui
+)
+
+QT4_WRAP_UI(INSTALLER_FORM_HEADERS ${INSTALLER_FORMS})
+QT4_WRAP_CPP(INSTALLER_HEADERS_MOC ${HEADER_FILES})
+
+add_definitions(
+    -DQGEARS_ADD_MANAGERS
+)
+
+add_executable(installer
+  ${HEADER_FILES}
+  ${SOURCE_FILES}
+  ${INSTALLER_FORM_HEADERS}
+  ${INSTALLER_HEADERS_MOC}
+)
+SET_PROPERTY(TARGET installer PROPERTY FOLDER "utilities")
+
+if (APPLE)
+target_link_libraries(installer "-framework CoreFoundation -framework Cocoa -framework IOKit")
+endif()
+
+if(WIN32)
+  set_target_properties(installer PROPERTIES WIN32_EXECUTABLE ON)
+  if (MSVC)
+    set_target_properties(installer PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE")
+  endif()
+endif()
+
+set(LIBRARIES
+    Utility
+)
+
+target_link_libraries(installer    ${LIBRARIES} ${QT_LIBRARIES})
+
+install(TARGETS installer
+    DESTINATION .
+)

+ 11 - 0
utilities/installer/src/Main.cpp

@@ -0,0 +1,11 @@
+#include "mainwindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    MainWindow w;
+    w.show();
+
+    return a.exec();
+}

+ 48 - 0
utilities/installer/src/mainwindow.cpp

@@ -0,0 +1,48 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+    /*
+     set any options here
+     */
+
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
+
+void MainWindow::on_btnInput_clicked()
+{
+    QString temp = QFileDialog::getExistingDirectory(this,tr("Location of Game Data),"),QDir::homePath());
+    ui->lineInput->setText(temp);
+}
+
+
+void MainWindow::on_btnOutput_clicked()
+{
+    QString temp = QFileDialog::getExistingDirectory(this,tr("Location of QGears Data),"),QDir::homePath());
+    ui->lineOutput->setText(temp);
+}
+
+
+void MainWindow::on_btnGO_clicked()
+{
+    if (ui->lineInput->text().isEmpty())
+    {
+        QMessageBox::critical(this,tr("Input Error"),tr("No Input Provided"));
+    }
+    else if(ui->lineOutput->text().isEmpty())
+    {
+        QMessageBox::critical(this,tr("Output Error"),tr("No Output Path Provided"));
+    }
+    else
+    {
+        QMessageBox::information(this,tr("Converting Data"),tr("Attempt to convert with \n Input: %1 \n Output: %2").arg(ui->lineInput->text(),ui->lineOutput->text()));
+    }
+}

+ 30 - 0
utilities/installer/src/mainwindow.h

@@ -0,0 +1,30 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QFileDialog>
+#include <QMessageBox>
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit MainWindow(QWidget *parent = 0);
+    ~MainWindow();
+
+private slots:
+    void on_btnInput_clicked();
+
+    void on_btnOutput_clicked();
+
+    void on_btnGO_clicked();
+
+private:
+    Ui::MainWindow *ui;
+};
+
+#endif // MAINWINDOW_H

+ 125 - 0
utilities/installer/src/mainwindow.ui

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>486</width>
+    <height>145</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Data Source:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="lineInput"/>
+      </item>
+      <item>
+       <widget class="QPushButton" name="btnInput">
+        <property name="maximumSize">
+         <size>
+          <width>24</width>
+          <height>24</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Output Path:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="lineOutput"/>
+      </item>
+      <item>
+       <widget class="QPushButton" name="btnOutput">
+        <property name="maximumSize">
+         <size>
+          <width>24</width>
+          <height>24</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>...</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <widget class="QPushButton" name="btnGO">
+      <property name="text">
+       <string>PushButton</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>486</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionExit"/>
+   </widget>
+   <addaction name="menuFile"/>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+  <action name="actionExit">
+   <property name="text">
+    <string>Exit</string>
+   </property>
+  </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>actionExit</sender>
+   <signal>triggered()</signal>
+   <receiver>MainWindow</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>242</x>
+     <y>199</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>242</x>
+     <y>199</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

+ 1 - 0
utilities/lzs/CMakeLists.txt

@@ -18,6 +18,7 @@ add_executable(lzs
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET lzs PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(lzs PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/xeno_cd_extract/CMakeLists.txt

@@ -18,6 +18,7 @@ add_executable(xeno_cd_extract
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET xeno_cd_extract PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(xeno_cd_extract PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/xeno_model_exporter/CMakeLists.txt

@@ -31,6 +31,7 @@ add_executable(xeno_model_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET xeno_model_exporter PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(xeno_model_exporter "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/xeno_script_dumper/CMakeLists.txt

@@ -53,6 +53,7 @@ add_executable(xeno_script_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET xeno_script_dumper PROPERTY FOLDER "utilities")
 
 if(WIN32)
   set_target_properties(xeno_script_dumper PROPERTIES WIN32_EXECUTABLE ON)

+ 1 - 0
utilities/xeno_sound_dumper/CMakeLists.txt

@@ -26,6 +26,7 @@ add_executable(xeno_sound_dumper
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET xeno_sound_dumper PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(xeno_sound_dumper "-framework CoreFoundation -framework Cocoa -framework IOKit")

+ 1 - 0
utilities/xeno_walkmesh_exporter/CMakeLists.txt

@@ -83,6 +83,7 @@ add_executable(xeno_walkmesh_exporter
   ${HEADER_FILES}
   ${SOURCE_FILES}
 )
+SET_PROPERTY(TARGET xeno_walkmesh_exporter PROPERTY FOLDER "utilities")
 
 if (APPLE)
 target_link_libraries(xeno_walkmesh_exporter "-framework CoreFoundation -framework Cocoa -framework IOKit")