Mercurial > minori
changeset 241:06d6c351925c
*: reorganize resources, +docs, build translations with autotools
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Mon, 22 Jan 2024 16:36:19 -0500 |
parents | 6ffe42286978 |
children | 82470f83f0c2 |
files | .builds/linux.yml .builds/windows.yml CMakeLists.txt INSTALL LICENSE Makefile.am README README.md configure.ac m4/libcurl.m4 m4/m4_ax_have_qt.m4 rc/dark.qrc rc/dark.qss rc/favicon.png rc/favicon256.png rc/icons.qrc rc/icons/favicon.png rc/icons/icons.qrc rc/linux/Minori.png rc/osx/deploy_build.sh rc/win32/dark/dark.qrc rc/win32/dark/dark.qss scripts/osx/deploy_build.sh src/gui/window.cc |
diffstat | 24 files changed, 530 insertions(+), 1070 deletions(-) [+] |
line wrap: on
line diff
--- a/.builds/linux.yml Fri Jan 19 13:47:56 2024 -0500 +++ b/.builds/linux.yml Mon Jan 22 16:36:19 2024 -0500 @@ -30,7 +30,7 @@ # resources mkdir -p rc cp ../rc/linux/Minori.desktop rc/Minori.desktop - cp ../rc/favicon256.png rc/Minori.png + cp ../rc/linux/Minori.png rc/Minori.png # use linuxdeploy to make an appimage wget -O linuxdeploy "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20231026-1/linuxdeploy-x86_64.AppImage"
--- a/.builds/windows.yml Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -image: debian/bookworm -packages: - - wget - - tar - - zstd - - gpg - - clang - - lld - - xz-utils - - wine - - automake - - autoconf - - libtool - - ncurses-bin - - qtbase5-dev - - qttools5-dev -sources: - - https://hg.sr.ht/~mrpapersonic/minori -tasks: - - get-wine: | - sudo dpkg --add-architecture i386 - - sudo mkdir -pm755 /etc/apt/keyrings - sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key - - sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources - - sudo apt update - - sudo apt install -y --install-recommends winehq-devel - - autoreconf: | - cd minori - autoreconf -i - - install-win64-deps: | - export WINEARCH=win64 - git clone https://github.com/holyblackcat/quasi-msys2 quasi-msys2-win64 - cd quasi-msys2-win64 - echo MINGW64 >msystem.txt - make install _gcc _qt5-base _qt5-tools _curl - sudo ln -nfs $(realpath ./root/mingw64) /mingw64 - - build-win64: | - export WINEARCH=win64 - mkdir -p minori/build64 - cd minori/build64 - sudo bash -c 'echo -n 1 >/proc/sys/fs/binfmt_misc/status' - bash -c 'source ../../quasi-msys2-win64/env/all.src && ../configure && make' - - install-win32-deps: | - export WINEARCH=win32 - export WINEPREFIX="$HOME/.wine32" - git clone https://github.com/holyblackcat/quasi-msys2 quasi-msys2-win32 - cd quasi-msys2-win32 - echo MINGW32 >msystem.txt - make install _gcc _qt5-base _qt5-tools _curl - - build-win32: | - export WINEARCH=win32 - export WINEPREFIX="$HOME/.wine32" - mkdir -p ../minori/build32 - cd ../minori/build32 - sudo bash -c 'echo -n 1 >/proc/sys/fs/binfmt_misc/status' - bash -c 'source ../../quasi-msys2-win32/env/all.src && ../configure && make' -triggers: - - action: email - condition: failure - to: Paper <mrpapersonic@gmail.com>
--- a/CMakeLists.txt Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -cmake_minimum_required(VERSION 3.18) -project(minori LANGUAGES CXX VERSION 0.1.0) - -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") - -option(BUILD_SHARED_LIBS "Build using shared libraries" ON) -option(USE_QT6 "Force build with Qt 6" OFF) -option(USE_QT5 "Force build with Qt 5" OFF) -option(UPDATE_TRANSLATIONS "Update *.ts translation files" OFF) - -add_subdirectory(dep/anitomy) -add_subdirectory(dep/animia) -add_subdirectory(dep/pugixml) - -# Fix for mingw64 -list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a") - -if(USE_QT6) - set(QT_VERSION_MAJOR 6) -elseif(USE_QT5) - set(QT_VERSION_MAJOR 5) -else() - find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) -endif() - -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools) - -find_package(CURL REQUIRED) - -set(LIBRARIES - ${CURL_LIBRARIES} - ${Qt${QT_VERSION_MAJOR}Widgets_LIBRARIES} - anitomy - animia - pugixml -) - -# We need Cocoa for some OS X stuff -if(APPLE) - find_library(FOUNDATION_LIBRARY Foundation) - find_library(APPKIT_LIBRARY AppKit) - list(APPEND LIBRARIES ${FOUNDATION_LIBRARY} ${APPKIT_LIBRARY}) -endif() - -set(SRC_FILES - # Main entrypoint - src/main.cc - - # Core files and datatype declarations... - src/core/anime.cc - src/core/anime_db.cc - src/core/config.cc - src/core/date.cc - src/core/filesystem.cc - src/core/http.cc - src/core/json.cc - src/core/strings.cc - src/core/time.cc - - # Main window - src/gui/window.cc - src/gui/theme.cc - src/gui/locale.cc - - # Main window pages - src/gui/pages/anime_list.cc - src/gui/pages/now_playing.cc - src/gui/pages/statistics.cc - src/gui/pages/search.cc - src/gui/pages/seasons.cc - src/gui/pages/torrents.cc - src/gui/pages/history.cc - - # Custom widgets - src/gui/widgets/anime_info.cc - src/gui/widgets/poster.cc - src/gui/widgets/clickable_label.cc - src/gui/widgets/sidebar.cc - src/gui/widgets/text.cc - src/gui/widgets/optional_date.cc - - # Dialogs - src/gui/dialog/about.cc - src/gui/dialog/information.cc - src/gui/dialog/settings.cc - src/gui/dialog/settings/application.cc - src/gui/dialog/settings/services.cc - src/gui/dialog/settings/torrents.cc - src/gui/dialog/settings/recognition.cc - src/gui/dialog/settings/library.cc - - # Translate - src/gui/translate/anime.cc - src/gui/translate/anilist.cc - src/gui/translate/config.cc - - # Services (only AniList for now) - src/services/services.cc - src/services/anilist.cc - - # Library - src/library/library.cc - - # Tracking - src/track/media.cc - - # Qt resources - rc/icons.qrc - rc/dark.qrc - rc/player_data.qrc -) - -set(INCLUDE - include - dep/pugixml/src - dep/animia/include - dep/anitomy - dep -) - -set(TS_FILES - rc/locale/en_GB.ts - rc/locale/es.ts -) - -set(DEFINES) - -set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/rc/locale") - -if(UPDATE_TRANSLATIONS) - cmake_language(CALL qt${QT_VERSION_MAJOR}_create_translation ${SRC_FILES} ${TS_FILES} OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}/include") -endif() -cmake_language(CALL qt${QT_VERSION_MAJOR}_add_translation QM_FILES ${TS_FILES}) -list(APPEND SRC_FILES ${QM_FILES}) - -function(qt_create_resource_file outfile) - set(QRC "<!DOCTYPE rcc><RCC version=\"1.0\">\n\t<qresource>\n") - get_filename_component(DIR ${outfile} DIRECTORY) - foreach (qm ${ARGN}) - file(RELATIVE_PATH name ${DIR} ${qm}) - string(APPEND QRC "\t\t<file>${name}</file>\n") - endforeach() - string(APPEND QRC "\t</qresource>\n</RCC>\n") - file(WRITE ${outfile} ${QRC}) -endfunction() - -qt_create_resource_file("${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc" ${QM_FILES}) -list(APPEND SRC_FILES "${CMAKE_CURRENT_BINARY_DIR}/rc/locale.qrc") - -# This is also used in the Win32 rc file -set(RC_INFO_STRING "A lightweight anime tracker built with Qt.") - -if(APPLE) # Mac OS X (or OS X (or macOS)) - set(MACOSX_BUNDLE_BUNDLE_NAME "Minori") - set(MACOSX_BUNDLE_BUNDLE_VERSION ${minori_VERSION}) - set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) Paper 2023") - set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.eu.us.paper.minori") - set(MACOSX_BUNDLE_INFO_STRING ${RC_INFO_STRING}) - set(MACOSX_BUNDLE_ICON_FILE rc/osx/favicon.icns) - set(app_icon_osx "${CMAKE_CURRENT_SOURCE_DIR}/rc/osx/favicon.icns") - set_source_files_properties(${app_icon_osx} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") - - list(APPEND SRC_FILES - src/sys/osx/dark_theme.cc - src/sys/osx/filesystem.cc - src/sys/osx/permissions.cc - ${app_icon_osx} - ) - list(APPEND DEFINES MACOSX) -elseif(WIN32) # Windows - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/rc/win32/version.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc - @ONLY - ) - list(APPEND SRC_FILES - src/sys/win32/dark_theme.cc - rc/win32/resource.rc - ${CMAKE_CURRENT_BINARY_DIR}/rc/version.rc - ) - list(APPEND DEFINES WIN32) -else() - if(LINUX) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/rc/linux/Minori.desktop.in - ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.desktop - @ONLY - ) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/rc/favicon256.png - ${CMAKE_CURRENT_BINARY_DIR}/rc/Minori.png - COPYONLY - ) - endif() - - find_package(PkgConfig) - if (PKG_CONFIG_FOUND) - pkg_check_modules(GLIB gio-2.0 glib-2.0) - if (GLIB_FOUND) - list(APPEND SRC_FILES src/sys/glib/dark_theme.cc) - list(APPEND INCLUDE ${GLIB_INCLUDE_DIRS}) - list(APPEND LIBRARIES ${GLIB_LINK_LIBRARIES}) - list(APPEND DEFINES GLIB) - endif() - endif() -endif() - -add_executable(minori WIN32 MACOSX_BUNDLE ${SRC_FILES}) -set_property(TARGET minori PROPERTY CXX_STANDARD 17) -set_property(TARGET minori PROPERTY AUTOMOC ON) -set_property(TARGET minori PROPERTY AUTORCC ON) - -target_include_directories(minori PRIVATE ${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} PUBLIC ${INCLUDE}) -target_link_libraries(minori PRIVATE ${LIBRARIES}) -target_compile_options(minori PRIVATE -Wall -Wpedantic -Wextra -Wsuggest-override -Wold-style-cast) -target_compile_definitions(minori PRIVATE ${DEFINES}) - -if(APPLE) - set_target_properties(minori PROPERTIES MACOSX_BUNDLE TRUE) -elseif(WIN32) - install(FILES $<TARGET_RUNTIME_DLLS:minori> TYPE BIN) -endif()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/INSTALL Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,26 @@ +This is just like any typical autotools-based project. + +To install, it's as simple as: + 0). autoreconf -i + This step is only necessary if you're cloning from the repository. + Tarballs will have this step done already. + 1). ./configure + Configures the build, finds Qt and the necessary runtime libraries. + + NOTE: If you don't have Qt binaries on your PATH (e.g. MacPorts), + you can temporarily add it by prepending `PATH=qt_path:$PATH" + before configuring. + 2). make + Builds the package. + 3). make install + Installs the package. Use a suitable permission escalator like sudo + or doas. + +In some cases, the configure script will fail to find Qt. To solve this, put the +path containing qmake into your PATH or configure pkg-config with the correct +paths for Qt[5/6]Widgets. + +On OS X/macOS, you'll probably want an app bundle. To create this, simply call +`scripts/osx/deploy_build.sh` from the build directory. + NOTE: This script relies on `macdeployqt` being in your PATH for it to work + properly.
--- a/LICENSE Fri Jan 19 13:47:56 2024 -0500 +++ b/LICENSE Mon Jan 22 16:36:19 2024 -0500 @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2023, Paper +Copyright (c) 2023-2024, Paper All rights reserved. Redistribution and use in source and binary forms, with or without
--- a/Makefile.am Fri Jan 19 13:47:56 2024 -0500 +++ b/Makefile.am Mon Jan 22 16:36:19 2024 -0500 @@ -1,9 +1,33 @@ bin_PROGRAMS = minori +minori_locale_ts = \ + rc/locale/en_GB.ts \ + rc/locale/es.ts + +.ts.qm: + @MKDIR_P@ `dirname $@`; \ + @QT_LRELEASE@ $< -qm $@ + +minori_locale_qm = $(minori_locale_ts:.ts=.qm) + +# this has to be in the root build folder +translations.qrc: $(minori_locale_qm) + printf "<!DOCTYPE rcc><RCC version=\"1.0\">\n\t<qresource prefix=\"locale/\">\n" > $@; \ + for q in $(minori_locale_qm); do \ + printf "\t\t<file alias=\"%s\">%s</file>\n" "`basename $$q`" "$$q" >> $@; \ + done; \ + printf "\t</qresource>\n</RCC>\n" >> $@; + minori_qtrc = \ - $(top_srcdir)/rc/dark.qrc \ - $(top_srcdir)/rc/icons.qrc \ - $(top_srcdir)/rc/player_data.qrc + $(top_srcdir)/rc/icons/icons.qrc \ + $(top_srcdir)/rc/player_data.qrc \ + translations.qrc + +if BUILD_WIN + +minori_qtrc += $(top_srcdir)/rc/win32/dark/dark.qrc + +endif rc/final_qrc.cc: $(minori_qtrc) @QT_RCC@ -o $@ $(minori_qtrc) @@ -152,6 +176,6 @@ @MKDIR_P@ -- `dirname $@` @QT_MOC@ -o $@ $(minori_includes) $< -SUFFIXES = .h _moc.cc +SUFFIXES = .h _moc.cc .ts .qm SUBDIRS = $(subdirs) ACLOCAL_AMFLAGS = -I m4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,4 @@ +Minori is a cross-platform Taiga clone built with Qt. + +For instructions on installing, view INSTALL. For documentation, +view the docs/ directory. \ No newline at end of file
--- a/README.md Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -# Minori -A cross-platform Taiga clone.
--- a/configure.ac Fri Jan 19 13:47:56 2024 -0500 +++ b/configure.ac Mon Jan 22 16:36:19 2024 -0500 @@ -18,21 +18,11 @@ AM_PROG_AR LT_INIT -have_qt=no # Qt? AX_HAVE_QT if test "x$have_qt" = "xno"; then - PKG_CHECK_MODULES([QT], [Qt6Widgets >= 6.0.0], [have_qt=yes], [true]) - # prioritize qt 5 - PKG_CHECK_MODULES([QT], [Qt5Widgets >= 5.15.0], [have_qt=yes], [true]) - - if test "x$have_qt" = "xno"; then - AC_MSG_ERROR([*** Qt not found.]) - fi - - QT_CXXFLAGS=$QT_CFLAGS - AC_SUBST([QT_CXXFLAGS]) + AC_MSG_ERROR([*** Qt not found.]) fi # need this for moc
--- a/m4/libcurl.m4 Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) David Shaw <dshaw@jabberwocky.com> -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], -# [ACTION-IF-YES], [ACTION-IF-NO]) -# ---------------------------------------------------------- -# David Shaw <dshaw@jabberwocky.com> May-09-2006 -# -# Checks for libcurl. DEFAULT-ACTION is the string yes or no to -# specify whether to default to --with-libcurl or --without-libcurl. -# If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the -# minimum version of libcurl to accept. Pass the version as a regular -# version number like 7.10.1. If not supplied, any version is -# accepted. ACTION-IF-YES is a list of shell commands to run if -# libcurl was successfully found and passed the various tests. -# ACTION-IF-NO is a list of shell commands that are run otherwise. -# Note that using --without-libcurl does run ACTION-IF-NO. -# -# This macro #defines HAVE_LIBCURL if a working libcurl setup is -# found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary -# values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are -# the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy -# where yyy are the various protocols supported by libcurl. Both xxx -# and yyy are capitalized. See the list of AH_TEMPLATEs at the top of -# the macro for the complete list of possible defines. Shell -# variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also -# defined to 'yes' for those features and protocols that were found. -# Note that xxx and yyy keep the same capitalization as in the -# curl-config list (e.g. it's "HTTP" and not "http"). -# -# Users may override the detected values by doing something like: -# LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure -# -# For the sake of sanity, this macro assumes that any libcurl that is found is -# after version 7.7.2, the first version that included the curl-config script. -# Note that it is important for people packaging binary versions of libcurl to -# include this script! Without curl-config, we can only guess what protocols -# are available, or use curl_version_info to figure it out at runtime. - -AC_DEFUN([LIBCURL_CHECK_CONFIG], -[ - AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) - AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) - AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) - AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) - AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) - AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) - AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) - AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) - - AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) - AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) - AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) - AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) - AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) - AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_RTSP],[Defined if libcurl supports RTSP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_POP3],[Defined if libcurl supports POP3]) - AH_TEMPLATE([LIBCURL_PROTOCOL_IMAP],[Defined if libcurl supports IMAP]) - AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP]) - - AC_ARG_WITH(libcurl, - AS_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]), - [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) - - if test "$_libcurl_with" != "no" ; then - - AC_PROG_AWK - - _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" - - _libcurl_try_link=yes - - if test -d "$_libcurl_with" ; then - LIBCURL_CPPFLAGS="-I$withval/include" - _libcurl_ldflags="-L$withval/lib" - AC_PATH_PROG([_libcurl_config],[curl-config],[], - ["$withval/bin"]) - else - AC_PATH_PROG([_libcurl_config],[curl-config],[],[$PATH]) - fi - - if test x$_libcurl_config != "x" ; then - AC_CACHE_CHECK([for the version of libcurl], - [libcurl_cv_lib_curl_version], - [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) - - _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` - _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` - - if test $_libcurl_wanted -gt 0 ; then - AC_CACHE_CHECK([for libcurl >= version $2], - [libcurl_cv_lib_version_ok], - [ - if test $_libcurl_version -ge $_libcurl_wanted ; then - libcurl_cv_lib_version_ok=yes - else - libcurl_cv_lib_version_ok=no - fi - ]) - fi - - if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then - if test x"$LIBCURL_CPPFLAGS" = "x" ; then - LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` - fi - if test x"$LIBCURL" = "x" ; then - LIBCURL=`$_libcurl_config --libs` - - # This is so silly, but Apple actually has a bug in their - # curl-config script. Fixed in Tiger, but there are still - # lots of Panther installs around. - case "${host}" in - powerpc-apple-darwin7*) - LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` - ;; - esac - fi - - # All curl-config scripts support --feature - _libcurl_features=`$_libcurl_config --feature` - - # Is it modern enough to have --protocols? (7.12.4) - if test $_libcurl_version -ge 461828 ; then - _libcurl_protocols=`$_libcurl_config --protocols` - fi - else - _libcurl_try_link=no - fi - - unset _libcurl_wanted - fi - - if test $_libcurl_try_link = yes ; then - - # we did not find curl-config, so let's see if the user-supplied - # link line (or failing that, "-lcurl") is enough. - LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} - - AC_CACHE_CHECK([whether libcurl is usable], - [libcurl_cv_lib_curl_usable], - [ - _libcurl_save_cppflags=$CPPFLAGS - CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" - _libcurl_save_libs=$LIBS - LIBS="$LIBCURL $LIBS" - - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <curl/curl.h>]],[[ -/* Try and use a few common options to force a failure if we are - missing symbols or cannot link. */ -int x; -curl_easy_setopt(NULL,CURLOPT_URL,NULL); -x=CURL_ERROR_SIZE; -x=CURLOPT_WRITEFUNCTION; -x=CURLOPT_WRITEDATA; -x=CURLOPT_ERRORBUFFER; -x=CURLOPT_STDERR; -x=CURLOPT_VERBOSE; -if (x) {;} -]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no) - - CPPFLAGS=$_libcurl_save_cppflags - LIBS=$_libcurl_save_libs - unset _libcurl_save_cppflags - unset _libcurl_save_libs - ]) - - if test $libcurl_cv_lib_curl_usable = yes ; then - - # Does curl_free() exist in this version of libcurl? - # If not, fake it with free() - - _libcurl_save_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" - _libcurl_save_libs=$LIBS - LIBS="$LIBS $LIBCURL" - - AC_CHECK_DECL([curl_free],[], - [AC_DEFINE([curl_free],[free], - [Define curl_free() as free() if our version of curl lacks curl_free.])], - [[#include <curl/curl.h>]]) - - CPPFLAGS=$_libcurl_save_cppflags - LIBS=$_libcurl_save_libs - unset _libcurl_save_cppflags - unset _libcurl_save_libs - - AC_DEFINE(HAVE_LIBCURL,1, - [Define to 1 if you have a functional curl library.]) - AC_SUBST(LIBCURL_CPPFLAGS) - AC_SUBST(LIBCURL) - - for _libcurl_feature in $_libcurl_features ; do - AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) - eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes - done - - if test "x$_libcurl_protocols" = "x" ; then - - # We do not have --protocols, so just assume that all - # protocols are available - _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" - - if test x$libcurl_feature_SSL = xyes ; then - _libcurl_protocols="$_libcurl_protocols HTTPS" - - # FTPS was not standards-compliant until version - # 7.11.0 (0x070b00 == 461568) - if test $_libcurl_version -ge 461568; then - _libcurl_protocols="$_libcurl_protocols FTPS" - fi - fi - - # RTSP, IMAP, POP3 and SMTP were added in - # 7.20.0 (0x071400 == 463872) - if test $_libcurl_version -ge 463872; then - _libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP" - fi - fi - - for _libcurl_protocol in $_libcurl_protocols ; do - AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) - eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes - done - else - unset LIBCURL - unset LIBCURL_CPPFLAGS - fi - fi - - unset _libcurl_try_link - unset _libcurl_version_parse - unset _libcurl_config - unset _libcurl_feature - unset _libcurl_features - unset _libcurl_protocol - unset _libcurl_protocols - unset _libcurl_version - unset _libcurl_ldflags - fi - - if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then - # This is the IF-NO path - ifelse([$4],,:,[$4]) - else - # This is the IF-YES path - ifelse([$3],,:,[$3]) - fi - - unset _libcurl_with -])
--- a/m4/m4_ax_have_qt.m4 Fri Jan 19 13:47:56 2024 -0500 +++ b/m4/m4_ax_have_qt.m4 Mon Jan 22 16:36:19 2024 -0500 @@ -49,7 +49,6 @@ # # Copyright (c) 2008 Bastiaan Veelo <Bastiaan@Veelo.net> # Copyright (c) 2014 Alex Henrie <alexhenrie24@gmail.com> -# Copyright (c) 2024 Paper <mrpapersonic@gmail.com> # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice @@ -61,40 +60,33 @@ AU_ALIAS([BNV_HAVE_QT], [AX_HAVE_QT]) AC_DEFUN([AX_HAVE_QT], [ - AC_REQUIRE([AC_PROG_CXX]) - AC_REQUIRE([AC_PATH_X]) - AC_REQUIRE([AC_PATH_XTRA]) - # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example. - # Store the full name (like qmake-qt5) into QMAKE - # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff. - AC_ARG_VAR([QMAKE],"Qt make tool") - AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false]) + AC_REQUIRE([AC_PROG_CXX]) + AC_REQUIRE([AC_PATH_X]) + AC_REQUIRE([AC_PATH_XTRA]) + # openSUSE leap 15.3 installs qmake-qt5, not qmake, for example. + # Store the full name (like qmake-qt5) into QMAKE + # and the specifier (like -qt5 or empty) into am_have_qt_qmexe_suff. + AC_ARG_VAR([QMAKE],"Qt make tool") + AC_CHECK_TOOLS([QMAKE],[qmake qmake-qt6 qmake-qt5],[false]) - AC_MSG_CHECKING(for Qt) - am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'` - # If we have Qt5 or later in the path, we're golden - ver=`$QMAKE --version | grep -o "Qt version ."` + AC_MSG_CHECKING(for Qt) + am_have_qt_qmexe_suff=`echo $QMAKE | sed 's,^.*qmake,,'` + # If we have Qt5 or later in the path, we're golden + ver=`$QMAKE --version | grep -o "Qt version ."` - if test "$ver" ">" "Qt version 4"; then - have_qt=yes - # This pro file dumps qmake's variables, but it only works on Qt 5 or later - am_have_qt_dir=`mktemp -d` - am_have_qt_pro="$am_have_qt_dir/test.pro" - am_have_qt_stash="$am_have_qt_dir/.qmake.stash" - am_have_qt_makefile="$am_have_qt_dir/Makefile" - am_have_qt_makefile_cxxflags="$am_have_qt_dir/cxxm" - am_have_qt_makefile_libs="$am_have_qt_dir/libsm" - # http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt - cat > $am_have_qt_pro << EOF + if test "$ver" ">" "Qt version 4"; then + have_qt=yes + # This pro file dumps qmake's variables, but it only works on Qt 5 or later + am_have_qt_dir=`mktemp -d` + am_have_qt_pro="$am_have_qt_dir/test.pro" + am_have_qt_stash="$am_have_qt_dir/.qmake.stash" + am_have_qt_makefile="$am_have_qt_dir/Makefile" + # http://qt-project.org/doc/qt-5/qmake-variable-reference.html#qt + cat > $am_have_qt_pro << EOF win32 { - CONFIG -= debug_and_release - CONFIG += release + CONFIG -= debug_and_release + CONFIG += release } -mac { - CONFIG += sdk_no_version_check -} -# commented out all the modules we don't use -# - paper #qtHaveModule(axcontainer): QT += axcontainer #qtHaveModule(axserver): QT += axserver #qtHaveModule(concurrent): QT += concurrent @@ -129,139 +121,127 @@ percent.commands = @echo -n "\$(\$(@))\ " QMAKE_EXTRA_TARGETS += percent EOF - cat > $am_have_qt_makefile_cxxflags << EOF -include $am_have_qt_makefile - -VAR: - @echo \$(CXXFLAGS) \$(INCPATH) -EOF - cat > $am_have_qt_makefile_libs << EOF -include $am_have_qt_makefile + $QMAKE $am_have_qt_pro -o $am_have_qt_makefile + QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile CXXFLAGS INCPATH` + QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile LIBS` + rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile + rmdir $am_have_qt_dir -VAR: - @echo \$(LIBS) -EOF - $QMAKE "$am_have_qt_pro" -o "$am_have_qt_makefile" - QT_CXXFLAGS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_cxxflags VAR` - QT_LIBS=`cd $am_have_qt_dir; make -s -f $am_have_qt_makefile_libs VAR` - rm $am_have_qt_pro $am_have_qt_stash $am_have_qt_makefile $am_have_qt_makefile_cxxflags $am_have_qt_makefile_libs - rmdir $am_have_qt_dir + # Look for specific tools in $PATH + QT_MOC=`which moc$am_have_qt_qmexe_suff` + QT_UIC=`which uic$am_have_qt_qmexe_suff` + QT_RCC=`which rcc$am_have_qt_qmexe_suff` + QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff` + QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff` - # Look for specific tools in $PATH - QT_MOC=`which moc$am_have_qt_qmexe_suff` - QT_UIC=`which uic$am_have_qt_qmexe_suff` - QT_RCC=`which rcc$am_have_qt_qmexe_suff` - QT_LRELEASE=`which lrelease$am_have_qt_qmexe_suff` - QT_LUPDATE=`which lupdate$am_have_qt_qmexe_suff` - - # Get Qt version from qmake - QT_DIR=`$QMAKE --version | grep -o -E /.+` + # Get Qt version from qmake + QT_DIR=`$QMAKE --version | grep -o -E /.+` - # All variables are defined, report the result - AC_MSG_RESULT([$have_qt: - QT_CXXFLAGS=$QT_CXXFLAGS - QT_DIR=$QT_DIR - QT_LIBS=$QT_LIBS - QT_UIC=$QT_UIC - QT_MOC=$QT_MOC - QT_RCC=$QT_RCC - QT_LRELEASE=$QT_LRELEASE - QT_LUPDATE=$QT_LUPDATE]) - else - # Qt was not found - have_qt=no - QT_CXXFLAGS= - QT_DIR= - QT_LIBS= - QT_UIC= - QT_MOC= - QT_RCC= - QT_LRELEASE= - QT_LUPDATE= - AC_MSG_RESULT($have_qt) - fi - AC_SUBST(QT_CXXFLAGS) - AC_SUBST(QT_DIR) - AC_SUBST(QT_LIBS) - AC_SUBST(QT_UIC) - AC_SUBST(QT_MOC) - AC_SUBST(QT_RCC) - AC_SUBST(QT_LRELEASE) - AC_SUBST(QT_LUPDATE) - AC_SUBST(QMAKE) + # All variables are defined, report the result + AC_MSG_RESULT([$have_qt: + QT_CXXFLAGS=$QT_CXXFLAGS + QT_DIR=$QT_DIR + QT_LIBS=$QT_LIBS + QT_UIC=$QT_UIC + QT_MOC=$QT_MOC + QT_RCC=$QT_RCC + QT_LRELEASE=$QT_LRELEASE + QT_LUPDATE=$QT_LUPDATE]) + else + # Qt was not found + have_qt=no + QT_CXXFLAGS= + QT_DIR= + QT_LIBS= + QT_UIC= + QT_MOC= + QT_RCC= + QT_LRELEASE= + QT_LUPDATE= + AC_MSG_RESULT($have_qt) + fi + AC_SUBST(QT_CXXFLAGS) + AC_SUBST(QT_DIR) + AC_SUBST(QT_LIBS) + AC_SUBST(QT_UIC) + AC_SUBST(QT_MOC) + AC_SUBST(QT_RCC) + AC_SUBST(QT_LRELEASE) + AC_SUBST(QT_LUPDATE) + AC_SUBST(QMAKE) - #### Being paranoid: - if test x"$have_qt" = xyes; then - AC_MSG_CHECKING(correct functioning of Qt installation) - AC_CACHE_VAL(ax_cv_qt_test_result, - [ - cat > ax_qt_test.h << EOF + #### Being paranoid: + if test x"$have_qt" = xyes; then + AC_MSG_CHECKING(correct functioning of Qt installation) + AC_CACHE_VAL(ax_cv_qt_test_result, + [ + cat > ax_qt_test.h << EOF #include <qobject.h> class Test : public QObject { Q_OBJECT public: - Test() {} - ~Test() {} + Test() {} + ~Test() {} public slots: - void receive() {} + void receive() {} signals: - void send(); + void send(); }; EOF - cat > ax_qt_main.$ac_ext << EOF + cat > ax_qt_main.$ac_ext << EOF #include "ax_qt_test.h" #include <qapplication.h> int main( int argc, char **argv ) { - QApplication app( argc, argv ); - Test t; - QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) ); + QApplication app( argc, argv ); + Test t; + QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) ); } EOF - ax_cv_qt_test_result="failure" - ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null" - AC_TRY_EVAL(ax_try_1) - if test x"$ac_status" != x0; then - echo "$ax_err_1" >&AS_MESSAGE_LOG_FD - echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD - cat ax_qt_test.h >&AS_MESSAGE_LOG_FD - else - ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >AS_MESSAGE_LOG_FD 2>&1" - AC_TRY_EVAL(ax_try_2) - if test x"$ac_status" != x0; then - echo "$ax_err_2" >&AS_MESSAGE_LOG_FD - echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD - cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD - else - ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null" - AC_TRY_EVAL(ax_try_3) - if test x"$ac_status" != x0; then - echo "$ax_err_3" >&AS_MESSAGE_LOG_FD - echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD - cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD - else - ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null" - AC_TRY_EVAL(ax_try_4) - if test x"$ac_status" != x0; then - echo "$ax_err_4" >&AS_MESSAGE_LOG_FD - else - ax_cv_qt_test_result="success" - fi - fi - fi - fi - ])dnl AC_CACHE_VAL ax_cv_qt_test_result - AC_MSG_RESULT([$ax_cv_qt_test_result]) - if test x"$ax_cv_qt_test_result" = "xfailure"; then - AC_MSG_ERROR([Failed to find matching components of a complete - Qt installation. Try using more options, - see ./configure --help.]) - fi + ax_cv_qt_test_result="failure" + ax_try_1="$QT_MOC ax_qt_test.h -o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null" + AC_TRY_EVAL(ax_try_1) + if test x"$ac_status" != x0; then + echo "$ax_err_1" >&AS_MESSAGE_LOG_FD + echo "configure: could not run $QT_MOC on:" >&AS_MESSAGE_LOG_FD + cat ax_qt_test.h >&AS_MESSAGE_LOG_FD + else + ax_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_ax_qt_test.o moc_ax_qt_test.$ac_ext >/dev/null 2>/dev/null" + AC_TRY_EVAL(ax_try_2) + if test x"$ac_status" != x0; then + echo "$ax_err_2" >&AS_MESSAGE_LOG_FD + echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD + cat moc_ax_qt_test.$ac_ext >&AS_MESSAGE_LOG_FD + else + ax_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o ax_qt_main.o ax_qt_main.$ac_ext >/dev/null 2>/dev/null" + AC_TRY_EVAL(ax_try_3) + if test x"$ac_status" != x0; then + echo "$ax_err_3" >&AS_MESSAGE_LOG_FD + echo "configure: could not compile:" >&AS_MESSAGE_LOG_FD + cat ax_qt_main.$ac_ext >&AS_MESSAGE_LOG_FD + else + ax_try_4="$CXX -o ax_qt_main ax_qt_main.o moc_ax_qt_test.o $QT_LIBS $LIBS >/dev/null 2>/dev/null" + AC_TRY_EVAL(ax_try_4) + if test x"$ac_status" != x0; then + echo "$ax_err_4" >&AS_MESSAGE_LOG_FD + else + ax_cv_qt_test_result="success" + fi + fi + fi + fi + ])dnl AC_CACHE_VAL ax_cv_qt_test_result + AC_MSG_RESULT([$ax_cv_qt_test_result]) + if test x"$ax_cv_qt_test_result" = "xfailure"; then + AC_MSG_ERROR([Failed to find matching components of a complete + Qt installation. Try using more options, + see ./configure --help.]) + fi - rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \ - ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main - fi -]) + rm -f ax_qt_test.h moc_ax_qt_test.$ac_ext moc_ax_qt_test.o \ + ax_qt_main.$ac_ext ax_qt_main.o ax_qt_main + fi +]) \ No newline at end of file
--- a/rc/dark.qrc Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -<!DOCTYPE rcc><RCC version="1.0"> - <qresource> - <file>dark.qss</file> - </qresource> -</RCC>
--- a/rc/dark.qss Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,294 +0,0 @@ -/* -Much of this is taken from the Breeze Style Sheets, -which is under the MIT license: - -Copyright © `<2013-2014>` `<Colin Duquesnoy>` -Copyright © `<2015-2016>` `<Alex Huszagh>` - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the “Software”), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. -*/ - -/* Colors should be the same as the QPalette in gui/theme.cc, i.e.: - window == darkgray == #353535; - ??? == gray == #808080; - base == black == #191919; - highlighted == blue = #2A82DA; - We could include a preprocessor like sass to make these constants, - but that's really lame :( -*/ - -AnimeListPage::pane { - margin: 0.04em; - border: 0.04em solid #808080; - top: -0.04em; - left: -0.04em; -} - -QTabWidget::pane:top { - border: 0.04em solid #808080; - top: -0.04em; -} - -QTabWidget::pane:bottom { - border: 0.04em solid #808080; - bottom: -0.04em; -} - -QTabWidget::pane:left { - border: 0.04em solid #808080; - left: -0.04em; -} - -QTabWidget::pane:right { - border: 0.04em solid #808080; - right: -0.04em; -} - -QTabBar { - qproperty-drawBase: 0; - left: 0.23em; - border-radius: 0.13em; - selection-color: transparent; -} - -QTabBar:focus { - border: 0em transparent black; -} - -QTabBar::tab:top, -QTabBar::tab:top:last, -QTabBar::tab:top:only-one { - color: white; - border: 0.04em transparent black; - border-left: 0.04em solid #808080; - border-right: 0.04em solid #808080; - border-top: 0.04em solid #808080; - background-color: #353535; - min-width: 50px; - padding-top: 0.23em; - padding-bottom: 0.23em; - padding-left: 0.78em; - padding-right: 0.78em; - border-radius: 0.09em; - border-bottom-left-radius: 0em; - border-bottom-right-radius: 0em; -} - -QTabBar::tab:top:!selected { - color: white; - background-color: #353535; - border: 0.04em solid #808080; - border-radius: 0.09em; - border-bottom-left-radius: 0em; - border-bottom-right-radius: 0em; - margin-top: 0.13em; -} - -QTabBar::tab:top:next-selected { - border-right: 0.04em transparent #353535; - border-bottom-left-radius: 0em; - border-bottom-right-radius: 0em; -} - -QTabBar::tab:top:previous-selected { - border-left: 0.04em transparent #353535; - border-bottom-left-radius: 0em; - border-bottom-right-radius: 0em; -} - -QTabBar::tab:top:!selected:hover { - background-color: rgba(42, 130, 218, 0.1); - border-radius: 0.09em; - border-bottom-left-radius: 0em; - border-bottom-right-radius: 0em; -} - -QTabBar::tab:top:!selected:first:hover { - background-color: rgba(42, 130, 218, 0.1); -} - -QGroupBox::title { - color: white; -} - -QComboBox, -QPushButton, -QDateEdit, -QSpinBox { - background-color: #353535; - color: white; -} - -QComboBox, -QDateEdit, -QSpinBox { - border: 0.04em solid #808080; -} - -QComboBox:disabled, -QPushButton:disabled, -QDateEdit:disabled, -QSpinBox:disabled { - color: #808080; -} - -QPushButton:hover { - background-color: #39424B; -} - -/* - * QLineEdit - */ - -QLineEdit { - background: transparent; - color: white; -} - -QLineEdit:!read-only { - background-color: #191919; - padding: 0.23em; - border-style: solid; - border: 0.04em solid #808080; - border-radius: 0.09em; -} - -/* QMenuBar */ - -QMenuBar { - background-color: #353535; - color: white; -} - -QMenuBar::item:selected { - background-color: #414141; -} - -QMenuBar::item:disabled { - color: #808080; -} - -QMenuBar::item:pressed { - background-color: #414141; - margin-bottom: -0.09em; - padding-bottom: 0.09em; -} - -/* QMenu */ - -QMenu { - color: white; - background-color: #353535; - padding: 0.18em 0.18em; - border: 0.09em solid #A0A0A0; -} - -QMenu::icon { - margin: 0.23em; -} - -QMenu::item { - /* Add extra padding on the right for the QMenu arrow */ - padding: 0.23em 1.5em 0.23em 1.3em; - border: 0.09em solid transparent; - background: transparent; -} - -QMenu::item:selected { - color: white; - background-color: #414141; -} - -QMenu::item:selected:disabled { - background-color: #353535; -} - -QMenu::item:disabled { - color: #808080; -} - -QMenu::indicator { - width: 0.8em; - height: 0.8em; - /* To align with QMenu::icon, which has a 0.23em margin. */ - margin-left: 0.3em; - subcontrol-position: center left; -} - -/* - * QHeaderView: - * Need this for the anime list, on Windows it gets screwed up. -*/ - -QHeaderView { - background-color: #353535; - border: 0.04em transparent; - border-radius: 0em; - margin: 0em; - padding: 0em; -} - -QHeaderView::section { - background-color: #353535; - border: 0.04em solid #808080; - color: #eff0f1; - border-radius: 0em; - padding: 0em 0.23em 0em 0.23em; - text-align: center; -} - -QHeaderView::section::vertical::first, -QHeaderView::section::vertical::only-one { - border-top: 0.04em solid #808080; -} - -QHeaderView::section::vertical { - border-top: transparent; -} - -QHeaderView::section::horizontal::first, -QHeaderView::section::horizontal::only-one { - border-left: 0.04em solid #808080; -} - -QHeaderView::section::horizontal { - border-left: transparent; -} - -QHeaderView[showSortIndicator="true"]::section::horizontal { - /* Same as the width of the arrow subcontrols below. */ - padding-right: 0.8em; -} - -QHeaderView::section:checked { - color: white; - background-color: #808080; -} - -/* Note that this doesn't work for QTreeView unless the header is clickable */ -QHeaderView::section:hover, -QHeaderView::section::horizontal::first:hover, -QHeaderView::section::horizontal::only-one:hover, -QHeaderView::section::vertical::first:hover, -QHeaderView::section::vertical::only-one:hover { - background-color: #353535; -}
--- a/rc/icons.qrc Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -<!DOCTYPE rcc><RCC version="1.0"> - <qresource> - <file>favicon.png</file> - <file>icons/16x16/arrow-circle-315.png</file> - <file>icons/16x16/calendar.png</file> - <file>icons/16x16/chart.png</file> - <file>icons/16x16/clock-history-frame.png</file> - <file>icons/16x16/cross-button.png</file> - <file>icons/16x16/document-list.png</file> - <file>icons/16x16/feed.png</file> - <file>icons/16x16/film.png</file> - <file>icons/16x16/gear.png</file> - <file>icons/16x16/magnifier.png</file> - <file>icons/16x16/navigation-270-button.png</file> - <file>icons/16x16/plus-button.png</file> - <file>icons/24x24/application-export.png</file> - <file>icons/24x24/application-sidebar-list.png</file> - <file>icons/24x24/arrow-circle-double-135.png</file> - <file>icons/24x24/feed.png</file> - <file>icons/24x24/folder-open.png</file> - <file>icons/24x24/gear.png</file> - <file>icons/24x24/globe.png</file> - <file>icons/24x24/inbox-film.png</file> - <file>icons/24x24/megaphone.png</file> - <file>icons/24x24/question.png</file> - </qresource> -</RCC>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rc/icons/icons.qrc Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,27 @@ +<!DOCTYPE rcc><RCC version="1.0"> + <qresource prefix="icons/"> + <file>favicon.png</file> + <file>16x16/arrow-circle-315.png</file> + <file>16x16/calendar.png</file> + <file>16x16/chart.png</file> + <file>16x16/clock-history-frame.png</file> + <file>16x16/cross-button.png</file> + <file>16x16/document-list.png</file> + <file>16x16/feed.png</file> + <file>16x16/film.png</file> + <file>16x16/gear.png</file> + <file>16x16/magnifier.png</file> + <file>16x16/navigation-270-button.png</file> + <file>16x16/plus-button.png</file> + <file>24x24/application-export.png</file> + <file>24x24/application-sidebar-list.png</file> + <file>24x24/arrow-circle-double-135.png</file> + <file>24x24/feed.png</file> + <file>24x24/folder-open.png</file> + <file>24x24/gear.png</file> + <file>24x24/globe.png</file> + <file>24x24/inbox-film.png</file> + <file>24x24/megaphone.png</file> + <file>24x24/question.png</file> + </qresource> +</RCC>
--- a/rc/osx/deploy_build.sh Fri Jan 19 13:47:56 2024 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#!/bin/bash -# -# deploy_build.sh: -# run this in your build dir to get a usable app bundle - -SCRIPT_DIR=$(dirname -- "$0") -BUNDLE_NAME="Minori" - -cp -r "$SCRIPT_DIR/$BUNDLE_NAME.app" . -mkdir -p "$BUNDLE_NAME.app/Contents/MacOS" -cp ".libs/minori" "$BUNDLE_NAME.app/Contents/MacOS/minori" -mkdir -p "$BUNDLE_NAME.app/Contents/Frameworks" -for i in animia pugixml anitomy; do - cp "dep/$i/.libs/lib$i.0.dylib" "$BUNDLE_NAME.app/Contents/Frameworks" - install_name_tool -change "/usr/local/lib/lib$i.0.dylib" "@executable_path/../Frameworks/lib$i.0.dylib" "$BUNDLE_NAME.app/Contents/MacOS/minori" -done -macdeployqt "$BUNDLE_NAME.app"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rc/win32/dark/dark.qrc Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,5 @@ +<!DOCTYPE rcc><RCC version="1.0"> + <qresource> + <file>dark.qss</file> + </qresource> +</RCC>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rc/win32/dark/dark.qss Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,294 @@ +/* +Much of this is taken from the Breeze Style Sheets, +which is under the MIT license: + +Copyright © `<2013-2014>` `<Colin Duquesnoy>` +Copyright © `<2015-2016>` `<Alex Huszagh>` + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the “Software”), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* Colors should be the same as the QPalette in gui/theme.cc, i.e.: + window == darkgray == #353535; + ??? == gray == #808080; + base == black == #191919; + highlighted == blue = #2A82DA; + We could include a preprocessor like sass to make these constants, + but that's really lame :( +*/ + +AnimeListPage::pane { + margin: 0.04em; + border: 0.04em solid #808080; + top: -0.04em; + left: -0.04em; +} + +QTabWidget::pane:top { + border: 0.04em solid #808080; + top: -0.04em; +} + +QTabWidget::pane:bottom { + border: 0.04em solid #808080; + bottom: -0.04em; +} + +QTabWidget::pane:left { + border: 0.04em solid #808080; + left: -0.04em; +} + +QTabWidget::pane:right { + border: 0.04em solid #808080; + right: -0.04em; +} + +QTabBar { + qproperty-drawBase: 0; + left: 0.23em; + border-radius: 0.13em; + selection-color: transparent; +} + +QTabBar:focus { + border: 0em transparent black; +} + +QTabBar::tab:top, +QTabBar::tab:top:last, +QTabBar::tab:top:only-one { + color: white; + border: 0.04em transparent black; + border-left: 0.04em solid #808080; + border-right: 0.04em solid #808080; + border-top: 0.04em solid #808080; + background-color: #353535; + min-width: 50px; + padding-top: 0.23em; + padding-bottom: 0.23em; + padding-left: 0.78em; + padding-right: 0.78em; + border-radius: 0.09em; + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} + +QTabBar::tab:top:!selected { + color: white; + background-color: #353535; + border: 0.04em solid #808080; + border-radius: 0.09em; + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; + margin-top: 0.13em; +} + +QTabBar::tab:top:next-selected { + border-right: 0.04em transparent #353535; + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} + +QTabBar::tab:top:previous-selected { + border-left: 0.04em transparent #353535; + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} + +QTabBar::tab:top:!selected:hover { + background-color: rgba(42, 130, 218, 0.1); + border-radius: 0.09em; + border-bottom-left-radius: 0em; + border-bottom-right-radius: 0em; +} + +QTabBar::tab:top:!selected:first:hover { + background-color: rgba(42, 130, 218, 0.1); +} + +QGroupBox::title { + color: white; +} + +QComboBox, +QPushButton, +QDateEdit, +QSpinBox { + background-color: #353535; + color: white; +} + +QComboBox, +QDateEdit, +QSpinBox { + border: 0.04em solid #808080; +} + +QComboBox:disabled, +QPushButton:disabled, +QDateEdit:disabled, +QSpinBox:disabled { + color: #808080; +} + +QPushButton:hover { + background-color: #39424B; +} + +/* + * QLineEdit + */ + +QLineEdit { + background: transparent; + color: white; +} + +QLineEdit:!read-only { + background-color: #191919; + padding: 0.23em; + border-style: solid; + border: 0.04em solid #808080; + border-radius: 0.09em; +} + +/* QMenuBar */ + +QMenuBar { + background-color: #353535; + color: white; +} + +QMenuBar::item:selected { + background-color: #414141; +} + +QMenuBar::item:disabled { + color: #808080; +} + +QMenuBar::item:pressed { + background-color: #414141; + margin-bottom: -0.09em; + padding-bottom: 0.09em; +} + +/* QMenu */ + +QMenu { + color: white; + background-color: #353535; + padding: 0.18em 0.18em; + border: 0.09em solid #A0A0A0; +} + +QMenu::icon { + margin: 0.23em; +} + +QMenu::item { + /* Add extra padding on the right for the QMenu arrow */ + padding: 0.23em 1.5em 0.23em 1.3em; + border: 0.09em solid transparent; + background: transparent; +} + +QMenu::item:selected { + color: white; + background-color: #414141; +} + +QMenu::item:selected:disabled { + background-color: #353535; +} + +QMenu::item:disabled { + color: #808080; +} + +QMenu::indicator { + width: 0.8em; + height: 0.8em; + /* To align with QMenu::icon, which has a 0.23em margin. */ + margin-left: 0.3em; + subcontrol-position: center left; +} + +/* + * QHeaderView: + * Need this for the anime list, on Windows it gets screwed up. +*/ + +QHeaderView { + background-color: #353535; + border: 0.04em transparent; + border-radius: 0em; + margin: 0em; + padding: 0em; +} + +QHeaderView::section { + background-color: #353535; + border: 0.04em solid #808080; + color: #eff0f1; + border-radius: 0em; + padding: 0em 0.23em 0em 0.23em; + text-align: center; +} + +QHeaderView::section::vertical::first, +QHeaderView::section::vertical::only-one { + border-top: 0.04em solid #808080; +} + +QHeaderView::section::vertical { + border-top: transparent; +} + +QHeaderView::section::horizontal::first, +QHeaderView::section::horizontal::only-one { + border-left: 0.04em solid #808080; +} + +QHeaderView::section::horizontal { + border-left: transparent; +} + +QHeaderView[showSortIndicator="true"]::section::horizontal { + /* Same as the width of the arrow subcontrols below. */ + padding-right: 0.8em; +} + +QHeaderView::section:checked { + color: white; + background-color: #808080; +} + +/* Note that this doesn't work for QTreeView unless the header is clickable */ +QHeaderView::section:hover, +QHeaderView::section::horizontal::first:hover, +QHeaderView::section::horizontal::only-one:hover, +QHeaderView::section::vertical::first:hover, +QHeaderView::section::vertical::only-one:hover { + background-color: #353535; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/osx/deploy_build.sh Mon Jan 22 16:36:19 2024 -0500 @@ -0,0 +1,17 @@ +#!/bin/bash +# +# deploy_build.sh: +# run this in your build dir to get a usable app bundle + +SCRIPT_DIR=$(dirname -- "$0") +BUNDLE_NAME="Minori" + +cp -r "$SCRIPT_DIR/$BUNDLE_NAME.app" . +mkdir -p "$BUNDLE_NAME.app/Contents/MacOS" +cp ".libs/minori" "$BUNDLE_NAME.app/Contents/MacOS/minori" +mkdir -p "$BUNDLE_NAME.app/Contents/Frameworks" +for i in animia pugixml anitomy; do + cp "dep/$i/.libs/lib$i.0.dylib" "$BUNDLE_NAME.app/Contents/Frameworks" + install_name_tool -change "/usr/local/lib/lib$i.0.dylib" "@executable_path/../Frameworks/lib$i.0.dylib" "$BUNDLE_NAME.app/Contents/MacOS/minori" +done +macdeployqt "$BUNDLE_NAME.app"
--- a/src/gui/window.cc Fri Jan 19 13:47:56 2024 -0500 +++ b/src/gui/window.cc Mon Jan 22 16:36:19 2024 -0500 @@ -67,7 +67,7 @@ } MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) { - setWindowIcon(QIcon(":/favicon.png")); + setWindowIcon(QIcon(":/icons/favicon.png")); main_widget.reset(new QWidget(this)); new QHBoxLayout(main_widget.get());