work on pasting instance logs
blame clang for formatting changes
This commit is contained in:
		
							
								
								
									
										222
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										222
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | |||||||
| cmake_minimum_required(VERSION 2.8.9) | cmake_minimum_required(VERSION 2.8.9) | ||||||
|  |  | ||||||
| IF(WIN32) | IF(WIN32) | ||||||
| 	# In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows |       # In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows | ||||||
| 	cmake_policy(SET CMP0020 OLD) |       cmake_policy(SET CMP0020 OLD) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| project(MultiMC) | project(MultiMC) | ||||||
| @@ -21,20 +21,20 @@ SET(MMC_BIN "${PROJECT_BINARY_DIR}") | |||||||
| SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) | SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) | ||||||
|  |  | ||||||
| IF(UNIX) | IF(UNIX) | ||||||
| 	SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) |       SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| ######## Set compiler flags ######## | ######## Set compiler flags ######## | ||||||
| IF(APPLE) | IF(APPLE) | ||||||
| 	message(STATUS "Using APPLE CMAKE_CXX_FLAGS") |       message(STATUS "Using APPLE CMAKE_CXX_FLAGS") | ||||||
| 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") |       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") | ||||||
| ELSEIF(UNIX) | ELSEIF(UNIX) | ||||||
| 	# assume GCC, add C++0x/C++11 stuff |       # assume GCC, add C++0x/C++11 stuff | ||||||
| 	MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS") |       MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS") | ||||||
| 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") |       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall") | ||||||
| ELSEIF(MINGW) | ELSEIF(MINGW) | ||||||
| 	MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS") |       MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS") | ||||||
| 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall") |       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall") | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| ################################ INCLUDE LIBRARIES ################################ | ################################ INCLUDE LIBRARIES ################################ | ||||||
| @@ -51,11 +51,11 @@ include_directories(${Qt5Widgets_INCLUDE_DIRS}) | |||||||
| # The Qt5 cmake files don't provide its install paths, so ask qmake. | # The Qt5 cmake files don't provide its install paths, so ask qmake. | ||||||
| get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) | get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) | ||||||
| function(QUERY_QMAKE VAR RESULT) | function(QUERY_QMAKE VAR RESULT) | ||||||
| 	exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output ) |       exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output ) | ||||||
| 	if(NOT return_code) |       if(NOT return_code) | ||||||
| 		file(TO_CMAKE_PATH "${output}" output) |             file(TO_CMAKE_PATH "${output}" output) | ||||||
| 		set(${RESULT} ${output} PARENT_SCOPE) |             set(${RESULT} ${output} PARENT_SCOPE) | ||||||
| 	endif(NOT return_code) |       endif(NOT return_code) | ||||||
| endfunction(QUERY_QMAKE) | endfunction(QUERY_QMAKE) | ||||||
|  |  | ||||||
| query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR) | query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR) | ||||||
| @@ -103,7 +103,7 @@ include_directories(${LIBGROUPVIEW_INCLUDE_DIR}) | |||||||
| INCLUDE(TestBigEndian) | INCLUDE(TestBigEndian) | ||||||
| TEST_BIG_ENDIAN(BIGENDIAN) | TEST_BIG_ENDIAN(BIGENDIAN) | ||||||
| IF(${BIGENDIAN}) | IF(${BIGENDIAN}) | ||||||
| 	ADD_DEFINITIONS(-DMULTIMC_BIG_ENDIAN) |       ADD_DEFINITIONS(-DMULTIMC_BIG_ENDIAN) | ||||||
| ENDIF(${BIGENDIAN}) | ENDIF(${BIGENDIAN}) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -120,11 +120,11 @@ SET(MultiMC_VERSION_BUILD_TYPE "custombuild" CACHE STRING "Build type. Usually c | |||||||
| SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}") | SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}") | ||||||
|  |  | ||||||
| IF (MultiMC_VERSION_BUILD GREATER -1) | IF (MultiMC_VERSION_BUILD GREATER -1) | ||||||
| 	SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_STRING}.${MultiMC_VERSION_BUILD}") |       SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_STRING}.${MultiMC_VERSION_BUILD}") | ||||||
| ENDIF () | ENDIF () | ||||||
|  |  | ||||||
| IF (NOT MultiMC_VERSION_BUILD_TYPE STREQUAL "") | IF (NOT MultiMC_VERSION_BUILD_TYPE STREQUAL "") | ||||||
| 	SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_STRING}-${MultiMC_VERSION_BUILD_TYPE}") |       SET(MultiMC_VERSION_STRING "${MultiMC_VERSION_STRING}-${MultiMC_VERSION_BUILD_TYPE}") | ||||||
| ENDIF () | ENDIF () | ||||||
|  |  | ||||||
| MESSAGE(STATUS "MultiMC 5 version ${MultiMC_VERSION_STRING}") | MESSAGE(STATUS "MultiMC 5 version ${MultiMC_VERSION_STRING}") | ||||||
| @@ -134,56 +134,56 @@ ADD_CUSTOM_TARGET(version echo "Version: ${MultiMC_VERSION_STRING}") | |||||||
|  |  | ||||||
| # Check the current Git commit | # Check the current Git commit | ||||||
| execute_process(COMMAND git rev-parse HEAD | execute_process(COMMAND git rev-parse HEAD | ||||||
| 	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |       WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} | ||||||
| 	RESULT_VARIABLE GIT_COMMIT_CHECK_RESULTVAR |       RESULT_VARIABLE GIT_COMMIT_CHECK_RESULTVAR | ||||||
| 	OUTPUT_VARIABLE GIT_COMMIT_CHECK_OUTVAR |       OUTPUT_VARIABLE GIT_COMMIT_CHECK_OUTVAR | ||||||
| 	OUTPUT_STRIP_TRAILING_WHITESPACE |       OUTPUT_STRIP_TRAILING_WHITESPACE | ||||||
| ) | ) | ||||||
|  |  | ||||||
| # If Git executed successfully | # If Git executed successfully | ||||||
| IF(GIT_COMMIT_CHECK_RESULTVAR EQUAL 0) | IF(GIT_COMMIT_CHECK_RESULTVAR EQUAL 0) | ||||||
| 	SET(MultiMC_GIT_COMMIT "${GIT_COMMIT_CHECK_OUTVAR}") |       SET(MultiMC_GIT_COMMIT "${GIT_COMMIT_CHECK_OUTVAR}") | ||||||
| 	MESSAGE(STATUS "Git commit: ${MultiMC_GIT_COMMIT}") |       MESSAGE(STATUS "Git commit: ${MultiMC_GIT_COMMIT}") | ||||||
| ELSE() | ELSE() | ||||||
| 	SET(MultiMC_GIT_COMMIT "Unknown") |       SET(MultiMC_GIT_COMMIT "Unknown") | ||||||
| 	MESSAGE(STATUS "Failed to check Git commit. ${GIT_COMMIT_CHECK_RESULTVAR}") |       MESSAGE(STATUS "Failed to check Git commit. ${GIT_COMMIT_CHECK_RESULTVAR}") | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
|  |  | ||||||
| ######## Set Jenkins info ######## | ######## Set Jenkins info ######## | ||||||
| # Jenkins build tag | # Jenkins build tag | ||||||
| IF(DEFINED MultiMC_BUILD_TAG) | IF(DEFINED MultiMC_BUILD_TAG) | ||||||
| 	MESSAGE(STATUS "Build tag: ${MultiMC_BUILD_TAG}") |       MESSAGE(STATUS "Build tag: ${MultiMC_BUILD_TAG}") | ||||||
| ELSE() | ELSE() | ||||||
| 	MESSAGE(STATUS "No build tag specified.") |       MESSAGE(STATUS "No build tag specified.") | ||||||
| 	SET(MultiMC_BUILD_TAG custom) |       SET(MultiMC_BUILD_TAG custom) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| # Architecture detection | # Architecture detection | ||||||
| IF(CMAKE_SIZEOF_VOID_P EQUAL 8) | IF(CMAKE_SIZEOF_VOID_P EQUAL 8) | ||||||
| 	SET(MultiMC_ARCH "x64" CACHE STRING "Architecture we're building for.") |       SET(MultiMC_ARCH "x64" CACHE STRING "Architecture we're building for.") | ||||||
| ELSE() | ELSE() | ||||||
| 	SET(MultiMC_ARCH "x86" CACHE STRING "Architecture we're building for.") |       SET(MultiMC_ARCH "x86" CACHE STRING "Architecture we're building for.") | ||||||
| ENDIF() | ENDIF() | ||||||
| MESSAGE(STATUS "Architecture is ${MultiMC_ARCH}") | MESSAGE(STATUS "Architecture is ${MultiMC_ARCH}") | ||||||
|  |  | ||||||
| # Jenkins job name | # Jenkins job name | ||||||
| IF(WIN32) | IF(WIN32) | ||||||
| 	SET(MultiMC_JOB_NAME "MultiMC5Windows" CACHE STRING "Jenkins job name.") |       SET(MultiMC_JOB_NAME "MultiMC5Windows" CACHE STRING "Jenkins job name.") | ||||||
| ELSEIF(UNIX AND APPLE) | ELSEIF(UNIX AND APPLE) | ||||||
| 	SET(MultiMC_JOB_NAME "MultiMC5OSX" CACHE STRING "Jenkins job name.") |       SET(MultiMC_JOB_NAME "MultiMC5OSX" CACHE STRING "Jenkins job name.") | ||||||
| ELSE() | ELSE() | ||||||
| 	SET(MultiMC_JOB_NAME "MultiMC5Linux" CACHE STRING "Jenkins job name.") |       SET(MultiMC_JOB_NAME "MultiMC5Linux" CACHE STRING "Jenkins job name.") | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| # Jenkins URL | # Jenkins URL | ||||||
| SET(MultiMC_JOB_URL "http://ci.forkk.net/job/${MultiMC_JOB_NAME}/arch=${MultiMC_ARCH}${MultiMC_Extra_Label}/" | SET(MultiMC_JOB_URL "http://ci.forkk.net/job/${MultiMC_JOB_NAME}/arch=${MultiMC_ARCH}${MultiMC_Extra_Label}/" | ||||||
| 	CACHE STRING "URL of the jenkins job to pull updates from.") |       CACHE STRING "URL of the jenkins job to pull updates from.") | ||||||
| MESSAGE(STATUS "Job URL: ${MultiMC_JOB_URL}") | MESSAGE(STATUS "Job URL: ${MultiMC_JOB_URL}") | ||||||
|  |  | ||||||
| ######## Configure header ######## | ######## Configure header ######## | ||||||
| configure_file("${PROJECT_SOURCE_DIR}/config.h.in" | configure_file("${PROJECT_SOURCE_DIR}/config.h.in" | ||||||
| 				"${PROJECT_BINARY_DIR}/include/config.h") |                         "${PROJECT_BINARY_DIR}/include/config.h") | ||||||
|  |  | ||||||
|  |  | ||||||
| ######## Other Stuff ######## | ######## Other Stuff ######## | ||||||
| @@ -300,6 +300,8 @@ logic/net/HttpMetaCache.h | |||||||
| logic/net/HttpMetaCache.cpp | logic/net/HttpMetaCache.cpp | ||||||
| logic/net/S3ListBucket.h | logic/net/S3ListBucket.h | ||||||
| logic/net/S3ListBucket.cpp | logic/net/S3ListBucket.cpp | ||||||
|  | logic/net/PasteUpload.h | ||||||
|  | logic/net/PasteUpload.cpp | ||||||
|  |  | ||||||
| # Yggdrasil login stuff | # Yggdrasil login stuff | ||||||
| logic/auth/MojangAccount.h | logic/auth/MojangAccount.h | ||||||
| @@ -425,11 +427,11 @@ ENDIF() | |||||||
|  |  | ||||||
| ####### X11 Stuff ####### | ####### X11 Stuff ####### | ||||||
| IF(UNIX AND NOT APPLE) | IF(UNIX AND NOT APPLE) | ||||||
| 	SET(MultiMC_QT_ADDITIONAL_MODULES ${MultiMC_QT_ADDITIONAL_MODULES} X11Extras) |       SET(MultiMC_QT_ADDITIONAL_MODULES ${MultiMC_QT_ADDITIONAL_MODULES} X11Extras) | ||||||
| 	SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} xcb) |       SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} xcb) | ||||||
| 	LIST(APPEND MULTIMC_SOURCES gui/Platform_X11.cpp) |       LIST(APPEND MULTIMC_SOURCES gui/Platform_X11.cpp) | ||||||
| ELSE() | ELSE() | ||||||
| 	LIST(APPEND MULTIMC_SOURCES gui/Platform_Other.cpp) |       LIST(APPEND MULTIMC_SOURCES gui/Platform_Other.cpp) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -437,16 +439,16 @@ ENDIF() | |||||||
|  |  | ||||||
| # ICNS file for OS X | # ICNS file for OS X | ||||||
| IF(APPLE) | IF(APPLE) | ||||||
| 	SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns) |       SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns) | ||||||
| 	SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/MultiMC.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) |       SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_SOURCE_DIR}/MultiMC.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) | ||||||
| 	SET(MULTIMC_SOURCES ${MULTIMC_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/MultiMC.icns) |       SET(MULTIMC_SOURCES ${MULTIMC_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/MultiMC.icns) | ||||||
| ENDIF(APPLE) | ENDIF(APPLE) | ||||||
|  |  | ||||||
| # Link additional libraries | # Link additional libraries | ||||||
| IF(WIN32) | IF(WIN32) | ||||||
| 	SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} |       SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} | ||||||
| 		Qt5::WinMain # Link WinMain |             Qt5::WinMain # Link WinMain | ||||||
| 	) |       ) | ||||||
| ENDIF(WIN32) | ENDIF(WIN32) | ||||||
|  |  | ||||||
| # Tell CMake that MultiMCLauncher.jar is generated. | # Tell CMake that MultiMCLauncher.jar is generated. | ||||||
| @@ -461,7 +463,7 @@ QT5_ADD_RESOURCES(GRAPHICS_QRC graphics.qrc) | |||||||
|  |  | ||||||
| # Add executable | # Add executable | ||||||
| ADD_EXECUTABLE(MultiMC MACOSX_BUNDLE WIN32 | ADD_EXECUTABLE(MultiMC MACOSX_BUNDLE WIN32 | ||||||
| 	${MULTIMC_SOURCES} ${MULTIMC_UI} ${GRAPHICS_QRC} ${GENERATED_QRC} ${MULTIMC_RCS}) |       ${MULTIMC_SOURCES} ${MULTIMC_UI} ${GRAPHICS_QRC} ${GENERATED_QRC} ${MULTIMC_RCS}) | ||||||
|  |  | ||||||
| # Link | # Link | ||||||
| TARGET_LINK_LIBRARIES(MultiMC xz-embedded unpack200 quazip libUtil libSettings libGroupView ${MultiMC_LINK_ADDITIONAL_LIBS}) | TARGET_LINK_LIBRARIES(MultiMC xz-embedded unpack200 quazip libUtil libSettings libGroupView ${MultiMC_LINK_ADDITIONAL_LIBS}) | ||||||
| @@ -473,23 +475,23 @@ ADD_DEPENDENCIES(MultiMC MultiMCLauncher JavaCheck) | |||||||
| ######## Packaging/install paths setup ######## | ######## Packaging/install paths setup ######## | ||||||
|  |  | ||||||
| IF(UNIX AND APPLE) | IF(UNIX AND APPLE) | ||||||
| 	SET(PLUGIN_DEST_DIR MultiMC.app/Contents/MacOS) |       SET(PLUGIN_DEST_DIR MultiMC.app/Contents/MacOS) | ||||||
| 	SET(QTCONF_DEST_DIR MultiMC.app/Contents/Resources) |       SET(QTCONF_DEST_DIR MultiMC.app/Contents/Resources) | ||||||
| 	SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.app") |       SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.app") | ||||||
|  |  | ||||||
| 	SET(MACOSX_BUNDLE_BUNDLE_NAME "MultiMC") |       SET(MACOSX_BUNDLE_BUNDLE_NAME "MultiMC") | ||||||
| 	SET(MACOSX_BUNDLE_INFO_STRING "MultiMC Minecraft launcher and management utility.") |       SET(MACOSX_BUNDLE_INFO_STRING "MultiMC Minecraft launcher and management utility.") | ||||||
| 	SET(MACOSX_BUNDLE_BUNDLE_VERSION "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_REV}.${MultiMC_VERSION_BUILD}") |       SET(MACOSX_BUNDLE_BUNDLE_VERSION "${MultiMC_VERSION_MAJOR}.${MultiMC_VERSION_MINOR}.${MultiMC_VERSION_REV}.${MultiMC_VERSION_BUILD}") | ||||||
| 	#SET(MACOSX_BUNDLE_GUI_IDENTIFIER "") |       #SET(MACOSX_BUNDLE_GUI_IDENTIFIER "") | ||||||
| 	SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns) |       SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns) | ||||||
| ELSEIF(UNIX) | ELSEIF(UNIX) | ||||||
| 	SET(PLUGIN_DEST_DIR plugins) |       SET(PLUGIN_DEST_DIR plugins) | ||||||
| 	SET(QTCONF_DEST_DIR .) |       SET(QTCONF_DEST_DIR .) | ||||||
| 	SET(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC") |       SET(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC") | ||||||
| ELSEIF(WIN32) | ELSEIF(WIN32) | ||||||
| 	SET(PLUGIN_DEST_DIR .) |       SET(PLUGIN_DEST_DIR .) | ||||||
| 	SET(QTCONF_DEST_DIR .) |       SET(QTCONF_DEST_DIR .) | ||||||
| 	SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe") |       SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe") | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| # directories to look for dependencies | # directories to look for dependencies | ||||||
| @@ -499,24 +501,24 @@ SET(DIRS "${QT_LIBS_DIR}") | |||||||
|  |  | ||||||
| #### Executable #### | #### Executable #### | ||||||
| IF(APPLE AND UNIX) ## OSX | IF(APPLE AND UNIX) ## OSX | ||||||
| 	INSTALL(TARGETS MultiMC  |       INSTALL(TARGETS MultiMC | ||||||
| 		BUNDLE DESTINATION . COMPONENT Runtime |             BUNDLE DESTINATION . COMPONENT Runtime | ||||||
| 		RUNTIME DESTINATION MultiMC.app/Contents/MacOS COMPONENT Runtime |             RUNTIME DESTINATION MultiMC.app/Contents/MacOS COMPONENT Runtime | ||||||
| 	) |       ) | ||||||
|  |  | ||||||
| ELSEIF(UNIX) ## LINUX and similar | ELSEIF(UNIX) ## LINUX and similar | ||||||
| 	INSTALL(TARGETS MultiMC  |       INSTALL(TARGETS MultiMC | ||||||
| 		BUNDLE DESTINATION . COMPONENT Runtime |             BUNDLE DESTINATION . COMPONENT Runtime | ||||||
| 		RUNTIME DESTINATION bin COMPONENT Runtime |             RUNTIME DESTINATION bin COMPONENT Runtime | ||||||
| 	) |       ) | ||||||
| 	INSTALL(PROGRAMS package/linux/MultiMC DESTINATION .) |       INSTALL(PROGRAMS package/linux/MultiMC DESTINATION .) | ||||||
|  |  | ||||||
| ELSEIF(WIN32) ## WINDOWS | ELSEIF(WIN32) ## WINDOWS | ||||||
| 	INSTALL(TARGETS MultiMC  |       INSTALL(TARGETS MultiMC | ||||||
| 		BUNDLE DESTINATION . COMPONENT Runtime |             BUNDLE DESTINATION . COMPONENT Runtime | ||||||
| 		LIBRARY DESTINATION . COMPONENT Runtime |             LIBRARY DESTINATION . COMPONENT Runtime | ||||||
| 		RUNTIME DESTINATION . COMPONENT Runtime |             RUNTIME DESTINATION . COMPONENT Runtime | ||||||
| 	) |       ) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| #### Dist package logic #### | #### Dist package logic #### | ||||||
| @@ -524,64 +526,64 @@ ENDIF() | |||||||
| if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") | if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") | ||||||
| # Image formats | # Image formats | ||||||
| INSTALL( | INSTALL( | ||||||
| 	DIRECTORY "${QT_PLUGINS_DIR}/imageformats" |       DIRECTORY "${QT_PLUGINS_DIR}/imageformats" | ||||||
| 	DESTINATION ${PLUGIN_DEST_DIR} |       DESTINATION ${PLUGIN_DEST_DIR} | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| 	REGEX "tga|svg|tiff|mng" EXCLUDE |       REGEX "tga|svg|tiff|mng" EXCLUDE | ||||||
| ) | ) | ||||||
|  |  | ||||||
| # Platform plugins | # Platform plugins | ||||||
| INSTALL( | INSTALL( | ||||||
| 	DIRECTORY "${QT_PLUGINS_DIR}/platforms" |       DIRECTORY "${QT_PLUGINS_DIR}/platforms" | ||||||
| 	DESTINATION ${PLUGIN_DEST_DIR} |       DESTINATION ${PLUGIN_DEST_DIR} | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| 	REGEX "minimal|linuxfb|offscreen" EXCLUDE |       REGEX "minimal|linuxfb|offscreen" EXCLUDE | ||||||
| ) | ) | ||||||
| else() | else() | ||||||
| # Image formats | # Image formats | ||||||
| INSTALL( | INSTALL( | ||||||
| 	DIRECTORY "${QT_PLUGINS_DIR}/imageformats" |       DIRECTORY "${QT_PLUGINS_DIR}/imageformats" | ||||||
| 	DESTINATION ${PLUGIN_DEST_DIR} |       DESTINATION ${PLUGIN_DEST_DIR} | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| 	REGEX "tga|svg|tiff|mng" EXCLUDE |       REGEX "tga|svg|tiff|mng" EXCLUDE | ||||||
| 	REGEX "d\\." EXCLUDE |       REGEX "d\\." EXCLUDE | ||||||
| 	REGEX "_debug\\." EXCLUDE |       REGEX "_debug\\." EXCLUDE | ||||||
| ) | ) | ||||||
|  |  | ||||||
| # Platform plugins | # Platform plugins | ||||||
| INSTALL( | INSTALL( | ||||||
| 	DIRECTORY "${QT_PLUGINS_DIR}/platforms" |       DIRECTORY "${QT_PLUGINS_DIR}/platforms" | ||||||
| 	DESTINATION ${PLUGIN_DEST_DIR} |       DESTINATION ${PLUGIN_DEST_DIR} | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| 	REGEX "minimal|linuxfb|offscreen" EXCLUDE |       REGEX "minimal|linuxfb|offscreen" EXCLUDE | ||||||
| 	REGEX "d\\." EXCLUDE |       REGEX "d\\." EXCLUDE | ||||||
| 	REGEX "_debug\\." EXCLUDE |       REGEX "_debug\\." EXCLUDE | ||||||
| ) | ) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
| # qtconf | # qtconf | ||||||
| INSTALL( | INSTALL( | ||||||
| 	CODE " |       CODE " | ||||||
| FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/${QTCONF_DEST_DIR}/qt.conf\" \"\") | FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/${QTCONF_DEST_DIR}/qt.conf\" \"\") | ||||||
| " | " | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| INSTALL( | INSTALL( | ||||||
| 	CODE " |       CODE " | ||||||
| FILE(GLOB_RECURSE	QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${PLUGIN_DEST_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") | FILE(GLOB_RECURSE	QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${PLUGIN_DEST_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") | ||||||
| function(gp_resolved_file_type_override resolved_file type_var) | function(gp_resolved_file_type_override resolved_file type_var) | ||||||
| 	if(resolved_file MATCHES \"^/usr/lib/libQt\") |       if(resolved_file MATCHES \"^/usr/lib/libQt\") | ||||||
| 		message(\"resolving \${resolved_file} as other\") |             message(\"resolving \${resolved_file} as other\") | ||||||
| 		set(\${type_var} other PARENT_SCOPE) |             set(\${type_var} other PARENT_SCOPE) | ||||||
|     endif() |     endif() | ||||||
| endfunction() | endfunction() | ||||||
|  |  | ||||||
| include(BundleUtilities) | include(BundleUtilities) | ||||||
| fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") | fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") | ||||||
| " | " | ||||||
| 	COMPONENT Runtime |       COMPONENT Runtime | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -590,13 +592,13 @@ fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\") | |||||||
|  |  | ||||||
| # Package with CPack | # Package with CPack | ||||||
| IF(UNIX) | IF(UNIX) | ||||||
| 	if(APPLE) |       if(APPLE) | ||||||
| 		SET(CPACK_GENERATOR "ZIP") |             SET(CPACK_GENERATOR "ZIP") | ||||||
| 	else() |       else() | ||||||
| 		SET(CPACK_GENERATOR "TGZ") |             SET(CPACK_GENERATOR "TGZ") | ||||||
| 	endif() |       endif() | ||||||
| ELSEIF(WIN32) | ELSEIF(WIN32) | ||||||
| 	SET(CPACK_GENERATOR "ZIP") |       SET(CPACK_GENERATOR "ZIP") | ||||||
| ENDIF() | ENDIF() | ||||||
| SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0) | SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0) | ||||||
|  |  | ||||||
| @@ -628,9 +630,9 @@ file (GLOB TRANSLATIONS_FILES translations/*.ts) | |||||||
|  |  | ||||||
| option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts files (WARNING: make clean will delete the source .ts files! Danger!)") | option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts files (WARNING: make clean will delete the source .ts files! Danger!)") | ||||||
| IF(UPDATE_TRANSLATIONS) | IF(UPDATE_TRANSLATIONS) | ||||||
| 	qt5_create_translation(QM_FILES ${FILES_TO_TRANSLATE} ${TRANSLATIONS_FILES}) |       qt5_create_translation(QM_FILES ${FILES_TO_TRANSLATE} ${TRANSLATIONS_FILES}) | ||||||
| ELSE() | ELSE() | ||||||
| 	qt5_add_translation(QM_FILES ${TRANSLATIONS_FILES}) |       qt5_add_translation(QM_FILES ${TRANSLATIONS_FILES}) | ||||||
| ENDIF() | ENDIF() | ||||||
|  |  | ||||||
| add_custom_target (translations DEPENDS ${QM_FILES}) | add_custom_target (translations DEPENDS ${QM_FILES}) | ||||||
|   | |||||||
| @@ -22,6 +22,9 @@ | |||||||
|  |  | ||||||
| #include <gui/Platform.h> | #include <gui/Platform.h> | ||||||
| #include <gui/dialogs/CustomMessageBox.h> | #include <gui/dialogs/CustomMessageBox.h> | ||||||
|  | #include <gui/dialogs/ProgressDialog.h> | ||||||
|  |  | ||||||
|  | #include "logic/net/PasteUpload.h" | ||||||
|  |  | ||||||
| ConsoleWindow::ConsoleWindow(MinecraftProcess *mcproc, QWidget *parent) | ConsoleWindow::ConsoleWindow(MinecraftProcess *mcproc, QWidget *parent) | ||||||
| 	: QMainWindow(parent), ui(new Ui::ConsoleWindow), proc(mcproc) | 	: QMainWindow(parent), ui(new Ui::ConsoleWindow), proc(mcproc) | ||||||
| @@ -179,3 +182,19 @@ void ConsoleWindow::onLaunchFailed(BaseInstance *instance) | |||||||
| 	if(!isVisible()) | 	if(!isVisible()) | ||||||
| 		show(); | 		show(); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void ConsoleWindow::on_btnPaste_clicked() | ||||||
|  | { | ||||||
|  | 	auto text = ui->text->toPlainText(); | ||||||
|  | 	ProgressDialog dialog(this); | ||||||
|  | 	PasteUpload* paste=new PasteUpload(this, text); | ||||||
|  | 	dialog.exec(paste); | ||||||
|  | 	if(paste->successful()) | ||||||
|  | 	{ | ||||||
|  | 		paste->messageBox()->exec(); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		CustomMessageBox::selectable(this, "Upload failed", paste->failReason(), QMessageBox::Critical)->exec(); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
| @@ -76,6 +76,8 @@ slots: | |||||||
| 	// FIXME: add handlers for the other MinecraftProcess signals (pre/post launch command | 	// FIXME: add handlers for the other MinecraftProcess signals (pre/post launch command | ||||||
| 	// failures) | 	// failures) | ||||||
|  |  | ||||||
|  | 	void on_btnPaste_clicked(); | ||||||
|  |  | ||||||
| protected: | protected: | ||||||
| 	void closeEvent(QCloseEvent *); | 	void closeEvent(QCloseEvent *); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -74,6 +74,13 @@ | |||||||
|         </property> |         </property> | ||||||
|        </widget> |        </widget> | ||||||
|       </item> |       </item> | ||||||
|  |       <item> | ||||||
|  |        <widget class="QPushButton" name="btnPaste"> | ||||||
|  |         <property name="text"> | ||||||
|  |          <string>Upload Log</string> | ||||||
|  |         </property> | ||||||
|  |        </widget> | ||||||
|  |       </item> | ||||||
|      </layout> |      </layout> | ||||||
|     </item> |     </item> | ||||||
|    </layout> |    </layout> | ||||||
|   | |||||||
							
								
								
									
										84
									
								
								logic/net/PasteUpload.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								logic/net/PasteUpload.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | |||||||
|  | #include "PasteUpload.h" | ||||||
|  | #include "MultiMC.h" | ||||||
|  | #include "logger/QsLog.h" | ||||||
|  | #include <QJsonObject> | ||||||
|  | #include <QJsonDocument> | ||||||
|  | #include "gui/dialogs/CustomMessageBox.h" | ||||||
|  |  | ||||||
|  | PasteUpload::PasteUpload(QWidget *window, QString text) : m_text(text), m_window(window) | ||||||
|  | { | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PasteUpload::executeTask() | ||||||
|  | { | ||||||
|  | 	QNetworkRequest request(QUrl("http://paste.ee/api")); | ||||||
|  | 	request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)"); | ||||||
|  | 	QByteArray content( | ||||||
|  | 		"key=public&description=MultiMC5+Log+File&language=plain&format=json&paste=" + | ||||||
|  | 		m_text.toUtf8()); | ||||||
|  | 	request.setRawHeader("Content-Type", "application/x-www-form-urlencoded"); | ||||||
|  | 	request.setRawHeader("Content-Length", QByteArray::number(content.size())); | ||||||
|  |  | ||||||
|  | 	auto worker = MMC->qnam(); | ||||||
|  | 	QNetworkReply *rep = worker->post(request, content); | ||||||
|  |  | ||||||
|  | 	m_reply = std::shared_ptr<QNetworkReply>(rep); | ||||||
|  | 	connect(rep, &QNetworkReply::downloadProgress, [&](qint64 value, qint64 max) | ||||||
|  | 	{ setProgress(value / max * 100); }); | ||||||
|  | 	connect(rep, SIGNAL(error(QNetworkReply::NetworkError)), this, | ||||||
|  | 			SLOT(downloadError(QNetworkReply::NetworkError))); | ||||||
|  | 	connect(rep, SIGNAL(finished()), this, SLOT(downloadFinished())); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PasteUpload::downloadError(QNetworkReply::NetworkError error) | ||||||
|  | { | ||||||
|  | 	// error happened during download. | ||||||
|  | 	QLOG_ERROR() << "Network error: " << error; | ||||||
|  | 	emitFailed(m_reply->errorString()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void PasteUpload::downloadFinished() | ||||||
|  | { | ||||||
|  | 	// if the download succeeded | ||||||
|  | 	if (m_reply->error() == QNetworkReply::NetworkError::NoError) | ||||||
|  | 	{ | ||||||
|  | 		QByteArray data = m_reply->readAll(); | ||||||
|  | 		m_reply.reset(); | ||||||
|  | 		QJsonParseError jsonError; | ||||||
|  | 		QJsonDocument doc = QJsonDocument::fromJson(data, &jsonError); | ||||||
|  | 		if (jsonError.error != QJsonParseError::NoError) | ||||||
|  | 		{ | ||||||
|  | 			emitFailed(jsonError.errorString()); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 		QString error; | ||||||
|  | 		if (parseResult(doc, &error)) | ||||||
|  | 		{ | ||||||
|  | 			emitFailed(error); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	// else the download failed | ||||||
|  | 	else | ||||||
|  | 	{ | ||||||
|  | 		emitFailed(QString("Network error: %s").arg(m_reply->errorString())); | ||||||
|  | 		m_reply.reset(); | ||||||
|  | 		return; | ||||||
|  | 	} | ||||||
|  | 	emitSucceeded(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | bool PasteUpload::parseResult(QJsonDocument doc, QString *parseError) | ||||||
|  | { | ||||||
|  | 	auto object = doc.object(); | ||||||
|  | 	auto status = object.value("status").toString("error"); | ||||||
|  | 	if (status == "error") | ||||||
|  | 	{ | ||||||
|  | 		parseError = new QString(object.value("error").toString()); | ||||||
|  | 		return false; | ||||||
|  | 	} | ||||||
|  | 	QString pasteUrl = object.value("paste").toObject().value("link").toString(); | ||||||
|  | 	m_messageBox = | ||||||
|  | 			CustomMessageBox::selectable(m_window, "Paste upload successful!", QString("Find your paste at %s").arg(pasteUrl)); | ||||||
|  | 	return true; | ||||||
|  | } | ||||||
							
								
								
									
										30
									
								
								logic/net/PasteUpload.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								logic/net/PasteUpload.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | |||||||
|  | #pragma once | ||||||
|  | #include "logic/tasks/Task.h" | ||||||
|  | #include <QMessageBox> | ||||||
|  | #include <QNetworkReply> | ||||||
|  | #include <memory> | ||||||
|  |  | ||||||
|  | class PasteUpload : public Task | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	PasteUpload(QWidget *window, QString text); | ||||||
|  | 	QMessageBox *messageBox() const | ||||||
|  | 	{ | ||||||
|  | 		return m_messageBox; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | protected: | ||||||
|  | 	virtual void executeTask(); | ||||||
|  |  | ||||||
|  | private: | ||||||
|  | 	bool parseResult(QJsonDocument doc, QString *parseError); | ||||||
|  | 	QString m_text; | ||||||
|  | 	QString m_error; | ||||||
|  | 	QWidget *m_window; | ||||||
|  | 	QMessageBox *m_messageBox; | ||||||
|  | 	std::shared_ptr<QNetworkReply> m_reply; | ||||||
|  | public | ||||||
|  | slots: | ||||||
|  | 	void downloadError(QNetworkReply::NetworkError); | ||||||
|  | 	void downloadFinished(); | ||||||
|  | }; | ||||||
		Reference in New Issue
	
	Block a user