Compare commits

...
Sign in to create a new pull request.
Author SHA1 Message Date
lukefromdc
6e116cd028 Release 1.28.2 2025-04-24 14:59:00 -04:00
lukefromdc
edc2e470e3 Translations update 2025-04-24 14:45:20 -04:00
Michael Webster
82d957afdb epub: Disable thumbnailing sidebar.
A recent update to libwebkitgtk2gtk-4.1 breaks using WebKitWebView
in a GtkOffscreenWindow.

Disable the thumbnail sidebar with epub documents, and disable
updating the GtkWindow thumbnail.

ref:
8d7385fad3

Fixes: #631.
2025-04-24 18:31:55 +00:00
Oz Tiram
e2469c07f6 fix: rename all backend files
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
617326e3a0 fix: generate dbus generated with the correct prefix
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
425b36ec07 fix: building atrild with explicit sources
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
710f8c6a87 fix: building atril target
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
ccb3982a43 fix: shell/meson.build missing files
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
f02f8e2b57 fix: correct dependeny on mate-submodules
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
f31d79ef3e fix: properly build cut-n-paste/toolbar-editor
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
beb9f93a34 fix: add missing properties/meson.build
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
688692ae4a fix all build errors with meson
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
20d70463f2 fix more build errors
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
42c2da1100 fix more build errors
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
a5429374d0 fix: disable maintainer mode per default
... fix library name

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
aa7c28ad54 fix: #error "Only <atril-document.h> can be included directly."
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
ff52c2e214 fix: libdocument! meson automatically adds lib prefix
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
65b96812c4 chore: clean references to xreader
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
5ac96fcd0d chore: add subprojects/mate-submodules.wrap
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
7b21c429cb fix: remove non existing source in shell/
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
97b8cbd8c9 fix: correct typo missing .in in filename
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
d5e0375a33 fix: use mate-submodules correctly
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
49b4a18ba6 chore: fix warnings for meson.build
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
d0f1ddf1e3 chore: pin meson version, add missing ATRIL_MIME_TYPES
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
cb19106d88 chore: reorganinze meson.build
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
9983a88d72 chore: add maintainer mode
Replacing MATE_MAINTAINER_MODE_DEFINES in configure.ac.

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
2085c6c8e7 chore: remove unused intltool
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Oz Tiram
27fc5fef12 meson: make ps and epub optional backends
G# with '#' will be ignored, and an empty message aborts the commit.
2025-04-04 22:19:13 +00:00
Oz Tiram
b1f21edcec Initial support for meson
Mostly copy and paste from linuxmint/xreader

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-04-04 22:19:13 +00:00
Jan Szejko
0672f82ffb Fix .cbr mimetype 2025-03-31 04:55:54 +00:00
lukefromdc
b2bdf46db9 Wayland: stop segfaults on some systems
*Put a missed instance of gdk_x11_screen_get_screen_number behind x11-only selectors
2025-03-31 04:38:46 +00:00
Oz Tiram
160ae5025c replace deprecated gtk_menu_tool_button_new_from_stock
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-03-31 04:35:54 +00:00
Oz Tiram
73e49460f5 libview/ev-document-model.c remove one more deprecation warning
Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-03-31 04:35:54 +00:00
Oz Tiram
1cd5f14cb4 replace ev_document_model_get_dual_page with
ev_document_model_get_page_layout ...

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
2025-03-31 04:35:54 +00:00
lukefromdc
db229c01a3 Release 1.28.1 2024-12-02 20:33:52 -05:00
lukefromdc
d3fd9d3832 tx:update translations 2024-12-02 20:30:52 -05:00
Krassy Boykinov
54e44c98bb Update CBR library to libarchive in README.md
* commit ce41df6 introduced libarchive for unpacking CBR comics
2024-12-02 21:59:51 +00:00
lukefromdc
fb1d374e99 ci: fix travis build failures caused by recent travis changes 2024-12-02 21:59:04 +00:00
Colomban Wendling
33f05a252c Cleanup icons Makefile
Replace full-subdirs with a single Makefile for all icons, making
things both simpler and more concise.

Also, properly use Automake variable prefixes instead of doing it
manually.
2024-04-23 08:51:53 -04:00
Victor Kareh
c5b2dfc82b
icons: Include higher resolution icons (#608)
This only includes higher resolution icons to be loaded automatically by
the window manager icon cache, resulting in sharper icons in the alt-tab
and wnck views.
2024-04-16 15:03:23 +02:00
raveit65
3c3aa9cbb1 release 1.28.0 2024-02-21 16:45:00 +01:00
raveit65
8141431139 tx: sync with transifex 2024-02-21 16:40:20 +01:00
raveit65
d6641eafc5 release 1.27.1 2024-02-06 14:37:10 +01:00
raveit65
9b317630bc tx: sync with transifex 2024-02-06 14:31:07 +01:00
raveit65
6d37d81391 epub: fix previous commit 2024-01-31 11:54:34 +01:00
raveit65
095b361404
fix a incompatible pointer type warning for gcc14
* fix a incompatible pointer type warning for gcc14

Co-authored-by: Colomban Wendling <cwendling@hypra.fr>
2024-01-31 11:47:29 +01:00
correctmost
e254cd9eb5 epub: Avoid crash when index list has extraneous entry
This commit also fixes an incorrect sizeof call detected by
AddressSanitizer.

Closes #599
2024-01-31 11:42:54 +01:00
raveit65
1d379fb767 ci: use ubuntu jammy docker 2024-01-22 12:59:16 +01:00
lukefromdc
e70b21c815 epub: Prevent path traversal when extracting files
Test each file's resolved path against the temporary directory
before extracting.
2024-01-17 22:39:09 +00:00
lukefromdc
ce41df6467 comics: Use libarchive to unpack documents
This commit eliminates the use of external commands for opening
comic documents, and uses libarchive instead.
2024-01-07 22:17:05 +00:00
Jan Tojnar
600b552f16 Fix build with libxml2 2.12
libxml 2.12.0 reorganized headers, resulting in xmlParseFile and xmlIndentTreeOutput no longer being in scope.
Let’s add the proper includes containing the symbols.
2024-01-01 20:05:03 +00:00
raveit65
5ad4bfa14a fix typo in configure.ac
- fixes https://github.com/mate-desktop/atril/issues/596
2023-11-19 17:48:21 +01:00
raveit65
f41d8ccb7c replace deprecated gtk_image_menu_item_new_from_stock 2023-10-02 18:26:36 +02:00
raveit65
5fbd44b2f5 replace deprecated gtk-image-menu-item 2023-10-02 18:26:36 +02:00
raveit65
23c39b53a0 drop double ui files 2023-10-02 04:31:14 +00:00
zhuyaliang
ba0d50e323 Remove compilation warnings and set 'always_show_image' Properties in the UI file 2023-10-01 10:33:25 +02:00
raveit65
9da7a436ba tx: fix warnings in id,it and tr translations 2023-09-11 16:43:42 +02:00
raveit65
6e53174291 update resources 2023-08-31 17:49:40 +02:00
lillolollo
da19ed7df1 Add epub to man page
Fix #581
2023-05-13 01:33:18 +00:00
raveit65
f5dead1a81 CI: switch to webkit2-4.1 for fedora and debian 2023-05-06 21:43:04 +02:00
raveit65
6ba0000aa9 support webkit2 4.0 and 4.1
Co-authored-by: Colomban Wendling <cwendling@hypra.fr>
2023-05-06 21:43:04 +02:00
raveit65
92f7d054d2 use webkit2gtk-4.1
- fixes https://github.com/mate-desktop/atril/issues/582
2023-05-06 21:43:04 +02:00
rbuj
39ba86c9d5 epub: add fallback for malformed epub files in check_mime_type 2022-11-17 06:48:44 +00:00
mbkma
6ba899248d
release 1.27.0 2022-11-11 20:19:59 +01:00
mbkma
10f2b931dd tx: sync with transifex 2022-11-11 19:03:25 +01:00
mbkma
3a6cdbcc11
tx: update resource 2022-10-29 15:39:07 +02:00
mbkma
c04ba47fe9
tx: migrate config file 2022-10-28 21:54:30 +02:00
Michael Webster
886866b143 epub: Fix index loading for certain documents - look for epub:type
instead of epub:id.

Add a null check as well.

ref:
https://help.apple.com/itc/booksassetguide/en.lproj/itc0f175a5b9.html#apdd3c4c6d1c0904
https://idpf.org/epub/301/spec/epub-contentdocs-20140626.html#sec-xhtml-nav
2022-08-04 19:49:30 +00:00
raveit65
acb33ad155 ci: drop -Wunused-parameter compiler cflag from debian build 2022-02-12 09:33:28 +01:00
rbuj
b71aa9861c Fix implicit conversion changes signedness: 'gboolean' to 'guint' 2022-02-11 17:37:23 +01:00
rbuj
05dc26a2c8 Fix the type for the signal identifier which is gulong 2022-01-09 14:24:00 +01:00
rbuj
b7fd397eb4 Use GLib's new g_clear_signal_handler() function to simplify code 2022-01-09 14:24:00 +01:00
rbuj
e25ac2b7fe Remove warnings about redefining gettext support macros 2022-01-02 21:24:51 +01:00
rbuj
f033cb68fe Don't build the path to stock icons 2022-01-02 21:03:47 +01:00
rbuj
816d2dc822 Use a blank line at most 2021-11-20 18:31:11 +01:00
Valentin Villenave
0c38b79c95 Accessibility: add button description 2021-11-20 17:14:49 +01:00
Valentin Villenave
706b21d5cf Preserve compatibility with older GLib versions
This is a rather non-invasive change, that will
be easy to remove whenever we go ahead and stop
supporting older systems.
2021-11-12 21:39:24 +01:00
raveit65
268ed59da7 release 1.26.0 2021-08-06 12:44:48 +02:00
raveit65
e47829c063 tx: sync with transifex 2021-08-06 12:44:11 +02:00
raveit65
e85824b1f7 tx: update resource 2021-08-06 11:29:56 +02:00
raveit65
e04d77232c travis-Ci: use libera.chat as notification server 2021-08-06 11:27:07 +02:00
mbkma
88e8547e92 ev-window.c: only create a EvWebView if needed
A WebKit processes should only be created when the user actually requests to open a file type requiring WebKit to be processed.
2021-07-10 13:51:42 +02:00
Christoph Fritz
50d0b23c60 ev-sidebar-links: Optimize reverse link lookup for a page
Commit adapted for atril, picked up from:
c3de8e75d6

Credits to Benjamin Berg <bberg@redhat.com>

  | For large documents the linear search for the first link that is on a
  | certain page is really slow. Because of this scrolling becomes slow
  | whenever the page changes.
  |
  | Replace the linear search with a search in a binary tree populated with
  | the first link on each page and the corresponding GtkTreePath. This way
  | a specialized binary tree lookup can be used to find the closest
  | matching link and select that in the treeview.
  |
  | https://bugzilla.gnome.org/show_bug.cgi?id=779614
2021-06-15 20:10:04 +02:00
334 changed files with 120006 additions and 65315 deletions

View file

@ -15,11 +15,14 @@ requires:
- libgxps
- make
- mate-common
- mate-desktop
- poppler-glib
- texlive-bin
- webkit2gtk
- which
- yelp-tools
# mate-desktop dependencies
- iso-codes
debian:
# Useful URL: https://github.com/mate-desktop/debian-packages
@ -38,13 +41,14 @@ requires:
- libgtk-3-dev
- libgxps-dev
- libkpathsea-dev
- libmate-desktop-dev
- libsynctex-dev
- libpoppler-glib-dev
- libsecret-1-dev
- libsm-dev
- libspectre-dev
- libtiff-dev
- libwebkit2gtk-4.0-dev
- libwebkit2gtk-4.1-dev
- libx11-dev
- libxml2-dev
- lsb-release
@ -53,6 +57,8 @@ requires:
- xsltproc
- yelp-tools
- zlib1g-dev
# mate-desktop dependencies
- iso-codes
fedora:
# Useful URL: https://src.fedoraproject.org/cgit/rpms/atril.git
@ -78,11 +84,14 @@ requires:
- libtiff-devel
- make
- mate-common
- mate-desktop-devel
- poppler-glib-devel
- redhat-rpm-config
- texlive-lib-devel
- webkitgtk4-devel
- webkit2gtk4.1-devel
- yelp-tools
# mate-desktop dependencies
- iso-codes-devel
ubuntu:
- autopoint
@ -98,6 +107,7 @@ requires:
- libgtk-3-dev
- libgxps-dev
- libkpathsea-dev
- libmate-desktop-dev
- libsynctex-dev
- libpoppler-glib-dev
- libsecret-1-dev
@ -113,6 +123,8 @@ requires:
- xsltproc
- yelp-tools
- zlib1g-dev
# mate-desktop dependencies
- iso-codes
variables:
- 'CHECKERS="
@ -131,8 +143,27 @@ variables:
-enable-checker alpha.unix.cstring.OutOfBounds
-enable-checker alpha.core.FixedAddr
-enable-checker security.insecureAPI.strcpy"'
- MATE_DESKTOP_VERSION=1.27.1
before_scripts:
- cd ${START_DIR}
- if [ ! -f mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz ];then
- curl -Ls -o mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz https://github.com/mate-desktop/mate-desktop/releases/download/v${MATE_DESKTOP_VERSION}/mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz
- fi
- tar xf mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz
- cd mate-desktop-${MATE_DESKTOP_VERSION}
- if [ ${DISTRO_NAME} == "debian" -o ${DISTRO_NAME} == "ubuntu" ];then
- ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu
- else
- ./autogen.sh --prefix=/usr
- fi
- if [ ${TRAVIS} == "false" ]; then
- make clean
- fi
- make
- make install
- cd ${START_DIR}
- if [ ${DISTRO_NAME} == "debian" ];then
- egrep -lRZ 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS' . | xargs -0 -l sed -i -e 's/G_GNUC_BEGIN_IGNORE_DEPRECATIONS/ /g'
- egrep -lRZ 'G_GNUC_END_IGNORE_DEPRECATIONS' . | xargs -0 -l sed -i -e 's/G_GNUC_END_IGNORE_DEPRECATIONS/ /g'
@ -140,8 +171,8 @@ before_scripts:
build_scripts:
- if [ ${DISTRO_NAME} == "debian" ];then
- export CFLAGS+=" -Wsign-compare -Wunused-macros -Wunused-parameter"
- export CXXFLAGS+=" -Wsign-compare -Wunused-macros -Wunused"
- export CFLAGS+=" -Wsign-compare -Wunused-macros"
- export CXXFLAGS+=" -Wsign-compare -Wunused-macros"
- cppcheck --enable=warning,style,performance,portability,information,missingInclude --force -D__cplusplus .
- fi

View file

@ -1,4 +1,4 @@
dist: focal
dist: jammy
language: shell
os: linux
services:
@ -19,7 +19,9 @@ before_install:
- chmod +x docker-build gen-index
install:
- pip3 install PyGithub
- sudo apt-get install -y python3-pip python3-setuptools
- sudo pip3 install --upgrade pip
- sudo pip3 install PyGithub
- ./docker-build --name ${DISTRO} --config .build.yml --install
script:
@ -30,16 +32,24 @@ notifications:
if: (tag OR branch = master) AND
repo = mate-desktop/atril
channels:
- "irc.freenode.org#mate-dev"
- "irc.libera.chat#mate-dev"
template:
- "[%{repository_name}] %{author}: %{commit_subject}"
- "[%{branch}] %{commit} %{message} %{build_url}"
on_success: never
on_failure: always
before_deploy:
- yes | gem update --system --force
- gem install bundler
- gem install faraday-net_http -v '3.3.0' # Avoid faraday version problem
- gem install uri
- gem install logger
deploy:
- provider: pages
edge: true
edge:
branch: v2.0.5
token: $GITHUB_TOKEN
keep_history: false
committer_from_gh: true
@ -50,7 +60,8 @@ deploy:
all_branches: true
condition: ${DISTRO} =~ ^fedora.*$
- provider: script
edge: true
edge:
branch: v2.0.5
script: ./docker-build --verbose --config .build.yml --release github
on:
tags: true

View file

@ -1,16 +1,17 @@
[main]
host = https://www.transifex.com
[MATE.master--atril]
file_filter = po/<lang>.po
source_file = atril.pot
source_lang = en
type = PO
[o:mate:p:MATE:r:master--atril]
file_filter = po/<lang>.po
source_file = atril.pot
source_lang = en
type = PO
minimum_perc = 2
[MATE.master--atril-user-guide]
file_filter = help/<lang>/<lang>.po
source_file = help/atril.pot
source_lang = en
type = PO
[o:mate:p:MATE:r:master--atril-user-guide]
file_filter = help/<lang>/<lang>.po
source_file = help/atril.pot
source_lang = en
type = PO
minimum_perc = 2

16
.tx/config_20221028215429.bak Executable file
View file

@ -0,0 +1,16 @@
[main]
host = https://www.transifex.com
[MATE.master--atril]
file_filter = po/<lang>.po
source_file = atril.pot
source_lang = en
type = PO
minimum_perc = 2
[MATE.master--atril-user-guide]
file_filter = help/<lang>/<lang>.po
source_file = help/atril.pot
source_lang = en
type = PO
minimum_perc = 2

106
NEWS
View file

@ -1,6 +1,96 @@
### atril 1.28.2
* Translations update
* epub: Disable thumbnailing sidebar
* (meson) fix: rename all backend files
* (meson) fix: generate dbus generated with the correct prefix
* (meson) fix: building atrild with explicit sources
* (meson) fix: building atril target
* (meson) fix: shell/meson.build missing files
* (meson) fix: correct dependeny on mate-submodules
* (meson) fix: properly build cut-n-paste/toolbar-editor
* (meson) fix: add missing properties/meson.build
* (meson) fix all build errors with meson
* (meson) fix more build errors
* (meson) fix more build errors
* (meson) fix: disable maintainer mode per default
* (meson) fix: #error "Only <atril-document.h> can be included directly."
* (meson) fix: libdocument! meson automatically adds lib prefix
* (meson) chore: clean references to xreader
* (meson) chore: add subprojects/mate-submodules.wrap
* (meson) fix: remove non existing source in shell
* (meson) fix: correct typo missing .in in filename
* (meson) fix: use mate-submodules correctly
* (meson) chore: fix warnings for meson.build
* (meson) chore: pin meson version, add missing ATRIL_MIME_TYPES
* (meson) chore: reorganinze meson.build
* (meson) chore: add maintainer mode
* (meson) chore: remove unused intltool
* (meson) meson: make ps and epub optional backends
* (meson) Initial support for meson
* Fix .cbr mimetype
* Wayland: stop segfaults on some systems
* replace deprecated gtk_menu_tool_button_new_from_stock
* libview/ev-document-model.c remove one more deprecation warning
* replace ev_document_model_get_dual_page with
### atril 1.28.1
* Translations update
* Update CBR library to libarchive in README.md
* ci: fix travis build failures caused by recent travis changes
* Cleanup icons Makefile
* icons: Include higher resolution icons (#608)
### atril 1.28.0
* Translations update
### atril 1.27.1
* Translations update
* fix a incompatible pointer type warning for gcc14
* epub: Avoid crash when index list has extraneous entry
* epub: Prevent path traversal when extracting files
* comics: Use libarchive to unpack documents
* Fix build with libxml2 2.12
* fix typo in configure.ac
* replace deprecated gtk_image_menu_item_new_from_stock
* replace deprecated gtk-image-menu-item
* drop double ui files
* Remove compilation warnings and set 'always_show_image' Properties in the UI file
* fix warnings in id,it and tr translations
* Add epub to man page
* support webkit2 4.0 and 4.1
* use webkit2gtk-4.1
* epub: add fallback for malformed epub files in check_mime_type
### atril 1.27.0
* Translations update
* epub: Fix index loading for certain documents - look for epub:type instead of epub:id.
* ci: drop -Wunused-parameter compiler cflag from debian build
* Fix implicit conversion changes signedness: 'gboolean' to 'guint'
* Fix the type for the signal identifier which is gulong
* Use GLib's new g_clear_signal_handler() function to simplify code
* Remove warnings about redefining gettext support macros
* Don't build the path to stock icons
* Use a blank line at most
* Accessibility: add button description
* Preserve compatibility with older GLib versions
### atril 1.26.0
* Translations update
* ev-window.c: only create a EvWebView if needed
* ev-sidebar-links: Optimize reverse link lookup for a page
* introspection: Fix bogus --library arguments.
* libdocument: remove _ev_g_mkdtemp function
* epub: declaration of ‘uL’ shadows a previous local [-Wshadow]
* ev-window: missing initializer for a field of ‘GtkActionEntry’
* epub: fix typo
### atril 1.25.1
* update translations
* Translations update
* update help
* caja extension: Update copyright year
* dvi: use glib i18n macros
@ -36,7 +126,7 @@
### atril 1.25.0
* sync with transifex
* Translations update
* [ci] fix release tarball on travis CI failed
* Re-enable highlight_find_results
* Use ENABLE_SYNCTEX in libdocument/Makefile.am
@ -65,13 +155,13 @@
### atril 1.24.0
* update translations
* Translations update
* thumbnailer: Fix memory leak
* Fix year 2038 issue with signed 32-bit integers
### atril 1.23.2
* update translations
* Translations update
* Fix atril.desktop file
* Fix memory leak ev_sidebar_thumbnails_document_changed_cb()
* pdf: Fix memory leak when adding new text annotations
@ -98,7 +188,7 @@
### atril 1.23.1
* update translations
* Translations update
* tx: sync with transifex
* Travis CI: 'cppcheck' with '-D__cplusplus'
* ev-view: Remove unused variables and assignment
@ -161,7 +251,7 @@
### atril 1.23.0
* update translations
* Translations update
* Remove trailing whitespaces
* test: get focus on frame
* let test7.py can works
@ -179,7 +269,7 @@
### atril 1.22.0
* update translations
* Translations update
* Add update-authors.pl script which helps to update atril.about
* Read authors (updated) from atril.about gresource
* Initialize Travis CI support
@ -199,7 +289,7 @@
### atril 1.21.1
* update translations
* Translations update
* Use make functions for HELP_LINGUAS
* comics: support application/vnd.rar MIME type
* shell: Save document to the same path it was opened from

View file

@ -16,7 +16,7 @@ Atril Optional Backend Libraries
==================================================
* [DjVuLibre](http://djvu.sourceforge.net/) for DjVu viewing
* [RAR](https://www.rarlab.com/) for viewing CBR comics
* [libarchive](https://www.libarchive.org/) for viewing CBR comics
* [libgxps](https://wiki.gnome.org/Projects/libgxps) for XPS documents

528
atril.pot

File diff suppressed because it is too large Load diff

View file

@ -12,12 +12,15 @@ backend_LTLIBRARIES = libcomicsdocument.la
libcomicsdocument_la_SOURCES = \
comics-document.c \
comics-document.h
comics-document.h \
ev-archive.c \
ev-archive.h
libcomicsdocument_la_LDFLAGS = $(BACKEND_LIBTOOL_FLAGS)
libcomicsdocument_la_LIBADD = \
$(top_builddir)/libdocument/libatrildocument.la \
$(BACKEND_LIBS) \
$(COMICS_LIBS) \
$(LIB_LIBS)
backend_in_files = comicsdocument.atril-backend.desktop.in

File diff suppressed because it is too large Load diff

View file

@ -16,9 +16,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __COMICS_DOCUMENT_H__
#define __COMICS_DOCUMENT_H__
#pragma once
#include "ev-macros.h"
#include "ev-document.h"
G_BEGIN_DECLS
@ -30,9 +30,8 @@ G_BEGIN_DECLS
typedef struct _ComicsDocument ComicsDocument;
GType comics_document_get_type (void) G_GNUC_CONST;
GType register_atril_backend (GTypeModule *module);
G_MODULE_EXPORT GType register_atril_backend (GTypeModule *module);
G_END_DECLS
#endif /* __COMICS_DOCUMENT_H__ */

323
backend/comics/ev-archive.c Normal file
View file

@ -0,0 +1,323 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
/*
* Copyright (C) 2017, Bastien Nocera <hadess@hadess.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "config.h"
#include "ev-archive.h"
#include <archive.h>
#include <archive_entry.h>
#include <gio/gio.h>
#define BUFFER_SIZE (64 * 1024)
struct _EvArchive {
GObject parent_instance;
EvArchiveType type;
/* libarchive */
struct archive *libar;
struct archive_entry *libar_entry;
};
G_DEFINE_TYPE(EvArchive, ev_archive, G_TYPE_OBJECT);
static void
ev_archive_finalize (GObject *object)
{
EvArchive *archive = EV_ARCHIVE (object);
switch (archive->type) {
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_clear_pointer (&archive->libar, archive_free);
break;
default:
break;
}
G_OBJECT_CLASS (ev_archive_parent_class)->finalize (object);
}
static void
ev_archive_class_init (EvArchiveClass *klass)
{
GObjectClass *object_class = (GObjectClass *) klass;
object_class->finalize = ev_archive_finalize;
}
EvArchive *
ev_archive_new (void)
{
return g_object_new (EV_TYPE_ARCHIVE, NULL);
}
static void
libarchive_set_archive_type (EvArchive *archive,
EvArchiveType archive_type)
{
archive->type = archive_type;
archive->libar = archive_read_new ();
if (archive_type == EV_ARCHIVE_TYPE_ZIP)
archive_read_support_format_zip (archive->libar);
else if (archive_type == EV_ARCHIVE_TYPE_7Z)
archive_read_support_format_7zip (archive->libar);
else if (archive_type == EV_ARCHIVE_TYPE_TAR)
archive_read_support_format_tar (archive->libar);
else if (archive_type == EV_ARCHIVE_TYPE_RAR) {
archive_read_support_format_rar (archive->libar);
archive_read_support_format_rar5 (archive->libar);
} else
g_assert_not_reached ();
}
EvArchiveType
ev_archive_get_archive_type (EvArchive *archive)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), EV_ARCHIVE_TYPE_NONE);
return archive->type;
}
gboolean
ev_archive_set_archive_type (EvArchive *archive,
EvArchiveType archive_type)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), FALSE);
g_return_val_if_fail (archive->type == EV_ARCHIVE_TYPE_NONE, FALSE);
switch (archive_type) {
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
libarchive_set_archive_type (archive, archive_type);
break;
default:
g_assert_not_reached ();
}
return TRUE;
}
gboolean
ev_archive_open_filename (EvArchive *archive,
const char *path,
GError **error)
{
int r;
g_return_val_if_fail (EV_IS_ARCHIVE (archive), FALSE);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, FALSE);
g_return_val_if_fail (path != NULL, FALSE);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
r = archive_read_open_filename (archive->libar, path, BUFFER_SIZE);
if (r != ARCHIVE_OK) {
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Error opening archive: %s", archive_error_string (archive->libar));
return FALSE;
}
return TRUE;
}
return FALSE;
}
static gboolean
libarchive_read_next_header (EvArchive *archive,
GError **error)
{
while (1) {
int r;
r = archive_read_next_header (archive->libar, &archive->libar_entry);
if (r != ARCHIVE_OK) {
if (r != ARCHIVE_EOF)
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Error reading archive: %s", archive_error_string (archive->libar));
return FALSE;
}
if (archive_entry_filetype (archive->libar_entry) != AE_IFREG) {
g_debug ("Skipping '%s' as it's not a regular file",
archive_entry_pathname (archive->libar_entry));
continue;
}
g_debug ("At header for file '%s'", archive_entry_pathname (archive->libar_entry));
break;
}
return TRUE;
}
gboolean
ev_archive_read_next_header (EvArchive *archive,
GError **error)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), FALSE);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, FALSE);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
return libarchive_read_next_header (archive, error);
}
return FALSE;
}
gboolean
ev_archive_at_entry (EvArchive *archive)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), FALSE);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, FALSE);
return (archive->libar_entry != NULL);
}
const char *
ev_archive_get_entry_pathname (EvArchive *archive)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), NULL);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, NULL);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_return_val_if_fail (archive->libar_entry != NULL, NULL);
return archive_entry_pathname (archive->libar_entry);
}
return NULL;
}
gint64
ev_archive_get_entry_size (EvArchive *archive)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), -1);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, -1);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_return_val_if_fail (archive->libar_entry != NULL, -1);
return archive_entry_size (archive->libar_entry);
}
return -1;
}
gboolean
ev_archive_get_entry_is_encrypted (EvArchive *archive)
{
g_return_val_if_fail (EV_IS_ARCHIVE (archive), FALSE);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, FALSE);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_return_val_if_fail (archive->libar_entry != NULL, -1);
return archive_entry_is_encrypted (archive->libar_entry);
}
return FALSE;
}
gssize
ev_archive_read_data (EvArchive *archive,
void *buf,
gsize count,
GError **error)
{
gssize r = -1;
g_return_val_if_fail (EV_IS_ARCHIVE (archive), -1);
g_return_val_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE, -1);
switch (archive->type) {
case EV_ARCHIVE_TYPE_NONE:
g_assert_not_reached ();
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_return_val_if_fail (archive->libar_entry != NULL, -1);
r = archive_read_data (archive->libar, buf, count);
if (r < 0) {
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
"Failed to decompress data: %s", archive_error_string (archive->libar));
}
break;
}
return r;
}
void
ev_archive_reset (EvArchive *archive)
{
g_return_if_fail (EV_IS_ARCHIVE (archive));
g_return_if_fail (archive->type != EV_ARCHIVE_TYPE_NONE);
switch (archive->type) {
case EV_ARCHIVE_TYPE_RAR:
case EV_ARCHIVE_TYPE_ZIP:
case EV_ARCHIVE_TYPE_7Z:
case EV_ARCHIVE_TYPE_TAR:
g_clear_pointer (&archive->libar, archive_free);
libarchive_set_archive_type (archive, archive->type);
archive->libar_entry = NULL;
break;
default:
g_assert_not_reached ();
}
}
static void
ev_archive_init (EvArchive *archive)
{
}

View file

@ -0,0 +1,56 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; c-indent-level: 8 -*- */
/*
* Copyright (C) 2017, Bastien Nocera <hadess@hadess.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#pragma once
#include <glib-object.h>
G_BEGIN_DECLS
#define EV_TYPE_ARCHIVE ev_archive_get_type ()
G_DECLARE_FINAL_TYPE (EvArchive, ev_archive, EV, ARCHIVE, GObject)
typedef enum {
EV_ARCHIVE_TYPE_NONE = 0,
EV_ARCHIVE_TYPE_RAR,
EV_ARCHIVE_TYPE_ZIP,
EV_ARCHIVE_TYPE_7Z,
EV_ARCHIVE_TYPE_TAR
} EvArchiveType;
EvArchive *ev_archive_new (void);
gboolean ev_archive_set_archive_type (EvArchive *archive,
EvArchiveType archive_type);
EvArchiveType ev_archive_get_archive_type (EvArchive *archive);
gboolean ev_archive_open_filename (EvArchive *archive,
const char *path,
GError **error);
gboolean ev_archive_read_next_header (EvArchive *archive,
GError **error);
gboolean ev_archive_at_entry (EvArchive *archive);
const char *ev_archive_get_entry_pathname (EvArchive *archive);
gint64 ev_archive_get_entry_size (EvArchive *archive);
gboolean ev_archive_get_entry_is_encrypted (EvArchive *archive);
gssize ev_archive_read_data (EvArchive *archive,
void *buf,
gsize count,
GError **error);
void ev_archive_reset (EvArchive *archive);
G_END_DECLS

View file

@ -0,0 +1,49 @@
backend_desktop_conf = configuration_data()
backend_desktop_conf.set('COMICS_MIME_TYPES', comic_mimetypes)
backend_desktop = configure_file(
input: 'comicsdocument.atril-backend.in',
output: 'comicsdocument.atril-backend',
configuration: backend_desktop_conf,
install: true,
install_dir: backendsdir,
)
comics_sources = files(
'comics-document.c',
'ev-archive.c',
)
comics_deps = [
cairo,
glib,
gtk,
libarchive_dep,
]
shared_module(
'comicsdocument',
comics_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: comics_deps,
install: true,
install_dir: backendsdir
)
test_name = 'test-ev-archive'
test_sources = files(
'ev-archive.c',
'test-ev-archive.c',
)
executable(
test_name,
test_sources,
include_directories: include_dirs,
dependencies: comics_deps,
)

View file

@ -66,7 +66,6 @@ EV_BACKEND_REGISTER_WITH_CODE (DjvuDocument, djvu_document,
EV_BACKEND_IMPLEMENT_INTERFACE (EV_TYPE_SELECTION, djvu_selection_iface_init);
});
#define EV_DJVU_ERROR ev_djvu_error_quark ()
static GQuark
@ -256,7 +255,6 @@ djvu_document_load (EvDocument *document,
return TRUE;
}
static gboolean
djvu_document_save (EvDocument *document,
const char *uri,
@ -676,7 +674,6 @@ djvu_document_find_find_text (EvDocumentFind *document,
r->y2 = height - tmp * SCALE_FACTOR;
}
return matches;
}

View file

@ -181,7 +181,6 @@ build_tree (const DjvuDocument *djvu_document,
if (!string_from_miniexp (miniexp_car (iter), &title)) goto unknown_entry;
if (!string_from_miniexp (miniexp_cadr (iter), &link_dest)) goto unknown_entry;
if (!g_utf8_validate (title, -1, NULL)) {
utf8_title = str_to_utf8 (title);
title_markup = g_markup_escape_text (utf8_title, -1);
@ -342,7 +341,6 @@ get_djvu_hyperlink_mapping (DjvuDocument *djvu_document,
return NULL;
}
gboolean
djvu_links_has_document_links (EvDocumentLinks *document_links)
{

View file

@ -23,7 +23,6 @@
#include <libdjvu/miniexp.h>
#include "djvu-text-page.h"
/**
* djvu_text_page_selection_process:
* @page: #DjvuTextPage instance
@ -117,7 +116,6 @@ djvu_text_page_limits_process (DjvuTextPage *page,
}
}
static void
djvu_text_page_limits (DjvuTextPage *page,
miniexp_t p,
@ -404,7 +402,6 @@ djvu_text_page_search (DjvuTextPage *page,
g_free (search_text);
}
/**
* djvu_text_page_prepare_search:
* @page: #DjvuTextPage instance

View file

@ -25,7 +25,6 @@
#include <glib.h>
#include <libdjvu/miniexp.h>
typedef struct _DjvuTextPage DjvuTextPage;
typedef struct _DjvuTextLink DjvuTextLink;

36
backend/djvu/meson.build Normal file
View file

@ -0,0 +1,36 @@
djvu_sources = [
'djvu-document.c',
'djvu-document.h',
'djvu-document-private.h',
'djvu-links.c',
'djvu-links.h',
'djvu-text-page.c',
'djvu-text-page.h',
]
djvu_deps = [
cairo,
djvu,
glib,
gtk
]
shared_module(
'djvudocument',
djvu_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: djvu_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'djvudocument.atril-backend.desktop.in',
output: 'djvudocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -110,7 +110,6 @@ dvi_document_load (EvDocument *document,
mdvi_cairo_device_init (&dvi_document->context->device);
dvi_document->base_width = dvi_document->context->dvi_page_w * dvi_document->context->params.conv
+ 2 * unit2pix(dvi_document->params->dpi, MDVI_HMARGIN) / dvi_document->params->hshrink;
@ -123,7 +122,6 @@ dvi_document_load (EvDocument *document,
return TRUE;
}
static gboolean
dvi_document_save (EvDocument *document,
const char *uri,

View file

@ -54,4 +54,3 @@ void mdvi_register_fonts (void)
return;
}

View file

@ -81,13 +81,10 @@
#define MATCH(A,B) (strncmp((A),(B), MAX_NAME) == 0)
/*************************** GLOBALS ***********************/
static char *ident = NULL; /* storage buffer for keywords */
/* "shorts" for fast case statement
* The values of each of these enumerated items correspond to an entry in the
* table of strings defined below. Therefore, if you add a new string as
@ -175,7 +172,6 @@ static char *token(FILE *stream)
} /* token */
/*************************** linetoken *************************/
/* "linetoken" will get read all tokens until the EOL character from
@ -203,7 +199,6 @@ static char *linetoken(FILE *stream)
} /* linetoken */
/*************************** recognize *************************/
/* This function tries to match a string to a known list of
@ -234,7 +229,6 @@ static enum parseKey recognize(char *ident)
} /* recognize */
/************************* parseGlobals *****************************/
/* This function is called by "parseFile". It will parse the AFM File
@ -401,8 +395,6 @@ static BOOL parseGlobals(FILE *fp, GlobalFontInfo *gfi)
} /* parseGlobals */
#if 0 /* this function does not seem to be used anywhere */
/************************* initializeArray ************************/
@ -584,7 +576,6 @@ static int parseCharWidths(FILE *fp, int *cwi)
} /* parseCharWidths */
/************************* parseCharMetrics ************************/
/* This function is called by parseFile if the caller of parseFile
@ -694,8 +685,6 @@ static int parseCharMetrics(FILE *fp, FontInfo *fi)
} /* parseCharMetrics */
/************************* parseTrackKernData ***********************/
/* This function is called by "parseFile". It will parse the AFM File
@ -797,7 +786,6 @@ static int parseTrackKernData(FILE *fp, FontInfo *fi)
} /* parseTrackKernData */
/************************* parsePairKernData ************************/
/* This function is called by "parseFile". It will parse the AFM File
@ -918,7 +906,6 @@ static int parsePairKernData(FILE *fp, FontInfo *fi)
} /* parsePairKernData */
/************************* parseCompCharData **************************/
/* This function is called by "parseFile". It will parse the AFM File
@ -1043,12 +1030,8 @@ static int parseCompCharData(FILE *fp, FontInfo *fi)
} /* parseCompCharData */
/*************************** 'PUBLIC' FUNCTION ********************/
/*************************** parseFile *****************************/
/* parseFile is the only 'public' procedure available. It is called
@ -1078,7 +1061,6 @@ extern int afm_parse_file(FILE *fp, FontInfo **fi, FLAGS flags)
register char *keyword; /* used to store a token */
/* storage data for the global variable ident */
ident = (char *) calloc(MAX_NAME, sizeof(char));
if (ident == NULL) {error = storageProblem; return(error);}

View file

@ -117,7 +117,6 @@ static Uchar bit_swap[] = {
0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
};
/*
* next we have three bitmap functions to convert bitmaps in LSB bit order
* with 8, 16 and 32 bits per unit, to our internal format. The differences
@ -192,7 +191,6 @@ BITMAP *bitmap_convert_msb8(Uchar *data, int w, int h, int stride)
return bm;
}
BITMAP *bitmap_copy(BITMAP *bm)
{
BITMAP *nb = bitmap_alloc(bm->width, bm->height);

View file

@ -79,7 +79,6 @@ static int cc_entries;
#define GAMMA_DIFF 0.005
/* create a color table */
Ulong *get_color_table(DviDevice *dev,
int nlevels, Ulong fg, Ulong bg, double gamma, int density)

View file

@ -16,7 +16,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef _COLOR_H_
#define _COLOR_H_

View file

@ -834,7 +834,6 @@ int mdvi_add_fontmap_file(const char *name, const char *fullpath)
return 0;
}
void mdvi_flush_encodings(void)
{
DviEncoding *enc;

View file

@ -21,7 +21,6 @@
/* simple hash tables for MDVI */
struct _DviHashBucket {
DviHashBucket *next;
DviHashKey key;

View file

@ -3,7 +3,6 @@
/* Hash tables */
typedef struct _DviHashBucket DviHashBucket;
typedef struct _DviHashTable DviHashTable;
@ -18,7 +17,6 @@ typedef Ulong (*DviHashFunc) __PROTO((DviHashKey key));
typedef int (*DviHashComp) __PROTO((DviHashKey key1, DviHashKey key2));
typedef void (*DviHashFree) __PROTO((DviHashKey key, void *data));
struct _DviHashTable {
DviHashBucket **buckets;
int nbucks;

View file

@ -414,7 +414,6 @@ struct _DviRange {
int step; /* step */
};
typedef void (*DviSpecialHandler)
__PROTO((DviContext *dvi, const char *prefix, const char *arg));
@ -600,7 +599,6 @@ extern int font_free_unused __PROTO((DviDevice *));
extern int mdvi_encode_font __PROTO((DviParams *, DviFont *));
/* font lookup functions */
extern int mdvi_register_font_type __PROTO((DviFontInfo *, int));
extern char **mdvi_list_font_class __PROTO((int));

View file

@ -0,0 +1,67 @@
mdvi_sources = [
'afmparse.c',
'afmparse.h',
'bitmap.c',
'bitmap.h',
'color.c',
'color.h',
'common.c',
'common.h',
'defaults.h',
'dviopcodes.h',
'dviread.c',
'files.c',
'font.c',
'fontmap.c',
'fontmap.h',
'fontsrch.c',
'gf.c',
'hash.c',
'hash.h',
'list.c',
'mdvi.h',
'pagesel.c',
'paper.c',
'paper.h',
'pk.c',
'private.h',
'setup.c',
'special.c',
'sp-epsf.c',
'sysdeps.h',
't1.c',
'tfm.c',
'tfmfile.c',
'tt.c',
'util.c',
'vf.c',
]
mdvi_c_args = [
'-DSIZEOF_INT=__SIZEOF_INT__',
'-DSIZEOF_LONG=__SIZEOF_LONG__',
'-DSIZEOF_SHORT=__SIZEOF_SHORT__',
'-DSIZEOF_VOID_P=__SIZEOF_POINTER__',
]
mdvi_deps = [
kpathsea,
]
if t1_enabled
mdvi_c_args += '-DWITH_TYPE1_FONTS'
mdvi_deps += t1lib
endif
libmdvi = static_library(
'mdvi',
mdvi_sources,
c_args: mdvi_c_args,
include_directories: include_dirs,
dependencies: mdvi_deps,
)
libmdvi_dep = declare_dependency(
include_directories: include_directories('.'),
link_with: libmdvi,
)

View file

@ -24,7 +24,6 @@ struct _DviPaperSpec {
const char *height;
};
extern int mdvi_get_paper_size __PROTO((const char *, DviPaper *));
extern DviPaperSpec* mdvi_get_paper_specs __PROTO((DviPaperClass));
extern void mdvi_free_paper_specs __PROTO((DviPaperSpec *));

View file

@ -212,7 +212,6 @@ void mdvi_flush_specials(void)
{
DviSpecial *sp, *list;
for(list = (DviSpecial *)specials.head; (sp = list); ) {
list = sp->next;
if(sp->prefix) mdvi_free(sp->prefix);

View file

@ -258,7 +258,6 @@ int tfm_load_file(const char *filename, TFMInfo *info)
/* allocate characters */
info->chars = xnalloc(TFMChar, size);
#ifdef WORD_LITTLE_ENDIAN
/* byte-swap the three arrays at once (they are consecutive in memory) */
swap_array((Uint32 *)widths, nw + nh + nd);

41
backend/dvi/meson.build Normal file
View file

@ -0,0 +1,41 @@
subdir('mdvi-lib')
dvi_sources = [
'dvi-document.c',
'dvi-document.h',
'cairo-device.c',
'cairo-device.h',
'fonts.c',
'fonts.h',
]
dvi_deps = [
cairo,
glib,
gtk,
libmdvi_dep,
math,
spectre,
mdvi_deps,
]
shared_module(
'dvidocument',
dvi_sources,
link_with: [libdocument],
link_whole: libmdvi,
c_args: mdvi_c_args,
include_directories: include_dirs,
dependencies: dvi_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'dvidocument.atril-backend.desktop.in',
output: 'dvidocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -31,9 +31,9 @@
#include <libxml/parser.h>
#include <libxml/xmlmemory.h>
#include <libxml/HTMLparser.h>
#include <config.h>
#include <glib/gi18n.h>
#include <config.h>
#include <glib/gi18n-lib.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
@ -224,7 +224,6 @@ epub_document_links_has_document_links(EvDocumentLinks *document_links)
return TRUE;
}
typedef struct _LinksCBStruct {
GtkTreeModel *model;
GtkTreeIter *parent;
@ -413,7 +412,6 @@ epub_remove_temporary_dir (gchar *path_name)
return (g_remove (path_name));
}
static gboolean
check_mime_type (const gchar* uri,
GError** error);
@ -625,45 +623,55 @@ xml_get_data_from_node(xmlNodePtr node,
static gboolean
check_mime_type(const gchar* uri,GError** error)
{
GError * err = NULL ;
const gchar* mimeFromFile = ev_file_get_mime_type(uri,FALSE,&err);
GError * err = NULL;
const gchar* mimeFromFile;
gchar* mimetypes[] = {"application/epub+zip","application/x-booki+zip"};
int typecount = 2;
if ( !mimeFromFile )
mimeFromFile = ev_file_get_mime_type(uri, FALSE, &err);
if (mimeFromFile)
{
if (err) {
g_propagate_error (error, err);
}
else {
g_set_error_literal (error,
EV_DOCUMENT_ERROR,
EV_DOCUMENT_ERROR_INVALID,
_("Unknown MIME Type"));
}
return FALSE;
}
else
{
int i=0;
for (i=0; i < typecount ;i++) {
if ( g_strcmp0(mimeFromFile, mimetypes[i]) == 0 ) {
const gchar* mimetypes[] = {"application/epub+zip", "application/x-booki+zip", NULL};
guint i;
for (i = 0; mimetypes[i]; i++) {
if (strcmp(mimeFromFile, mimetypes[i]) == 0)
return TRUE;
}
}
/*We didn't find a match*/
g_set_error_literal (error,
EV_DOCUMENT_ERROR,
EV_DOCUMENT_ERROR_INVALID,
_("Not an ePub document"));
/* fallback for malformed epub files */
if (strcmp (mimeFromFile, "application/zip") == 0)
{
mimeFromFile = ev_file_get_mime_type (uri, TRUE, &err);
if (mimeFromFile)
{
for (i = 0; i < G_N_ELEMENTS (mimetypes); i++) {
if (g_strcmp0(mimeFromFile, mimetypes[i]) == 0)
return TRUE;
}
return FALSE;
/*We didn't find a match*/
g_set_error_literal (error,
EV_DOCUMENT_ERROR,
EV_DOCUMENT_ERROR_INVALID,
_("Not an ePub document"));
return FALSE;
}
}
}
if (err)
g_propagate_error (error, err);
else
g_set_error_literal (error,
EV_DOCUMENT_ERROR,
EV_DOCUMENT_ERROR_INVALID,
_("Unknown MIME Type"));
return FALSE;
}
static gboolean
extract_one_file(EpubDocument* epub_document,GError ** error)
extract_one_file(EpubDocument* epub_document, GFile *tmp_gfile, GError ** error)
{
GFile * outfile ;
gsize writesize = 0;
@ -690,6 +698,20 @@ extract_one_file(EpubDocument* epub_document,GError ** error)
gfilepath = g_string_new(epub_document->tmp_archive_dir) ;
g_string_append_printf(gfilepath,"/%s",(gchar*)currentfilename);
outfile = g_file_new_for_path (gfilepath->str);
g_autofree gchar *rpath = g_file_get_relative_path (tmp_gfile, outfile);
if (rpath == NULL)
{
g_set_error_literal (error,
EV_DOCUMENT_ERROR,
EV_DOCUMENT_ERROR_INVALID,
_("epub file is invalid or corrupt"));
g_critical ("Invalid filename in Epub container - '%s'", (gchar *) currentfilename);
result = FALSE;
goto out;
}
/*if we encounter a directory, make a directory inside our temporary folder.*/
if (directory != NULL && *directory == '\0')
{
@ -717,7 +739,6 @@ extract_one_file(EpubDocument* epub_document,GError ** error)
g_string_free(dir_create,TRUE);
}
outfile = g_file_new_for_path(gfilepath->str);
outstream = g_file_create(outfile,G_FILE_CREATE_PRIVATE,NULL,error);
gpointer buffer = g_malloc0(512);
while ( (writesize = unzReadCurrentFile(epub_document->epubDocument,buffer,512) ) != 0 )
@ -730,10 +751,10 @@ extract_one_file(EpubDocument* epub_document,GError ** error)
}
g_free(buffer);
g_output_stream_close((GOutputStream*)outstream,NULL,error);
g_object_unref(outfile) ;
g_object_unref(outstream) ;
g_object_unref(outstream);
out:
g_object_unref(outfile);
unzCloseCurrentFile (epub_document->epubDocument) ;
g_string_free(gfilepath,TRUE);
g_free(currentfilename);
@ -745,6 +766,7 @@ extract_epub_from_container (const gchar* uri,
EpubDocument *epub_document,
GError ** error)
{
GFile *tmp_gfile = NULL;
GError *err = NULL;
epub_document->archivename = g_filename_from_uri(uri,NULL,error);
@ -806,9 +828,10 @@ extract_epub_from_container (const gchar* uri,
goto out;
}
tmp_gfile = g_file_new_for_path (epub_document->tmp_archive_dir);
while ( TRUE )
{
if ( extract_one_file(epub_document,&err) == FALSE )
if ( extract_one_file(epub_document, tmp_gfile, &err) == FALSE )
{
if (err) {
g_propagate_error (error, err);
@ -829,6 +852,7 @@ extract_epub_from_container (const gchar* uri,
}
out:
g_clear_object (&tmp_gfile);
unzClose(epub_document->epubDocument);
return result;
}
@ -1020,7 +1044,7 @@ setup_document_content_list(const gchar* content_uri, GError** error,gchar *docu
}
if ( xmlStrcmp(itemrefptr->name,(xmlChar*)"itemref") == 0)
{
contentListNode *newnode = g_malloc0(sizeof(newnode));
contentListNode *newnode = g_malloc0(sizeof(*newnode));
newnode->key = (gchar*)xml_get_data_from_node(itemrefptr,XML_ATTRIBUTE,(xmlChar*)"idref");
if ( newnode->key == NULL )
{
@ -1201,7 +1225,13 @@ setup_index_from_navfile(gchar *tocpath)
GList *index = NULL;
open_xml_document(tocpath);
set_xml_root_node(NULL);
xmlNodePtr nav = xml_get_pointer_to_node((xmlChar*)"nav",(xmlChar*)"id",(xmlChar*)"toc");
xmlNodePtr nav = xml_get_pointer_to_node((xmlChar*)"nav",(xmlChar*)"type",(xmlChar*)"toc");
if (nav == NULL) {
xml_free_doc();
return NULL;
}
xmlretval=NULL;
xml_parse_children_of_node(nav,(xmlChar*)"ol", NULL,NULL);
gchar *navdirend = g_strrstr(tocpath,"/");
@ -1546,7 +1576,6 @@ epub_document_check_add_night_sheet(EvDocument *document)
gchar *csspath = g_strdup_printf("%s/atrilnightstyle.css",epub_document->documentdir);
GFile *styles = g_file_new_for_path (csspath);
GOutputStream *outstream = (GOutputStream*)g_file_create(styles,G_FILE_CREATE_PRIVATE,NULL,NULL);
if ( g_output_stream_write((GOutputStream*)outstream,style,strlen(style),NULL,NULL) == -1 )
@ -1597,7 +1626,7 @@ page_set_function(linknode *Link, GList *contentList)
contentListNode *pagedata;
guint flag=0;
while (!flag) {
while (!flag && listiter) {
pagedata = listiter->data;
if (link_present_on_page(Link->pagelink, pagedata->value)) {
flag=1;
@ -1620,7 +1649,6 @@ epub_document_set_index_pages(GList *index,GList *contentList)
g_list_foreach(index,(GFunc)page_set_function,contentList);
}
static void
add_mathjax_script_node_to_file(gchar *filename, gchar *data)
{
@ -1768,7 +1796,6 @@ epub_document_init (EpubDocument *epub_document)
epub_document->docTitle = NULL;
}
static void
epub_document_finalize (GObject *object)
{
@ -1810,7 +1837,6 @@ epub_document_finalize (GObject *object)
G_OBJECT_CLASS (epub_document_parent_class)->finalize (object);
}
static void
epub_document_class_init (EpubDocumentClass *klass)
{

35
backend/epub/meson.build Normal file
View file

@ -0,0 +1,35 @@
subdir('minizip')
epub_sources = [
'epub-document.c',
'epub-document.h',
]
epub_deps = [
cairo,
glib,
gtk,
xml,
minizip_dep,
]
shared_module(
'epubdocument',
epub_sources,
link_with: [libdocument],
link_whole: minizip,
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: epub_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'epubdocument.atril-backend.desktop.in',
output: 'epubdocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -25,7 +25,6 @@
#define FSEEKO_FUNC(stream, offset, origin) fseeko64(stream, offset, origin)
#endif
#include "ioapi.h"
voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
@ -82,8 +81,6 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
}
static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
static uLong ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
static uLong ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
@ -128,7 +125,6 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
return file;
}
static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
{
uLong ret;
@ -150,7 +146,6 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
return ret;
}
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
{
ZPOS64_T ret;
@ -206,7 +201,6 @@ static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T
return ret;
}
static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
{
int ret;

View file

@ -110,7 +110,6 @@ typedef unsigned long long int ZPOS64_T;
extern "C" {
#endif
#define ZLIB_FILEFUNC_SEEK_CUR (1)
#define ZLIB_FILEFUNC_SEEK_END (2)
#define ZLIB_FILEFUNC_SEEK_SET (0)
@ -122,7 +121,6 @@ extern "C" {
#define ZLIB_FILEFUNC_MODE_EXISTING (4)
#define ZLIB_FILEFUNC_MODE_CREATE (8)
#ifndef ZCALLBACK
#if (defined(WIN32) || defined(_WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
#define ZCALLBACK CALLBACK
@ -131,9 +129,6 @@ extern "C" {
#endif
#endif
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
@ -143,7 +138,6 @@ typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stre
typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
/* here is the "old" 32 bits structure structure */
typedef struct zlib_filefunc_def_s
{
@ -185,7 +179,6 @@ typedef struct zlib_filefunc64_32_def_s
seek_file_func zseek32_file;
} zlib_filefunc64_32_def;
#define ZREAD64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zread_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
#define ZWRITE64(filefunc,filestream,buf,size) ((*((filefunc).zfile_func64.zwrite_file)) ((filefunc).zfile_func64.opaque,filestream,buf,size))
//#define ZTELL64(filefunc,filestream) ((*((filefunc).ztell64_file)) ((filefunc).opaque,filestream))

View file

@ -0,0 +1,21 @@
minizip_sources = [
'unzip.c',
'ioapi.c',
'unzip.h',
'ioapi.h',
]
minizip_deps = [
zlib
]
minizip = static_library(
'minizip',
minizip_sources,
dependencies: minizip_deps,
)
minizip_dep = declare_dependency(
include_directories: include_directories('.'),
link_with: minizip,
)

View file

@ -12,7 +12,6 @@
For more info read MiniZip_info.txt
------------------------------------------------------------------------------------
Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of
compatibility with older software. The following is from the original crypt.c.
@ -48,7 +47,6 @@
Copyright (C) 2007-2008 Even Rouault
Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again).
Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G
should only read the compressed/uncompressed size from the Zip64 format if
@ -63,7 +61,6 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -86,20 +83,17 @@
# include <errno.h>
#endif
#ifndef local
# define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */
#ifndef CASESENSITIVITYDEFAULT_NO
# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES)
# define CASESENSITIVITYDEFAULT_NO
# endif
#endif
#ifndef UNZ_BUFSIZE
#define UNZ_BUFSIZE (16384)
#endif
@ -118,14 +112,12 @@
#define SIZECENTRALDIRITEM (0x2e)
#define SIZEZIPLOCALHEADER (0x1e)
/* unz_file_info_interntal contain internal info about a file in zipfile*/
typedef struct unz_file_info64_internal_s
{
ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */
} unz_file_info64_internal;
/* file_in_zip_read_info_s contain internal information about a file in zipfile,
when reading and decompress it */
typedef struct
@ -156,7 +148,6 @@ typedef struct
int raw;
} file_in_zip64_read_info_s;
/* unz64_s contain internal information about the zipfile
*/
typedef struct
@ -189,7 +180,6 @@ typedef struct
# endif
} unz64_s;
#ifndef NOUNCRYPT
#include "crypt.h"
#endif
@ -200,7 +190,6 @@ typedef struct
IN assertion: the stream s has been successfully opened for reading.
*/
local int unz64local_getByte OF((
const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
@ -224,7 +213,6 @@ local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, v
}
}
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets
*/
@ -295,7 +283,6 @@ local int unz64local_getLong64 OF((
voidpf filestream,
ZPOS64_T *pX));
local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def,
voidpf filestream,
ZPOS64_T *pX)
@ -364,7 +351,6 @@ local int strcmpcasenosensitive_internal (const char* fileName1, const char* fil
}
}
#ifdef CASESENSITIVITYDEFAULT_NO
#define CASESENSITIVITYDEFAULTVALUE 2
#else
@ -418,7 +404,6 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
return 0;
uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
if (uMaxBack>uSizeFile)
@ -463,7 +448,6 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
return uPosFound;
}
/*
Locate the Central directory 64 of a zipfile (at the end, just before
the global comment)
@ -486,7 +470,6 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
return 0;
uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
if (uMaxBack>uSizeFile)
@ -605,8 +588,6 @@ local unzFile unzOpenInternal (const void *path,
us.z_filefunc = *pzlib_filefunc64_32_def;
us.is64bitOpenFunction = is64bitOpenFunction;
us.filestream = ZOPEN64(us.z_filefunc,
path,
ZLIB_FILEFUNC_MODE_READ |
@ -745,7 +726,6 @@ local unzFile unzOpenInternal (const void *path,
us.pfile_in_zip_read = NULL;
us.encrypted = 0;
s=(unz64_s*)ALLOC(sizeof(unz64_s));
if( s != NULL)
{
@ -755,7 +735,6 @@ local unzFile unzOpenInternal (const void *path,
return (unzFile)s;
}
extern unzFile ZEXPORT unzOpen2 (const char *path,
zlib_filefunc_def* pzlib_filefunc32_def)
{
@ -814,7 +793,6 @@ extern int ZEXPORT unzClose (unzFile file)
return UNZ_OK;
}
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
@ -897,7 +875,6 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
ZLIB_FILEFUNC_SEEK_SET)!=0)
err=UNZ_ERRNO;
/* we check the magic */
if (err==UNZ_OK)
{
@ -1002,7 +979,6 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
else
lSeek += file_info.size_file_extra;
if ((err==UNZ_OK) && (file_info.size_file_extra != 0))
{
uLong acc = 0;
@ -1096,7 +1072,6 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
else
lSeek+=file_info.size_file_comment;
if ((err==UNZ_OK) && (pfile_info!=NULL))
*pfile_info=file_info;
@ -1106,8 +1081,6 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
return err;
}
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
@ -1156,7 +1129,6 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
pfile_info->tmu_date = file_info64.tmu_date,
pfile_info->compressed_size = (uLong)file_info64.compressed_size;
pfile_info->uncompressed_size = (uLong)file_info64.uncompressed_size;
@ -1212,7 +1184,6 @@ extern int ZEXPORT unzGoToNextFile (unzFile file)
return err;
}
/*
Try locate the file szFileName in the zipfile.
For the iCaseSensitivity signification, see unzStringFileNameCompare
@ -1234,7 +1205,6 @@ extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCas
ZPOS64_T num_fileSaved;
ZPOS64_T pos_in_central_dirSaved;
if (file==NULL)
return UNZ_PARAMERROR;
@ -1278,7 +1248,6 @@ extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCas
return err;
}
/*
///////////////////////////////////////////
// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net)
@ -1391,7 +1360,6 @@ local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVa
s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0)
return UNZ_ERRNO;
if (err==UNZ_OK)
{
if (unz64local_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
@ -1594,7 +1562,6 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
pfile_in_zip_read_info->rest_read_uncompressed =
s->cur_file_info.uncompressed_size ;
pfile_in_zip_read_info->pos_in_zipfile =
s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
iSizeVar;
@ -1626,7 +1593,6 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
}
# endif
return UNZ_OK;
}
@ -1687,7 +1653,6 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
if (pfile_in_zip_read_info->read_buffer == NULL)
return UNZ_END_OF_LIST_OF_FILE;
if (len==0)
@ -1731,7 +1696,6 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
uReadThis)!=uReadThis)
return UNZ_ERRNO;
# ifndef NOUNCRYPT
if(s->encrypted)
{
@ -1743,7 +1707,6 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
}
# endif
pfile_in_zip_read_info->pos_in_zipfile += uReadThis;
pfile_in_zip_read_info->rest_read_compressed-=uReadThis;
@ -1874,7 +1837,6 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
return err;
}
/*
Give the current position in uncompressed data
*/
@ -1909,7 +1871,6 @@ extern ZPOS64_T ZEXPORT unztell64 (unzFile file)
return pfile_in_zip_read_info->total_out_64;
}
/*
return 1 if the end of file was reached, 0 elsewhere
*/
@ -1931,8 +1892,6 @@ extern int ZEXPORT unzeof (unzFile file)
return 0;
}
/*
Read extra field from the current file (opened by unzOpenCurrentFile)
This is the local-header version of the extra field (sometimes, there is
@ -2007,7 +1966,6 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) &&
(!pfile_in_zip_read_info->raw))
{
@ -2015,7 +1973,6 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
err=UNZ_CRCERROR;
}
TRYFREE(pfile_in_zip_read_info->read_buffer);
pfile_in_zip_read_info->read_buffer = NULL;
if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED)
@ -2025,7 +1982,6 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
BZ2_bzDecompressEnd(&pfile_in_zip_read_info->bstream);
#endif
pfile_in_zip_read_info->stream_initialised = 0;
TRYFREE(pfile_in_zip_read_info);
@ -2034,7 +1990,6 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
return err;
}
/*
Get the global comment string of the ZipFile, in the szComment buffer.
uSizeBuf is the size of the szComment buffer.

View file

@ -70,7 +70,6 @@ typedef unzFile__ *unzFile;
typedef voidp unzFile;
#endif
#define UNZ_OK (0)
#define UNZ_END_OF_LIST_OF_FILE (-100)
#define UNZ_ERRNO (Z_ERRNO)
@ -162,7 +161,6 @@ extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
(like 1 on Unix, 2 on Windows)
*/
extern unzFile ZEXPORT unzOpen OF((const char *path));
extern unzFile ZEXPORT unzOpen64 OF((const void *path));
/*
@ -180,7 +178,6 @@ extern unzFile ZEXPORT unzOpen64 OF((const void *path));
does not describe the reality
*/
extern unzFile ZEXPORT unzOpen2 OF((const char *path,
zlib_filefunc_def* pzlib_filefunc_def));
/*
@ -212,7 +209,6 @@ extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
No preparation of the structure is needed
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
char *szComment,
uLong uSizeBuf));
@ -222,7 +218,6 @@ extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
return the number of byte copied or an error code <0
*/
/***************************************************************************/
/* Unzip package allow you browse the directory of the zipfile */
@ -251,7 +246,6 @@ extern int ZEXPORT unzLocateFile OF((unzFile file,
UNZ_END_OF_LIST_OF_FILE if the file is not found
*/
/* ****************************************** */
/* Ryan supplied functions */
/* unz_file_info contain information about a file in the zipfile */
@ -315,14 +309,12 @@ extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
(commentBufferSize is the size of the buffer)
*/
/** Addition for GDAL : START */
extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
/** Addition for GDAL : END */
/***************************************************************************/
/* for reading the content of the current zipfile, you can open it, read data
from it, and close it (you can close it before reading all the file)
@ -369,7 +361,6 @@ extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
but you CANNOT set method parameter as NULL
*/
extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
/*
Close the file in zip opened with unzOpenCurrentFile
@ -428,8 +419,6 @@ extern uLong ZEXPORT unzGetOffset (unzFile file);
extern int ZEXPORT unzSetOffset64 (unzFile file, ZPOS64_T pos);
extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
#ifdef __cplusplus
}
#endif

5
backend/meson.build Normal file
View file

@ -0,0 +1,5 @@
backendsdir = join_paths(prefix, libdir, meson.project_name(), binary_major_version, 'backends')
foreach sub : backend_subdirs
subdir(sub)
endforeach

View file

@ -34,7 +34,6 @@ GType pdf_document_get_type (void) G_GNUC_CONST;
G_MODULE_EXPORT GType register_atril_backend (GTypeModule *module);
G_END_DECLS
#endif /* __PDF_DOCUMENT_H__ */

30
backend/pdf/meson.build Normal file
View file

@ -0,0 +1,30 @@
pdf_sources = [
'ev-poppler.cc',
'ev-poppler.h'
]
pdf_deps = [
gtk,
xml,
poppler,
]
shared_module(
'pdfdocument',
pdf_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: pdf_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'pdfdocument.atril-backend.desktop.in',
output: 'pdfdocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -0,0 +1,30 @@
pixbuf_sources = [
'pixbuf-document.c',
'pixbuf-document.h'
]
pixbuf_deps = [
cairo,
glib,
gtk,
]
shared_module(
'pixbufdocument',
pixbuf_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: pixbuf_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'pixbuf.atril-backend.desktop.in',
output: 'pixbuf.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -201,7 +201,6 @@ pixbuf_document_document_thumbnails_iface_init (EvDocumentThumbnailsInterface *i
iface->get_dimensions = pixbuf_document_thumbnails_get_dimensions;
}
static void
pixbuf_document_init (PixbufDocument *pixbuf_document)
{

31
backend/ps/meson.build Normal file
View file

@ -0,0 +1,31 @@
ps_sources = [
'ev-spectre.c',
'ev-spectre.h'
]
ps_deps = [
cairo,
glib,
gtk,
spectre,
]
shared_module(
'psdocument',
ps_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: ps_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'psdocument.atril-backend.desktop.in',
output: 'psdocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

34
backend/tiff/meson.build Normal file
View file

@ -0,0 +1,34 @@
tiff_sources = [
'tiff-document.c',
'tiff-document.h',
'tiff2ps.c',
'tiff2ps.h',
]
tiff_deps = [
cairo,
glib,
gtk,
math,
tiff,
]
shared_module(
'tiffdocument',
tiff_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: tiff_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'tiffdocument.atril-backend.desktop.in',
output: 'tiffdocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -361,7 +361,6 @@ tiff_document_render_pixbuf (EvDocument *document,
if (width <= 0 || height <= 0)
return NULL;
if (width >= INT_MAX / 4)
/* overflow */
return NULL;

View file

@ -449,7 +449,6 @@ PlaceImage(TIFF2PSContext *ctx, double pagewidth, double pageheight,
return splitpage;
}
void
tiff2ps_process_page(TIFF2PSContext* ctx, TIFF* tif, double pw, double ph,
double lm, double bm, gboolean cnt)
@ -592,7 +591,6 @@ tiff2ps_process_page(TIFF2PSContext* ctx, TIFF* tif, double pw, double ph,
}
}
static char DuplexPreamble[] = "\
%%BeginFeature: *Duplex True\n\
systemdict begin\n\

31
backend/xps/meson.build Normal file
View file

@ -0,0 +1,31 @@
xps_sources = [
'xps-document.c',
'xps-document.h',
]
xps_deps = [
cairo,
glib,
gtk,
xps,
]
shared_module(
'xpsdocument',
xps_sources,
link_with: [libdocument],
link_args: ['-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now'],
include_directories: include_dirs,
dependencies: xps_deps,
install: true,
install_dir: backendsdir,
)
i18n.merge_file(
input: 'xpsdocument.atril-backend.desktop.in',
output: 'xpsdocument.atril-backend',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: backendsdir,
)

View file

@ -176,7 +176,6 @@ xps_document_get_info (EvDocument *document)
EV_DOCUMENT_INFO_N_PAGES |
EV_DOCUMENT_INFO_PAPER_SIZE;
if (gxps_document_get_n_pages (xps->doc) > 0) {
ev_document_get_page_size (document, 0,
&(info->paper_width),
@ -483,7 +482,6 @@ xps_document_document_links_iface_init (EvDocumentLinksInterface *iface)
iface->find_link_page = xps_document_links_find_link_page;
}
/* EvDocumentPrint */
static void
xps_document_print_print_page (EvDocumentPrint *document,

View file

@ -3,8 +3,8 @@
# *****************************************************************************
m4_define([ev_major_version], [1])
m4_define([ev_minor_version], [25])
m4_define([ev_micro_version], [1])
m4_define([ev_minor_version], [28])
m4_define([ev_micro_version], [2])
m4_define([ev_extra_version], [])
m4_define([ev_version], [ev_major_version.ev_minor_version.ev_micro_version()ev_extra_version])
@ -91,8 +91,9 @@ GLIB_GSETTINGS
dnl Specify required versions of dependencies
CAIRO_REQUIRED=1.14.0
GLIB_REQUIRED=2.62.0
GLIB_REQUIRED=2.54.0
GTK_REQUIRED=3.22.0
MATE_DESKTOP_REQUIRED=1.27.1
WEBKIT_REQUIRED=2.6.0
LIBSECRET_REQUIRED=0.5
LIBXML_REQUIRED=2.5.0
@ -119,7 +120,7 @@ PKG_CHECK_MODULES(BACKEND, cairo >= $CAIRO_REQUIRED gtk+-3.0 >= $GTK_REQUIRED)
PKG_CHECK_MODULES(FRONTEND_CORE, gtk+-3.0 >= $GTK_REQUIRED gthread-2.0 gio-2.0 >= $GLIB_REQUIRED)
PKG_CHECK_MODULES(GMODULE, gmodule-2.0 >= $GLIB_REQUIRED)
PKG_CHECK_MODULES([SHELL_CORE],[libxml-2.0 >= $LIBXML_REQUIRED gtk+-3.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gthread-2.0 x11])
PKG_CHECK_MODULES([SHELL_CORE],[libxml-2.0 >= $LIBXML_REQUIRED gtk+-3.0 >= $GTK_REQUIRED gio-2.0 >= $GLIB_REQUIRED gthread-2.0 x11 mate-desktop-2.0 >= $MATE_DESKTOP_REQUIRED])
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
@ -580,8 +581,11 @@ AC_ARG_ENABLE(comics,
[enable_comics=$enableval],
[enable_comics=yes])
COMICS_DEPS="libarchive"
if test "x$enable_comics" = "xyes"; then
AC_DEFINE([ENABLE_COMICS], [1], [Enable support for comics.])
PKG_CHECK_MODULES([COMICS], [$COMICS_DEPS])
AC_SUBST(COMICS_LIBS)
fi
AM_CONDITIONAL(ENABLE_COMICS, test x$enable_comics = xyes)
@ -622,7 +626,13 @@ AC_ARG_ENABLE(epub,
have_webkit="no"
if test "x$enable_epub" = "xyes"; then
PKG_CHECK_MODULES(EPUB, webkit2gtk-4.0 >= $WEBKIT_REQUIRED \
dnl select the available WebKit2Gtk4 version, with a preference towards 4.1
webkit_pkg=webkit2gtk-4.1
PKG_CHECK_EXISTS([$webkit_pkg >= $WEBKIT_REQUIRED], [],
[PKG_CHECK_EXISTS([webkit2gtk-4.0 >= $WEBKIT_REQUIRED],
[webkit_pkg=webkit2gtk-4.0])])
PKG_CHECK_MODULES(EPUB, $webkit_pkg >= $WEBKIT_REQUIRED \
libxml-2.0 >= $LIBXML_REQUIRED zlib,have_webkit=yes,have_webkit=no)
if test "x$have_webkit" = "xyes"; then
@ -654,7 +664,7 @@ if test "x$enable_tiff" = "xyes"; then
ATRIL_MIME_TYPES="${ATRIL_MIME_TYPES}image/tiff;"
fi
if test "x$enable_comics" = "xyes"; then
ATRIL_MIME_TYPES="${ATRIL_MIME_TYPES}application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;application/vnd.comicbook+zip;application/vnd-comicbook.rar;"
ATRIL_MIME_TYPES="${ATRIL_MIME_TYPES}application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;application/vnd.comicbook+zip;application/vnd.comicbook-rar;"
fi
if test "x$enable_pixbuf" = "xyes"; then
ATRIL_MIME_TYPES="${ATRIL_MIME_TYPES}image/*;"
@ -732,28 +742,6 @@ data/atril.appdata.xml.in
data/atril.desktop.in
data/Makefile
data/icons/Makefile
data/icons/16x16/Makefile
data/icons/16x16/apps/Makefile
data/icons/16x16/actions/Makefile
data/icons/16x16/mimetypes/Makefile
data/icons/22x22/Makefile
data/icons/22x22/apps/Makefile
data/icons/22x22/actions/Makefile
data/icons/22x22/mimetypes/Makefile
data/icons/24x24/Makefile
data/icons/24x24/apps/Makefile
data/icons/24x24/actions/Makefile
data/icons/24x24/mimetypes/Makefile
data/icons/32x32/Makefile
data/icons/32x32/actions/Makefile
data/icons/32x32/mimetypes/Makefile
data/icons/48x48/Makefile
data/icons/48x48/apps/Makefile
data/icons/48x48/actions/Makefile
data/icons/scalable/Makefile
data/icons/scalable/apps/Makefile
data/icons/scalable/actions/Makefile
data/icons/scalable/mimetypes/Makefile
help/Makefile
help/reference/Makefile
help/reference/libdocument/Makefile

View file

@ -541,7 +541,6 @@ configure_item_cursor (GtkToolItem *item,
}
}
static void
configure_item_tooltip (GtkToolItem *item)
{
@ -557,7 +556,6 @@ configure_item_tooltip (GtkToolItem *item)
}
}
static void
connect_widget_signals (GtkWidget *proxy, EggEditableToolbar *etoolbar)
{

View file

@ -36,7 +36,6 @@ static const GtkTargetEntry source_drag_types[] = {
{EGG_TOOLBAR_ITEM_TYPE, GTK_TARGET_SAME_APP, 0},
};
static void egg_toolbar_editor_finalize (GObject *object);
static void update_editor_sheet (EggToolbarEditor *editor);
@ -150,6 +149,11 @@ egg_toolbar_editor_disconnect_model (EggToolbarEditor *t)
{
handler = priv->sig_handlers[i];
#if GLIB_CHECK_VERSION(2,62,0)
if ((handler == 0) || !g_signal_handler_is_connected (model, handler))
continue;
g_clear_signal_handler (&handler, model);
#else
if (handler != 0)
{
if (g_signal_handler_is_connected (model, handler))
@ -159,6 +163,7 @@ egg_toolbar_editor_disconnect_model (EggToolbarEditor *t)
priv->sig_handlers[i] = 0;
}
#endif
}
}

View file

@ -34,7 +34,6 @@ typedef struct EggToolbarEditorClass EggToolbarEditorClass;
#define EGG_IS_TOOLBAR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TOOLBAR_EDITOR))
#define EGG_TOOLBAR_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorClass))
typedef struct EggToolbarEditor EggToolbarEditor;
typedef struct EggToolbarEditorPrivate EggToolbarEditorPrivate;
@ -51,7 +50,6 @@ struct EggToolbarEditorClass
GtkBoxClass parent_class;
};
GType egg_toolbar_editor_get_type (void);
GtkWidget *egg_toolbar_editor_new (GtkUIManager *manager,
EggToolbarsModel *model);

View file

@ -27,7 +27,9 @@
#include <unistd.h>
#include <string.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/xmlsave.h>
#include <gdk/gdk.h>
static void egg_toolbars_model_finalize (GObject *object);
@ -213,7 +215,6 @@ is_unique (EggToolbarsModel *model,
EggToolbarsItem *idata2;
GNode *toolbar, *item;
for(toolbar = g_node_first_child (model->priv->toolbars);
toolbar != NULL; toolbar = g_node_next_sibling (toolbar))
{
@ -330,7 +331,6 @@ egg_toolbars_model_set_flags (EggToolbarsModel *model,
0, toolbar_position);
}
char *
egg_toolbars_model_get_data (EggToolbarsModel *model,
GdkAtom type,

View file

@ -0,0 +1,98 @@
glib_genmarshal = find_program('glib-genmarshal')
glib_mkenums = find_program('glib-mkenums')
eggsources = [
'egg-editable-toolbar.c',
'egg-toolbars-model.c',
'egg-toolbar-editor.c'
]
eggheaders = [
'egg-editable-toolbar.h',
'egg-toolbars-model.h',
'egg-toolbar-editor.h'
]
noinst_headers = [
'eggmarshalers.h'
]
eggmarshalers_h = custom_target('eggmarshalers.h',
output: 'eggmarshalers.h',
input: 'eggmarshalers.list',
command: [
glib_genmarshal,
'--prefix=_egg_marshal',
'@INPUT@',
'--header'
],
capture: true
)
eggmarshalers_c = custom_target('eggmarshalers.c',
output: 'eggmarshalers.c',
input: 'eggmarshalers.list',
command: [
glib_genmarshal,
'--prefix=_egg_marshal',
'@INPUT@',
'--body',
'--prototypes'
],
capture: true
)
eggtypebuiltins_h = custom_target('eggtypebuiltins.h',
output: 'eggtypebuiltins.h',
input: eggheaders,
command: [
glib_mkenums,
'--fhead', '#ifndef __EGGTYPEBUILTINS_H__\n#define __EGGTYPEBUILTINS_H__ 1\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n\n',
'--ftail', 'G_END_DECLS\n\n#endif /* __EGGTYPEBUILTINS_H__ */\n',
'--fprod', '\n/* --- @filename@ --- */',
'--eprod', '#define EGG_TYPE_@ENUMSHORT@ @enum_name@_get_type()\nGType @enum_name@_get_type (void);\n',
'@INPUT@'
],
capture: true
)
eggtypebuiltins_c = custom_target('eggtypebuiltins.c',
output: 'eggtypebuiltins.c',
input: eggheaders,
command: [
glib_mkenums,
'--fhead', '#include <config.h>\n\n#include "eggtypebuiltins.h"\n\n',
'--fprod', '\n/* enumerations from "@filename@" */\n#include "@filename@"',
'--vhead', 'static const G@Type@Value _@enum_name@_values[] = {',
'--vprod', ' { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
'--vtail', ' { 0, NULL, NULL }\n};\n\nGType\n@enum_name@_get_type (void)\n{\n static GType type = 0;\n\n if (G_UNLIKELY (type == 0))\n type = g_@type@_register_static ("@EnumName@", _@enum_name@_values);\n\n return type;\n}\n\n',
'@INPUT@'
],
capture: true
)
built_sources = [
eggmarshalers_c,
eggmarshalers_h,
eggtypebuiltins_c,
eggtypebuiltins_h
]
# Define the library
libtoolbareditor = static_library('toolbareditor',
sources: [
eggsources,
eggheaders,
built_sources
],
c_args: [
'-DCURSOR_DIR="' + join_paths(get_option('prefix'), get_option('datadir'), meson.project_name()) + '"',
],
include_directories: include_dirs,
dependencies: [shell_core_deps, xml]
)
libtoolbareditor_dep = declare_dependency(
link_with: libtoolbareditor,
include_directories: include_dirs
)

View file

@ -34,7 +34,7 @@ struct _EphyZoomControlPrivate
float zoom;
float min_zoom;
float max_zoom;
guint handler_id;
gulong handler_id;
};
enum

View file

@ -54,7 +54,6 @@ ephy_zoom_get_zoom_level_index (float level)
return n_zoom_levels - 1;
}
float
ephy_zoom_get_changed_zoom_level (float level, gint steps)
{

View file

@ -0,0 +1,28 @@
zoom_sources = [
'ephy-zoom-action.h',
'ephy-zoom-action.c',
'ephy-zoom-control.c',
'ephy-zoom-control.h',
'ephy-zoom.c',
'ephy-zoom.h',
]
zoom_deps = [
config_h,
glib,
gtk,
math
]
libephyzoom = static_library(
'ephyzoom',
zoom_sources,
include_directories: include_root,
dependencies: zoom_deps,
)
libephyzoom_dep = declare_dependency(
link_with: libephyzoom,
include_directories: [include_root, include_directories('.')],
dependencies: zoom_deps,
)

View file

@ -1,41 +0,0 @@
<?xml version="1.0"?>
<toolbars version="1.0">
<available>
<toolitem name="FileOpenRecent"/>
<toolitem name="FilePrint"/>
<toolitem name="FileSaveAs"/>
<toolitem name="FileSendTo"/>
<toolitem name="ViewContinuous"/>
<toolitem name="ViewDual"/>
<toolitem name="ViewInvertedColors"/>
<toolitem name="ViewReload"/>
<toolitem name="ViewAutoscroll"/>
<toolitem name="ViewSidebar"/>
<toolitem name="ViewZoom"/>
<toolitem name="ViewZoomIn"/>
<toolitem name="ViewZoomOut"/>
<toolitem name="ViewZoomReset"/>
<toolitem name="ViewFitPage"/>
<toolitem name="ViewFitWidth"/>
<toolitem name="ViewFullscreen"/>
<toolitem name="ViewPresentation"/>
<toolitem name="GoPreviousPage"/>
<toolitem name="GoNextPage"/>
<toolitem name="GoFirstPage"/>
<toolitem name="GoLastPage"/>
<toolitem name="EditRotateLeft"/>
<toolitem name="EditRotateRight"/>
<toolitem name="EditSelectAll"/>
<toolitem name="EditFind"/>
<toolitem name="PageSelector"/>
<toolitem name="Navigation"/>
</available>
<toolbar name="DefaultToolBar">
<toolitem name="GoPreviousPage"/>
<toolitem name="GoNextPage"/>
<separator/>
<toolitem name="PageSelector"/>
<separator/>
<toolitem name="ViewZoom"/>
</toolbar>
</toolbars>

View file

@ -1,149 +0,0 @@
<ui>
<menubar name="MainMenu">
<menu name="FileMenu" action="File">
<menuitem name="FileOpenMenu" action="FileOpen"/>
<menuitem name="FileOpenCopyMenu" action="FileOpenCopy"/>
<menuitem name="FileSaveAsMenu" action="FileSaveAs"/>
<menuitem name="FileSendToMenu" action="FileSendTo"/>
<separator/>
<menuitem name="FilePrintMenu" action="FilePrint"/>
<separator/>
<menuitem name="FilePropertiesMenu" action="FileProperties"/>
<separator/>
<placeholder name="RecentFilesMenu"/>
<separator/>
<menuitem name="FileCloseWindowMenu" action="FileCloseWindow"/>
</menu>
<menu name="EditMenu" action="Edit">
<menuitem name="EditCopyMenu" action="EditCopy"/>
<separator/>
<menuitem name="EditSelectAllMenu" action="EditSelectAll"/>
<separator/>
<menuitem name="EditFindMenu" action="EditFind"/>
<menuitem name="EditFindNextMenu" action="EditFindNext"/>
<menuitem name="EditFindPreviousMenu" action="EditFindPrevious"/>
<separator/>
<menuitem name="EditRotateLeftMenu" action="EditRotateLeft"/>
<menuitem name="EditRotateRightMenu" action="EditRotateRight"/>
<separator/>
<menuitem name="EditToolbarMenu" action="EditToolbar"/>
<separator/>
<menuitem name="EditSaveSettingsMenu" action="EditSaveSettings"/>
</menu>
<menu name="ViewMenu" action="View">
<menuitem name="ViewToolbarMenu" action="ViewToolbar"/>
<menuitem name="ViewSidebarMenu" action="ViewSidebar"/>
<separator/>
<menuitem name="ViewFullscreenMenu" action="ViewFullscreen"/>
<menuitem name="ViewPresentationMenu" action="ViewPresentation"/>
<separator/>
<menuitem name="ViewContinuousMenu" action="ViewContinuous"/>
<menuitem name="ViewDualMenu" action="ViewDual"/>
<menuitem name="ViewDualOddLeftMenu" action="ViewDualOddLeft"/>
<separator/>
<menuitem name="ViewInvertedColors" action="ViewInvertedColors"/>
<separator/>
<menuitem name="ViewCaretNavigationMenu" action="ViewCaretNavigation"/>
<separator/>
<menuitem name="ViewZoomInMenu" action="ViewZoomIn"/>
<menuitem name="ViewZoomOutMenu" action="ViewZoomOut"/>
<menuitem name="ViewZoomResetMenu" action="ViewZoomReset"/>
<menuitem name="ViewFitPageMenu" action="ViewFitPage"/>
<menuitem name="ViewFitWidthMenu" action="ViewFitWidth"/>
<menuitem name="ViewExpandWindowMenu" action="ViewExpandWindow"/>
<separator/>
<menuitem name="ViewReload" action="ViewReload"/>
</menu>
<menu name="GoMenu" action="Go">
<menuitem name="GoPreviousPageMenu" action="GoPreviousPage"/>
<menuitem name="GoNextPageMenu" action="GoNextPage"/>
<separator/>
<menuitem name="GoFirstPageMenu" action="GoFirstPage"/>
<menuitem name="GoLastPageMenu" action="GoLastPage"/>
</menu>
<menu name="BookmarksMenu" action="Bookmarks">
<menuitem name="BookmarksAddMenu" action="BookmarksAdd"/>
<separator/>
<placeholder name="BookmarksItems"/>
</menu>
<menu name="HelpMenu" action="Help">
<menuitem name="HelpContentsMenu" action="HelpContents"/>
<menuitem name="HelpAboutMenu" action="HelpAbout"/>
</menu>
</menubar>
<popup name="DocumentPopup" action="DocumentPopupAction">
<menuitem name="OpenLink" action="OpenLink"/>
<menuitem name="CopyLinkAddress" action="CopyLinkAddress"/>
<menuitem name="GoLink" action="GoLink"/>
<menuitem name="OpenLinkNewWindow" action="OpenLinkNewWindow"/>
<separator/>
<menuitem name="GoPreviousPage" action="GoPreviousPage"/>
<menuitem name="GoNextPage" action="GoNextPage"/>
<menuitem name="ViewReload" action="ViewReload"/>
<menuitem name="ViewAutoscroll" action="ViewAutoscroll"/>
<separator/>
<menuitem name="EditCopy" action="EditCopy"/>
<menuitem name="EditSelectAllPopup" action="EditSelectAll"/>
<separator/>
<menuitem name="SaveImageAs" action="SaveImageAs"/>
<menuitem name="CopyImage" action="CopyImage"/>
<separator/>
<menuitem name="OpenAttachment" action="OpenAttachment"/>
<menuitem name="SaveAttachmentAs" action="SaveAttachmentAs"/>
<separator/>
<menuitem name="AnnotProperties" action="AnnotProperties"/>
<menuitem name="RemoveAnnot" action="RemoveAnnot"/>
</popup>
<popup name="AttachmentPopup" action="AttachmentPopupAction">
<menuitem name="OpenAttachment" action="OpenAttachment"/>
<separator/>
<menuitem name="SaveAttachmentAs" action="SaveAttachmentAs"/>
</popup>
<popup name="ToolbarPopup" action="ToolbarPopupAction">
<menuitem name="EditToolbarMenu" action="EditToolbar"/>
</popup>
<accelerator name="PageDownAccel" action="PageDown"/>
<accelerator name="PageUpAccel" action="PageUp"/>
<accelerator name="GoBackwardFastAccel" action="GoBackwardFast"/>
<accelerator name="GoForwardFastAccel" action="GoForwardFast"/>
<accelerator name="EscapeAccel" action="Escape"/>
<accelerator name="SlashAccel" action="Slash"/>
<accelerator name="F3Accel" action="F3"/>
<accelerator name="pAccel" action="p"/>
<accelerator name="nAccel" action="n"/>
<accelerator name="FocusPageSelectorAccel" action="FocusPageSelector"/>
<accelerator name="PlusAccel" action="Plus"/>
<accelerator name="MinusAccel" action="Minus"/>
<accelerator name="Equal" action="Equal"/>
<accelerator name="CtrlEqualAccel" action="CtrlEqual"/>
<accelerator name="KpPlusAccel" action="KpPlus"/>
<accelerator name="KpMinusAccel" action="KpMinus"/>
<accelerator name="CtrlKpPlusAccel" action="CtrlKpPlus"/>
<accelerator name="CtrlKpMinusAccel" action="CtrlKpMinus"/>
<accelerator name="CtrlKpZeroAccel" action="CtrlKpZero"/>
<accelerator name="CtrlInsertAccel" action="CtrlInsert" />
<accelerator name="FitPageAccel" action ="FitPage" />
<accelerator name="FitWidthAccel" action ="FitWidth" />
<accelerator name="F7Accel" action="F7" />
<toolbar name="FullscreenToolbar">
<toolitem name="GoPreviousPage" action="GoPreviousPage"/>
<toolitem name="GoNextPage" action="GoNextPage"/>
<separator/>
<toolitem name="PageSelector" action="PageSelector"/>
<separator/>
<toolitem name="ViewZoom" action="ViewZoom"/>
<separator expand="true"/>
<toolitem name="StartPresentation" action="StartPresentation"/>
<toolitem name="LeaveFullscreen" action="LeaveFullscreen"/>
</toolbar>
</ui>

View file

@ -1,5 +1,5 @@
.\" Man page for Atril
.TH ATRIL 1 "30 January 2014" "MATE Desktop Environment"
.TH ATRIL 1 "10 May 2023" "MATE Desktop Environment"
.\" Please adjust this date when revising the manpage.
.\"
.SH "NAME"
@ -7,7 +7,7 @@ Atril \- The MATE Document Viewer
.SH "SYNTAX"
.B atril [OPTIONS...] [FILES...]
.SH "DESCRIPTION"
Atril is the official Document Viewer of the MATE Desktop Environment, it is a simple multi-page document viewer. It can display and print PostScript (PS), Encapsulated PostScript (EPS), DJVU, DVI, XPS and Portable Document Format (PDF) files.
Atril is the official Document Viewer of the MATE Desktop Environment, it is a simple multi-page document viewer. It can display and print PostScript (PS), Encapsulated PostScript (EPS), DJVU, DVI, epub, XPS and Portable Document Format (PDF) files.
.TP
When supported by the document, it also allows searching for text, copying text to the clipboard, hypertext navigation, and table-of-contents bookmarks.
.TP

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -1,3 +0,0 @@
SUBDIRS = actions apps mimetypes
-include $(top_srcdir)/git.mk

View file

@ -1,27 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 16x16
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
view-page-continuous.png \
view-page-facing.png \
zoom.png \
zoom-fit-height.png \
zoom-fit-width.png \
object-rotate-left.png \
object-rotate-right.png
noinst_DATA = \
view-page-continuous.xcf \
view-page-facing.xcf \
zoom.svg \
zoom-fit-page.svg \
zoom-fit-width.svg
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(datadir)/icons/hicolor
size = 16x16
context = apps
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
atril.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 16x16
context = mimetypes
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
x-office-presentation.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,3 +0,0 @@
SUBDIRS = actions apps mimetypes
-include $(top_srcdir)/git.mk

View file

@ -1,28 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 22x22
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
eye.png \
object-rotate-left.png \
object-rotate-right.png \
view-page-continuous.png \
view-page-facing.png \
zoom.png \
zoom-fit-page.png \
zoom-fit-width.png
noinst_DATA = \
view-page-continuous.xcf \
view-page-facing.xcf \
zoom.svg \
zoom-fit-page.svg \
zoom-fit-width.svg
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(datadir)/icons/hicolor
size = 22x22
context = apps
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
atril.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 22x22
context = mimetypes
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
x-office-presentation.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,3 +0,0 @@
SUBDIRS = actions apps mimetypes
-include $(top_srcdir)/git.mk

View file

@ -1,23 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 24x24
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
stock_filters-invert.png \
view-page-continuous.png \
view-page-facing.png \
zoom.png \
zoom-fit-height.png \
zoom-fit-width.png \
object-rotate-left.png \
object-rotate-right.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(datadir)/icons/hicolor
size = 24x24
context = apps
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
atril.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 24x24
context = mimetypes
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
x-office-presentation.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,3 +0,0 @@
SUBDIRS = actions mimetypes
-include $(top_srcdir)/git.mk

View file

@ -1,19 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 32x32
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
object-rotate-left.png \
object-rotate-right.png \
view-page-continuous.png \
view-page-facing.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 32x32
context = mimetypes
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
x-office-presentation.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,4 +0,0 @@
SUBDIRS = actions apps
-include $(top_srcdir)/git.mk

View file

@ -1,20 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = 48x48
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
close.png \
view-page-continuous.png \
view-page-facing.png \
resize-se.png \
resize-sw.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(datadir)/icons/hicolor
size = 48x48
context = apps
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
atril.png
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -1,4 +1,66 @@
SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable
iconsdir = $(datadir)/icons/hicolor
pkgiconsdir = $(pkgdatadir)/icons/hicolor
nobase_dist_icons_DATA = \
16x16/apps/atril.png \
22x22/apps/atril.png \
24x24/apps/atril.png \
48x48/apps/atril.png \
64x64/apps/atril.png \
128x128/apps/atril.png \
scalable/apps/atril.svg
nobase_dist_pkgicons_DATA = \
16x16/actions/object-rotate-left.png \
16x16/actions/object-rotate-right.png \
16x16/actions/view-page-continuous.png \
16x16/actions/view-page-facing.png \
16x16/actions/zoom.png \
16x16/actions/zoom-fit-height.png \
16x16/actions/zoom-fit-width.png \
16x16/mimetypes/x-office-presentation.png \
22x22/actions/eye.png \
22x22/actions/object-rotate-left.png \
22x22/actions/object-rotate-right.png \
22x22/actions/view-page-continuous.png \
22x22/actions/view-page-facing.png \
22x22/actions/zoom.png \
22x22/actions/zoom-fit-page.png \
22x22/actions/zoom-fit-width.png \
22x22/mimetypes/x-office-presentation.png \
24x24/actions/object-rotate-left.png \
24x24/actions/object-rotate-right.png \
24x24/actions/stock_filters-invert.png \
24x24/actions/view-page-continuous.png \
24x24/actions/view-page-facing.png \
24x24/actions/zoom.png \
24x24/actions/zoom-fit-height.png \
24x24/actions/zoom-fit-width.png \
24x24/mimetypes/x-office-presentation.png \
32x32/actions/object-rotate-left.png \
32x32/actions/object-rotate-right.png \
32x32/actions/view-page-continuous.png \
32x32/actions/view-page-facing.png \
32x32/mimetypes/x-office-presentation.png \
48x48/actions/close.png \
48x48/actions/view-page-continuous.png \
48x48/actions/view-page-facing.png \
48x48/actions/resize-se.png \
48x48/actions/resize-sw.png \
scalable/actions/object-rotate-left.svg \
scalable/actions/object-rotate-right.svg \
scalable/mimetypes/x-office-presentation.svg
dist_noinst_DATA = \
16x16/actions/view-page-continuous.xcf \
16x16/actions/view-page-facing.xcf \
16x16/actions/zoom.svg \
16x16/actions/zoom-fit-page.svg \
16x16/actions/zoom-fit-width.svg \
22x22/actions/view-page-continuous.xcf \
22x22/actions/view-page-facing.xcf \
22x22/actions/zoom.svg \
22x22/actions/zoom-fit-page.svg \
22x22/actions/zoom-fit-width.svg
-include $(top_srcdir)/git.mk

73
data/icons/meson.build Normal file
View file

@ -0,0 +1,73 @@
icons = [
'16x16/actions/object-rotate-right.png',
'16x16/actions/zoom.png',
'16x16/actions/zoom-fit-width.png',
'16x16/actions/view-page-facing.png',
'16x16/actions/view-page-continuous.png',
'16x16/actions/object-rotate-left.png',
'16x16/actions/zoom-fit-height.png',
'16x16/mimetypes/x-office-presentation.png',
'22x22/actions/object-rotate-right.png',
'22x22/actions/zoom-fit-page.png',
'22x22/actions/zoom.png',
'22x22/actions/zoom-fit-width.png',
'22x22/actions/view-page-facing.png',
'22x22/actions/view-page-continuous.png',
'22x22/actions/object-rotate-left.png',
'22x22/actions/eye.png',
'22x22/mimetypes/x-office-presentation.png',
'24x24/actions/object-rotate-right.png',
'24x24/actions/stock_filters-invert.png',
'24x24/actions/zoom.png',
'24x24/actions/zoom-fit-width.png',
'24x24/actions/view-page-facing.png',
'24x24/actions/view-page-continuous.png',
'24x24/actions/object-rotate-left.png',
'24x24/actions/zoom-fit-height.png',
'24x24/mimetypes/x-office-presentation.png',
'32x32/actions/object-rotate-right.png',
'32x32/actions/view-page-facing.png',
'32x32/actions/view-page-continuous.png',
'32x32/actions/object-rotate-left.png',
'32x32/mimetypes/x-office-presentation.png',
'48x48/actions/resize-se.png',
'48x48/actions/resize-sw.png',
'48x48/actions/view-page-facing.png',
'48x48/actions/view-page-continuous.png',
'48x48/actions/close.png',
'scalable/actions/object-rotate-left.svg',
'scalable/actions/object-rotate-right.svg',
'scalable/mimetypes/x-office-presentation.svg',
]
foreach icon : icons
parts = icon.split('/')
size = parts[0]
context = parts[1]
filename = parts[2]
install_data(
icon,
install_dir: join_paths(datadir, meson.project_name(), 'icons', 'hicolor', size, context)
)
endforeach
app_icons = [
'16x16/apps/atril.png',
'22x22/apps/atril.png',
'24x24/apps/atril.png',
'48x48/apps/atril.png',
'scalable/apps/atril.svg',
]
foreach icon : app_icons
parts = icon.split('/')
size = parts[0]
context = parts[1]
filename = parts[2]
install_data(
icon,
install_dir: join_paths(datadir, 'icons', 'hicolor', size, context)
)
endforeach

View file

@ -1,3 +0,0 @@
SUBDIRS = actions apps mimetypes
-include $(top_srcdir)/git.mk

View file

@ -1,17 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = scalable
context = actions
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
object-rotate-left.svg \
object-rotate-right.svg
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(datadir)/icons/hicolor
size = scalable
context = apps
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
atril.svg
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

View file

@ -1,16 +0,0 @@
themedir = $(pkgdatadir)/icons/hicolor
size = scalable
context = mimetypes
iconsdir = $(themedir)/$(size)/$(context)
icons_DATA = \
x-office-presentation.svg
noinst_DATA =
EXTRA_DIST = \
$(icons_DATA) \
$(noinst_DATA)
-include $(top_srcdir)/git.mk

57
data/meson.build Normal file
View file

@ -0,0 +1,57 @@
subdir('icons')
data_dir = include_directories('.')
install_data(
'atril.1',
install_dir : join_paths(get_option('prefix'), get_option('mandir'), 'man1')
)
service_conf = configuration_data()
service_conf.set('libexecdir', join_paths(prefix, libexecdir))
configure_file(
input: 'org.mate.atril.Daemon.service.in',
output: 'org.mate.atril.Daemon.service',
configuration: service_conf,
install_dir: join_paths(datadir, 'dbus-1', 'services')
)
schema_file = install_data(
'org.mate.Atril.gschema.xml',
install_dir: join_paths(datadir, 'glib-2.0', 'schemas')
)
desktop_conf = configuration_data()
desktop_conf.set('VERSION', meson.project_version())
desktop_conf.set('ATRIL_MIME_TYPES', atril_mime_types)
desktop = configure_file(
input: 'atril.desktop.in.in',
output: 'atril.desktop.in',
configuration: desktop_conf,
)
i18n.merge_file(
input: desktop,
output: 'atril.desktop',
type: 'desktop',
po_dir: po_dir,
install: true,
install_dir: desktopdir,
)
appdata = i18n.merge_file(
input: 'atril.appdata.xml.in.in',
output: 'atril.appdata.xml',
type: 'xml',
po_dir: po_dir,
install: true,
install_dir: join_paths(datadir, 'metainfo'),
)
install_data(
'hand-open.png',
install_dir: join_paths(prefix, datadir, meson.project_name())
)

View file

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2021-03-29 20:47+0200\n"
"POT-Creation-Date: 2023-08-31 17:43+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more