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)
 | 
			
		||||
 | 
			
		||||
IF(WIN32)
 | 
			
		||||
	# In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows
 | 
			
		||||
	cmake_policy(SET CMP0020 OLD)
 | 
			
		||||
      # In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows
 | 
			
		||||
      cmake_policy(SET CMP0020 OLD)
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
project(MultiMC)
 | 
			
		||||
@@ -21,20 +21,20 @@ SET(MMC_BIN "${PROJECT_BINARY_DIR}")
 | 
			
		||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 | 
			
		||||
 | 
			
		||||
IF(UNIX)
 | 
			
		||||
	SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 | 
			
		||||
      SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
######## Set compiler flags ########
 | 
			
		||||
IF(APPLE)
 | 
			
		||||
	message(STATUS "Using APPLE CMAKE_CXX_FLAGS")
 | 
			
		||||
	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
 | 
			
		||||
      message(STATUS "Using APPLE CMAKE_CXX_FLAGS")
 | 
			
		||||
      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
 | 
			
		||||
ELSEIF(UNIX)
 | 
			
		||||
	# assume GCC, add C++0x/C++11 stuff
 | 
			
		||||
	MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS")
 | 
			
		||||
	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
 | 
			
		||||
      # assume GCC, add C++0x/C++11 stuff
 | 
			
		||||
      MESSAGE(STATUS "Using UNIX CMAKE_CXX_FLAGS")
 | 
			
		||||
      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
 | 
			
		||||
ELSEIF(MINGW)
 | 
			
		||||
	MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS")
 | 
			
		||||
	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall")
 | 
			
		||||
      MESSAGE(STATUS "Using MINGW CMAKE_CXX_FLAGS")
 | 
			
		||||
      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall")
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
################################ INCLUDE LIBRARIES ################################
 | 
			
		||||
@@ -51,11 +51,11 @@ include_directories(${Qt5Widgets_INCLUDE_DIRS})
 | 
			
		||||
# The Qt5 cmake files don't provide its install paths, so ask qmake.
 | 
			
		||||
get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
 | 
			
		||||
function(QUERY_QMAKE VAR RESULT)
 | 
			
		||||
	exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
 | 
			
		||||
	if(NOT return_code)
 | 
			
		||||
		file(TO_CMAKE_PATH "${output}" output)
 | 
			
		||||
		set(${RESULT} ${output} PARENT_SCOPE)
 | 
			
		||||
	endif(NOT return_code)
 | 
			
		||||
      exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
 | 
			
		||||
      if(NOT return_code)
 | 
			
		||||
            file(TO_CMAKE_PATH "${output}" output)
 | 
			
		||||
            set(${RESULT} ${output} PARENT_SCOPE)
 | 
			
		||||
      endif(NOT return_code)
 | 
			
		||||
endfunction(QUERY_QMAKE)
 | 
			
		||||
 | 
			
		||||
query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
 | 
			
		||||
@@ -103,7 +103,7 @@ include_directories(${LIBGROUPVIEW_INCLUDE_DIR})
 | 
			
		||||
INCLUDE(TestBigEndian)
 | 
			
		||||
TEST_BIG_ENDIAN(BIGENDIAN)
 | 
			
		||||
IF(${BIGENDIAN})
 | 
			
		||||
	ADD_DEFINITIONS(-DMULTIMC_BIG_ENDIAN)
 | 
			
		||||
      ADD_DEFINITIONS(-DMULTIMC_BIG_ENDIAN)
 | 
			
		||||
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}")
 | 
			
		||||
 | 
			
		||||
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 ()
 | 
			
		||||
 | 
			
		||||
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 ()
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
execute_process(COMMAND git rev-parse HEAD
 | 
			
		||||
	WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
 | 
			
		||||
	RESULT_VARIABLE GIT_COMMIT_CHECK_RESULTVAR
 | 
			
		||||
	OUTPUT_VARIABLE GIT_COMMIT_CHECK_OUTVAR
 | 
			
		||||
	OUTPUT_STRIP_TRAILING_WHITESPACE
 | 
			
		||||
      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
 | 
			
		||||
      RESULT_VARIABLE GIT_COMMIT_CHECK_RESULTVAR
 | 
			
		||||
      OUTPUT_VARIABLE GIT_COMMIT_CHECK_OUTVAR
 | 
			
		||||
      OUTPUT_STRIP_TRAILING_WHITESPACE
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# If Git executed successfully
 | 
			
		||||
IF(GIT_COMMIT_CHECK_RESULTVAR EQUAL 0)
 | 
			
		||||
	SET(MultiMC_GIT_COMMIT "${GIT_COMMIT_CHECK_OUTVAR}")
 | 
			
		||||
	MESSAGE(STATUS "Git commit: ${MultiMC_GIT_COMMIT}")
 | 
			
		||||
      SET(MultiMC_GIT_COMMIT "${GIT_COMMIT_CHECK_OUTVAR}")
 | 
			
		||||
      MESSAGE(STATUS "Git commit: ${MultiMC_GIT_COMMIT}")
 | 
			
		||||
ELSE()
 | 
			
		||||
	SET(MultiMC_GIT_COMMIT "Unknown")
 | 
			
		||||
	MESSAGE(STATUS "Failed to check Git commit. ${GIT_COMMIT_CHECK_RESULTVAR}")
 | 
			
		||||
      SET(MultiMC_GIT_COMMIT "Unknown")
 | 
			
		||||
      MESSAGE(STATUS "Failed to check Git commit. ${GIT_COMMIT_CHECK_RESULTVAR}")
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
######## Set Jenkins info ########
 | 
			
		||||
# Jenkins build tag
 | 
			
		||||
IF(DEFINED MultiMC_BUILD_TAG)
 | 
			
		||||
	MESSAGE(STATUS "Build tag: ${MultiMC_BUILD_TAG}")
 | 
			
		||||
      MESSAGE(STATUS "Build tag: ${MultiMC_BUILD_TAG}")
 | 
			
		||||
ELSE()
 | 
			
		||||
	MESSAGE(STATUS "No build tag specified.")
 | 
			
		||||
	SET(MultiMC_BUILD_TAG custom)
 | 
			
		||||
      MESSAGE(STATUS "No build tag specified.")
 | 
			
		||||
      SET(MultiMC_BUILD_TAG custom)
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
# Architecture detection
 | 
			
		||||
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()
 | 
			
		||||
	SET(MultiMC_ARCH "x86" CACHE STRING "Architecture we're building for.")
 | 
			
		||||
      SET(MultiMC_ARCH "x86" CACHE STRING "Architecture we're building for.")
 | 
			
		||||
ENDIF()
 | 
			
		||||
MESSAGE(STATUS "Architecture is ${MultiMC_ARCH}")
 | 
			
		||||
 | 
			
		||||
# Jenkins job name
 | 
			
		||||
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)
 | 
			
		||||
	SET(MultiMC_JOB_NAME "MultiMC5OSX" CACHE STRING "Jenkins job name.")
 | 
			
		||||
      SET(MultiMC_JOB_NAME "MultiMC5OSX" CACHE STRING "Jenkins job name.")
 | 
			
		||||
ELSE()
 | 
			
		||||
	SET(MultiMC_JOB_NAME "MultiMC5Linux" CACHE STRING "Jenkins job name.")
 | 
			
		||||
      SET(MultiMC_JOB_NAME "MultiMC5Linux" CACHE STRING "Jenkins job name.")
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
# Jenkins URL
 | 
			
		||||
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}")
 | 
			
		||||
 | 
			
		||||
######## Configure header ########
 | 
			
		||||
configure_file("${PROJECT_SOURCE_DIR}/config.h.in"
 | 
			
		||||
				"${PROJECT_BINARY_DIR}/include/config.h")
 | 
			
		||||
                        "${PROJECT_BINARY_DIR}/include/config.h")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
######## Other Stuff ########
 | 
			
		||||
@@ -300,6 +300,8 @@ logic/net/HttpMetaCache.h
 | 
			
		||||
logic/net/HttpMetaCache.cpp
 | 
			
		||||
logic/net/S3ListBucket.h
 | 
			
		||||
logic/net/S3ListBucket.cpp
 | 
			
		||||
logic/net/PasteUpload.h
 | 
			
		||||
logic/net/PasteUpload.cpp
 | 
			
		||||
 | 
			
		||||
# Yggdrasil login stuff
 | 
			
		||||
logic/auth/MojangAccount.h
 | 
			
		||||
@@ -425,11 +427,11 @@ ENDIF()
 | 
			
		||||
 | 
			
		||||
####### X11 Stuff #######
 | 
			
		||||
IF(UNIX AND NOT APPLE)
 | 
			
		||||
	SET(MultiMC_QT_ADDITIONAL_MODULES ${MultiMC_QT_ADDITIONAL_MODULES} X11Extras)
 | 
			
		||||
	SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} xcb)
 | 
			
		||||
	LIST(APPEND MULTIMC_SOURCES gui/Platform_X11.cpp)
 | 
			
		||||
      SET(MultiMC_QT_ADDITIONAL_MODULES ${MultiMC_QT_ADDITIONAL_MODULES} X11Extras)
 | 
			
		||||
      SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS} xcb)
 | 
			
		||||
      LIST(APPEND MULTIMC_SOURCES gui/Platform_X11.cpp)
 | 
			
		||||
ELSE()
 | 
			
		||||
	LIST(APPEND MULTIMC_SOURCES gui/Platform_Other.cpp)
 | 
			
		||||
      LIST(APPEND MULTIMC_SOURCES gui/Platform_Other.cpp)
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -437,16 +439,16 @@ ENDIF()
 | 
			
		||||
 | 
			
		||||
# ICNS file for OS X
 | 
			
		||||
IF(APPLE)
 | 
			
		||||
	SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns)
 | 
			
		||||
	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(MACOSX_BUNDLE_ICON_FILE MultiMC.icns)
 | 
			
		||||
      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)
 | 
			
		||||
ENDIF(APPLE)
 | 
			
		||||
 | 
			
		||||
# Link additional libraries
 | 
			
		||||
IF(WIN32)
 | 
			
		||||
	SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS}
 | 
			
		||||
		Qt5::WinMain # Link WinMain
 | 
			
		||||
	)
 | 
			
		||||
      SET(MultiMC_LINK_ADDITIONAL_LIBS ${MultiMC_LINK_ADDITIONAL_LIBS}
 | 
			
		||||
            Qt5::WinMain # Link WinMain
 | 
			
		||||
      )
 | 
			
		||||
ENDIF(WIN32)
 | 
			
		||||
 | 
			
		||||
# Tell CMake that MultiMCLauncher.jar is generated.
 | 
			
		||||
@@ -461,7 +463,7 @@ QT5_ADD_RESOURCES(GRAPHICS_QRC graphics.qrc)
 | 
			
		||||
 | 
			
		||||
# Add executable
 | 
			
		||||
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
 | 
			
		||||
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 ########
 | 
			
		||||
 | 
			
		||||
IF(UNIX AND APPLE)
 | 
			
		||||
	SET(PLUGIN_DEST_DIR MultiMC.app/Contents/MacOS)
 | 
			
		||||
	SET(QTCONF_DEST_DIR MultiMC.app/Contents/Resources)
 | 
			
		||||
	SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.app")
 | 
			
		||||
      SET(PLUGIN_DEST_DIR MultiMC.app/Contents/MacOS)
 | 
			
		||||
      SET(QTCONF_DEST_DIR MultiMC.app/Contents/Resources)
 | 
			
		||||
      SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.app")
 | 
			
		||||
 | 
			
		||||
	SET(MACOSX_BUNDLE_BUNDLE_NAME "MultiMC")
 | 
			
		||||
	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_GUI_IDENTIFIER "")
 | 
			
		||||
	SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns)
 | 
			
		||||
      SET(MACOSX_BUNDLE_BUNDLE_NAME "MultiMC")
 | 
			
		||||
      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_GUI_IDENTIFIER "")
 | 
			
		||||
      SET(MACOSX_BUNDLE_ICON_FILE MultiMC.icns)
 | 
			
		||||
ELSEIF(UNIX)
 | 
			
		||||
	SET(PLUGIN_DEST_DIR plugins)
 | 
			
		||||
	SET(QTCONF_DEST_DIR .)
 | 
			
		||||
	SET(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC")
 | 
			
		||||
      SET(PLUGIN_DEST_DIR plugins)
 | 
			
		||||
      SET(QTCONF_DEST_DIR .)
 | 
			
		||||
      SET(APPS "\${CMAKE_INSTALL_PREFIX}/bin/MultiMC")
 | 
			
		||||
ELSEIF(WIN32)
 | 
			
		||||
	SET(PLUGIN_DEST_DIR .)
 | 
			
		||||
	SET(QTCONF_DEST_DIR .)
 | 
			
		||||
	SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe")
 | 
			
		||||
      SET(PLUGIN_DEST_DIR .)
 | 
			
		||||
      SET(QTCONF_DEST_DIR .)
 | 
			
		||||
      SET(APPS "\${CMAKE_INSTALL_PREFIX}/MultiMC.exe")
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
# directories to look for dependencies
 | 
			
		||||
@@ -499,24 +501,24 @@ SET(DIRS "${QT_LIBS_DIR}")
 | 
			
		||||
 | 
			
		||||
#### Executable ####
 | 
			
		||||
IF(APPLE AND UNIX) ## OSX
 | 
			
		||||
	INSTALL(TARGETS MultiMC 
 | 
			
		||||
		BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
		RUNTIME DESTINATION MultiMC.app/Contents/MacOS COMPONENT Runtime
 | 
			
		||||
	)
 | 
			
		||||
      INSTALL(TARGETS MultiMC
 | 
			
		||||
            BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
            RUNTIME DESTINATION MultiMC.app/Contents/MacOS COMPONENT Runtime
 | 
			
		||||
      )
 | 
			
		||||
 | 
			
		||||
ELSEIF(UNIX) ## LINUX and similar
 | 
			
		||||
	INSTALL(TARGETS MultiMC 
 | 
			
		||||
		BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
		RUNTIME DESTINATION bin COMPONENT Runtime
 | 
			
		||||
	)
 | 
			
		||||
	INSTALL(PROGRAMS package/linux/MultiMC DESTINATION .)
 | 
			
		||||
      INSTALL(TARGETS MultiMC
 | 
			
		||||
            BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
            RUNTIME DESTINATION bin COMPONENT Runtime
 | 
			
		||||
      )
 | 
			
		||||
      INSTALL(PROGRAMS package/linux/MultiMC DESTINATION .)
 | 
			
		||||
 | 
			
		||||
ELSEIF(WIN32) ## WINDOWS
 | 
			
		||||
	INSTALL(TARGETS MultiMC 
 | 
			
		||||
		BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
		LIBRARY DESTINATION . COMPONENT Runtime
 | 
			
		||||
		RUNTIME DESTINATION . COMPONENT Runtime
 | 
			
		||||
	)
 | 
			
		||||
      INSTALL(TARGETS MultiMC
 | 
			
		||||
            BUNDLE DESTINATION . COMPONENT Runtime
 | 
			
		||||
            LIBRARY DESTINATION . COMPONENT Runtime
 | 
			
		||||
            RUNTIME DESTINATION . COMPONENT Runtime
 | 
			
		||||
      )
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
#### Dist package logic ####
 | 
			
		||||
@@ -524,64 +526,64 @@ ENDIF()
 | 
			
		||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
 | 
			
		||||
# Image formats
 | 
			
		||||
INSTALL(
 | 
			
		||||
	DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
			
		||||
	DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
	REGEX "tga|svg|tiff|mng" EXCLUDE
 | 
			
		||||
      DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
			
		||||
      DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
      REGEX "tga|svg|tiff|mng" EXCLUDE
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Platform plugins
 | 
			
		||||
INSTALL(
 | 
			
		||||
	DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
			
		||||
	DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
	REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
			
		||||
      DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
			
		||||
      DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
      REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
			
		||||
)
 | 
			
		||||
else()
 | 
			
		||||
# Image formats
 | 
			
		||||
INSTALL(
 | 
			
		||||
	DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
			
		||||
	DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
	REGEX "tga|svg|tiff|mng" EXCLUDE
 | 
			
		||||
	REGEX "d\\." EXCLUDE
 | 
			
		||||
	REGEX "_debug\\." EXCLUDE
 | 
			
		||||
      DIRECTORY "${QT_PLUGINS_DIR}/imageformats"
 | 
			
		||||
      DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
      REGEX "tga|svg|tiff|mng" EXCLUDE
 | 
			
		||||
      REGEX "d\\." EXCLUDE
 | 
			
		||||
      REGEX "_debug\\." EXCLUDE
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Platform plugins
 | 
			
		||||
INSTALL(
 | 
			
		||||
	DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
			
		||||
	DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
	REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
			
		||||
	REGEX "d\\." EXCLUDE
 | 
			
		||||
	REGEX "_debug\\." EXCLUDE
 | 
			
		||||
      DIRECTORY "${QT_PLUGINS_DIR}/platforms"
 | 
			
		||||
      DESTINATION ${PLUGIN_DEST_DIR}
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
      REGEX "minimal|linuxfb|offscreen" EXCLUDE
 | 
			
		||||
      REGEX "d\\." EXCLUDE
 | 
			
		||||
      REGEX "_debug\\." EXCLUDE
 | 
			
		||||
)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
# qtconf
 | 
			
		||||
INSTALL(
 | 
			
		||||
	CODE "
 | 
			
		||||
      CODE "
 | 
			
		||||
FILE(WRITE \"\${CMAKE_INSTALL_PREFIX}/${QTCONF_DEST_DIR}/qt.conf\" \"\")
 | 
			
		||||
"
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
INSTALL(
 | 
			
		||||
	CODE "
 | 
			
		||||
      CODE "
 | 
			
		||||
FILE(GLOB_RECURSE	QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/${PLUGIN_DEST_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
 | 
			
		||||
function(gp_resolved_file_type_override resolved_file type_var)
 | 
			
		||||
	if(resolved_file MATCHES \"^/usr/lib/libQt\")
 | 
			
		||||
		message(\"resolving \${resolved_file} as other\")
 | 
			
		||||
		set(\${type_var} other PARENT_SCOPE)
 | 
			
		||||
      if(resolved_file MATCHES \"^/usr/lib/libQt\")
 | 
			
		||||
            message(\"resolving \${resolved_file} as other\")
 | 
			
		||||
            set(\${type_var} other PARENT_SCOPE)
 | 
			
		||||
    endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
include(BundleUtilities)
 | 
			
		||||
fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
 | 
			
		||||
"
 | 
			
		||||
	COMPONENT Runtime
 | 
			
		||||
      COMPONENT Runtime
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -590,13 +592,13 @@ fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
 | 
			
		||||
 | 
			
		||||
# Package with CPack
 | 
			
		||||
IF(UNIX)
 | 
			
		||||
	if(APPLE)
 | 
			
		||||
		SET(CPACK_GENERATOR "ZIP")
 | 
			
		||||
	else()
 | 
			
		||||
		SET(CPACK_GENERATOR "TGZ")
 | 
			
		||||
	endif()
 | 
			
		||||
      if(APPLE)
 | 
			
		||||
            SET(CPACK_GENERATOR "ZIP")
 | 
			
		||||
      else()
 | 
			
		||||
            SET(CPACK_GENERATOR "TGZ")
 | 
			
		||||
      endif()
 | 
			
		||||
ELSEIF(WIN32)
 | 
			
		||||
	SET(CPACK_GENERATOR "ZIP")
 | 
			
		||||
      SET(CPACK_GENERATOR "ZIP")
 | 
			
		||||
ENDIF()
 | 
			
		||||
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!)")
 | 
			
		||||
IF(UPDATE_TRANSLATIONS)
 | 
			
		||||
	qt5_create_translation(QM_FILES ${FILES_TO_TRANSLATE} ${TRANSLATIONS_FILES})
 | 
			
		||||
      qt5_create_translation(QM_FILES ${FILES_TO_TRANSLATE} ${TRANSLATIONS_FILES})
 | 
			
		||||
ELSE()
 | 
			
		||||
	qt5_add_translation(QM_FILES ${TRANSLATIONS_FILES})
 | 
			
		||||
      qt5_add_translation(QM_FILES ${TRANSLATIONS_FILES})
 | 
			
		||||
ENDIF()
 | 
			
		||||
 | 
			
		||||
add_custom_target (translations DEPENDS ${QM_FILES})
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,9 @@
 | 
			
		||||
 | 
			
		||||
#include <gui/Platform.h>
 | 
			
		||||
#include <gui/dialogs/CustomMessageBox.h>
 | 
			
		||||
#include <gui/dialogs/ProgressDialog.h>
 | 
			
		||||
 | 
			
		||||
#include "logic/net/PasteUpload.h"
 | 
			
		||||
 | 
			
		||||
ConsoleWindow::ConsoleWindow(MinecraftProcess *mcproc, QWidget *parent)
 | 
			
		||||
	: QMainWindow(parent), ui(new Ui::ConsoleWindow), proc(mcproc)
 | 
			
		||||
@@ -179,3 +182,19 @@ void ConsoleWindow::onLaunchFailed(BaseInstance *instance)
 | 
			
		||||
	if(!isVisible())
 | 
			
		||||
		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
 | 
			
		||||
	// failures)
 | 
			
		||||
 | 
			
		||||
	void on_btnPaste_clicked();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	void closeEvent(QCloseEvent *);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,13 @@
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
      <item>
 | 
			
		||||
       <widget class="QPushButton" name="btnPaste">
 | 
			
		||||
        <property name="text">
 | 
			
		||||
         <string>Upload Log</string>
 | 
			
		||||
        </property>
 | 
			
		||||
       </widget>
 | 
			
		||||
      </item>
 | 
			
		||||
     </layout>
 | 
			
		||||
    </item>
 | 
			
		||||
   </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