├── .github ├── FUNDING.yml ├── dependabot.yml ├── issue_template.md └── workflows │ ├── archlinux.sh │ ├── builds.sh │ ├── builds.yml │ ├── debian.sh │ ├── fedora.sh │ ├── release.yml │ └── ubuntu.sh ├── .tx ├── config └── config_20221028215411.bak ├── AUTHORS ├── COPYING ├── ChangeLog ├── Makefile.am ├── NEWS ├── README ├── autogen.sh ├── configure.ac ├── cut-n-paste ├── Makefile.am ├── meson.build └── toolbar-editor │ ├── Makefile.am │ ├── egg-editable-toolbar.c │ ├── egg-editable-toolbar.h │ ├── egg-toolbar-editor.c │ ├── egg-toolbar-editor.h │ ├── egg-toolbars-model.c │ ├── egg-toolbars-model.h │ ├── eggmarshalers.list │ └── meson.build ├── data ├── Makefile.am ├── eom-image-properties-dialog.ui ├── eom-multiple-save-as-dialog.ui ├── eom-preferences-dialog.ui ├── eom-toolbar.xml ├── eom-ui.xml ├── eom.about ├── eom.appdata.xml.in.in ├── eom.css ├── eom.desktop.in.in ├── eom.pc.in ├── icons │ ├── 16x16 │ │ ├── actions │ │ │ ├── eom-image-collection.png │ │ │ ├── eom-plugin.png │ │ │ ├── eom-plugin.svg │ │ │ ├── slideshow-play.png │ │ │ └── slideshow-play.svg │ │ └── apps │ │ │ ├── eom.png │ │ │ └── eom.svg │ ├── 22x22 │ │ ├── actions │ │ │ ├── eom-image-collection.png │ │ │ ├── eom-plugin.png │ │ │ ├── eom-plugin.svg │ │ │ ├── slideshow-play.png │ │ │ └── slideshow-play.svg │ │ └── apps │ │ │ ├── eom.png │ │ │ └── eom.svg │ ├── 24x24 │ │ ├── actions │ │ │ ├── eom-image-collection.png │ │ │ └── slideshow-play.png │ │ └── apps │ │ │ └── eom.png │ ├── 32x32 │ │ ├── actions │ │ │ ├── eom-image-collection.png │ │ │ ├── eom-image-collection.svg │ │ │ ├── eom-plugin.png │ │ │ ├── eom-plugin.svg │ │ │ ├── slideshow-play.png │ │ │ └── slideshow-play.svg │ │ └── apps │ │ │ ├── eom.png │ │ │ └── eom.svg │ ├── 48x48 │ │ └── actions │ │ │ └── slideshow-play.png │ ├── Makefile.am │ ├── meson.build │ └── scalable │ │ ├── actions │ │ ├── eom-image-collection.svg │ │ ├── eom-plugin.svg │ │ └── slideshow-play.svg │ │ └── apps │ │ └── eom.svg ├── meson.build ├── metadata-sidebar.ui ├── org.mate.eom.gschema.xml.in └── pixmaps │ ├── Makefile.am │ └── thumbnail-frame.png ├── doc ├── Makefile.am ├── meson.build └── reference │ ├── Makefile.am │ ├── eom-docs.sgml.in │ ├── eom-overrides.txt │ ├── eom-sections.txt │ ├── meson.build │ └── version.xml.in ├── eom.pot ├── git.mk ├── help ├── C │ ├── figures │ │ ├── eom_save_as_window.png │ │ ├── eom_start_window.png │ │ └── eom_toolbar_editor_window.png │ ├── index.docbook │ └── legal.xml ├── ChangeLog ├── LINGUAS ├── Makefile.am ├── af │ └── af.po ├── am │ └── am.po ├── ar │ └── ar.po ├── as │ └── as.po ├── ast │ └── ast.po ├── be │ └── be.po ├── bg │ └── bg.po ├── bn │ └── bn.po ├── bn_IN │ └── bn_IN.po ├── br │ └── br.po ├── ca │ ├── ca.po │ └── figures │ │ ├── eom_save_as_window.png │ │ ├── eom_start_window.png │ │ └── eom_toolbar_editor_window.png ├── ca@valencia │ └── ca@valencia.po ├── cmn │ └── cmn.po ├── cs │ ├── cs.po │ └── figures │ │ ├── eom_save_as_window.png │ │ ├── eom_start_window.png │ │ └── eom_toolbar_editor_window.png ├── da │ └── da.po ├── de │ ├── de.po │ └── figures │ │ ├── eom_save_as_window.png │ │ └── eom_start_window.png ├── dz │ └── dz.po ├── el │ ├── el.po │ └── figures │ │ └── eom_start_window.png ├── en_AU │ └── en_AU.po ├── en_CA │ └── en_CA.po ├── en_GB │ └── en_GB.po ├── eo │ └── eo.po ├── eom.omf.in ├── eom.pot ├── es │ ├── es.po │ └── figures │ │ ├── eom_save_as_window.png │ │ ├── eom_start_window.png │ │ └── eom_toolbar_editor_window.png ├── es_AR │ └── es_AR.po ├── et │ └── et.po ├── eu │ ├── eu.po │ └── figures │ │ └── eom_start_window.png ├── fi │ └── fi.po ├── fr │ ├── figures │ │ └── eom_toolbar_editor_window.png │ └── fr.po ├── fur │ └── fur.po ├── ga │ └── ga.po ├── gl │ └── gl.po ├── gu │ └── gu.po ├── he │ └── he.po ├── hi │ └── hi.po ├── hr │ └── hr.po ├── hu │ └── hu.po ├── hy │ └── hy.po ├── id │ └── id.po ├── ie │ └── ie.po ├── is │ └── is.po ├── it │ └── it.po ├── ja │ ├── figures │ │ └── eom_start_window.png │ └── ja.po ├── ka │ └── ka.po ├── kab │ └── kab.po ├── kk │ └── kk.po ├── kn │ └── kn.po ├── ko │ ├── figures │ │ └── eom_toolbar_editor_window.png │ └── ko.po ├── ku │ └── ku.po ├── ky │ └── ky.po ├── lt │ └── lt.po ├── lv │ └── lv.po ├── mai │ └── mai.po ├── meson.build ├── mk │ └── mk.po ├── ml │ └── ml.po ├── mr │ └── mr.po ├── ms │ └── ms.po ├── nb │ └── nb.po ├── ne │ └── ne.po ├── nl │ └── nl.po ├── nn │ └── nn.po ├── oc │ └── oc.po ├── or │ └── or.po ├── pa │ └── pa.po ├── pl │ └── pl.po ├── ps │ └── ps.po ├── pt │ └── pt.po ├── pt_BR │ ├── figures │ │ ├── eom_save_as_window.png │ │ └── eom_start_window.png │ └── pt_BR.po ├── ro │ └── ro.po ├── ru │ └── ru.po ├── si │ └── si.po ├── sk │ └── sk.po ├── sl │ └── sl.po ├── sq │ └── sq.po ├── sr │ └── sr.po ├── sr@latin │ └── sr@latin.po ├── sv │ ├── figures │ │ ├── eom_save_as_window.png │ │ ├── eom_start_window.png │ │ └── eom_toolbar_editor_window.png │ └── sv.po ├── ta │ └── ta.po ├── te │ └── te.po ├── th │ └── th.po ├── tr │ └── tr.po ├── uk │ └── uk.po ├── uz │ └── uz.po ├── vi │ └── vi.po ├── zh_CN │ ├── figures │ │ └── eom_start_window.png │ └── zh_CN.po ├── zh_HK │ └── zh_HK.po └── zh_TW │ ├── figures │ └── eom_start_window.png │ └── zh_TW.po ├── jpegutils ├── Makefile.am ├── README.6b ├── README.8a ├── jpegint-8a.h ├── jpegint.h ├── meson.build ├── transupp-6b.c ├── transupp-6b.h ├── transupp-8a.c ├── transupp-8a.h └── transupp.h ├── makepot ├── man ├── Makefile.am ├── eom.1 └── meson.build ├── meson.build ├── meson_options.txt ├── plugins ├── Makefile.am ├── fullscreen │ ├── eom-fullscreen-plugin.c │ ├── eom-fullscreen-plugin.h │ ├── fullscreen.plugin.desktop.in.in │ └── meson.build ├── meson.build ├── reload │ ├── eom-reload-plugin.c │ ├── eom-reload-plugin.h │ ├── meson.build │ └── reload.plugin.desktop.in.in └── statusbar-date │ ├── eom-statusbar-date-plugin.c │ ├── eom-statusbar-date-plugin.h │ ├── meson.build │ └── statusbar-date.plugin.desktop.in.in ├── po ├── ChangeLog ├── LINGUAS ├── Makevars ├── POTFILES.in ├── POTFILES.skip ├── af.po ├── am.po ├── ar.po ├── as.po ├── ast.po ├── az.po ├── be.po ├── bg.po ├── bn.po ├── bn_IN.po ├── br.po ├── bs.po ├── ca.po ├── ca@valencia.po ├── cmn.po ├── crh.po ├── cs.po ├── cy.po ├── da.po ├── de.po ├── dz.po ├── el.po ├── en_AU.po ├── en_CA.po ├── en_GB.po ├── eo.po ├── es.po ├── es_AR.po ├── es_CL.po ├── es_CO.po ├── es_CR.po ├── es_DO.po ├── es_EC.po ├── es_ES.po ├── es_MX.po ├── es_NI.po ├── es_PA.po ├── es_PE.po ├── es_PR.po ├── es_SV.po ├── es_UY.po ├── es_VE.po ├── et.po ├── eu.po ├── fa.po ├── fi.po ├── fr.po ├── fr_CA.po ├── frp.po ├── fur.po ├── fy.po ├── ga.po ├── gd.po ├── gl.po ├── gnome-copyrights.txt ├── gu.po ├── ha.po ├── he.po ├── hi.po ├── hr.po ├── hu.po ├── hy.po ├── ia.po ├── id.po ├── ie.po ├── ig.po ├── is.po ├── it.po ├── ja.po ├── jv.po ├── ka.po ├── kab.po ├── kk.po ├── km.po ├── kn.po ├── ko.po ├── ks.po ├── ku.po ├── ku_IQ.po ├── ky.po ├── li.po ├── lt.po ├── lv.po ├── mai.po ├── meson.build ├── mg.po ├── mi.po ├── mk.po ├── ml.po ├── mn.po ├── mr.po ├── ms.po ├── nan.po ├── nb.po ├── nds.po ├── ne.po ├── nl.po ├── nn.po ├── nqo.po ├── nso.po ├── oc.po ├── or.po ├── pa.po ├── pl.po ├── pms.po ├── ps.po ├── pt.po ├── pt_BR.po ├── ro.po ├── ru.po ├── rw.po ├── sc.po ├── si.po ├── sk.po ├── sl.po ├── sq.po ├── sr.po ├── sr@latin.po ├── sv.po ├── ta.po ├── te.po ├── th.po ├── tk.po ├── tr.po ├── tt.po ├── ug.po ├── uk.po ├── ur.po ├── ur_PK.po ├── uz.po ├── vi.po ├── wa.po ├── xh.po ├── yi.po ├── yo.po ├── zh_CN.po ├── zh_HK.po ├── zh_TW.po └── zu.po ├── src ├── Makefile.am ├── eom-application-activatable.c ├── eom-application-activatable.h ├── eom-application-internal.h ├── eom-application.c ├── eom-application.h ├── eom-clipboard-handler.c ├── eom-clipboard-handler.h ├── eom-close-confirmation-dialog.c ├── eom-close-confirmation-dialog.h ├── eom-config-keys.h ├── eom-debug.c ├── eom-debug.h ├── eom-enum-types.c.template ├── eom-enum-types.h.template ├── eom-enums.h ├── eom-error-message-area.c ├── eom-error-message-area.h ├── eom-exif-util.c ├── eom-exif-util.h ├── eom-file-chooser.c ├── eom-file-chooser.h ├── eom-image-jpeg.c ├── eom-image-jpeg.h ├── eom-image-private.h ├── eom-image-save-info.c ├── eom-image-save-info.h ├── eom-image.c ├── eom-image.h ├── eom-job-queue.c ├── eom-job-queue.h ├── eom-jobs.c ├── eom-jobs.h ├── eom-list-store.c ├── eom-list-store.h ├── eom-marshal.list ├── eom-metadata-details.c ├── eom-metadata-details.h ├── eom-metadata-reader-jpg.c ├── eom-metadata-reader-jpg.h ├── eom-metadata-reader-png.c ├── eom-metadata-reader-png.h ├── eom-metadata-reader.c ├── eom-metadata-reader.h ├── eom-metadata-sidebar.c ├── eom-metadata-sidebar.h ├── eom-pixbuf-util.c ├── eom-pixbuf-util.h ├── eom-plugin-engine.c ├── eom-plugin-engine.h ├── eom-preferences-dialog.c ├── eom-preferences-dialog.h ├── eom-print-image-setup.c ├── eom-print-image-setup.h ├── eom-print-preview.c ├── eom-print-preview.h ├── eom-print.c ├── eom-print.h ├── eom-properties-dialog.c ├── eom-properties-dialog.h ├── eom-save-as-dialog-helper.c ├── eom-save-as-dialog-helper.h ├── eom-scroll-view.c ├── eom-scroll-view.h ├── eom-session.c ├── eom-session.h ├── eom-sidebar.c ├── eom-sidebar.h ├── eom-statusbar.c ├── eom-statusbar.h ├── eom-thumb-nav.c ├── eom-thumb-nav.h ├── eom-thumb-view.c ├── eom-thumb-view.h ├── eom-thumbnail.c ├── eom-thumbnail.h ├── eom-transform.c ├── eom-transform.h ├── eom-uri-converter.c ├── eom-uri-converter.h ├── eom-util.c ├── eom-util.h ├── eom-window-activatable.c ├── eom-window-activatable.h ├── eom-window.c ├── eom-window.h ├── eom.gresource.xml ├── main.c ├── meson.build ├── zoom.c └── zoom.h ├── thumbnailer ├── Makefile.am ├── eom-thumbnailer.c ├── eom-thumbnailer.thumbnailer.in └── meson.build ├── update-authors.pl └── update-changelog.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | custom: https://mate-desktop.org/donate/ 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Enable dependabot to keep our GHA pins automatically 2 | # updated, so we don't fall too far behind in the future 3 | version: 2 4 | updates: 5 | - package-ecosystem: github-actions 6 | directory: "/" 7 | schedule: 8 | interval: weekly 9 | -------------------------------------------------------------------------------- /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | #### Expected behaviour 2 | 3 | 4 | #### Actual behaviour 5 | 6 | 7 | #### Steps to reproduce the behaviour 8 | 9 | 10 | #### MATE general version 11 | 12 | 13 | #### Package version 14 | 15 | 16 | #### Linux Distribution 17 | 18 | 19 | #### Link to bugreport of your Distribution (requirement) 20 | -------------------------------------------------------------------------------- /.github/workflows/archlinux.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Use grouped output messages 4 | infobegin() { 5 | echo "::group::${1}" 6 | } 7 | infoend() { 8 | echo "::endgroup::" 9 | } 10 | 11 | # Required packages on Archlinux 12 | requires=( 13 | ccache # Use ccache to speed up build 14 | clang # Build with clang on Archlinux 15 | meson # Used for meson build 16 | ) 17 | 18 | requires+=( 19 | autoconf-archive 20 | appstream-glib 21 | autoconf-archive 22 | desktop-file-utils 23 | exempi 24 | gcc 25 | git 26 | glib2-devel 27 | gobject-introspection 28 | imagemagick 29 | itstool 30 | lcms2 31 | libexif 32 | libjpeg-turbo 33 | libpeas 34 | make 35 | mate-desktop 36 | mate-common 37 | which 38 | yelp-tools 39 | ) 40 | 41 | infobegin "Update system" 42 | pacman --noconfirm -Syu 43 | infoend 44 | 45 | infobegin "Install dependency packages" 46 | pacman --noconfirm -S ${requires[@]} 47 | infoend 48 | -------------------------------------------------------------------------------- /.github/workflows/builds.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | set -e 4 | set -o pipefail 5 | 6 | CPUS=$(grep processor /proc/cpuinfo | wc -l) 7 | 8 | # Use grouped output messages 9 | infobegin() { 10 | echo "::group::${1}" 11 | } 12 | infoend() { 13 | echo "::endgroup::" 14 | } 15 | 16 | # Run meson first, then run autotools 17 | # Because meson dist requires a clean git workspace 18 | # Autotools will modify some files (such as po, etc.), making them dirty. 19 | if [[ -f meson.build && $1 == "meson" ]]; then 20 | 21 | infobegin "Configure (meson)" 22 | meson setup _build --prefix=/usr 23 | infoend 24 | 25 | infobegin "Build (meson)" 26 | meson compile -C _build 27 | infoend 28 | 29 | infobegin "Test (meson)" 30 | ninja -C _build test 31 | infoend 32 | 33 | infobegin "Dist (meson)" 34 | # Git safedirectory stop ninja dist 35 | # https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 36 | # https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory 37 | git config --global --add safe.directory ${PWD} 38 | ninja -C _build dist 39 | infoend 40 | fi 41 | 42 | if [[ -f autogen.sh && $1 == "autotools" ]]; then 43 | infobegin "Configure (autotools)" 44 | NOCONFIGURE=1 ./autogen.sh 45 | ./configure --prefix=/usr --enable-compile-warnings=maximum || { 46 | cat config.log 47 | exit 1 48 | } 49 | infoend 50 | 51 | infobegin "Build (autotools)" 52 | make -j ${CPUS} 53 | infoend 54 | 55 | infobegin "Check (autotools)" 56 | make -j ${CPUS} check || { 57 | find -name test-suite.log -exec cat {} \; 58 | exit 1 59 | } 60 | infoend 61 | 62 | infobegin "Distcheck (autotools)" 63 | make -j ${CPUS} distcheck 64 | infoend 65 | fi 66 | -------------------------------------------------------------------------------- /.github/workflows/builds.yml: -------------------------------------------------------------------------------- 1 | name: CI Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | workflow_dispatch: 11 | 12 | # cancel already running builds of the same branch or pull request 13 | concurrency: 14 | group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.sha }} 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | build: 19 | name: ${{matrix.container}} (${{matrix.cc}} ${{matrix.build-system}}) 20 | runs-on: ubuntu-latest 21 | container: 22 | image: ${{matrix.container}} 23 | volumes: 24 | - /tmp/.cache 25 | - /var/cache/apt 26 | 27 | strategy: 28 | fail-fast: false # don't cancel other jobs in the matrix if one fails 29 | matrix: 30 | container: 31 | [ 32 | "debian:testing", 33 | "fedora:latest", 34 | "ubuntu:rolling", 35 | "archlinux:latest", 36 | ] 37 | cc: ["gcc"] 38 | cxx: ["g++"] 39 | build-system: ["autotools", "meson"] 40 | include: 41 | - container: "archlinux:latest" 42 | build-system: "autotools" 43 | cc: "clang" 44 | cxx: "clang++" 45 | - container: "archlinux:latest" 46 | build-system: "meson" 47 | cc: "clang" 48 | cxx: "clang++" 49 | 50 | env: 51 | # Speed up build with ccache 52 | CC: ccache ${{ matrix.cc }} 53 | CXX: ccache ${{ matrix.cxx }} 54 | CONTAINER: ${{ matrix.container }} 55 | 56 | steps: 57 | - name: Setup environment variables 58 | id: distro-name 59 | shell: bash 60 | run: | 61 | split=(${CONTAINER//:/ }) 62 | distro=${split[0]} 63 | short_sha=${SHA:0:8} 64 | echo "DISTRO=$distro" | tee -a $GITHUB_ENV 65 | - name: Install git command 66 | shell: bash 67 | run: | 68 | echo "::group::Install git ..." 69 | apt-get update -qq && apt-get install --assume-yes git || true 70 | dnf update -y && dnf install -y git || true 71 | pacman --noconfirm -Sy git || true 72 | echo "::endgroup::" 73 | - name: Repository checkout 74 | uses: actions/checkout@v4 75 | with: 76 | submodules: "true" 77 | - name: Install dependency packages 78 | run: .github/workflows/${{ env.DISTRO }}.sh 79 | - name: Enable ccache to speed up builds 80 | uses: hendrikmuhs/ccache-action@v1.2 81 | with: 82 | key: ${{ env.DISTRO }}-${{ matrix.cc }} 83 | - name: Build the source code 84 | run: .github/workflows/builds.sh ${{ matrix.build-system }} 85 | -------------------------------------------------------------------------------- /.github/workflows/debian.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Use grouped output messages 4 | infobegin() { 5 | echo "::group::${1}" 6 | } 7 | infoend() { 8 | echo "::endgroup::" 9 | } 10 | 11 | # Required packages on Debian 12 | requires=( 13 | ccache # Use ccache to speed up build 14 | meson # Used for meson build 15 | ) 16 | 17 | requires+=( 18 | autoconf-archive 19 | autopoint 20 | desktop-file-utils 21 | git 22 | gobject-introspection 23 | gtk-doc-tools 24 | libdconf-dev 25 | libexempi-dev 26 | libexif-dev 27 | libgirepository1.0-dev 28 | libglib2.0-dev 29 | libgtk-3-dev 30 | libjpeg-dev 31 | liblcms2-dev 32 | libmagickwand-dev 33 | libmate-desktop-dev 34 | libpeas-dev 35 | librsvg2-dev 36 | libstartup-notification0-dev 37 | libxml2-dev 38 | make 39 | mate-common 40 | shared-mime-info 41 | x11proto-core-dev 42 | yelp-tools 43 | zlib1g-dev 44 | ) 45 | 46 | infobegin "Update system" 47 | apt-get update -qq 48 | infoend 49 | 50 | infobegin "Install dependency packages" 51 | env DEBIAN_FRONTEND=noninteractive \ 52 | apt-get install --assume-yes \ 53 | ${requires[@]} 54 | infoend 55 | -------------------------------------------------------------------------------- /.github/workflows/fedora.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Use grouped output messages 4 | infobegin() { 5 | echo "::group::${1}" 6 | } 7 | infoend() { 8 | echo "::endgroup::" 9 | } 10 | 11 | # Required packages on Fedora 12 | requires=( 13 | ccache # Use ccache to speed up build 14 | meson # Used for meson build 15 | ) 16 | 17 | requires+=( 18 | autoconf-archive 19 | desktop-file-utils 20 | exempi-devel 21 | gcc 22 | git 23 | gobject-introspection-devel 24 | gtk3-devel 25 | ImageMagick-devel 26 | lcms2-devel 27 | libappstream-glib-devel 28 | libexif-devel 29 | libjpeg-turbo-devel 30 | libpeas1-devel 31 | librsvg2-devel 32 | libxml2-devel 33 | make 34 | mate-common 35 | mate-desktop-devel 36 | redhat-rpm-config 37 | zlib-devel 38 | ) 39 | 40 | infobegin "Update system" 41 | dnf update -y 42 | infoend 43 | 44 | infobegin "Install dependency packages" 45 | dnf install -y ${requires[@]} 46 | infoend 47 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release Version 2 | on: 3 | push: 4 | tags: 5 | - "v*.*.*" 6 | 7 | env: 8 | CACHE_PATH: /tmp/.cache 9 | 10 | jobs: 11 | release: 12 | name: Release New Version 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Repository checkout 16 | uses: actions/checkout@v4 17 | with: 18 | submodules: "true" 19 | 20 | - name: Install dependency packages 21 | run: sudo .github/workflows/ubuntu.sh 22 | 23 | - name: Build the source code 24 | run: .github/workflows/builds.sh meson 25 | 26 | - name: Install GH CLI 27 | uses: dev-hanz-ops/install-gh-cli-action@v0.1.0 28 | with: 29 | gh-cli-version: 2.39.1 30 | 31 | - name: Create github release 32 | run: | 33 | gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --generate-notes _build/meson-dist/* 34 | env: 35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 36 | -------------------------------------------------------------------------------- /.github/workflows/ubuntu.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/bash 2 | 3 | # Use grouped output messages 4 | infobegin() { 5 | echo "::group::${1}" 6 | } 7 | infoend() { 8 | echo "::endgroup::" 9 | } 10 | 11 | # Required packages on Ubuntu 12 | requires=( 13 | ccache # Use ccache to speed up build 14 | meson # Used for meson build 15 | ) 16 | 17 | requires+=( 18 | autoconf-archive 19 | autopoint 20 | desktop-file-utils 21 | git 22 | gobject-introspection 23 | gtk-doc-tools 24 | libdconf-dev 25 | libexempi-dev 26 | libexif-dev 27 | libgirepository1.0-dev 28 | libglib2.0-dev 29 | libgtk-3-dev 30 | libjpeg-dev 31 | liblcms2-dev 32 | libmagickwand-dev 33 | libmate-desktop-dev 34 | libpeas-dev 35 | librsvg2-dev 36 | libstartup-notification0-dev 37 | libxml2-dev 38 | make 39 | mate-common 40 | shared-mime-info 41 | x11proto-core-dev 42 | yelp-tools 43 | zlib1g-dev 44 | ) 45 | 46 | infobegin "Update system" 47 | apt-get update -y 48 | infoend 49 | 50 | infobegin "Install dependency packages" 51 | env DEBIAN_FRONTEND=noninteractive \ 52 | apt-get install --assume-yes \ 53 | ${requires[@]} 54 | infoend 55 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [o:mate:p:MATE:r:master--eom] 5 | file_filter = po/.po 6 | source_file = eom.pot 7 | source_lang = en 8 | type = PO 9 | minimum_perc = 2 10 | 11 | [o:mate:p:MATE:r:master--eom-user-guide] 12 | file_filter = help//.po 13 | source_file = help/eom.pot 14 | source_lang = en 15 | type = PO 16 | minimum_perc = 2 17 | 18 | -------------------------------------------------------------------------------- /.tx/config_20221028215411.bak: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [MATE.master--eom] 5 | file_filter = po/.po 6 | source_file = eom.pot 7 | source_lang = en 8 | type = PO 9 | minimum_perc = 2 10 | 11 | [MATE.master--eom-user-guide] 12 | file_filter = help//.po 13 | source_file = help/eom.pot 14 | source_lang = en 15 | type = PO 16 | minimum_perc = 2 17 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Lucas Rocha 2 | Felix Riemann 3 | Claudio Saavedra 4 | Tim Gerla 5 | Philip Van Hoof 6 | Paolo Borelli 7 | Jens Finke 9 | Arik Devens 10 | Michael Meeks 11 | Martin Baulig 12 | Perberos 13 | Steve Zesch 14 | Stefano Karapetsas 15 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/ChangeLog -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} 2 | 3 | if USE_NLS 4 | PO_SUBDIR = po 5 | endif 6 | 7 | if ENABLE_JPEG 8 | jpeg_DIRS = jpegutils 9 | endif 10 | 11 | SUBDIRS = $(PO_SUBDIR) $(jpeg_DIRS) cut-n-paste src man plugins help data doc 12 | 13 | if ENABLE_THUMBNAILER 14 | SUBDIRS += thumbnailer 15 | endif 16 | 17 | EXTRA_DIST = \ 18 | AUTHORS \ 19 | autogen.sh \ 20 | ChangeLog \ 21 | COPYING \ 22 | NEWS \ 23 | README 24 | 25 | DISTCLEANFILES = 26 | 27 | DISTCHECK_CONFIGURE_FLAGS = \ 28 | --disable-schemas-install \ 29 | --enable-gtk-doc \ 30 | --enable-compile-warnings=no \ 31 | CFLAGS='-Wno-deprecated-declarations' 32 | 33 | distuninstallcheck_listfiles = find . -type f -print | grep -v /share/mate/help/ | grep -v \.omf 34 | 35 | MAINTAINERCLEANFILES = \ 36 | $(srcdir)/aclocal.m4 \ 37 | $(srcdir)/config.guess \ 38 | $(srcdir)/config.h.in \ 39 | $(srcdir)/config.sub \ 40 | $(srcdir)/depcomp \ 41 | $(srcdir)/gtk-doc.make \ 42 | $(srcdir)/install-sh \ 43 | $(srcdir)/ltmain.sh \ 44 | $(srcdir)/missing \ 45 | $(srcdir)/mkinstalldirs \ 46 | $(srcdir)/omf.make \ 47 | $(srcdir)/xmldocs.make 48 | 49 | # This is the last commit before the ChangeLog was converted 50 | CHANGELOG_START = 6a7944721e667a5c2d87e841917d850aea885019 51 | 52 | # Build ChangeLog from GIT history 53 | ChangeLog: 54 | $(AM_V_GEN) if test -d $(top_srcdir)/.git; then \ 55 | GIT_DIR="$(top_srcdir)/.git" git log --stat > $@; \ 56 | fi 57 | 58 | dist: ChangeLog 59 | 60 | .PHONY: ChangeLog 61 | 62 | -include $(top_srcdir)/git.mk 63 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Eye of MATE: an image viewing and cataloging program 2 | ----------------------------------------------------- 3 | 4 | Perfect vision soup: 5 | 6 | - 1 cauldron of snake broth 7 | - 2 vampire ears 8 | - 4 legs of tarantula 9 | - 1 nyan cat 10 | - 1 eye of mate 11 | 12 | 13 | Description 14 | ----------- 15 | 16 | This is the Eye of MATE, an image viewer program. It is meant to be 17 | a fast and functional image viewer. 18 | 19 | Eye of MATE is a fork of Eye of GNOME. 20 | 21 | Requirements 22 | ------------ 23 | 24 | This package requires the following modules to be installed: glib, 25 | GTK+, mate-desktop, gio, gdk-pixbuf, shared-mime-info. 26 | 27 | You can get these packages from your favourite MATE FTP mirror or at 28 | http://pub.mate-desktop.org/ or from other sources where MATE 29 | packages are distributed. shared-mime-info can be downloaded 30 | from the freedesktop.org website. 31 | 32 | 33 | Optional Libraries 34 | ------------------ 35 | 36 | 'Eye of MATE' supports the reading of EXIF information stored in 37 | images by digital cameras. To get this working, you need the optional 38 | libexif library. It is available at http://libexif.sourceforge.net. 39 | If you also want to preserve your EXIF data on save make sure you have 40 | libjpeg installed, including the development files. 41 | 42 | In order to make 'Eye of MATE' work as a single instance application you'll 43 | need D-Bus installed in your system. You can get it from 44 | http://www.freedesktop.org/wiki/Software/dbus . 45 | 46 | Other optional dependencies include Little cms for color management and 47 | Exempi for XMP metadata reading. 48 | 49 | Availability 50 | ------------ 51 | 52 | The bleeding-edge version of this package is always available from the MATE 53 | GIT repository (instructions at http://wiki.mate-desktop.org/). 54 | Released versions are available at http://pub.mate-desktop.org/. 55 | 56 | Webpage 57 | ------- 58 | 59 | You can find screenshots and the latest news about 'Eye of MATE' in 60 | https://wiki.mate-desktop.org/mate-desktop/applications/eom/. 61 | 62 | 63 | Reporting bugs 64 | -------------- 65 | 66 | Please use the MATE bug tracking system to report bugs. You can 67 | reach it at https://github.com/mate-desktop/eom/issues. 68 | 69 | 70 | License 71 | ------- 72 | 73 | This program is released under the terms of the GNU General Public 74 | License. Please see the file COPYING for details. 75 | 76 | 77 | Authors 78 | ------- 79 | 80 | Perberos 81 | Steve Zesch 82 | Stefano Karapetsas 83 | 84 | Previous GNOME Maintainer: Lucas Rocha (lucasr@gnome.org) 85 | 86 | Felix Riemann (friemann@svn.gnome.org) 87 | Claudio Saaevedra (csaavedra@igalia.com) 88 | Tim Gerla (tim+matebugs@gerla.net) 89 | Arik Devens (arik@gnome.org) 90 | Federico Mena-Quintero (federico@gnu.org) 91 | Jens Finke (jens@gnome.org) 92 | Lutz Müller (urc8@rz.uni-karlsruhe.de) 93 | Martin Baulig (martin@gnome.org) 94 | Michael Meeks (michael@ximian.com) 95 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Run this to generate all the initial makefiles, etc. 3 | 4 | srcdir=`dirname $0` 5 | test -z "$srcdir" && srcdir=. 6 | 7 | PKG_NAME="eom" 8 | 9 | (test -f $srcdir/configure.ac) || { 10 | echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" 11 | echo " top-level $PKG_NAME directory" 12 | exit 1 13 | } 14 | 15 | which mate-autogen || { 16 | echo "You need to install mate-common" 17 | exit 1 18 | } 19 | 20 | which yelp-build || { 21 | echo "You need to install yelp-tools" 22 | exit 1 23 | } 24 | 25 | REQUIRED_AUTOMAKE_VERSION=1.9 26 | MATE_DATADIR="$mate_datadir" 27 | 28 | . mate-autogen 29 | 30 | -------------------------------------------------------------------------------- /cut-n-paste/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = toolbar-editor 2 | 3 | -include $(top_srcdir)/git.mk 4 | -------------------------------------------------------------------------------- /cut-n-paste/meson.build: -------------------------------------------------------------------------------- 1 | subdir('toolbar-editor') 2 | -------------------------------------------------------------------------------- /cut-n-paste/toolbar-editor/Makefile.am: -------------------------------------------------------------------------------- 1 | EGGSOURCES = \ 2 | egg-editable-toolbar.c \ 3 | egg-toolbars-model.c \ 4 | egg-toolbar-editor.c 5 | 6 | EGGHEADERS = \ 7 | egg-editable-toolbar.h \ 8 | egg-toolbars-model.h \ 9 | egg-toolbar-editor.h 10 | 11 | noinst_HEADERS = \ 12 | $(EGGHEADERS) \ 13 | eggmarshalers.h 14 | 15 | noinst_LTLIBRARIES = libtoolbareditor.la 16 | 17 | libtoolbareditor_la_SOURCES = \ 18 | $(BUILT_SOURCES) \ 19 | $(EGGSOURCES) \ 20 | $(EGGHEADERS) 21 | 22 | libtoolbareditor_la_CPPFLAGS = \ 23 | -I$(top_builddir)/lib/egg \ 24 | $(AM_CPPFLAGS) 25 | 26 | libtoolbareditor_la_LIBADD = $(LIBXML2_LIBS) 27 | 28 | libtoolbareditor_la_CFLAGS = \ 29 | $(EOM_CFLAGS) \ 30 | $(WARN_CFLAGS) \ 31 | $(LIBXML2_CFLAGS) \ 32 | -DCURSOR_DIR=\"$(pkgdatadir)\" 33 | 34 | BUILT_SOURCES = \ 35 | eggmarshalers.c \ 36 | eggmarshalers.h \ 37 | eggtypebuiltins.c \ 38 | eggtypebuiltins.h 39 | 40 | stamp_files = \ 41 | stamp-eggmarshalers.c \ 42 | stamp-eggmarshalers.h \ 43 | stamp-eggtypebuiltins.c \ 44 | stamp-eggtypebuiltins.h 45 | 46 | eggmarshalers.h: stamp-eggmarshalers.h 47 | @true 48 | stamp-eggmarshalers.h: eggmarshalers.list 49 | $(AM_V_GEN)$(GLIB_GENMARSHAL) --internal --prefix=_egg_marshal $(srcdir)/eggmarshalers.list --header > eggmarshalers.h \ 50 | && echo timestamp > $(@F) 51 | 52 | eggmarshalers.c: stamp-eggmarshalers.c 53 | @true 54 | stamp-eggmarshalers.c: eggmarshalers.list 55 | $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=_egg_marshal $(srcdir)/eggmarshalers.list --header --body > eggmarshalers.c \ 56 | && echo timestamp > $(@F) 57 | 58 | eggtypebuiltins.c: stamp-eggtypebuiltins.c 59 | @true 60 | stamp-eggtypebuiltins.c: $(EGGHEADERS) 61 | $(AM_V_GEN)( cd $(srcdir) && $(GLIB_MKENUMS) \ 62 | --fhead "#include \"eggtypebuiltins.h\"\n\n" \ 63 | --fprod "\n/* enumerations from \"@filename@\" */" \ 64 | --fprod "\n#include \"@filename@\"" \ 65 | --vhead "static const G@Type@Value _@enum_name@_values[] = {" \ 66 | --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ 67 | --vtail " { 0, NULL, NULL }\n};\n\n" \ 68 | --vtail "G_GNUC_INTERNAL GType\n@enum_name@_get_type (void)\n{\n" \ 69 | --vtail " static GType type = 0;\n\n" \ 70 | --vtail " if (G_UNLIKELY (type == 0))\n" \ 71 | --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \ 72 | --vtail " return type;\n}\n\n" \ 73 | $(^F) ) > xgen-$(@F) \ 74 | && ( cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%) ) \ 75 | && rm -f xgen-$(@F) \ 76 | && echo timestamp > $(@F) 77 | 78 | eggtypebuiltins.h: stamp-eggtypebuiltins.h 79 | @true 80 | stamp-eggtypebuiltins.h: $(EGGHEADERS) 81 | $(AM_V_GEN)( cd $(srcdir) && $(GLIB_MKENUMS) \ 82 | --fhead "#ifndef __EGGTYPEBUILTINS_H__\n" \ 83 | --fhead "#define __EGGTYPEBUILTINS_H__ 1\n\n" \ 84 | --fhead "#include \n\n" \ 85 | --fhead "G_BEGIN_DECLS\n\n" \ 86 | --ftail "G_END_DECLS\n\n" \ 87 | --ftail "#endif /* __EGGTYPEBUILTINS_H__ */\n" \ 88 | --fprod "\n/* --- @filename@ --- */" \ 89 | --eprod "#define EGG_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \ 90 | --eprod "G_GNUC_INTERNAL GType @enum_name@_get_type (void);\n" \ 91 | $(^F) ) > xgen-$(@F) \ 92 | && ( cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%) ) \ 93 | && rm -f xgen-$(@F) \ 94 | && echo timestamp > $(@F) 95 | 96 | EXTRA_DIST = \ 97 | eggmarshalers.list 98 | 99 | EGGFILES=$(EGGSOURCES) $(EGGHEADERS) 100 | EGGDIR=$(srcdir)/../../../libegg/libegg 101 | 102 | regenerate-built-sources: 103 | EGGFILES="$(EGGFILES) eggmarshalers.list" EGGDIR="$(EGGDIR)" $(top_srcdir)/cut-n-paste/update-from-egg.sh 104 | 105 | CLEANFILES = $(stamp_files) $(BUILT_SOURCES) 106 | DISTCLEANFILES = $(stamp_files) $(BUILT_SOURCES) 107 | MAINTAINERCLEANFILES = $(stamp_files) $(BUILT_SOURCES) 108 | 109 | -include $(top_srcdir)/git.mk 110 | -------------------------------------------------------------------------------- /cut-n-paste/toolbar-editor/egg-editable-toolbar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2003, 2004 Marco Pesenti Gritti 3 | * Copyright (C) 2003, 2004, 2005 Christian Persch 4 | * 5 | * This program is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2, or (at your option) 8 | * any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 18 | * 19 | * $Id: egg-editable-toolbar.h 891 2008-08-08 21:14:52Z friemann $ 20 | */ 21 | 22 | #ifndef EGG_EDITABLE_TOOLBAR_H 23 | #define EGG_EDITABLE_TOOLBAR_H 24 | 25 | #include "egg-toolbars-model.h" 26 | 27 | #include 28 | 29 | G_BEGIN_DECLS 30 | 31 | #define EGG_TYPE_EDITABLE_TOOLBAR (egg_editable_toolbar_get_type ()) 32 | #define EGG_EDITABLE_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbar)) 33 | #define EGG_EDITABLE_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbarClass)) 34 | #define EGG_IS_EDITABLE_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_EDITABLE_TOOLBAR)) 35 | #define EGG_IS_EDITABLE_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_EDITABLE_TOOLBAR)) 36 | #define EGG_EDITABLE_TOOLBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbarClass)) 37 | 38 | typedef struct _EggEditableToolbar EggEditableToolbar; 39 | typedef struct _EggEditableToolbarPrivate EggEditableToolbarPrivate; 40 | typedef struct _EggEditableToolbarClass EggEditableToolbarClass; 41 | 42 | struct _EggEditableToolbar 43 | { 44 | GtkVBox parent_object; 45 | 46 | /*< private >*/ 47 | EggEditableToolbarPrivate *priv; 48 | }; 49 | 50 | struct _EggEditableToolbarClass 51 | { 52 | GtkVBoxClass parent_class; 53 | 54 | void (* action_request) (EggEditableToolbar *etoolbar, 55 | const char *action_name); 56 | }; 57 | 58 | GType egg_editable_toolbar_get_type (void); 59 | GtkWidget *egg_editable_toolbar_new (GtkUIManager *manager, 60 | const char *visibility_path); 61 | GtkWidget *egg_editable_toolbar_new_with_model (GtkUIManager *manager, 62 | EggToolbarsModel *model, 63 | const char *visibility_path); 64 | void egg_editable_toolbar_set_model (EggEditableToolbar *etoolbar, 65 | EggToolbarsModel *model); 66 | EggToolbarsModel *egg_editable_toolbar_get_model (EggEditableToolbar *etoolbar); 67 | GtkUIManager *egg_editable_toolbar_get_manager (EggEditableToolbar *etoolbar); 68 | void egg_editable_toolbar_set_edit_mode (EggEditableToolbar *etoolbar, 69 | gboolean mode); 70 | gboolean egg_editable_toolbar_get_edit_mode (EggEditableToolbar *etoolbar); 71 | void egg_editable_toolbar_show (EggEditableToolbar *etoolbar, 72 | const char *name); 73 | void egg_editable_toolbar_hide (EggEditableToolbar *etoolbar, 74 | const char *name); 75 | void egg_editable_toolbar_set_fixed (EggEditableToolbar *etoolbar, 76 | GtkToolbar *fixed_toolbar); 77 | 78 | GtkWidget * egg_editable_toolbar_get_selected (EggEditableToolbar *etoolbar); 79 | void egg_editable_toolbar_set_selected (EggEditableToolbar *etoolbar, 80 | GtkWidget *widget); 81 | 82 | void egg_editable_toolbar_add_visibility (EggEditableToolbar *etoolbar, 83 | const char *path); 84 | 85 | /* Private Functions */ 86 | 87 | GtkWidget *_egg_editable_toolbar_new_separator_image (void); 88 | 89 | G_END_DECLS 90 | 91 | #endif 92 | -------------------------------------------------------------------------------- /cut-n-paste/toolbar-editor/egg-toolbar-editor.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2003 Marco Pesenti Gritti 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2, or (at your option) 7 | * any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 17 | */ 18 | 19 | #ifndef EGG_TOOLBAR_EDITOR_H 20 | #define EGG_TOOLBAR_EDITOR_H 21 | 22 | #include 23 | 24 | #include "egg-toolbars-model.h" 25 | 26 | G_BEGIN_DECLS 27 | 28 | typedef struct EggToolbarEditorClass EggToolbarEditorClass; 29 | 30 | #define EGG_TYPE_TOOLBAR_EDITOR (egg_toolbar_editor_get_type ()) 31 | #define EGG_TOOLBAR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditor)) 32 | #define EGG_TOOLBAR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorClass)) 33 | #define EGG_IS_TOOLBAR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TOOLBAR_EDITOR)) 34 | #define EGG_IS_TOOLBAR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TOOLBAR_EDITOR)) 35 | #define EGG_TOOLBAR_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorClass)) 36 | 37 | typedef struct EggToolbarEditor EggToolbarEditor; 38 | typedef struct EggToolbarEditorPrivate EggToolbarEditorPrivate; 39 | 40 | struct EggToolbarEditor 41 | { 42 | GtkVBox parent_object; 43 | 44 | /*< private >*/ 45 | EggToolbarEditorPrivate *priv; 46 | }; 47 | 48 | struct EggToolbarEditorClass 49 | { 50 | GtkVBoxClass parent_class; 51 | }; 52 | 53 | GType egg_toolbar_editor_get_type (void); 54 | GtkWidget *egg_toolbar_editor_new (GtkUIManager *manager, 55 | EggToolbarsModel *model); 56 | void egg_toolbar_editor_set_model (EggToolbarEditor *t, 57 | EggToolbarsModel *model); 58 | 59 | G_END_DECLS 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /cut-n-paste/toolbar-editor/eggmarshalers.list: -------------------------------------------------------------------------------- 1 | VOID:INT,INT 2 | -------------------------------------------------------------------------------- /cut-n-paste/toolbar-editor/meson.build: -------------------------------------------------------------------------------- 1 | eggheaders = [ 2 | 'egg-editable-toolbar.h', 3 | 'egg-toolbars-model.h', 4 | 'egg-toolbar-editor.h', 5 | ] 6 | 7 | eggmarshalers = gnome.genmarshal('eggmarshalers', sources: ['eggmarshalers.list'], prefix: '_egg_marshal') 8 | eggtypebuiltins = gnome.mkenums_simple('eggtypebuiltins', sources: eggheaders) 9 | 10 | src = [ 11 | eggmarshalers, 12 | eggtypebuiltins, 13 | 'egg-editable-toolbar.c', 14 | 'egg-toolbars-model.c', 15 | 'egg-toolbar-editor.c', 16 | eggheaders, 17 | ] 18 | 19 | toolbareditor = static_library( 20 | 'toolbareditor', 21 | src, 22 | dependencies: all_deps, 23 | include_directories: top_inc, 24 | c_args: ['-DCURSOR_DIR="' + pkgdatadir + '"'], 25 | ) 26 | 27 | toolbareditor_inc = include_directories('.') 28 | -------------------------------------------------------------------------------- /data/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = pixmaps icons 2 | 3 | desktopdir = $(datadir)/applications 4 | desktop_DATA = eom.desktop 5 | desktop_in_files = $(desktop_DATA:.desktop=.desktop.in) 6 | desktop_in_in_files = $(desktop_in_files:.desktop.in=.desktop.in.in) 7 | 8 | $(desktop_DATA): $(desktop_in_files) 9 | if USE_NLS 10 | $(AM_V_GEN) $(MSGFMT) --desktop --keyword= --keyword=Name --keyword=Comment --keyword=Keywords --template $< -d $(top_srcdir)/po -o $@ 11 | else 12 | $(AM_V_GEN) cp $< $@ 13 | endif 14 | 15 | appdatadir = $(datadir)/metainfo 16 | appdata_DATA = eom.appdata.xml 17 | appdata_in_files = $(appdata_DATA:.xml=.xml.in) 18 | appdata_in_in_files = $(appdata_in_files:.xml.in=.xml.in.in) 19 | 20 | $(appdata_DATA): $(appdata_in_files) 21 | if USE_NLS 22 | $(AM_V_GEN) $(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ 23 | else 24 | $(AM_V_GEN) cp $< $@ 25 | endif 26 | 27 | gsettings_ENUM_NAMESPACE = org.mate.eom 28 | gsettings_ENUM_FILES = $(top_srcdir)/src/eom-scroll-view.h \ 29 | $(top_srcdir)/src/eom-window.h 30 | 31 | gsettings_SCHEMAS = org.mate.eom.gschema.xml 32 | @GSETTINGS_RULES@ 33 | 34 | uidir = $(pkgdatadir) 35 | ui_DATA = \ 36 | eom-toolbar.xml 37 | 38 | pkgconfigdir = $(libdir)/pkgconfig 39 | pkgconfig_DATA = eom.pc 40 | 41 | EXTRA_DIST = \ 42 | $(ui_DATA) \ 43 | eom.css \ 44 | eom-image-properties-dialog.ui \ 45 | eom-multiple-save-as-dialog.ui \ 46 | eom-preferences-dialog.ui \ 47 | eom-ui.xml \ 48 | metadata-sidebar.ui \ 49 | eom.about \ 50 | $(appdata_in_in_files) \ 51 | $(desktop_in_in_files) 52 | 53 | CLEANFILES = \ 54 | $(appdata_DATA) \ 55 | $(desktop_DATA) 56 | 57 | DISTCLEANFILES = \ 58 | $(appdata_in_files) \ 59 | $(desktop_in_files) \ 60 | $(gsettings_SCHEMAS) 61 | 62 | -include $(top_srcdir)/git.mk 63 | -------------------------------------------------------------------------------- /data/eom-toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /data/eom.about: -------------------------------------------------------------------------------- 1 | [About] 2 | Authors=Adam Erdman ;Akshay Gupta ;Alexander Pyhalov ;Alexandre Rostovtsev ;Alexei Sorokin ;Alexey Radkov ;Arik Devens ;Bastien Nocera ;Björn Weber ;Boris Egorov ;Claudio Saavedra ;Debarshi Ray ;Elias Aebi ;Emmanuel Pacaud ;Federico Mena-Quintero ;Felix Riemann ;Gabriel Cormier-Affleck ;Javier Sánchez ;Jens Finke ;Laszlo Boros ;Laurent Napias ;Leigh Scott ;Lucas Rocha ;Lutz Mxc3xbcller ;Marcel Dijkstra ;Martin Baulig ;Martin Wimpress ;Michael Meeks ;Mike Gabriel ;Pablo Barciela ;Paolo Borelli ;Perberos ;Philip Van Hoof ;Piotr Drąg ;Robert Buj ;Russell Haley ;Saffith https://github.com/Saffith;Sander Sweers ;Scott Balneaves ;Sorokin Alexei ;Steev Klimaszewski ;Stefano Karapetsas ;Steve Zesch ;Tim Gerla ;Timm Bäder ;Trinh Anh Ngoc ;Victor Kareh ;Vlad Orlov ;Wolfgang Ulbrich ;Wu Xiaotian ;Yaakov Selkowitz ;lukefromdc ;rezso ;sakib ;suve ; 3 | Documenters=Eliot Landrum ;Federico Mena-Quintero ;Sun Microsystems;MATE Documentation Team; 4 | -------------------------------------------------------------------------------- /data/eom.appdata.xml.in.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | eom.desktop 5 | CC0-1.0 6 | Eye of MATE 7 | Simple image viewer 8 | 9 |

10 | Eye of MATE is a simple viewer for browsing images on your computer. 11 | Once an image is loaded, you can zoom and rotate the image, and also view 12 | subsequent images in the directory the image was loaded from. 13 |

14 |
15 | @PACKAGE_URL@ 16 | 17 | https://mate-desktop.org/gallery/1.8/eom.png 18 | 19 |
20 | -------------------------------------------------------------------------------- /data/eom.css: -------------------------------------------------------------------------------- 1 | .eom-window statusbar progressbar.horizontal, 2 | .eom-window statusbar progressbar.horizontal trough { 3 | min-height: 14px; 4 | } 5 | 6 | #eom-sidebar-title { 7 | font-weight: bold; 8 | } 9 | -------------------------------------------------------------------------------- /data/eom.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Eye of MATE Image Viewer 3 | Comment=Browse and rotate images 4 | TryExec=eom 5 | Exec=eom %U 6 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 7 | Icon=eom 8 | StartupNotify=true 9 | Terminal=false 10 | Type=Application 11 | Categories=GTK;Graphics;2DGraphics;RasterGraphics;Viewer; 12 | # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! 13 | Keywords=image;viewer;JPEG;PNG;TIFF;SVG;MATE;photos;browse;thumbnails;rotate; 14 | X-MATE-Bugzilla-Bugzilla=MATE 15 | X-MATE-Bugzilla-Product=EOM 16 | X-MATE-Bugzilla-Component=general 17 | X-MATE-Bugzilla-Version=@VERSION@ 18 | X-MATE-DocPath=eom/index.docbook 19 | MimeType=application/ico;application/x-navi-animation;audio/x-riff;image/bmp;image/gif;image/ico;image/icon;image/jp2;image/jpeg;image/jpeg2000;image/jpg;image/jpx;image/pjpeg;image/png;image/qtif;image/svg;image/svg+xml;image/svg+xml-compressed;image/svg-xml;image/tiff;image/vnd.adobe.svg+xml;image/vnd.microsoft.icon;image/vnd.wap.wbmp;image/webp;image/x-MS-bmp;image/x-adobe-dng;image/x-bmp;image/x-canon-cr2;image/x-canon-crw;image/x-compressed-xcf;image/x-epson-erf;image/x-fuji-raf;image/x-gray;image/x-icb;image/x-icns;image/x-ico;image/x-icon;image/x-minolta-mrw;image/x-nikon-nef;image/x-olympus-orf;image/x-pcx;image/x-pentax-pef;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-quicktime;image/x-sony-arw;image/x-tga;image/x-win-bitmap;image/x-wmf;image/x-xbitmap;image/x-xcf;image/x-xpixmap;text/ico;text/xml-svg; 20 | -------------------------------------------------------------------------------- /data/eom.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@/eom-@EOM_API_VERSION@ 5 | pluginsdir=@libdir@/eom/plugins 6 | 7 | Name: Eye of MATE 8 | Description: The MATE Image Viewer 9 | Requires: gtk+-3.0, gio-2.0 10 | Version: @VERSION@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /data/icons/16x16/actions/eom-image-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/16x16/actions/eom-image-collection.png -------------------------------------------------------------------------------- /data/icons/16x16/actions/eom-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/16x16/actions/eom-plugin.png -------------------------------------------------------------------------------- /data/icons/16x16/actions/slideshow-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/16x16/actions/slideshow-play.png -------------------------------------------------------------------------------- /data/icons/16x16/apps/eom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/16x16/apps/eom.png -------------------------------------------------------------------------------- /data/icons/22x22/actions/eom-image-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/22x22/actions/eom-image-collection.png -------------------------------------------------------------------------------- /data/icons/22x22/actions/eom-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/22x22/actions/eom-plugin.png -------------------------------------------------------------------------------- /data/icons/22x22/actions/slideshow-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/22x22/actions/slideshow-play.png -------------------------------------------------------------------------------- /data/icons/22x22/apps/eom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/22x22/apps/eom.png -------------------------------------------------------------------------------- /data/icons/24x24/actions/eom-image-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/24x24/actions/eom-image-collection.png -------------------------------------------------------------------------------- /data/icons/24x24/actions/slideshow-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/24x24/actions/slideshow-play.png -------------------------------------------------------------------------------- /data/icons/24x24/apps/eom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/24x24/apps/eom.png -------------------------------------------------------------------------------- /data/icons/32x32/actions/eom-image-collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/32x32/actions/eom-image-collection.png -------------------------------------------------------------------------------- /data/icons/32x32/actions/eom-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/32x32/actions/eom-plugin.png -------------------------------------------------------------------------------- /data/icons/32x32/actions/slideshow-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/32x32/actions/slideshow-play.png -------------------------------------------------------------------------------- /data/icons/32x32/apps/eom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/32x32/apps/eom.png -------------------------------------------------------------------------------- /data/icons/48x48/actions/slideshow-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/icons/48x48/actions/slideshow-play.png -------------------------------------------------------------------------------- /data/icons/Makefile.am: -------------------------------------------------------------------------------- 1 | 2 | actioniconsdir = $(pkgdatadir)/icons/hicolor 3 | appiconsdir = $(datadir)/icons/hicolor 4 | 5 | nobase_dist_actionicons_DATA = \ 6 | 16x16/actions/eom-image-collection.png \ 7 | 16x16/actions/eom-plugin.png \ 8 | 16x16/actions/slideshow-play.png \ 9 | 22x22/actions/eom-image-collection.png \ 10 | 22x22/actions/eom-plugin.png \ 11 | 22x22/actions/slideshow-play.png \ 12 | 24x24/actions/eom-image-collection.png \ 13 | 24x24/actions/slideshow-play.png \ 14 | 32x32/actions/eom-image-collection.png \ 15 | 32x32/actions/eom-plugin.png \ 16 | 32x32/actions/slideshow-play.png \ 17 | 48x48/actions/slideshow-play.png 18 | scalable/actions/eom-image-collection.svg \ 19 | scalable/actions/eom-plugin.svg \ 20 | scalable/actions/slideshow-play.svg 21 | 22 | nobase_dist_appicons_DATA = \ 23 | 16x16/apps/eom.png \ 24 | 22x22/apps/eom.png \ 25 | 24x24/apps/eom.png \ 26 | 32x32/apps/eom.png \ 27 | scalable/apps/eom.svg 28 | 29 | noinst_DATA = \ 30 | 16x16/actions/eom-plugin.svg \ 31 | 16x16/actions/slideshow-play.svg \ 32 | 16x16/apps/eom.svg \ 33 | 22x22/actions/eom-plugin.svg \ 34 | 22x22/actions/slideshow-play.svg \ 35 | 22x22/apps/eom.svg \ 36 | 32x32/actions/eom-image-collection.svg \ 37 | 32x32/actions/eom-plugin.svg \ 38 | 32x32/actions/slideshow-play.svg \ 39 | 32x32/apps/eom.svg 40 | 41 | EXTRA_DIST = $(noinst_DATA) 42 | 43 | gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor 44 | 45 | install-data-hook: update-icon-cache 46 | uninstall-hook: update-icon-cache 47 | update-icon-cache: 48 | @-if test -z "$(DESTDIR)"; then \ 49 | echo "Updating Gtk icon cache."; \ 50 | $(gtk_update_icon_cache); \ 51 | else \ 52 | echo "*** Icon cache not updated. After (un)install, run this:"; \ 53 | echo "*** $(gtk_update_icon_cache)"; \ 54 | fi 55 | 56 | -include $(top_srcdir)/git.mk 57 | -------------------------------------------------------------------------------- /data/icons/meson.build: -------------------------------------------------------------------------------- 1 | actioniconsdir = pkgdatadir / 'icons' / 'hicolor' 2 | appiconsdir = datadir / 'icons' / 'hicolor' 3 | 4 | foreach size : ['16x16', '22x22', '24x24', '32x32'] 5 | install_data([ 6 | size / 'actions/eom-image-collection.png', 7 | size / 'actions/slideshow-play.png', 8 | ], install_dir: actioniconsdir / size / 'actions') 9 | endforeach 10 | 11 | foreach size : ['16x16', '22x22', '32x32'] 12 | install_data([ 13 | size / 'actions/eom-plugin.png', 14 | ], install_dir: actioniconsdir / size / 'actions') 15 | endforeach 16 | 17 | install_data('48x48/actions/slideshow-play.png', install_dir: actioniconsdir / '48x48' / 'actions') 18 | 19 | install_data([ 20 | 'scalable/actions/eom-image-collection.svg', 21 | 'scalable/actions/eom-plugin.svg', 22 | 'scalable/actions/slideshow-play.svg', 23 | ], install_dir: actioniconsdir / 'scalable' / 'actions') 24 | 25 | foreach size : ['16x16', '22x22', '24x24', '32x32'] 26 | install_data([ 27 | size / 'apps/eom.png', 28 | ], install_dir: appiconsdir / size / 'apps') 29 | endforeach 30 | 31 | install_data(['scalable/apps/eom.svg'], install_dir: appiconsdir / 'scalable' / 'apps') 32 | 33 | gnome.post_install(gtk_update_icon_cache: true) 34 | -------------------------------------------------------------------------------- /data/meson.build: -------------------------------------------------------------------------------- 1 | subdir('icons') 2 | 3 | desktopdir = datadir / 'applications' 4 | desktopfile = configure_file(input: 'eom.desktop.in.in', configuration: pkg_info, output: 'eom.desktop.in') 5 | 6 | if get_option('nls') 7 | i18n.merge_file( 8 | input: desktopfile, 9 | output: 'eom.desktop', 10 | install: true, 11 | install_dir: desktopdir, 12 | type: 'desktop', 13 | po_dir: po_dir, 14 | ) 15 | else 16 | install_data(desktopfile, install_dir: desktopdir, rename: ['eom.desktop']) 17 | endif 18 | gnome.post_install(update_desktop_database: true) 19 | 20 | appdatadir = join_paths(datadir, 'metainfo') 21 | appdatafile = configure_file(input: 'eom.appdata.xml.in.in', configuration: pkg_info, output: 'eom.appdata.xml.in') 22 | 23 | if get_option('nls') 24 | i18n.merge_file( 25 | input: appdatafile, 26 | output: 'eom.appdata.xml', 27 | install: true, 28 | install_dir: appdatadir, 29 | type: 'xml', 30 | po_dir: po_dir, 31 | ) 32 | else 33 | install_data(appdatafile, install_dir: appdatadir, rename: ['eom.appdata.xml']) 34 | endif 35 | 36 | gsettings_schema = configure_file(input: 'org.mate.eom.gschema.xml.in', configuration: pkg_info, output: 'org.mate.eom.gschema.xml') 37 | install_data(gsettings_schema, install_dir: schemadir) 38 | gnome.post_install(glib_compile_schemas: true) 39 | 40 | gnome.mkenums( 41 | 'org.mate.eom.enums.xml', 42 | comments: '', 43 | sources: enum_headers, 44 | fhead: '', 45 | vhead: ''' <@type@ id='org.mate.eom.@EnumName@'>''', 46 | vprod: ''' ''', 47 | vtail: ' ', 48 | ftail: '', 49 | install_header: true, 50 | install_dir: schemadir 51 | ) 52 | 53 | eom_pc = configure_file(input: 'eom.pc.in', configuration: pkg_info, output: 'eom.pc') 54 | install_data(eom_pc, install_dir: libdir / 'pkgconfig') 55 | 56 | uidir = pkgdatadir 57 | install_data('eom-toolbar.xml', install_dir: uidir) 58 | -------------------------------------------------------------------------------- /data/pixmaps/Makefile.am: -------------------------------------------------------------------------------- 1 | pixmapsdir = $(pkgdatadir)/pixmaps 2 | 3 | EXTRA_DIST = \ 4 | thumbnail-frame.png 5 | 6 | -include $(top_srcdir)/git.mk 7 | -------------------------------------------------------------------------------- /data/pixmaps/thumbnail-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/data/pixmaps/thumbnail-frame.png -------------------------------------------------------------------------------- /doc/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = \ 2 | reference 3 | 4 | -include $(top_srcdir)/git.mk 5 | -------------------------------------------------------------------------------- /doc/meson.build: -------------------------------------------------------------------------------- 1 | subdir('reference') 2 | -------------------------------------------------------------------------------- /doc/reference/Makefile.am: -------------------------------------------------------------------------------- 1 | ## Process this file with automake to produce Makefile.in 2 | 3 | # We require automake 1.6 at least. 4 | AUTOMAKE_OPTIONS = 1.6 5 | 6 | # This is a blank Makefile.am for using gtk-doc. 7 | # Copy this to your project's API docs directory and modify the variables to 8 | # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples 9 | # of using the various options. 10 | 11 | # The name of the module, e.g. 'glib'. 12 | DOC_MODULE=eom 13 | 14 | # The top-level SGML file. You can change this if you want to. 15 | DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml 16 | 17 | # The directory containing the source code. Relative to $(srcdir). 18 | # gtk-doc will search all .c & .h files beneath here for inline comments 19 | # documenting the functions and macros. 20 | # e.g. DOC_SOURCE_DIR=../../../gtk 21 | DOC_SOURCE_DIR=../../src 22 | 23 | # Extra options to pass to gtkdoc-scangobj. Not normally needed. 24 | SCANGOBJ_OPTIONS= 25 | 26 | # Extra options to supply to gtkdoc-scan. 27 | # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" 28 | SCAN_OPTIONS=--rebuild-types 29 | 30 | # Extra options to supply to gtkdoc-mkdb. 31 | # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml 32 | MKDB_OPTIONS=--sgml-mode --output-format=xml 33 | 34 | # Extra options to supply to gtkdoc-mktmpl 35 | # e.g. MKTMPL_OPTIONS=--only-section-tmpl 36 | MKTMPL_OPTIONS= 37 | 38 | # Extra options to supply to gtkdoc-fixref. Not normally needed. 39 | # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html 40 | FIXXREF_OPTIONS= 41 | 42 | # Used for dependencies. The docs will be rebuilt if any of these change. 43 | # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h 44 | # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c 45 | HFILE_GLOB=$(top_srcdir)/src/*.h 46 | CFILE_GLOB=$(top_srcdir)/src/*.c 47 | 48 | # Header files to ignore when scanning. 49 | # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h 50 | IGNORE_HFILES= \ 51 | eom-image-private.h \ 52 | eom-image-jpeg.h \ 53 | eom-marshal.h \ 54 | eom-application-service.h \ 55 | eom-enum-types.h 56 | 57 | if !HAVE_EXIF 58 | IGNORE_HFILES += \ 59 | eom-exif-util.h \ 60 | eom-metadata-details.h 61 | endif 62 | 63 | # Images to copy into HTML directory. 64 | # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png 65 | HTML_IMAGES= 66 | 67 | # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). 68 | # e.g. content_files=running.sgml building.sgml changes-2.0.sgml 69 | content_files= version.xml 70 | 71 | # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded 72 | # These files must be listed here *and* in content_files 73 | # e.g. expand_content_files=running.sgml 74 | expand_content_files= 75 | 76 | # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. 77 | # Only needed if you are using gtkdoc-scangobj to dynamically query widget 78 | # signals and properties. 79 | # e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) 80 | # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) 81 | AM_CPPFLAGS= \ 82 | -I$(top_srcdir) \ 83 | -I$(top_builddir) \ 84 | -I$(top_srcdir)/src \ 85 | -I$(top_srcdir)/plugins \ 86 | -I$(top_srcdir)/jpegutils \ 87 | -I$(top_srcdir)/cut-n-paste/toolbar-editor \ 88 | $(EOM_CFLAGS) 89 | 90 | if ENABLE_JPEG 91 | jpeg_LIB = $(top_builddir)/jpegutils/libeom-jpegutils.la 92 | endif 93 | 94 | GTKDOC_LIBS=\ 95 | $(top_builddir)/src/libeom.la \ 96 | $(top_builddir)/cut-n-paste/toolbar-editor/libtoolbareditor.la \ 97 | $(BINDING_LIBS) \ 98 | $(LIBJPEG) \ 99 | $(X_LIBS) \ 100 | $(EOM_LIBS) \ 101 | $(jpeg_LIB) \ 102 | $(MORE_GTKDOC_LIBS) 103 | 104 | # This includes the standard gtk-doc make rules, copied by gtkdocize. 105 | include $(top_srcdir)/gtk-doc.make 106 | 107 | # Other files to distribute 108 | # e.g. EXTRA_DIST += version.xml.in 109 | EXTRA_DIST += version.xml.in \ 110 | $(DOC_MODULE)-docs.sgml.in 111 | 112 | # Files not to distribute 113 | # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types 114 | # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt 115 | DISTCLEANFILES = $(DOC_MODULE).types 116 | 117 | # Comment this out if you want your docs-status tested during 'make check' 118 | #TESTS = $(GTKDOC_CHECK) 119 | 120 | -include $(top_srcdir)/git.mk 121 | -------------------------------------------------------------------------------- /doc/reference/eom-docs.sgml.in: -------------------------------------------------------------------------------- 1 | 2 | 5 | ]> 6 | 7 | 8 | Eye of MATE Reference Manual 9 | 10 | for Eye of MATE &version; 11 | 12 | 13 | 14 | API Reference 15 | 16 | User Interface 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | @EOM_DOC_EXIF_START@ 26 | 27 | @EOM_DOC_EXIF_STOP@ 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | Image data and manipulation 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | Printing 47 | 48 | 49 | 50 | 51 | 52 | 53 | Application and configuration 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | Plugins 62 | 63 | 64 | 65 | 66 | Utilities 67 | 68 | 69 | 70 | @EOM_DOC_EXIF_START@ 71 | 72 | @EOM_DOC_EXIF_STOP@ 73 | 74 | 75 | 76 | 77 | 78 | 79 | Asynchronous jobs 80 | 81 | 82 | 83 | 84 | 85 | 86 | Appendix 87 | 88 | API Index 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /doc/reference/eom-overrides.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/doc/reference/eom-overrides.txt -------------------------------------------------------------------------------- /doc/reference/meson.build: -------------------------------------------------------------------------------- 1 | ignore_headers = [ 2 | 'eom-image-private.h', 3 | 'eom-image-jpeg.h', 4 | 'eom-marshal.h', 5 | 'eom-application-service.h', 6 | 'eom-enum-types.h', 7 | ] 8 | 9 | if not exif.found() 10 | ignore_headers += [ 11 | 'eom-exif-util.h', 12 | 'eom-metadata-details.h', 13 | ] 14 | endif 15 | 16 | sgml = configure_file(input: 'eom-docs.sgml.in', configuration: pkg_info, output: 'eom-docs.sgml') 17 | versionsxml = configure_file(input: 'version.xml.in', configuration: pkg_info, output: 'version.xml') 18 | 19 | 20 | if false # Doesn't work, see below 21 | gnome.gtkdoc( 22 | 'eom', 23 | src_dir: src_inc, 24 | main_sgml: 'eom-docs.sgml.in', 25 | scan_args: ['--rebuild-types'], 26 | mkdb_args: ['--sgml-mode', '--output-format=xml'], 27 | ignore_headers: ignore_headers, 28 | content_files: [versionsxml], 29 | # Meson doesn't link built object file to the scan 30 | dependencies: [all_deps, libeom], 31 | install: true, 32 | ) 33 | endif 34 | -------------------------------------------------------------------------------- /doc/reference/version.xml.in: -------------------------------------------------------------------------------- 1 | @VERSION@ 2 | -------------------------------------------------------------------------------- /help/C/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/C/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/C/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/C/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/C/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/C/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/LINGUAS: -------------------------------------------------------------------------------- 1 | af am ar as ast be bg bn bn_IN br ca ca@valencia cmn cs da de dz el en_AU en_CA en_GB eo es_AR es et eu fi fr fur ga gl gu he hi hr hu hy id ie is it ja kab ka kk kn ko ku ky lt lv mai mk ml mr ms nb ne nl nn oc or pa pl ps pt_BR pt ro ru si sk sl sq sr@latin sr sv ta te th tr uk uz vi zh_CN zh_HK zh_TW 2 | -------------------------------------------------------------------------------- /help/Makefile.am: -------------------------------------------------------------------------------- 1 | @YELP_HELP_RULES@ 2 | 3 | HELP_ID = eom 4 | HELP_FILES = index.docbook legal.xml 5 | HELP_MEDIA = \ 6 | figures/eom_save_as_window.png \ 7 | figures/eom_start_window.png \ 8 | figures/eom_toolbar_editor_window.png 9 | 10 | if USE_NLS 11 | # Add linguas to be ignored, e.g. IGNORE_HELP_LINGUAS = ca de es fr 12 | IGNORE_HELP_LINGUAS = 13 | HELP_LINGUAS = $(if $(IGNORE_HELP_LINGUAS), \ 14 | $(filter-out $(IGNORE_HELP_LINGUAS),$(subst /,,$(dir $(wildcard */*.po)))), \ 15 | $(subst /,,$(dir $(wildcard */*.po))) ) 16 | else 17 | HELP_LINGUAS = 18 | endif 19 | 20 | -include $(top_srcdir)/git.mk 21 | -------------------------------------------------------------------------------- /help/ca/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/ca/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/ca/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/ca/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/ca/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/ca/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/cs/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/cs/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/cs/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/cs/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/cs/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/cs/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/de/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/de/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/de/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/de/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/el/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/el/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/eom.omf.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | user's guide 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /help/es/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/es/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/es/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/es/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/es/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/es/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/eu/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/eu/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/fr/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/fr/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/ja/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/ja/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/ko/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/ko/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/meson.build: -------------------------------------------------------------------------------- 1 | gnome.yelp('eom', 2 | sources: ['index.docbook', 'legal.xml'], 3 | media: [ 4 | 'figures/eom_save_as_window.png', 5 | 'figures/eom_start_window.png', 6 | 'figures/eom_toolbar_editor_window.png', 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /help/pt_BR/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/pt_BR/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/pt_BR/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/pt_BR/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/sv/figures/eom_save_as_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/sv/figures/eom_save_as_window.png -------------------------------------------------------------------------------- /help/sv/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/sv/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/sv/figures/eom_toolbar_editor_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/sv/figures/eom_toolbar_editor_window.png -------------------------------------------------------------------------------- /help/zh_CN/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/zh_CN/figures/eom_start_window.png -------------------------------------------------------------------------------- /help/zh_TW/figures/eom_start_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mate-desktop/eom/891c063168f0d794228fd8069deca1f513453c4f/help/zh_TW/figures/eom_start_window.png -------------------------------------------------------------------------------- /jpegutils/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CPPFLAGS = $(EOM_CFLAGS) \ 2 | $(EXIF_CFLAGS) 3 | 4 | noinst_LTLIBRARIES = libeom-jpegutils.la 5 | 6 | libeom_jpegutils_la_SOURCES = \ 7 | jpegint.h \ 8 | transupp.h 9 | 10 | if HAVE_LIBJPEG_80 11 | libeom_jpegutils_la_SOURCES += \ 12 | jpegint-8a.h \ 13 | transupp-8a.c \ 14 | transupp-8a.h 15 | else 16 | libeom_jpegutils_la_SOURCES += \ 17 | transupp-6b.c \ 18 | transupp-6b.h 19 | endif 20 | 21 | EXTRA_DIST = README.6b README.8a 22 | 23 | -include $(top_srcdir)/git.mk 24 | -------------------------------------------------------------------------------- /jpegutils/jpegint.h: -------------------------------------------------------------------------------- 1 | /* Wrapper around jpegint.h for libjpeg-8. */ 2 | 3 | #if JPEG_LIB_VERSION >= 80 4 | #include "jpegint-8a.h" 5 | #else 6 | /* Not needed in libjpeg < 8 */ 7 | #endif 8 | -------------------------------------------------------------------------------- /jpegutils/meson.build: -------------------------------------------------------------------------------- 1 | src = [ 2 | 'jpegint.h', 3 | 'transupp.h', 4 | ] 5 | 6 | if jpeg_80 7 | src += [ 8 | 'jpegint-8a.h', 9 | 'transupp-8a.c', 10 | 'transupp-8a.h', 11 | ] 12 | else 13 | src += [ 14 | 'transupp-6b.c', 15 | 'transupp-6b.h', 16 | ] 17 | endif 18 | 19 | jpegutils = static_library( 20 | 'eom-jpegutils', 21 | src, 22 | dependencies: all_deps, 23 | include_directories: top_inc, 24 | ) 25 | 26 | jpegutils_inc = include_directories('.') 27 | -------------------------------------------------------------------------------- /jpegutils/transupp.h: -------------------------------------------------------------------------------- 1 | #if JPEG_LIB_VERSION >= 80 2 | #include "transupp-8a.h" 3 | #else 4 | #include "transupp-6b.h" 5 | #endif 6 | -------------------------------------------------------------------------------- /makepot: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | PACKAGE=eom; 4 | 5 | # normal translations 6 | make -C po $PACKAGE.pot && mv po/$PACKAGE.pot . 7 | sed -i "/#, fuzzy/d" $PACKAGE.pot 8 | 9 | # translations for user-quide 10 | rm -f help/$PACKAGE.pot && 11 | make -C help $PACKAGE.pot 12 | -------------------------------------------------------------------------------- /man/Makefile.am: -------------------------------------------------------------------------------- 1 | man_MANS = \ 2 | eom.1 3 | 4 | EXTRA_DIST = $(man_MANS) 5 | 6 | -include $(top_srcdir)/git.mk 7 | -------------------------------------------------------------------------------- /man/eom.1: -------------------------------------------------------------------------------- 1 | .\" Man page for EOM 2 | .TH EOM 1 "31 January 2014" "MATE Desktop Environment" 3 | .\" Please adjust this date when revising the manpage. 4 | .\" 5 | .SH "NAME" 6 | eom \- The Eye of MATE Image Viewer 7 | .SH "SYNOPSIS" 8 | .B eom [\-\-fullscreen] [\-\-disable-image-collection] [\-\-slide-show] [\-\-new instance] [FILES...] 9 | .SH "DESCRIPTION" 10 | \fBeom\fR or the Eye of MATE is the official image viewer for the MATE Desktop Environment. It aims to be simplistic, lightweight, and easy to use. The Eye of MATE may also be used to perform basic tasks like image flipping and rotation. 11 | .PP 12 | Eye of MATE features a flexible plugin system which can be used to dynamically add new advanced features to \fBeom\fR itself. \fBeom\fR uses the gdk-pixbuf library, it can handle large images, zoom, and scroll with low memory usage. 13 | .PP 14 | This manual page briefly documents the \fBeom\fR command. 15 | .SH "OPTIONS" 16 | .TP 17 | \fBfilename(s)...\fR 18 | Specifies the image to open when \fBeom\fR starts. If this is not specified, \fBeom\fR will start with a blank window and you may open a file from the menu or by using the shortcut CTRL+O. \fBeom\fR also supports handling of remote files. 19 | .TP 20 | \fB\-\-display=DISPLAY\fR 21 | X display to use. 22 | .TP 23 | \fB\-f, \-\-fullscreen\fR 24 | Start \fBeom\fR in fullscreen mode. 25 | .TP 26 | \fB\-c, \-\-disable-image-collection\fR 27 | Disable image collection viewer. 28 | .TP 29 | \fB\-s, \-\-slide-show\fR 30 | Open in slideshow mode. 31 | .TP 32 | \fB\-n, \-\-new-instance\fR 33 | Start a new instance instead of reusing an existing window. 34 | .TP 35 | \fB\-\-version\fR 36 | Output version information and exit. 37 | .TP 38 | \fB\-h, \-\-help\fR 39 | Print standard command line options. 40 | .TP 41 | \fB\-\-help\-all\fR 42 | Print all command line options. 43 | .P 44 | This program also accepts the standard GTK options. 45 | .SH "EXAMPLES" 46 | \fBeom \-f http://mate-desktop.org/assets/img/icons/mate.png\fR 47 | .RS 4 48 | Open the referenced file in fullscreen mode. 49 | .RE 50 | .PP 51 | \fBeom \-s /usr/share/eom/icons/hicolor/scalable/actions\fR 52 | .RS 4 53 | Open the images in the referenced directory in slideshow mode. 54 | .SH "BUGS" 55 | .SS Should you encounter any bugs, they may be reported at: 56 | http://github.com/mate-desktop/eom/issues 57 | .SH "AUTHORS" 58 | .SS This Manual Page has been written for the MATE Desktop Environment by: 59 | Scott Balneaves (2013) 60 | Adam Erdman (2014) 61 | .SH "SEE ALSO" 62 | .SS 63 | Eye of MATE documentation can be found from the "Help" menu, or by pressing the F1 key. 64 | Further information may also be available at: http://wiki.mate-desktop.org/docs 65 | -------------------------------------------------------------------------------- /man/meson.build: -------------------------------------------------------------------------------- 1 | install_man('eom.1') 2 | -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | option('nls', type : 'boolean', value : true, description : 'Native language support') 2 | option('thumbnailer', type : 'boolean', value: true) 3 | option('gdk-pixbuf-thumbnailer', type : 'boolean', value: true, description: 'Use gdk-pixbuf-thumbnailer') 4 | 5 | option('introspection', type : 'feature', description : 'Enable GObject introspection') 6 | option('xmp', type : 'feature', description : 'Special XMP support') 7 | option('libexif', type : 'feature', description : 'EXIF support') 8 | option('cms', type : 'feature', description : 'Colour management support') 9 | option('jpeg', type : 'feature', description : 'Special JPEG support') 10 | option('librsvg', type : 'feature', description : 'RSVG support') 11 | -------------------------------------------------------------------------------- /plugins/Makefile.am: -------------------------------------------------------------------------------- 1 | AUTOMAKE_OPTIONS = subdir-objects 2 | 3 | pluginsdir = $(libdir)/eom/plugins 4 | 5 | AM_CPPFLAGS = \ 6 | -I$(top_srcdir)/src \ 7 | $(EOM_CFLAGS) \ 8 | $(WARN_CFLAGS) \ 9 | -DEOM_LOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\" 10 | 11 | AM_LDFLAGS = -avoid-version -module 12 | 13 | plugins_LTLIBRARIES = \ 14 | fullscreen/libfullscreen.la \ 15 | reload/libreload.la 16 | 17 | plugins_in_files = \ 18 | fullscreen/fullscreen.plugin.desktop.in \ 19 | reload/reload.plugin.desktop.in 20 | 21 | # Fullscreen plugin 22 | fullscreen_libfullscreen_la_SOURCES = \ 23 | fullscreen/eom-fullscreen-plugin.h \ 24 | fullscreen/eom-fullscreen-plugin.c 25 | 26 | fullscreen_libfullscreen_la_LIBADD = $(EOM_LIBS) 27 | 28 | # Reload plugin 29 | reload_libreload_la_SOURCES = \ 30 | reload/eom-reload-plugin.h \ 31 | reload/eom-reload-plugin.c 32 | 33 | reload_libreload_la_LIBADD = $(EOM_LIBS) 34 | 35 | # Statusbar Date Plugin 36 | if HAVE_EXIF 37 | plugins_LTLIBRARIES += statusbar-date/libstatusbar-date.la 38 | 39 | statusbar_date_libstatusbar_date_la_SOURCES = \ 40 | statusbar-date/eom-statusbar-date-plugin.h \ 41 | statusbar-date/eom-statusbar-date-plugin.c 42 | 43 | statusbar_date_libstatusbar_date_la_LIBADD = $(EOM_LIBS) 44 | plugins_in_files += statusbar-date/statusbar-date.plugin.desktop.in 45 | endif 46 | 47 | # Generate plugin info files 48 | 49 | plugins_in_in_files = $(plugins_in_files:.desktop.in=.desktop.in.in) 50 | plugins_DATA = $(plugins_in_files:.plugin.desktop.in=.plugin) 51 | 52 | %.plugin: %.plugin.desktop.in 53 | if USE_NLS 54 | $(AM_V_GEN) $(MSGFMT) --desktop --keyword=Name --keyword=Description --template $< -d $(top_srcdir)/po -o $@ 55 | else 56 | $(AM_V_GEN) cp $< $@ 57 | endif 58 | 59 | DISTCLEANFILES = $(plugins_in_files) 60 | CLEANFILES = $(plugins_DATA) 61 | 62 | EXTRA_DIST = $(plugins_in_in_files) 63 | 64 | -include $(top_srcdir)/git.mk 65 | -------------------------------------------------------------------------------- /plugins/fullscreen/eom-fullscreen-plugin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EOM_FULLSCREEN_PLUGIN_H__ 2 | #define __EOM_FULLSCREEN_PLUGIN_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | G_BEGIN_DECLS 13 | 14 | /* 15 | * Type checking and casting macros 16 | */ 17 | #define EOM_TYPE_FULLSCREEN_PLUGIN \ 18 | (eom_fullscreen_plugin_get_type()) 19 | #define EOM_FULLSCREEN_PLUGIN(o) \ 20 | (G_TYPE_CHECK_INSTANCE_CAST((o), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPlugin)) 21 | #define EOM_FULLSCREEN_PLUGIN_CLASS(k) \ 22 | G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPluginClass)) 23 | #define EOM_IS_FULLSCREEN_PLUGIN(o) \ 24 | (G_TYPE_CHECK_INSTANCE_TYPE((o), EOM_TYPE_FULLSCREEN_PLUGIN)) 25 | #define EOM_IS_FULLSCREEN_PLUGIN_CLASS(k) \ 26 | (G_TYPE_CHECK_CLASS_TYPE((k), EOM_TYPE_FULLSCREEN_PLUGIN)) 27 | #define EOM_FULLSCREEN_PLUGIN_GET_CLASS(o) \ 28 | (G_TYPE_INSTANCE_GET_CLASS((o), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPluginClass)) 29 | 30 | /* Private structure type */ 31 | typedef struct _EomFullscreenPluginPrivate EomFullscreenPluginPrivate; 32 | 33 | /* 34 | * Main object structure 35 | */ 36 | typedef struct _EomFullscreenPlugin EomFullscreenPlugin; 37 | 38 | struct _EomFullscreenPlugin { 39 | PeasExtensionBase parent_instance; 40 | 41 | EomWindow *window; 42 | gulong signal_id; 43 | }; 44 | 45 | /* 46 | * Class definition 47 | */ 48 | typedef struct _EomFullscreenPluginClass EomFullscreenPluginClass; 49 | 50 | struct _EomFullscreenPluginClass { 51 | PeasExtensionBaseClass parent_class; 52 | }; 53 | 54 | /* 55 | * Public methods 56 | */ 57 | GType eom_fullscreen_plugin_get_type (void) G_GNUC_CONST; 58 | 59 | /* All the plugins must implement this function */ 60 | G_MODULE_EXPORT void peas_register_types (PeasObjectModule *module); 61 | 62 | G_END_DECLS 63 | 64 | #endif /* __EOM_FULLSCREEN_PLUGIN_H__ */ 65 | -------------------------------------------------------------------------------- /plugins/fullscreen/fullscreen.plugin.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Plugin] 2 | Module=fullscreen 3 | IAge=2 4 | Name=Fullscreen with double-click 5 | Icon=view-fullscreen 6 | Description=Activate fullscreen mode with double-click 7 | Authors=Lucas Rocha 8 | Copyright=Copyright © 2007 Lucas Rocha 9 | Website=@PACKAGE_URL@ 10 | -------------------------------------------------------------------------------- /plugins/fullscreen/meson.build: -------------------------------------------------------------------------------- 1 | desktopfile = configure_file(input: 'fullscreen.plugin.desktop.in.in', configuration: pkg_info, output: 'fullscreen.plugin.desktop.in') 2 | if get_option('nls') 3 | i18n.merge_file( 4 | input: desktopfile, 5 | output: 'fullscreen.plugin', 6 | install: true, 7 | install_dir: pluginsdir, 8 | type: 'desktop', 9 | po_dir: po_dir, 10 | ) 11 | else 12 | install_data(desktopfile, install_dir: pluginsdir, rename: ['fullscreen.plugin']) 13 | endif 14 | 15 | shared_library( 16 | 'fullscreen', 17 | sources: [ 18 | 'eom-fullscreen-plugin.h', 19 | 'eom-fullscreen-plugin.c', 20 | ], 21 | c_args: plugins_c_args, 22 | dependencies: all_deps, 23 | include_directories: [top_inc, src_inc], 24 | link_with: [eom_links], 25 | install: true, 26 | install_dir: pluginsdir 27 | ) 28 | -------------------------------------------------------------------------------- /plugins/meson.build: -------------------------------------------------------------------------------- 1 | plugins_c_args = ['-DEOM_LOCALEDIR=' + join_paths(datadir / 'locale')] 2 | 3 | subdir('fullscreen') 4 | subdir('reload') 5 | 6 | if exif.found() 7 | subdir('statusbar-date') 8 | endif 9 | -------------------------------------------------------------------------------- /plugins/reload/eom-reload-plugin.h: -------------------------------------------------------------------------------- 1 | #ifndef __EOM_RELOAD_PLUGIN_H__ 2 | #define __EOM_RELOAD_PLUGIN_H__ 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | G_BEGIN_DECLS 13 | 14 | /* 15 | * Type checking and casting macros 16 | */ 17 | #define EOM_TYPE_RELOAD_PLUGIN \ 18 | (eom_reload_plugin_get_type()) 19 | #define EOM_RELOAD_PLUGIN(o) \ 20 | (G_TYPE_CHECK_INSTANCE_CAST((o), EOM_TYPE_RELOAD_PLUGIN, EomReloadPlugin)) 21 | #define EOM_RELOAD_PLUGIN_CLASS(k) \ 22 | (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_RELOAD_PLUGIN, EomReloadPluginClass)) 23 | #define EOM_IS_RELOAD_PLUGIN(o) \ 24 | (G_TYPE_CHECK_INSTANCE_TYPE((o), EOM_TYPE_RELOAD_PLUGIN)) 25 | #define EOM_IS_RELOAD_PLUGIN_CLASS(k) \ 26 | (G_TYPE_CHECK_CLASS_TYPE((k), EOM_TYPE_RELOAD_PLUGIN)) 27 | #define EOM_RELOAD_PLUGIN_GET_CLASS(o) \ 28 | (G_TYPE_INSTANCE_GET_CLASS((o), EOM_TYPE_RELOAD_PLUGIN, EomReloadPluginClass)) 29 | 30 | /* Private structure type */ 31 | typedef struct _EomReloadPluginPrivate EomReloadPluginPrivate; 32 | 33 | /* 34 | * Main object structure 35 | */ 36 | typedef struct _EomReloadPlugin EomReloadPlugin; 37 | 38 | struct _EomReloadPlugin { 39 | PeasExtensionBase parent_instance; 40 | 41 | EomWindow *window; 42 | GtkActionGroup *ui_action_group; 43 | guint ui_id; 44 | }; 45 | 46 | /* 47 | * Class definition 48 | */ 49 | typedef struct _EomReloadPluginClass EomReloadPluginClass; 50 | 51 | struct _EomReloadPluginClass { 52 | PeasExtensionBaseClass parent_class; 53 | }; 54 | 55 | /* 56 | * Public methods 57 | */ 58 | GType eom_reload_plugin_get_type (void) G_GNUC_CONST; 59 | 60 | /* All the plugins must implement this function */ 61 | G_MODULE_EXPORT void peas_register_types (PeasObjectModule *module); 62 | 63 | G_END_DECLS 64 | 65 | #endif /* __EOM_RELOAD_PLUGIN_H__ */ 66 | -------------------------------------------------------------------------------- /plugins/reload/meson.build: -------------------------------------------------------------------------------- 1 | desktopfile = configure_file(input: 'reload.plugin.desktop.in.in', configuration: pkg_info, output: 'reload.plugin.desktop.in') 2 | if get_option('nls') 3 | i18n.merge_file( 4 | input: desktopfile, 5 | output: 'reload.plugin', 6 | install: true, 7 | install_dir: pluginsdir, 8 | type: 'desktop', 9 | po_dir: po_dir, 10 | ) 11 | else 12 | install_data(desktopfile, install_dir: pluginsdir, rename: ['reload.plugin']) 13 | endif 14 | 15 | shared_library( 16 | 'reload', 17 | sources: [ 18 | 'eom-reload-plugin.h', 19 | 'eom-reload-plugin.c', 20 | ], 21 | c_args: plugins_c_args, 22 | dependencies: all_deps, 23 | include_directories: [top_inc, src_inc], 24 | link_with: [eom_links], 25 | install: true, 26 | install_dir: pluginsdir 27 | ) 28 | -------------------------------------------------------------------------------- /plugins/reload/reload.plugin.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Plugin] 2 | Module=reload 3 | IAge=2 4 | Name=Reload Image 5 | Icon=view-refresh 6 | Description=Reload current image 7 | Authors=Lucas Rocha 8 | Copyright=Copyright © 2007 Lucas Rocha 9 | Website=@PACKAGE_URL@ 10 | -------------------------------------------------------------------------------- /plugins/statusbar-date/eom-statusbar-date-plugin.h: -------------------------------------------------------------------------------- 1 | /* Statusbar Date -- Shows the EXIF date in EOM's statusbar 2 | * 3 | * Copyright (C) 2008 The Free Software Foundation 4 | * 5 | * Author: Claudio Saavedra 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_STATUSBAR_DATE_PLUGIN_H__ 23 | #define __EOM_STATUSBAR_DATE_PLUGIN_H__ 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | #include 32 | 33 | G_BEGIN_DECLS 34 | 35 | /* 36 | * Type checking and casting macros 37 | */ 38 | #define EOM_TYPE_STATUSBAR_DATE_PLUGIN \ 39 | (eom_statusbar_date_plugin_get_type()) 40 | #define EOM_STATUSBAR_DATE_PLUGIN(o) \ 41 | (G_TYPE_CHECK_INSTANCE_CAST((o), EOM_TYPE_STATUSBAR_DATE_PLUGIN, EomStatusbarDatePlugin)) 42 | #define EOM_STATUSBAR_DATE_PLUGIN_CLASS(k) \ 43 | G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_STATUSBAR_DATE_PLUGIN, EomStatusbarDatePluginClass)) 44 | #define EOM_IS_STATUSBAR_DATE_PLUGIN(o) \ 45 | (G_TYPE_CHECK_INSTANCE_TYPE((o), EOM_TYPE_STATUSBAR_DATE_PLUGIN)) 46 | #define EOM_IS_STATUSBAR_DATE_PLUGIN_CLASS(k) \ 47 | (G_TYPE_CHECK_CLASS_TYPE((k), EOM_TYPE_STATUSBAR_DATE_PLUGIN)) 48 | #define EOM_STATUSBAR_DATE_PLUGIN_GET_CLASS(o) \ 49 | (G_TYPE_INSTANCE_GET_CLASS((o), EOM_TYPE_STATUSBAR_DATE_PLUGIN, EomStatusbarDatePluginClass)) 50 | 51 | /* Private structure type */ 52 | typedef struct _EomStatusbarDatePluginPrivate EomStatusbarDatePluginPrivate; 53 | 54 | /* 55 | * Main object structure 56 | */ 57 | typedef struct _EomStatusbarDatePlugin EomStatusbarDatePlugin; 58 | 59 | struct _EomStatusbarDatePlugin { 60 | PeasExtensionBase parent_instance; 61 | 62 | EomWindow *window; 63 | GtkWidget *statusbar_date; 64 | gulong signal_id; 65 | }; 66 | 67 | /* 68 | * Class definition 69 | */ 70 | typedef struct _EomStatusbarDatePluginClass EomStatusbarDatePluginClass; 71 | 72 | struct _EomStatusbarDatePluginClass { 73 | PeasExtensionBaseClass parent_class; 74 | }; 75 | 76 | /* 77 | * Public methods 78 | */ 79 | GType eom_statusbar_date_plugin_get_type (void) G_GNUC_CONST; 80 | 81 | /* All the plugins must implement this function */ 82 | G_MODULE_EXPORT void peas_register_types (PeasObjectModule *module); 83 | 84 | G_END_DECLS 85 | 86 | #endif /* __EOM_STATUSBAR_DATE_PLUGIN_H__ */ 87 | -------------------------------------------------------------------------------- /plugins/statusbar-date/meson.build: -------------------------------------------------------------------------------- 1 | desktopfile = configure_file(input: 'statusbar-date.plugin.desktop.in.in', configuration: pkg_info, output: 'statusbar-date.plugin.desktop.in') 2 | if get_option('nls') 3 | i18n.merge_file( 4 | input: desktopfile, 5 | output: 'statusbar-date.plugin', 6 | install: true, 7 | install_dir: pluginsdir, 8 | type: 'desktop', 9 | po_dir: po_dir, 10 | ) 11 | else 12 | install_data(desktopfile, install_dir: pluginsdir, rename: ['statusbar-date.plugin']) 13 | endif 14 | 15 | shared_library( 16 | 'statusbar-date', 17 | sources: [ 18 | 'eom-statusbar-date-plugin.h', 19 | 'eom-statusbar-date-plugin.c', 20 | ], 21 | c_args: plugins_c_args, 22 | dependencies: all_deps, 23 | include_directories: [top_inc, src_inc], 24 | link_with: [eom_links], 25 | install: true, 26 | install_dir: pluginsdir 27 | ) 28 | -------------------------------------------------------------------------------- /plugins/statusbar-date/statusbar-date.plugin.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Plugin] 2 | Module=statusbar-date 3 | IAge=2 4 | Name=Date in statusbar 5 | Description=Shows the image date in the window statusbar 6 | Authors=Claudio Saavedra 7 | Copyright=Copyright © 2008 Free Software Foundation 8 | Website=@PACKAGE_URL@ 9 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | # please keep this list sorted alphabetically 2 | # 3 | af 4 | am 5 | ar 6 | as 7 | ast 8 | az 9 | be 10 | bg 11 | bn 12 | bn_IN 13 | br 14 | bs 15 | ca 16 | ca@valencia 17 | cmn 18 | crh 19 | cs 20 | cy 21 | da 22 | de 23 | dz 24 | el 25 | en_AU 26 | en_CA 27 | en_GB 28 | eo 29 | es 30 | es_AR 31 | es_CL 32 | es_CO 33 | es_CR 34 | es_DO 35 | es_EC 36 | es_ES 37 | es_MX 38 | es_NI 39 | es_PA 40 | es_PE 41 | es_PR 42 | es_SV 43 | es_UY 44 | es_VE 45 | et 46 | eu 47 | fa 48 | fi 49 | fr 50 | fr_CA 51 | frp 52 | fur 53 | fy 54 | ga 55 | gd 56 | gl 57 | gu 58 | ha 59 | he 60 | hi 61 | hr 62 | hu 63 | hy 64 | ia 65 | id 66 | ie 67 | ig 68 | is 69 | it 70 | ja 71 | jv 72 | ka 73 | kab 74 | kk 75 | km 76 | kn 77 | ko 78 | ks 79 | ku 80 | ku_IQ 81 | ky 82 | li 83 | lt 84 | lv 85 | mai 86 | mg 87 | mi 88 | mk 89 | ml 90 | mn 91 | mr 92 | ms 93 | nan 94 | nb 95 | nds 96 | ne 97 | nl 98 | nn 99 | nqo 100 | nso 101 | oc 102 | or 103 | pa 104 | pl 105 | pms 106 | ps 107 | pt 108 | pt_BR 109 | ro 110 | ru 111 | rw 112 | sc 113 | si 114 | sk 115 | sl 116 | sq 117 | sr 118 | sr@latin 119 | sv 120 | ta 121 | te 122 | th 123 | tk 124 | tr 125 | tt 126 | ug 127 | uk 128 | ur 129 | ur_PK 130 | uz 131 | vi 132 | wa 133 | xh 134 | yi 135 | yo 136 | zh_CN 137 | zh_HK 138 | zh_TW 139 | zu 140 | -------------------------------------------------------------------------------- /po/Makevars: -------------------------------------------------------------------------------- 1 | # Makefile variables for PO directory in any package using GNU gettext. 2 | 3 | # Usually the message domain is the same as the package name. 4 | DOMAIN = $(PACKAGE) 5 | 6 | # These two variables depend on the location of this directory. 7 | subdir = po 8 | top_builddir = .. 9 | 10 | # These options get passed to xgettext. 11 | XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments=Translators: 12 | 13 | # This is the copyright holder that gets inserted into the header of the 14 | # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding 15 | # package. (Note that the msgstr strings, extracted from the package's 16 | # sources, belong to the copyright holder of the package.) Translators are 17 | # expected to transfer the copyright for their translations to this person 18 | # or entity, or to disclaim their copyright. The empty string stands for 19 | # the public domain; in this case the translators are expected to disclaim 20 | # their copyright. 21 | COPYRIGHT_HOLDER = MATE Desktop Environment team 22 | 23 | # This tells whether or not to prepend "GNU " prefix to the package 24 | # name that gets inserted into the header of the $(DOMAIN).pot file. 25 | # Possible values are "yes", "no", or empty. If it is empty, try to 26 | # detect it automatically by scanning the files in $(top_srcdir) for 27 | # "GNU packagename" string. 28 | PACKAGE_GNU = 29 | 30 | # This is the email address or URL to which the translators shall report 31 | # bugs in the untranslated strings: 32 | # - Strings which are not entire sentences, see the maintainer guidelines 33 | # in the GNU gettext documentation, section 'Preparing Strings'. 34 | # - Strings which use unclear terms or require additional context to be 35 | # understood. 36 | # - Strings which make invalid assumptions about notation of date, time or 37 | # money. 38 | # - Pluralisation problems. 39 | # - Incorrect English spelling. 40 | # - Incorrect formatting. 41 | # It can be your email address, or a mailing list address where translators 42 | # can write to without being subscribed, or the URL of a web page through 43 | # which the translators can contact you. 44 | MSGID_BUGS_ADDRESS = 45 | 46 | # This is the list of locale categories, beyond LC_MESSAGES, for which the 47 | # message catalogs shall be used. It is usually empty. 48 | EXTRA_LOCALE_CATEGORIES = 49 | 50 | # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' 51 | # context. Possible values are "yes" and "no". Set this to yes if the 52 | # package uses functions taking also a message context, like pgettext(), or 53 | # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. 54 | USE_MSGCTXT = no 55 | 56 | # These options get passed to msgmerge. 57 | # Useful options are in particular: 58 | # --previous to keep previous msgids of translated messages, 59 | # --quiet to reduce the verbosity. 60 | MSGMERGE_OPTIONS = 61 | 62 | # These options get passed to msginit. 63 | # If you want to disable line wrapping when writing PO files, add 64 | # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and 65 | # MSGINIT_OPTIONS. 66 | MSGINIT_OPTIONS = 67 | 68 | # This tells whether or not to regenerate a PO file when $(DOMAIN).pot 69 | # has changed. Possible values are "yes" and "no". Set this to no if 70 | # the POT file is checked in the repository and the version control 71 | # program ignores timestamps. 72 | PO_DEPENDS_ON_POT = yes 73 | 74 | # This tells whether or not to forcibly update $(DOMAIN).pot and 75 | # regenerate PO files on "make dist". Possible values are "yes" and 76 | # "no". Set this to no if the POT file and PO files are maintained 77 | # externally. 78 | DIST_DEPENDS_ON_UPDATE_PO = yes 79 | -------------------------------------------------------------------------------- /po/POTFILES.in: -------------------------------------------------------------------------------- 1 | # List of source files containing translatable strings. 2 | # Please keep this file sorted alphabetically. 3 | cut-n-paste/toolbar-editor/egg-editable-toolbar.c 4 | cut-n-paste/toolbar-editor/egg-toolbar-editor.c 5 | data/eom.appdata.xml.in.in 6 | data/eom.desktop.in.in 7 | data/eom-image-properties-dialog.ui 8 | data/eom-multiple-save-as-dialog.ui 9 | data/eom-preferences-dialog.ui 10 | data/metadata-sidebar.ui 11 | data/org.mate.eom.gschema.xml.in 12 | plugins/fullscreen/eom-fullscreen-plugin.c 13 | plugins/fullscreen/fullscreen.plugin.desktop.in.in 14 | plugins/reload/eom-reload-plugin.c 15 | plugins/reload/reload.plugin.desktop.in.in 16 | plugins/statusbar-date/statusbar-date.plugin.desktop.in.in 17 | src/eom-application.c 18 | src/eom-close-confirmation-dialog.c 19 | src/eom-file-chooser.c 20 | src/eom-image.c 21 | src/eom-image-jpeg.c 22 | src/eom-error-message-area.c 23 | src/eom-metadata-details.c 24 | src/eom-exif-util.c 25 | src/eom-metadata-sidebar.c 26 | src/eom-preferences-dialog.c 27 | src/eom-print.c 28 | src/eom-print-image-setup.c 29 | src/eom-properties-dialog.c 30 | src/eom-save-as-dialog-helper.c 31 | src/eom-statusbar.c 32 | src/eom-thumb-view.c 33 | src/eom-uri-converter.c 34 | src/eom-uri-converter.h 35 | src/eom-util.c 36 | src/eom-window.c 37 | src/main.c 38 | -------------------------------------------------------------------------------- /po/POTFILES.skip: -------------------------------------------------------------------------------- 1 | # List of source files that should *not* be translated. 2 | # Please keep this file sorted alphabetically. 3 | data/eom.desktop.in 4 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(meson.project_name(), 2 | preset: 'glib' 3 | ) 4 | -------------------------------------------------------------------------------- /src/eom-application-activatable.c: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-application-activatable.c 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2012 Felix Riemann 8 | * Copyright (C) 2013-2021 MATE developers 9 | * 10 | * Base on code by: 11 | * - Steve Frécinaux 12 | * 13 | * This program is free software; you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation; either version 2 16 | * of the License, or (at your option) any later version. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | * 23 | * You should have received a copy of the GNU General Public License along 24 | * with this program; if not, write to the Free Software Foundation, Inc., 25 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 26 | */ 27 | 28 | #ifdef HAVE_CONFIG_H 29 | #include "config.h" 30 | #endif 31 | 32 | #include "eom-application-activatable.h" 33 | 34 | #include 35 | #include "eom-application.h" 36 | 37 | G_DEFINE_INTERFACE(EomApplicationActivatable, eom_application_activatable, G_TYPE_OBJECT) 38 | 39 | void 40 | eom_application_activatable_default_init (EomApplicationActivatableInterface *iface) 41 | { 42 | static gboolean initialized = FALSE; 43 | 44 | if (!initialized) { 45 | /** 46 | * EomApplicationActivatable:app: 47 | * 48 | * This is the #EomApplication this #EomApplicationActivatable instance 49 | * should be attached to. 50 | */ 51 | g_object_interface_install_property (iface, 52 | g_param_spec_object ("app", "Application", 53 | "The EomApplication this instance it attached to", 54 | EOM_TYPE_APPLICATION, 55 | G_PARAM_READWRITE | 56 | G_PARAM_CONSTRUCT_ONLY | 57 | G_PARAM_STATIC_STRINGS)); 58 | initialized = TRUE; 59 | } 60 | } 61 | 62 | void 63 | eom_application_activatable_activate (EomApplicationActivatable *activatable) 64 | { 65 | EomApplicationActivatableInterface *iface; 66 | 67 | g_return_if_fail (EOM_IS_APPLICATION_ACTIVATABLE (activatable)); 68 | 69 | iface = EOM_APPLICATION_ACTIVATABLE_GET_IFACE (activatable); 70 | 71 | if (G_LIKELY (iface->activate != NULL)) 72 | iface->activate (activatable); 73 | } 74 | 75 | void 76 | eom_application_activatable_deactivate (EomApplicationActivatable *activatable) 77 | { 78 | EomApplicationActivatableInterface *iface; 79 | 80 | g_return_if_fail (EOM_IS_APPLICATION_ACTIVATABLE (activatable)); 81 | 82 | iface = EOM_APPLICATION_ACTIVATABLE_GET_IFACE (activatable); 83 | 84 | if (G_LIKELY (iface->deactivate != NULL)) 85 | iface->deactivate (activatable); 86 | } 87 | 88 | -------------------------------------------------------------------------------- /src/eom-application-activatable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-application-activatable.h 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2012 Felix Riemann 8 | * Copyright (C) 2013-2021 MATE developers 9 | * 10 | * Base on code by: 11 | * - Steve Frécinaux 12 | * 13 | * This program is free software; you can redistribute it and/or 14 | * modify it under the terms of the GNU General Public License 15 | * as published by the Free Software Foundation; either version 2 16 | * of the License, or (at your option) any later version. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | * 23 | * You should have received a copy of the GNU General Public License along 24 | * with this program; if not, write to the Free Software Foundation, Inc., 25 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 26 | */ 27 | 28 | #ifndef __EOM_APPLICATION_ACTIVATABLE_H__ 29 | #define __EOM_APPLICATION_ACTIVATABLE_H__ 30 | 31 | #include 32 | 33 | G_BEGIN_DECLS 34 | 35 | #define EOM_TYPE_APPLICATION_ACTIVATABLE (eom_application_activatable_get_type ()) 36 | #define EOM_APPLICATION_ACTIVATABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 37 | EOM_TYPE_APPLICATION_ACTIVATABLE, \ 38 | EomApplicationActivatable)) 39 | #define EOM_APPLICATION_ACTIVATABLE_IFACE(obj) \ 40 | (G_TYPE_CHECK_CLASS_CAST ((obj), \ 41 | EOM_TYPE_APPLICATION_ACTIVATABLE, \ 42 | EomApplicationActivatableInterface)) 43 | #define EOM_IS_APPLICATION_ACTIVATABLE(obj) \ 44 | (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 45 | EOM_TYPE_APPLICATION_ACTIVATABLE)) 46 | #define EOM_APPLICATION_ACTIVATABLE_GET_IFACE(obj) \ 47 | (G_TYPE_INSTANCE_GET_INTERFACE ((obj), \ 48 | EOM_TYPE_APPLICATION_ACTIVATABLE, \ 49 | EomApplicationActivatableInterface)) 50 | 51 | typedef struct _EomApplicationActivatable EomApplicationActivatable; 52 | typedef struct _EomApplicationActivatableInterface EomApplicationActivatableInterface; 53 | 54 | struct _EomApplicationActivatableInterface 55 | { 56 | GTypeInterface g_iface; 57 | 58 | /* vfuncs */ 59 | 60 | void (*activate) (EomApplicationActivatable *activatable); 61 | void (*deactivate) (EomApplicationActivatable *activatable); 62 | }; 63 | 64 | GType eom_application_activatable_get_type (void) G_GNUC_CONST; 65 | 66 | void eom_application_activatable_activate (EomApplicationActivatable *activatable); 67 | void eom_application_activatable_deactivate (EomApplicationActivatable *activatable); 68 | 69 | G_END_DECLS 70 | #endif /* __EOM_APPLICATION_ACTIVATABLE_H__ */ 71 | 72 | -------------------------------------------------------------------------------- /src/eom-application-internal.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Gnome - Application Facade (internal) 2 | * 3 | * Copyright (C) 2006-2012 The Free Software Foundation 4 | * Copyright (C) 2013-2021 MATE developers 5 | * 6 | * Author: Lucas Rocha 7 | * 8 | * Based on evince code (shell/ev-application.h) by: 9 | * - Martin Kretzschmar 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program; if not, write to the Free Software 23 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 24 | */ 25 | 26 | #ifndef __EOM_APPLICATION_INTERNAL_H__ 27 | #define __EOM_APPLICATION_INTERNAL_H__ 28 | 29 | #include 30 | #include 31 | 32 | #include 33 | 34 | #include "eom-application.h" 35 | #include "eom-plugin-engine.h" 36 | #include "egg-toolbars-model.h" 37 | #include "eom-window.h" 38 | 39 | G_BEGIN_DECLS 40 | 41 | struct _EomApplicationPrivate { 42 | EggToolbarsModel *toolbars_model; 43 | gchar *toolbars_file; 44 | EomPluginEngine *plugin_engine; 45 | 46 | EomStartupFlags flags; 47 | 48 | PeasExtensionSet *extensions; 49 | }; 50 | 51 | EggToolbarsModel *eom_application_get_toolbars_model (EomApplication *application); 52 | 53 | void eom_application_save_toolbars_model (EomApplication *application); 54 | 55 | void eom_application_reset_toolbars_model (EomApplication *app); 56 | 57 | G_END_DECLS 58 | 59 | #endif /* __EOM_APPLICATION_INTERNAL_H__ */ 60 | 61 | -------------------------------------------------------------------------------- /src/eom-application.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Application Facade 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on evince code (shell/ev-application.h) by: 8 | * - Martin Kretzschmar 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef __EOM_APPLICATION_H__ 26 | #define __EOM_APPLICATION_H__ 27 | 28 | #include 29 | #include 30 | 31 | #include 32 | #include 33 | #include "eom-window.h" 34 | 35 | G_BEGIN_DECLS 36 | 37 | typedef struct _EomApplication EomApplication; 38 | typedef struct _EomApplicationClass EomApplicationClass; 39 | typedef struct _EomApplicationPrivate EomApplicationPrivate; 40 | 41 | #define EOM_TYPE_APPLICATION (eom_application_get_type ()) 42 | #define EOM_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_APPLICATION, EomApplication)) 43 | #define EOM_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_APPLICATION, EomApplicationClass)) 44 | #define EOM_IS_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_APPLICATION)) 45 | #define EOM_IS_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EOM_TYPE_APPLICATION)) 46 | #define EOM_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EOM_TYPE_APPLICATION, EomApplicationClass)) 47 | 48 | #define EOM_APP (eom_application_get_instance ()) 49 | 50 | struct _EomApplication { 51 | GtkApplication base_instance; 52 | 53 | EomApplicationPrivate *priv; 54 | }; 55 | 56 | struct _EomApplicationClass { 57 | GtkApplicationClass parent_class; 58 | }; 59 | 60 | GType eom_application_get_type (void) G_GNUC_CONST; 61 | 62 | EomApplication *eom_application_get_instance (void); 63 | 64 | gboolean eom_application_open_window (EomApplication *application, 65 | guint timestamp, 66 | EomStartupFlags flags, 67 | GError **error); 68 | 69 | gboolean eom_application_open_uri_list (EomApplication *application, 70 | GSList *uri_list, 71 | guint timestamp, 72 | EomStartupFlags flags, 73 | GError **error); 74 | 75 | gboolean eom_application_open_file_list (EomApplication *application, 76 | GSList *file_list, 77 | guint timestamp, 78 | EomStartupFlags flags, 79 | GError **error); 80 | 81 | gboolean eom_application_open_uris (EomApplication *application, 82 | gchar **uris, 83 | guint timestamp, 84 | EomStartupFlags flags, 85 | GError **error); 86 | 87 | G_END_DECLS 88 | 89 | #endif /* __EOM_APPLICATION_H__ */ 90 | -------------------------------------------------------------------------------- /src/eom-clipboard-handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-clipboard-handler.h 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2010 GNOME Foundation 8 | * 9 | * This program is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU General Public License 11 | * as published by the Free Software Foundation; either version 2 12 | * of the License, or (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License along 20 | * with this program; if not, write to the Free Software Foundation, Inc., 21 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef __EOM_CLIPBOARD_HANDLER_H__ 25 | #define __EOM_CLIPBOARD_HANDLER_H__ 26 | 27 | #include 28 | #include 29 | 30 | #include "eom-image.h" 31 | 32 | G_BEGIN_DECLS 33 | 34 | #define EOM_TYPE_CLIPBOARD_HANDLER (eom_clipboard_handler_get_type ()) 35 | #define EOM_CLIPBOARD_HANDLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_CLIPBOARD_HANDLER, EomClipboardHandler)) 36 | #define EOM_CLIPBOARD_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_CLIPBOARD_HANDLER, EomClipboardHandlerClass)) 37 | #define EOM_IS_CLIPBOARD_HANDLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_CLIPBOARD_HANDLER)) 38 | #define EOM_IS_CLIPBOARD_HANDLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_CLIPBOARD_HANDLER)) 39 | #define EOM_CLIPBOARD_HANDLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_CLIPBOARD_HANDLER, EomClipboardHandlerClass)) 40 | 41 | typedef struct _EomClipboardHandler EomClipboardHandler; 42 | typedef struct _EomClipboardHandlerClass EomClipboardHandlerClass; 43 | typedef struct _EomClipboardHandlerPrivate EomClipboardHandlerPrivate; 44 | 45 | struct _EomClipboardHandler { 46 | GObject parent; 47 | 48 | EomClipboardHandlerPrivate *priv; 49 | }; 50 | 51 | struct _EomClipboardHandlerClass { 52 | GObjectClass parent_klass; 53 | }; 54 | 55 | GType eom_clipboard_handler_get_type (void) G_GNUC_CONST; 56 | 57 | EomClipboardHandler* eom_clipboard_handler_new (EomImage *img); 58 | 59 | void eom_clipboard_handler_copy_to_clipboard (EomClipboardHandler *handler, 60 | GtkClipboard *clipboard); 61 | 62 | G_END_DECLS 63 | #endif /* __EOM_CLIPBOARD_HANDLER_H__ */ 64 | -------------------------------------------------------------------------------- /src/eom-close-confirmation-dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-close-confirmation-dialog.h 3 | * This file is part of eom 4 | * 5 | * Author: Marcus Carlson 6 | * 7 | * Based on gedit code (gedit/gedit-close-confirmation.h) by gedit Team 8 | * 9 | * Copyright (C) 2004-2009 GNOME Foundation 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program; if not, write to the Free Software 23 | * Foundation, Inc., 51 Franklin St, Fifth Floor, 24 | * Boston, MA 02110-1301, USA. 25 | */ 26 | 27 | #ifndef __EOM_CLOSE_CONFIRMATION_DIALOG_H__ 28 | #define __EOM_CLOSE_CONFIRMATION_DIALOG_H__ 29 | 30 | #include 31 | #include 32 | 33 | #include 34 | 35 | #define EOM_TYPE_CLOSE_CONFIRMATION_DIALOG (eom_close_confirmation_dialog_get_type ()) 36 | #define EOM_CLOSE_CONFIRMATION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_CLOSE_CONFIRMATION_DIALOG, EomCloseConfirmationDialog)) 37 | #define EOM_CLOSE_CONFIRMATION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_CLOSE_CONFIRMATION_DIALOG, EomCloseConfirmationDialogClass)) 38 | #define EOM_IS_CLOSE_CONFIRMATION_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_CLOSE_CONFIRMATION_DIALOG)) 39 | #define EOM_IS_CLOSE_CONFIRMATION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_CLOSE_CONFIRMATION_DIALOG)) 40 | #define EOM_CLOSE_CONFIRMATION_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),EOM_TYPE_CLOSE_CONFIRMATION_DIALOG, EomCloseConfirmationDialogClass)) 41 | 42 | typedef struct _EomCloseConfirmationDialog EomCloseConfirmationDialog; 43 | typedef struct _EomCloseConfirmationDialogClass EomCloseConfirmationDialogClass; 44 | typedef struct _EomCloseConfirmationDialogPrivate EomCloseConfirmationDialogPrivate; 45 | 46 | struct _EomCloseConfirmationDialog 47 | { 48 | GtkDialog parent; 49 | 50 | /*< private > */ 51 | EomCloseConfirmationDialogPrivate *priv; 52 | }; 53 | 54 | struct _EomCloseConfirmationDialogClass 55 | { 56 | GtkDialogClass parent_class; 57 | }; 58 | 59 | G_GNUC_INTERNAL 60 | GType eom_close_confirmation_dialog_get_type (void) G_GNUC_CONST; 61 | 62 | G_GNUC_INTERNAL 63 | GtkWidget *eom_close_confirmation_dialog_new (GtkWindow *parent, 64 | GList *unsaved_documents); 65 | G_GNUC_INTERNAL 66 | GtkWidget *eom_close_confirmation_dialog_new_single (GtkWindow *parent, 67 | EomImage *image); 68 | 69 | G_GNUC_INTERNAL 70 | const GList *eom_close_confirmation_dialog_get_unsaved_images (EomCloseConfirmationDialog *dlg); 71 | 72 | G_GNUC_INTERNAL 73 | GList *eom_close_confirmation_dialog_get_selected_images (EomCloseConfirmationDialog *dlg); 74 | 75 | #endif /* __EOM_CLOSE_CONFIRMATION_DIALOG_H__ */ 76 | 77 | -------------------------------------------------------------------------------- /src/eom-config-keys.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - GSettings Keys and Schemas definitions 2 | * 3 | * Copyright (C) 2000-2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * Stefano Karapetsas 7 | * 8 | * Based on code by: 9 | * - Federico Mena-Quintero 10 | * - Jens Finke 11 | * 12 | * This program is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * This program is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with this program; if not, write to the Free Software 24 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 25 | */ 26 | 27 | #ifndef __EOM_CONFIG_KEYS_H__ 28 | #define __EOM_CONFIG_KEYS_H__ 29 | 30 | #define EOM_CONF_DOMAIN "org.mate.eom" 31 | #define EOM_CONF_FULLSCREEN EOM_CONF_DOMAIN".full-screen" 32 | #define EOM_CONF_PLUGINS EOM_CONF_DOMAIN".plugins" 33 | #define EOM_CONF_UI EOM_CONF_DOMAIN".ui" 34 | #define EOM_CONF_VIEW EOM_CONF_DOMAIN".view" 35 | 36 | #define EOM_CONF_BACKGROUND_SCHEMA "org.mate.background" 37 | #define EOM_CONF_BACKGROUND_FILE "picture-filename" 38 | 39 | #define EOM_CONF_LOCKDOWN_SCHEMA "org.mate.lockdown" 40 | #define EOM_CONF_LOCKDOWN_CAN_SAVE "disable-save-to-disk" 41 | #define EOM_CONF_LOCKDOWN_CAN_PRINT "disable-printing" 42 | #define EOM_CONF_LOCKDOWN_CAN_SETUP_PAGE "disable-print-setup" 43 | 44 | #define EOM_CONF_VIEW_BACKGROUND_COLOR "background-color" 45 | #define EOM_CONF_VIEW_INTERPOLATE "interpolate" 46 | #define EOM_CONF_VIEW_EXTRAPOLATE "extrapolate" 47 | #define EOM_CONF_VIEW_SCROLL_WHEEL_ZOOM "scroll-wheel-zoom" 48 | #define EOM_CONF_VIEW_ZOOM_MULTIPLIER "zoom-multiplier" 49 | #define EOM_CONF_VIEW_AUTOROTATE "autorotate" 50 | #define EOM_CONF_VIEW_TRANSPARENCY "transparency" 51 | #define EOM_CONF_VIEW_TRANS_COLOR "trans-color" 52 | #define EOM_CONF_VIEW_USE_BG_COLOR "use-background-color" 53 | 54 | #define EOM_CONF_FULLSCREEN_RANDOM "random" 55 | #define EOM_CONF_FULLSCREEN_LOOP "loop" 56 | #define EOM_CONF_FULLSCREEN_UPSCALE "upscale" 57 | #define EOM_CONF_FULLSCREEN_SECONDS "seconds" 58 | 59 | #define EOM_CONF_UI_TOOLBAR "toolbar" 60 | #define EOM_CONF_UI_STATUSBAR "statusbar" 61 | #define EOM_CONF_UI_IMAGE_COLLECTION "image-collection" 62 | #define EOM_CONF_UI_IMAGE_COLLECTION_POSITION "image-collection-position" 63 | #define EOM_CONF_UI_IMAGE_COLLECTION_RESIZABLE "image-collection-resizable" 64 | #define EOM_CONF_UI_SIDEBAR "sidebar" 65 | #define EOM_CONF_UI_SCROLL_BUTTONS "scroll-buttons" 66 | #define EOM_CONF_UI_DISABLE_CLOSE_CONFIRMATION "disable-close-confirmation" 67 | #define EOM_CONF_UI_DISABLE_TRASH_CONFIRMATION "disable-trash-confirmation" 68 | #define EOM_CONF_UI_FILECHOOSER_XDG_FALLBACK "filechooser-xdg-fallback" 69 | #define EOM_CONF_UI_PROPSDIALOG_NETBOOK_MODE "propsdialog-netbook-mode" 70 | #define EOM_CONF_UI_EXTERNAL_EDITOR "external-editor" 71 | 72 | #define EOM_CONF_PLUGINS_ACTIVE_PLUGINS "active-plugins" 73 | 74 | #endif /* __EOM_CONFIG_KEYS_H__ */ 75 | -------------------------------------------------------------------------------- /src/eom-debug.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Debugging 2 | * 3 | * Copyright (C) 2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on gedit code (gedit/gedit-debug.h) by: 8 | * - Alex Roberts 9 | * - Evan Lawrence 10 | * - Chema Celorio 11 | * - Paolo Maggi 12 | * 13 | * This program is free software; you can redistribute it and/or modify 14 | * it under the terms of the GNU General Public License as published by 15 | * the Free Software Foundation; either version 2 of the License, or 16 | * (at your option) any later version. 17 | * 18 | * This program is distributed in the hope that it will be useful, 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | * GNU General Public License for more details. 22 | * 23 | * You should have received a copy of the GNU General Public License 24 | * along with this program; if not, write to the Free Software 25 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 26 | */ 27 | 28 | #ifndef __EOM_DEBUG_H__ 29 | #define __EOM_DEBUG_H__ 30 | 31 | #include 32 | 33 | typedef enum { 34 | EOM_DEBUG_NO_DEBUG = 0, 35 | EOM_DEBUG_WINDOW = 1 << 0, 36 | EOM_DEBUG_VIEW = 1 << 1, 37 | EOM_DEBUG_JOBS = 1 << 2, 38 | EOM_DEBUG_THUMBNAIL = 1 << 3, 39 | EOM_DEBUG_IMAGE_DATA = 1 << 4, 40 | EOM_DEBUG_IMAGE_LOAD = 1 << 5, 41 | EOM_DEBUG_IMAGE_SAVE = 1 << 6, 42 | EOM_DEBUG_LIST_STORE = 1 << 7, 43 | EOM_DEBUG_PREFERENCES = 1 << 8, 44 | EOM_DEBUG_PRINTING = 1 << 9, 45 | EOM_DEBUG_LCMS = 1 << 10, 46 | EOM_DEBUG_PLUGINS = 1 << 11 47 | } EomDebug; 48 | 49 | #define DEBUG_WINDOW EOM_DEBUG_WINDOW, __FILE__, __LINE__, G_STRFUNC 50 | #define DEBUG_VIEW EOM_DEBUG_VIEW, __FILE__, __LINE__, G_STRFUNC 51 | #define DEBUG_JOBS EOM_DEBUG_JOBS, __FILE__, __LINE__, G_STRFUNC 52 | #define DEBUG_THUMBNAIL EOM_DEBUG_THUMBNAIL, __FILE__, __LINE__, G_STRFUNC 53 | #define DEBUG_IMAGE_DATA EOM_DEBUG_IMAGE_DATA, __FILE__, __LINE__, G_STRFUNC 54 | #define DEBUG_IMAGE_LOAD EOM_DEBUG_IMAGE_LOAD, __FILE__, __LINE__, G_STRFUNC 55 | #define DEBUG_IMAGE_SAVE EOM_DEBUG_IMAGE_SAVE, __FILE__, __LINE__, G_STRFUNC 56 | #define DEBUG_LIST_STORE EOM_DEBUG_LIST_STORE, __FILE__, __LINE__, G_STRFUNC 57 | #define DEBUG_PREFERENCES EOM_DEBUG_PREFERENCES, __FILE__, __LINE__, G_STRFUNC 58 | #define DEBUG_PRINTING EOM_DEBUG_PRINTING, __FILE__, __LINE__, G_STRFUNC 59 | #define DEBUG_LCMS EOM_DEBUG_LCMS, __FILE__, __LINE__, G_STRFUNC 60 | #define DEBUG_PLUGINS EOM_DEBUG_PLUGINS, __FILE__, __LINE__, G_STRFUNC 61 | 62 | void eom_debug_init (void); 63 | 64 | void eom_debug (EomDebug section, 65 | const gchar *file, 66 | gint line, 67 | const gchar *function); 68 | 69 | void eom_debug_message (EomDebug section, 70 | const gchar *file, 71 | gint line, 72 | const gchar *function, 73 | const gchar *format, ...) G_GNUC_PRINTF(5, 6); 74 | 75 | #endif /* __EOM_DEBUG_H__ */ 76 | -------------------------------------------------------------------------------- /src/eom-enum-types.c.template: -------------------------------------------------------------------------------- 1 | /*** BEGIN file-header ***/ 2 | #include "eom-enum-types.h" 3 | 4 | /*** END file-header ***/ 5 | 6 | /*** BEGIN file-production ***/ 7 | /* enumerations from "@filename@" */ 8 | #include "@filename@" 9 | 10 | /*** END file-production ***/ 11 | 12 | /*** BEGIN value-header ***/ 13 | GType 14 | @enum_name@_get_type (void) 15 | { 16 | static GType the_type = 0; 17 | 18 | if (the_type == 0) 19 | { 20 | static const G@Type@Value values[] = { 21 | /*** END value-header ***/ 22 | 23 | /*** BEGIN value-production ***/ 24 | { @VALUENAME@, 25 | "@VALUENAME@", 26 | "@valuenick@" }, 27 | /*** END value-production ***/ 28 | 29 | /*** BEGIN value-tail ***/ 30 | { 0, NULL, NULL } 31 | }; 32 | the_type = g_@type@_register_static ( 33 | g_intern_static_string ("@EnumName@"), 34 | values); 35 | } 36 | return the_type; 37 | } 38 | 39 | /*** END value-tail ***/ 40 | -------------------------------------------------------------------------------- /src/eom-enum-types.h.template: -------------------------------------------------------------------------------- 1 | /*** BEGIN file-header ***/ 2 | #ifndef __EOM_ENUM_TYPES_H__ 3 | #define __EOM_ENUM_TYPES_H__ 4 | 5 | #include 6 | 7 | G_BEGIN_DECLS 8 | 9 | /*** END file-header ***/ 10 | 11 | /*** BEGIN file-production ***/ 12 | /* Enumerations from "@filename@" */ 13 | 14 | /*** END file-production ***/ 15 | 16 | /*** BEGIN enumeration-production ***/ 17 | #define EOM_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) 18 | GType @enum_name@_get_type (void) G_GNUC_CONST; 19 | 20 | /*** END enumeration-production ***/ 21 | 22 | /*** BEGIN file-tail ***/ 23 | G_END_DECLS 24 | 25 | #endif /* __EOM_ENUM_TYPES_H__ */ 26 | /*** END file-tail ***/ 27 | 28 | -------------------------------------------------------------------------------- /src/eom-enums.h: -------------------------------------------------------------------------------- 1 | /* Eye of MATE - General enumerations. 2 | * 3 | * Copyright (C) 2007-2008 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_ENUMS__ 23 | #define __EOM_ENUMS__ 24 | 25 | typedef enum { 26 | EOM_IMAGE_DATA_IMAGE = 1 << 0, 27 | EOM_IMAGE_DATA_DIMENSION = 1 << 1, 28 | EOM_IMAGE_DATA_EXIF = 1 << 2, 29 | EOM_IMAGE_DATA_XMP = 1 << 3 30 | } EomImageData; 31 | 32 | #define EOM_IMAGE_DATA_ALL (EOM_IMAGE_DATA_IMAGE | \ 33 | EOM_IMAGE_DATA_DIMENSION | \ 34 | EOM_IMAGE_DATA_EXIF | \ 35 | EOM_IMAGE_DATA_XMP) 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/eom-error-message-area.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Erro Message Area 2 | * 3 | * Copyright (C) 2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on gedit code (gedit/gedit-message-area.h) by: 8 | * - Paolo Maggi 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef __EOM_ERROR_MESSAGE_AREA__ 26 | #define __EOM_ERROR_MESSAGE_AREA__ 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | GtkWidget *eom_image_load_error_message_area_new (const gchar *caption, 33 | const GError *error); 34 | 35 | GtkWidget *eom_no_images_error_message_area_new (GFile *file); 36 | 37 | #endif /* __EOM_ERROR_MESSAGE_AREA__ */ 38 | -------------------------------------------------------------------------------- /src/eom-exif-util.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - EXIF Utilities 2 | * 3 | * Copyright (C) 2006-2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * Author: Claudio Saavedra 7 | * Author: Felix Riemann 8 | * 9 | * Based on code by: 10 | * - Jens Finke 11 | * 12 | * This program is free software; you can redistribute it and/or modify 13 | * it under the terms of the GNU General Public License as published by 14 | * the Free Software Foundation; either version 2 of the License, or 15 | * (at your option) any later version. 16 | * 17 | * This program is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License 23 | * along with this program; if not, write to the Free Software 24 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 25 | */ 26 | 27 | #ifndef __EOM_EXIF_UTIL_H__ 28 | #define __EOM_EXIF_UTIL_H__ 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | G_BEGIN_DECLS 36 | 37 | #define EOM_TYPE_EXIF_DATA eom_exif_data_get_type() 38 | 39 | gchar *eom_exif_util_format_date (const gchar *date); 40 | void eom_exif_util_format_datetime_label (GtkLabel *label, 41 | ExifData *exif_data, 42 | gint tag_id, 43 | const gchar *format); 44 | void eom_exif_util_set_label_text (GtkLabel *label, 45 | ExifData *exif_data, 46 | gint tag_id); 47 | 48 | void eom_exif_util_set_focal_length_label_text (GtkLabel *label, 49 | ExifData *exif_data); 50 | 51 | const gchar *eom_exif_data_get_value (ExifData *exif_data, 52 | gint tag_id, gchar *buffer, 53 | guint buf_size); 54 | 55 | GType eom_exif_data_get_type (void) G_GNUC_CONST; 56 | 57 | ExifData *eom_exif_data_copy (ExifData *data); 58 | void eom_exif_data_free (ExifData *data); 59 | 60 | G_END_DECLS 61 | 62 | #endif /* __EOM_EXIF_UTIL_H__ */ 63 | -------------------------------------------------------------------------------- /src/eom-file-chooser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This program is free software; you can redistribute it and/or modify 3 | * it under the terms of the GNU General Public License as published by 4 | * the Free Software Foundation; either version 2 of the License, or 5 | * (at your option) any later version. 6 | * 7 | * This program is distributed in the hope that it will be useful, 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 | * GNU General Public License for more details. 11 | * 12 | * You should have received a copy of the GNU General Public License 13 | * along with this program; if not, write to the Free Software 14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, 15 | * Boston, MA 02110-1301, USA. 16 | */ 17 | 18 | #ifndef _EOM_FILE_CHOOSER_H_ 19 | #define _EOM_FILE_CHOOSER_H_ 20 | 21 | #include 22 | #include 23 | 24 | G_BEGIN_DECLS 25 | 26 | #define EOM_TYPE_FILE_CHOOSER (eom_file_chooser_get_type ()) 27 | #define EOM_FILE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_FILE_CHOOSER, EomFileChooser)) 28 | #define EOM_FILE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_FILE_CHOOSER, EomFileChooserClass)) 29 | 30 | #define EOM_IS_FILE_CHOOSER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_FILE_CHOOSER)) 31 | #define EOM_IS_FILE_CHOOSER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_FILE_CHOOSER)) 32 | #define EOM_FILE_CHOOSER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_FILE_CHOOSER, EomFileChooserClass)) 33 | 34 | typedef struct _EomFileChooser EomFileChooser; 35 | typedef struct _EomFileChooserClass EomFileChooserClass; 36 | typedef struct _EomFileChooserPrivate EomFileChooserPrivate; 37 | 38 | struct _EomFileChooser 39 | { 40 | GtkFileChooserDialog parent; 41 | 42 | EomFileChooserPrivate *priv; 43 | }; 44 | 45 | struct _EomFileChooserClass 46 | { 47 | GtkFileChooserDialogClass parent_class; 48 | }; 49 | 50 | GType eom_file_chooser_get_type (void) G_GNUC_CONST; 51 | 52 | GtkWidget *eom_file_chooser_new (GtkFileChooserAction action); 53 | 54 | GdkPixbufFormat *eom_file_chooser_get_format (EomFileChooser *chooser); 55 | 56 | G_END_DECLS 57 | 58 | #endif /* _EOM_FILE_CHOOSER_H_ */ 59 | -------------------------------------------------------------------------------- /src/eom-image-jpeg.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_IMAGE_JPEG_H_ 2 | #define _EOM_IMAGE_JPEG_H_ 3 | 4 | #if HAVE_JPEG 5 | 6 | #include 7 | #include "eom-image.h" 8 | #include "eom-image-save-info.h" 9 | 10 | /* Saves a source jpeg file in an arbitrary format (as specified by 11 | * target). The target pointer may be NULL, in which case the output 12 | * file is saved as jpeg too. This method tries to be as smart as 13 | * possible. It will save the image as lossless as possible (if the 14 | * target is a jpeg image too). 15 | */ 16 | G_GNUC_INTERNAL 17 | gboolean eom_image_jpeg_save_file (EomImage *image, const char *file, 18 | EomImageSaveInfo *source, EomImageSaveInfo *target, 19 | GError **error); 20 | #endif 21 | 22 | #endif /* _EOM_IMAGE_JPEG_H_ */ 23 | -------------------------------------------------------------------------------- /src/eom-image-private.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Image Private Data 2 | * 3 | * Copyright (C) 2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_IMAGE_PRIVATE_H__ 23 | #define __EOM_IMAGE_PRIVATE_H__ 24 | 25 | #include "eom-image.h" 26 | #ifdef HAVE_RSVG 27 | #include 28 | #endif 29 | 30 | G_BEGIN_DECLS 31 | 32 | struct _EomImagePrivate { 33 | GFile *file; 34 | 35 | EomImageStatus status; 36 | EomImageStatus prev_status; 37 | EomImageMetadataStatus metadata_status; 38 | 39 | gboolean is_playing; 40 | GdkPixbufAnimation *anim; 41 | GdkPixbufAnimationIter *anim_iter; 42 | GdkPixbuf *image; 43 | GdkPixbuf *thumbnail; 44 | #ifdef HAVE_RSVG 45 | RsvgHandle *svg; 46 | #endif 47 | 48 | gint width; 49 | gint height; 50 | 51 | goffset bytes; 52 | gchar *file_type; 53 | 54 | /* Holds EXIF raw data */ 55 | guint exif_chunk_len; 56 | guchar *exif_chunk; 57 | 58 | #if 0 59 | /* Holds IPTC raw data */ 60 | guchar *iptc_chunk; 61 | guint iptc_chunk_len; 62 | #endif 63 | 64 | gboolean modified; 65 | gboolean file_is_changed; 66 | 67 | gboolean autorotate; 68 | gint orientation; 69 | #ifdef HAVE_EXIF 70 | ExifData *exif; 71 | #endif 72 | #ifdef HAVE_EXEMPI 73 | XmpPtr xmp; 74 | #endif 75 | 76 | #if defined(HAVE_LCMS) && defined(GDK_WINDOWING_X11) 77 | cmsHPROFILE profile; 78 | #endif 79 | 80 | gchar *caption; 81 | 82 | gchar *collate_key; 83 | 84 | GMutex status_mutex; 85 | 86 | gboolean cancel_loading; 87 | guint data_ref_count; 88 | 89 | GSList *undo_stack; 90 | 91 | EomTransform *trans; 92 | EomTransform *trans_autorotate; 93 | }; 94 | 95 | G_END_DECLS 96 | 97 | #endif /* __EOM_IMAGE_PRIVATE_H__ */ 98 | -------------------------------------------------------------------------------- /src/eom-image-save-info.c: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | #include 3 | #endif 4 | 5 | #include 6 | #include "eom-image-save-info.h" 7 | #include "eom-image-private.h" 8 | #include "eom-pixbuf-util.h" 9 | #include "eom-image.h" 10 | 11 | G_DEFINE_TYPE (EomImageSaveInfo, eom_image_save_info, G_TYPE_OBJECT) 12 | 13 | static void 14 | eom_image_save_info_dispose (GObject *object) 15 | { 16 | EomImageSaveInfo *info = EOM_IMAGE_SAVE_INFO (object); 17 | 18 | if (info->file != NULL) { 19 | g_object_unref (info->file); 20 | info->file = NULL; 21 | } 22 | 23 | if (info->format != NULL) { 24 | g_free (info->format); 25 | info->format = NULL; 26 | } 27 | 28 | G_OBJECT_CLASS (eom_image_save_info_parent_class)->dispose (object); 29 | } 30 | 31 | static void 32 | eom_image_save_info_init (EomImageSaveInfo *obj) 33 | { 34 | 35 | } 36 | 37 | static void 38 | eom_image_save_info_class_init (EomImageSaveInfoClass *klass) 39 | { 40 | GObjectClass *object_class = (GObjectClass*) klass; 41 | 42 | object_class->dispose = eom_image_save_info_dispose; 43 | } 44 | 45 | /* is_local_uri: 46 | * 47 | * Checks if the URI points to a local file system. This tests simply 48 | * if the URI scheme is 'file'. This function is used to ensure that 49 | * we can write to the path-part of the URI with non-VFS aware 50 | * filesystem calls. 51 | */ 52 | static gboolean 53 | is_local_file (GFile *file) 54 | { 55 | char *scheme; 56 | gboolean ret; 57 | 58 | g_return_val_if_fail (file != NULL, FALSE); 59 | 60 | scheme = g_file_get_uri_scheme (file); 61 | 62 | ret = (g_ascii_strcasecmp (scheme, "file") == 0); 63 | g_free (scheme); 64 | return ret; 65 | } 66 | 67 | static char* 68 | get_save_file_type_by_file (GFile *file) 69 | { 70 | GdkPixbufFormat *format; 71 | char *type = NULL; 72 | 73 | format = eom_pixbuf_get_format (file); 74 | if (format != NULL) { 75 | type = gdk_pixbuf_format_get_name (format); 76 | } 77 | 78 | return type; 79 | } 80 | 81 | EomImageSaveInfo* 82 | eom_image_save_info_new_from_image (EomImage *image) 83 | { 84 | EomImageSaveInfo *info = NULL; 85 | 86 | g_return_val_if_fail (EOM_IS_IMAGE (image), NULL); 87 | 88 | info = g_object_new (EOM_TYPE_IMAGE_SAVE_INFO, NULL); 89 | 90 | info->file = eom_image_get_file (image); 91 | info->format = g_strdup (image->priv->file_type); 92 | info->exists = g_file_query_exists (info->file, NULL); 93 | info->local = is_local_file (info->file); 94 | info->has_metadata = eom_image_has_data (image, EOM_IMAGE_DATA_EXIF); 95 | info->modified = eom_image_is_modified (image); 96 | info->overwrite = FALSE; 97 | 98 | info->jpeg_quality = -1.0; 99 | 100 | return info; 101 | } 102 | 103 | EomImageSaveInfo* 104 | eom_image_save_info_new_from_uri (const char *txt_uri, GdkPixbufFormat *format) 105 | { 106 | GFile *file; 107 | EomImageSaveInfo *info; 108 | 109 | g_return_val_if_fail (txt_uri != NULL, NULL); 110 | 111 | file = g_file_new_for_uri (txt_uri); 112 | 113 | info = eom_image_save_info_new_from_file (file, format); 114 | 115 | g_object_unref (file); 116 | 117 | return info; 118 | } 119 | 120 | EomImageSaveInfo* 121 | eom_image_save_info_new_from_file (GFile *file, GdkPixbufFormat *format) 122 | { 123 | EomImageSaveInfo *info; 124 | 125 | g_return_val_if_fail (file != NULL, NULL); 126 | 127 | info = g_object_new (EOM_TYPE_IMAGE_SAVE_INFO, NULL); 128 | 129 | info->file = g_object_ref (file); 130 | if (format == NULL) { 131 | info->format = get_save_file_type_by_file (info->file); 132 | } 133 | else { 134 | info->format = gdk_pixbuf_format_get_name (format); 135 | } 136 | info->exists = g_file_query_exists (file, NULL); 137 | info->local = is_local_file (file); 138 | info->has_metadata = FALSE; 139 | info->modified = FALSE; 140 | info->overwrite = FALSE; 141 | 142 | info->jpeg_quality = -1.0; 143 | 144 | g_assert (info->format != NULL); 145 | 146 | return info; 147 | } 148 | -------------------------------------------------------------------------------- /src/eom-image-save-info.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_IMAGE_SAVE_INFO_H_ 2 | #define _EOM_IMAGE_SAVE_INFO_H_ 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | G_BEGIN_DECLS 9 | 10 | #ifndef __EOM_IMAGE_DECLR__ 11 | #define __EOM_IMAGE_DECLR__ 12 | typedef struct _EomImage EomImage; 13 | #endif 14 | 15 | #define EOM_TYPE_IMAGE_SAVE_INFO (eom_image_save_info_get_type ()) 16 | #define EOM_IMAGE_SAVE_INFO(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_IMAGE_SAVE_INFO, EomImageSaveInfo)) 17 | #define EOM_IMAGE_SAVE_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_IMAGE_SAVE_INFO, EomImageSaveInfoClass)) 18 | #define EOM_IS_IMAGE_SAVE_INFO(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_IMAGE_SAVE_INFO)) 19 | #define EOM_IS_IMAGE_SAVE_INFO_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_IMAGE_SAVE_INFO)) 20 | #define EOM_IMAGE_SAVE_INFO_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_IMAGE_SAVE_INFO, EomImageSaveInfoClass)) 21 | 22 | typedef struct _EomImageSaveInfo EomImageSaveInfo; 23 | typedef struct _EomImageSaveInfoClass EomImageSaveInfoClass; 24 | 25 | struct _EomImageSaveInfo { 26 | GObject parent; 27 | 28 | GFile *file; 29 | char *format; 30 | gboolean exists; 31 | gboolean local; 32 | gboolean has_metadata; 33 | gboolean modified; 34 | gboolean overwrite; 35 | 36 | float jpeg_quality; /* valid range: [0.0 ... 1.0] */ 37 | }; 38 | 39 | struct _EomImageSaveInfoClass { 40 | GObjectClass parent_klass; 41 | }; 42 | 43 | #define EOM_FILE_FORMAT_JPEG "jpeg" 44 | 45 | GType eom_image_save_info_get_type (void) G_GNUC_CONST; 46 | 47 | EomImageSaveInfo *eom_image_save_info_new_from_image (EomImage *image); 48 | 49 | EomImageSaveInfo *eom_image_save_info_new_from_uri (const char *uri, 50 | GdkPixbufFormat *format); 51 | 52 | EomImageSaveInfo *eom_image_save_info_new_from_file (GFile *file, 53 | GdkPixbufFormat *format); 54 | 55 | G_END_DECLS 56 | 57 | #endif /* _EOM_IMAGE_SAVE_INFO_H_ */ 58 | -------------------------------------------------------------------------------- /src/eom-job-queue.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Jobs Queue 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on evince code (shell/ev-job-queue.h) by: 8 | * - Martin Kretzschmar 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef __EOM_JOB_QUEUE_H__ 26 | #define __EOM_JOB_QUEUE_H__ 27 | 28 | #include "eom-jobs.h" 29 | 30 | #include 31 | 32 | G_BEGIN_DECLS 33 | 34 | void eom_job_queue_init (void); 35 | 36 | void eom_job_queue_add_job (EomJob *job); 37 | 38 | gboolean eom_job_queue_remove_job (EomJob *job); 39 | 40 | G_END_DECLS 41 | 42 | #endif /* __EOM_JOB_QUEUE_H__ */ 43 | -------------------------------------------------------------------------------- /src/eom-marshal.list: -------------------------------------------------------------------------------- 1 | VOID:INT,INT 2 | VOID:DOUBLE 3 | -------------------------------------------------------------------------------- /src/eom-metadata-details.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - EOM Image Exif Details 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_METADATA_DETAILS__ 23 | #define __EOM_METADATA_DETAILS__ 24 | 25 | #include 26 | #include 27 | #if HAVE_EXIF 28 | #include 29 | #endif 30 | #if HAVE_EXEMPI 31 | #include 32 | #endif 33 | 34 | G_BEGIN_DECLS 35 | 36 | typedef struct _EomMetadataDetails EomMetadataDetails; 37 | typedef struct _EomMetadataDetailsClass EomMetadataDetailsClass; 38 | typedef struct _EomMetadataDetailsPrivate EomMetadataDetailsPrivate; 39 | 40 | #define EOM_TYPE_METADATA_DETAILS (eom_metadata_details_get_type ()) 41 | #define EOM_METADATA_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_METADATA_DETAILS, EomMetadataDetails)) 42 | #define EOM_METADATA_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_METADATA_DETAILS, EomMetadataDetailsClass)) 43 | #define EOM_IS_METADATA_DETAILS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_METADATA_DETAILS)) 44 | #define EOM_IS_METADATA_DETAILS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_METADATA_DETAILS)) 45 | #define EOM_METADATA_DETAILS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EOM_TYPE_METADATA_DETAILS, EomMetadataDetailsClass)) 46 | 47 | struct _EomMetadataDetails { 48 | GtkTreeView parent; 49 | 50 | EomMetadataDetailsPrivate *priv; 51 | }; 52 | 53 | struct _EomMetadataDetailsClass { 54 | GtkTreeViewClass parent_class; 55 | }; 56 | 57 | G_GNUC_INTERNAL 58 | GType eom_metadata_details_get_type (void) G_GNUC_CONST; 59 | 60 | G_GNUC_INTERNAL 61 | GtkWidget *eom_metadata_details_new (void); 62 | 63 | #if HAVE_EXIF 64 | G_GNUC_INTERNAL 65 | void eom_metadata_details_update (EomMetadataDetails *details, 66 | ExifData *data); 67 | #endif 68 | #if HAVE_EXEMPI 69 | G_GNUC_INTERNAL 70 | void eom_metadata_details_xmp_update (EomMetadataDetails *details, 71 | XmpPtr xmp_data); 72 | #endif 73 | 74 | G_END_DECLS 75 | 76 | #endif /* __EOM_METADATA_DETAILS__ */ 77 | -------------------------------------------------------------------------------- /src/eom-metadata-reader-jpg.h: -------------------------------------------------------------------------------- 1 | /* Eye Of MATE -- JPEG Metadata Reader 2 | * 3 | * Copyright (C) 2008 The Free Software Foundation 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Based on the original EomMetadataReader code. 8 | * 9 | * This program is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with this program; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef _EOM_METADATA_READER_JPG_H_ 25 | #define _EOM_METADATA_READER_JPG_H_ 26 | 27 | G_BEGIN_DECLS 28 | 29 | #define EOM_TYPE_METADATA_READER_JPG (eom_metadata_reader_jpg_get_type ()) 30 | #define EOM_METADATA_READER_JPG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o),EOM_TYPE_METADATA_READER_JPG, EomMetadataReaderJpg)) 31 | #define EOM_METADATA_READER_JPG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_METADATA_READER_JPG, EomMetadataReaderJpgClass)) 32 | #define EOM_IS_METADATA_READER_JPG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_METADATA_READER_JPG)) 33 | #define EOM_IS_METADATA_READER_JPG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_METADATA_READER_JPG)) 34 | #define EOM_METADATA_READER_JPG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_METADATA_READER_JPG, EomMetadataReaderJpgClass)) 35 | 36 | typedef struct _EomMetadataReaderJpg EomMetadataReaderJpg; 37 | typedef struct _EomMetadataReaderJpgClass EomMetadataReaderJpgClass; 38 | typedef struct _EomMetadataReaderJpgPrivate EomMetadataReaderJpgPrivate; 39 | 40 | struct _EomMetadataReaderJpg { 41 | GObject parent; 42 | 43 | EomMetadataReaderJpgPrivate *priv; 44 | }; 45 | 46 | struct _EomMetadataReaderJpgClass { 47 | GObjectClass parent_klass; 48 | }; 49 | 50 | G_GNUC_INTERNAL 51 | GType eom_metadata_reader_jpg_get_type (void) G_GNUC_CONST; 52 | 53 | G_END_DECLS 54 | 55 | #endif /* _EOM_METADATA_READER_JPG_H_ */ 56 | -------------------------------------------------------------------------------- /src/eom-metadata-reader-png.h: -------------------------------------------------------------------------------- 1 | /* Eye Of MATE -- PNG Metadata Reader 2 | * 3 | * Copyright (C) 2008 The Free Software Foundation 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Based on the old EomMetadataReader code. 8 | * 9 | * This program is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License 20 | * along with this program; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef _EOM_METADATA_READER_PNG_H_ 25 | #define _EOM_METADATA_READER_PNG_H_ 26 | 27 | G_BEGIN_DECLS 28 | 29 | #define EOM_TYPE_METADATA_READER_PNG (eom_metadata_reader_png_get_type ()) 30 | #define EOM_METADATA_READER_PNG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_METADATA_READER_PNG, EomMetadataReaderPng)) 31 | #define EOM_METADATA_READER_PNG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_METADATA_READER_PNG, EomMetadataReaderPngClass)) 32 | #define EOM_IS_METADATA_READER_PNG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_METADATA_READER_PNG)) 33 | #define EOM_IS_METADATA_READER_PNG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_METADATA_READER_PNG)) 34 | #define EOM_METADATA_READER_PNG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_METADATA_READER_PNG, EomMetadataReaderPngClass)) 35 | 36 | typedef struct _EomMetadataReaderPng EomMetadataReaderPng; 37 | typedef struct _EomMetadataReaderPngClass EomMetadataReaderPngClass; 38 | typedef struct _EomMetadataReaderPngPrivate EomMetadataReaderPngPrivate; 39 | 40 | struct _EomMetadataReaderPng { 41 | GObject parent; 42 | 43 | EomMetadataReaderPngPrivate *priv; 44 | }; 45 | 46 | struct _EomMetadataReaderPngClass { 47 | GObjectClass parent_klass; 48 | }; 49 | 50 | G_GNUC_INTERNAL 51 | GType eom_metadata_reader_png_get_type (void) G_GNUC_CONST; 52 | 53 | G_END_DECLS 54 | 55 | #endif /* _EOM_METADATA_READER_PNG_H_ */ 56 | -------------------------------------------------------------------------------- /src/eom-metadata-reader.h: -------------------------------------------------------------------------------- 1 | /* Eye Of MATE -- Metadata Reader Interface 2 | * 3 | * Copyright (C) 2008 The Free Software Foundation 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef _EOM_METADATA_READER_H_ 23 | #define _EOM_METADATA_READER_H_ 24 | 25 | #include 26 | #if HAVE_EXIF 27 | #include "eom-exif-util.h" 28 | #endif 29 | #if HAVE_EXEMPI 30 | #include 31 | #endif 32 | #if HAVE_LCMS 33 | #include 34 | #endif 35 | 36 | G_BEGIN_DECLS 37 | 38 | #define EOM_TYPE_METADATA_READER (eom_metadata_reader_get_type ()) 39 | #define EOM_METADATA_READER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_METADATA_READER, EomMetadataReader)) 40 | #define EOM_IS_METADATA_READER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_METADATA_READER)) 41 | #define EOM_METADATA_READER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EOM_TYPE_METADATA_READER, EomMetadataReaderInterface)) 42 | 43 | typedef struct _EomMetadataReader EomMetadataReader; 44 | typedef struct _EomMetadataReaderInterface EomMetadataReaderInterface; 45 | 46 | struct _EomMetadataReaderInterface { 47 | GTypeInterface parent; 48 | 49 | void (*consume) (EomMetadataReader *self, 50 | const guchar *buf, 51 | guint len); 52 | 53 | gboolean (*finished) (EomMetadataReader *self); 54 | 55 | void (*get_raw_exif) (EomMetadataReader *self, 56 | guchar **data, 57 | guint *len); 58 | 59 | gpointer (*get_exif_data) (EomMetadataReader *self); 60 | 61 | gpointer (*get_icc_profile) (EomMetadataReader *self); 62 | 63 | gpointer (*get_xmp_ptr) (EomMetadataReader *self); 64 | }; 65 | 66 | typedef enum { 67 | EOM_METADATA_JPEG, 68 | EOM_METADATA_PNG 69 | } EomMetadataFileType; 70 | 71 | G_GNUC_INTERNAL 72 | GType eom_metadata_reader_get_type (void) G_GNUC_CONST; 73 | 74 | G_GNUC_INTERNAL 75 | EomMetadataReader* eom_metadata_reader_new (EomMetadataFileType type); 76 | 77 | G_GNUC_INTERNAL 78 | void eom_metadata_reader_consume (EomMetadataReader *emr, 79 | const guchar *buf, 80 | guint len); 81 | 82 | G_GNUC_INTERNAL 83 | gboolean eom_metadata_reader_finished (EomMetadataReader *emr); 84 | 85 | G_GNUC_INTERNAL 86 | void eom_metadata_reader_get_exif_chunk (EomMetadataReader *emr, 87 | guchar **data, 88 | guint *len); 89 | 90 | #ifdef HAVE_EXIF 91 | G_GNUC_INTERNAL 92 | ExifData* eom_metadata_reader_get_exif_data (EomMetadataReader *emr); 93 | #endif 94 | 95 | #ifdef HAVE_EXEMPI 96 | G_GNUC_INTERNAL 97 | XmpPtr eom_metadata_reader_get_xmp_data (EomMetadataReader *emr); 98 | #endif 99 | 100 | #if 0 101 | gpointer eom_metadata_reader_get_iptc_chunk (EomMetadataReader *emr); 102 | IptcData* eom_metadata_reader_get_iptc_data (EomMetadataReader *emr); 103 | #endif 104 | 105 | #ifdef HAVE_LCMS 106 | G_GNUC_INTERNAL 107 | cmsHPROFILE eom_metadata_reader_get_icc_profile (EomMetadataReader *emr); 108 | #endif 109 | 110 | G_END_DECLS 111 | 112 | #endif /* _EOM_METADATA_READER_H_ */ 113 | -------------------------------------------------------------------------------- /src/eom-metadata-sidebar.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-metadata-sidebar.h 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2011 GNOME Foundation 8 | * 9 | * This program is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU General Public License 11 | * as published by the Free Software Foundation; either version 2 12 | * of the License, or (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU General Public License along 20 | * with this program; if not, write to the Free Software Foundation, Inc., 21 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 | */ 23 | 24 | #ifndef EOM_METADATA_SIDEBAR_H 25 | #define EOM_METADATA_SIDEBAR_H 26 | 27 | #include 28 | #include 29 | 30 | #include "eom-window.h" 31 | 32 | G_BEGIN_DECLS 33 | 34 | #define EOM_TYPE_METADATA_SIDEBAR (eom_metadata_sidebar_get_type ()) 35 | #define EOM_METADATA_SIDEBAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_METADATA_SIDEBAR, EomMetadataSidebar)) 36 | #define EOM_METADATA_SIDEBAR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_METADATA_SIDEBAR, EomMetadataSidebarClass)) 37 | #define EOM_IS_METADATA_SIDEBAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_METADATA_SIDEBAR)) 38 | #define EOM_IS_METADATA_SIDEBAR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_METADATA_SIDEBAR)) 39 | #define EOM_METADATA_SIDEBAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_METADATA_SIDEBAR, EomMetadataSidebarClass)) 40 | 41 | typedef struct _EomMetadataSidebar EomMetadataSidebar; 42 | typedef struct _EomMetadataSidebarClass EomMetadataSidebarClass; 43 | typedef struct _EomMetadataSidebarPrivate EomMetadataSidebarPrivate; 44 | 45 | struct _EomMetadataSidebar { 46 | GtkScrolledWindow parent; 47 | 48 | EomMetadataSidebarPrivate *priv; 49 | }; 50 | 51 | struct _EomMetadataSidebarClass { 52 | GtkScrolledWindowClass parent_klass; 53 | }; 54 | 55 | GType eom_metadata_sidebar_get_type (void) G_GNUC_CONST; 56 | 57 | GtkWidget* eom_metadata_sidebar_new (EomWindow *window); 58 | 59 | G_END_DECLS 60 | 61 | #endif /* EOM_METADATA_SIDEBAR_H */ 62 | -------------------------------------------------------------------------------- /src/eom-pixbuf-util.c: -------------------------------------------------------------------------------- 1 | #ifdef HAVE_CONFIG_H 2 | #include 3 | #endif 4 | 5 | #include 6 | #include "eom-pixbuf-util.h" 7 | 8 | GSList* 9 | eom_pixbuf_get_savable_formats (void) 10 | { 11 | GSList *list; 12 | GSList *write_list = NULL; 13 | GSList *it; 14 | 15 | list = gdk_pixbuf_get_formats (); 16 | 17 | for (it = list; it != NULL; it = it->next) { 18 | GdkPixbufFormat *format; 19 | 20 | format = (GdkPixbufFormat*) it->data; 21 | if (gdk_pixbuf_format_is_writable (format)) { 22 | write_list = g_slist_prepend (write_list, format); 23 | } 24 | } 25 | 26 | g_slist_free (list); 27 | write_list = g_slist_reverse (write_list); 28 | 29 | return write_list; 30 | } 31 | 32 | GdkPixbufFormat* 33 | eom_pixbuf_get_format_by_suffix (const char *suffix) 34 | { 35 | GSList *list; 36 | GSList *it; 37 | GdkPixbufFormat *result = NULL; 38 | 39 | g_return_val_if_fail (suffix != NULL, NULL); 40 | 41 | list = gdk_pixbuf_get_formats (); 42 | 43 | for (it = list; (it != NULL) && (result == NULL); it = it->next) { 44 | GdkPixbufFormat *format; 45 | gchar **extensions; 46 | int i; 47 | 48 | format = (GdkPixbufFormat*) it->data; 49 | 50 | extensions = gdk_pixbuf_format_get_extensions (format); 51 | for (i = 0; extensions[i] != NULL; i++) { 52 | /* g_print ("check extension: %s against %s\n", extensions[i], suffix); */ 53 | if (g_ascii_strcasecmp (suffix, extensions[i]) == 0) { 54 | result = format; 55 | break; 56 | } 57 | } 58 | 59 | g_strfreev (extensions); 60 | } 61 | 62 | g_slist_free (list); 63 | 64 | return result; 65 | } 66 | 67 | char* 68 | eom_pixbuf_get_common_suffix (GdkPixbufFormat *format) 69 | { 70 | char **extensions; 71 | int i; 72 | char *result = NULL; 73 | 74 | if (format == NULL) return NULL; 75 | 76 | extensions = gdk_pixbuf_format_get_extensions (format); 77 | if (extensions[0] == NULL) return NULL; 78 | 79 | /* try to find 3-char suffix first, use the last occurence */ 80 | for (i = 0; extensions [i] != NULL; i++) { 81 | if (strlen (extensions[i]) <= 3) { 82 | g_free (result); 83 | result = g_ascii_strdown (extensions[i], -1); 84 | } 85 | } 86 | 87 | /* otherwise take the first one */ 88 | if (result == NULL) { 89 | result = g_ascii_strdown (extensions[0], -1); 90 | } 91 | 92 | g_strfreev (extensions); 93 | 94 | return result; 95 | } 96 | 97 | static char* 98 | get_suffix_from_basename (const char *basename) 99 | { 100 | char *suffix; 101 | char *suffix_start; 102 | guint len; 103 | 104 | /* FIXME: does this work for all locales? */ 105 | suffix_start = g_utf8_strrchr (basename, -1, '.'); 106 | 107 | if (suffix_start == NULL) 108 | return NULL; 109 | 110 | len = strlen (suffix_start) - 1; 111 | suffix = g_strndup (suffix_start+1, len); 112 | 113 | return suffix; 114 | 115 | } 116 | 117 | GdkPixbufFormat * 118 | eom_pixbuf_get_format (GFile *file) 119 | { 120 | GdkPixbufFormat *format; 121 | char *path, *basename, *suffix; 122 | g_return_val_if_fail (file != NULL, NULL); 123 | 124 | path = g_file_get_path (file); 125 | basename = g_path_get_basename (path); 126 | suffix = get_suffix_from_basename (basename); 127 | 128 | format = eom_pixbuf_get_format_by_suffix (suffix); 129 | 130 | g_free (path); 131 | g_free (basename); 132 | g_free (suffix); 133 | 134 | return format; 135 | } 136 | 137 | -------------------------------------------------------------------------------- /src/eom-pixbuf-util.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_PIXBUF_UTIL_H_ 2 | #define _EOM_PIXBUF_UTIL_H_ 3 | 4 | #include 5 | #include 6 | 7 | G_GNUC_INTERNAL 8 | GSList* eom_pixbuf_get_savable_formats (void); 9 | 10 | G_GNUC_INTERNAL 11 | GdkPixbufFormat* eom_pixbuf_get_format_by_suffix (const char *suffix); 12 | 13 | G_GNUC_INTERNAL 14 | GdkPixbufFormat* eom_pixbuf_get_format (GFile *file); 15 | 16 | G_GNUC_INTERNAL 17 | char* eom_pixbuf_get_common_suffix (GdkPixbufFormat *format); 18 | 19 | #endif /* _EOM_PIXBUF_UTIL_H_ */ 20 | 21 | -------------------------------------------------------------------------------- /src/eom-plugin-engine.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - EOM Plugin Engine 2 | * 3 | * Copyright (C) 2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on gedit code (gedit/gedit-plugins-engine.h) by: 8 | * - Paolo Maggi 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef __EOM_PLUGIN_ENGINE_H__ 26 | #define __EOM_PLUGIN_ENGINE_H__ 27 | 28 | #include 29 | #include 30 | 31 | G_BEGIN_DECLS 32 | 33 | typedef struct _EomPluginEngine EomPluginEngine; 34 | typedef struct _EomPluginEngineClass EomPluginEngineClass; 35 | typedef struct _EomPluginEnginePrivate EomPluginEnginePrivate; 36 | 37 | #define EOM_TYPE_PLUGIN_ENGINE eom_plugin_engine_get_type() 38 | #define EOM_PLUGIN_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_PLUGIN_ENGINE, EomPluginEngine)) 39 | #define EOM_PLUGIN_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_PLUGIN_ENGINE, EomPluginEngineClass)) 40 | #define EOM_IS_PLUGIN_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_PLUGIN_ENGINE)) 41 | #define EOM_IS_PLUGIN_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_PLUGIN_ENGINE)) 42 | #define EOM_PLUGIN_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EOM_TYPE_PLUGIN_ENGINE, EomPluginEngineClass)) 43 | 44 | struct _EomPluginEngine { 45 | PeasEngine parent; 46 | EomPluginEnginePrivate *priv; 47 | }; 48 | 49 | struct _EomPluginEngineClass { 50 | PeasEngineClass parent_class; 51 | }; 52 | 53 | GType eom_plugin_engine_get_type (void) G_GNUC_CONST; 54 | 55 | EomPluginEngine* eom_plugin_engine_new (void); 56 | 57 | G_END_DECLS 58 | 59 | #endif /* __EOM_PLUGIN_ENGINE_H__ */ 60 | -------------------------------------------------------------------------------- /src/eom-preferences-dialog.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - EOM Preferences Dialog 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_PREFERENCES_DIALOG_H__ 23 | #define __EOM_PREFERENCES_DIALOG_H__ 24 | 25 | #include "eom-image.h" 26 | #include "eom-thumb-view.h" 27 | 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | G_BEGIN_DECLS 34 | 35 | typedef struct _EomPreferencesDialog EomPreferencesDialog; 36 | typedef struct _EomPreferencesDialogClass EomPreferencesDialogClass; 37 | typedef struct _EomPreferencesDialogPrivate EomPreferencesDialogPrivate; 38 | 39 | #define EOM_TYPE_PREFERENCES_DIALOG (eom_preferences_dialog_get_type ()) 40 | #define EOM_PREFERENCES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_PREFERENCES_DIALOG, EomPreferencesDialog)) 41 | #define EOM_PREFERENCES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_PREFERENCES_DIALOG, EomPreferencesDialogClass)) 42 | #define EOM_IS_PREFERENCES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_PREFERENCES_DIALOG)) 43 | #define EOM_IS_PREFERENCES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EOM_TYPE_PREFERENCES_DIALOG)) 44 | #define EOM_PREFERENCES_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EOM_TYPE_PREFERENCES_DIALOG, EomPreferencesDialogClass)) 45 | 46 | struct _EomPreferencesDialog { 47 | GtkDialog dialog; 48 | 49 | EomPreferencesDialogPrivate *priv; 50 | }; 51 | 52 | struct _EomPreferencesDialogClass { 53 | GtkDialogClass parent_class; 54 | }; 55 | 56 | G_GNUC_INTERNAL 57 | GType eom_preferences_dialog_get_type (void) G_GNUC_CONST; 58 | 59 | G_GNUC_INTERNAL 60 | GtkWidget *eom_preferences_dialog_get_instance (GtkWindow *parent); 61 | 62 | G_END_DECLS 63 | 64 | #endif /* __EOM_PREFERENCES_DIALOG_H__ */ 65 | -------------------------------------------------------------------------------- /src/eom-print-image-setup.h: -------------------------------------------------------------------------------- 1 | /* Eye Of MATE -- Print Dialog Custom Widget 2 | * 3 | * Copyright (C) 2006-2007 The Free Software Foundation 4 | * 5 | * Author: Claudio Saavedra 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include "eom-image.h" 23 | 24 | #ifndef EOM_PRINT_IMAGE_SETUP_H 25 | #define EOM_PRINT_IMAGE_SETUP_H 26 | 27 | G_BEGIN_DECLS 28 | 29 | typedef struct _EomPrintImageSetup EomPrintImageSetup; 30 | typedef struct _EomPrintImageSetupClass EomPrintImageSetupClass; 31 | typedef struct _EomPrintImageSetupPrivate EomPrintImageSetupPrivate; 32 | 33 | #define EOM_TYPE_PRINT_IMAGE_SETUP (eom_print_image_setup_get_type ()) 34 | #define EOM_PRINT_IMAGE_SETUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_PRINT_IMAGE_SETUP, EomPrintImageSetup)) 35 | #define EOM_PRINT_IMAGE_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_PRINT_IMAGE_SETUP, EomPrintImageSetupClass)) 36 | #define EOM_IS_PRINT_IMAGE_SETUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_PRINT_IMAGE_SETUP)) 37 | #define EOM_IS_PRINT_IMAGE_SETUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_PRINT_IMAGE_SETUP)) 38 | #define EOM_PRINT_IMAGE_SETUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EOM_TYPE_PRINT_IMAGE_SETUP, EomPrintImageSetupClass)) 39 | 40 | struct _EomPrintImageSetup { 41 | GtkGrid parent_instance; 42 | 43 | EomPrintImageSetupPrivate *priv; 44 | }; 45 | 46 | struct _EomPrintImageSetupClass { 47 | GtkGridClass parent_class; 48 | }; 49 | 50 | G_GNUC_INTERNAL 51 | GType eom_print_image_setup_get_type (void) G_GNUC_CONST; 52 | 53 | G_GNUC_INTERNAL 54 | GtkWidget *eom_print_image_setup_new (EomImage *image, 55 | GtkPageSetup *page_setup); 56 | 57 | G_GNUC_INTERNAL 58 | void eom_print_image_setup_get_options (EomPrintImageSetup *setup, 59 | gdouble *left, 60 | gdouble *top, 61 | gdouble *scale, 62 | GtkUnit *unit); 63 | void eom_print_image_setup_update (GtkPrintOperation *operation, 64 | GtkWidget *custom_widget, 65 | GtkPageSetup *page_setup, 66 | GtkPrintSettings *print_settings, 67 | gpointer user_data); 68 | 69 | G_END_DECLS 70 | 71 | #endif /* EOM_PRINT_IMAGE_SETUP_H */ 72 | -------------------------------------------------------------------------------- /src/eom-print-preview.h: -------------------------------------------------------------------------------- 1 | /* Eye of MATE -- Print Preview Widget 2 | * 3 | * Copyright (C) 2006-2007 The Free Software Foundation 4 | * 5 | * Author: Claudio Saavedra 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef _EOM_PRINT_PREVIEW_H_ 23 | #define _EOM_PRINT_PREVIEW_H_ 24 | 25 | G_BEGIN_DECLS 26 | 27 | typedef struct _EomPrintPreview EomPrintPreview; 28 | typedef struct _EomPrintPreviewClass EomPrintPreviewClass; 29 | typedef struct _EomPrintPreviewPrivate EomPrintPreviewPrivate; 30 | 31 | #define EOM_TYPE_PRINT_PREVIEW (eom_print_preview_get_type ()) 32 | #define EOM_PRINT_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_PRINT_PREVIEW, EomPrintPreview)) 33 | #define EOM_PRINT_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_PRINT_PREVIEW, EomPrintPreviewClass)) 34 | #define EOM_IS_PRINT_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_PRINT_PREVIEW)) 35 | #define EOM_IS_PRINT_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_PRINT_PREVIEW)) 36 | 37 | struct _EomPrintPreview { 38 | GtkAspectFrame aspect_frame; 39 | 40 | EomPrintPreviewPrivate *priv; 41 | }; 42 | 43 | struct _EomPrintPreviewClass { 44 | GtkAspectFrameClass parent_class; 45 | 46 | }; 47 | 48 | G_GNUC_INTERNAL 49 | GType eom_print_preview_get_type (void) G_GNUC_CONST; 50 | 51 | G_GNUC_INTERNAL 52 | GtkWidget *eom_print_preview_new (void); 53 | 54 | G_GNUC_INTERNAL 55 | GtkWidget *eom_print_preview_new_with_pixbuf (GdkPixbuf *pixbuf); 56 | 57 | G_GNUC_INTERNAL 58 | void eom_print_preview_set_page_margins (EomPrintPreview *preview, 59 | gfloat l_margin, 60 | gfloat r_margin, 61 | gfloat t_margin, 62 | gfloat b_margin); 63 | 64 | G_GNUC_INTERNAL 65 | void eom_print_preview_set_from_page_setup (EomPrintPreview *preview, 66 | GtkPageSetup *setup); 67 | 68 | G_GNUC_INTERNAL 69 | void eom_print_preview_get_image_position (EomPrintPreview *preview, 70 | gdouble *x, 71 | gdouble *y); 72 | 73 | G_GNUC_INTERNAL 74 | void eom_print_preview_set_image_position (EomPrintPreview *preview, 75 | gdouble x, 76 | gdouble y); 77 | 78 | G_GNUC_INTERNAL 79 | void eom_print_preview_set_scale (EomPrintPreview *preview, 80 | gfloat scale); 81 | 82 | G_END_DECLS 83 | 84 | #endif /* _EOM_PRINT_PREVIEW_H_ */ 85 | -------------------------------------------------------------------------------- /src/eom-print.h: -------------------------------------------------------------------------------- 1 | /* Eye of Mate - Print Operations 2 | * 3 | * Copyright (C) 2005-2008 The Free Software Foundation 4 | * 5 | * Author: Claudio Saavedra 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_PRINT_H__ 23 | #define __EOM_PRINT_H__ 24 | 25 | #include "eom-image.h" 26 | #include 27 | 28 | G_BEGIN_DECLS 29 | 30 | G_GNUC_INTERNAL 31 | GtkPrintOperation* eom_print_operation_new (EomImage *image, 32 | GtkPrintSettings *print_settings, 33 | GtkPageSetup *page_setup); 34 | 35 | G_GNUC_INTERNAL 36 | GtkPageSetup* eom_print_get_page_setup (void); 37 | 38 | G_GNUC_INTERNAL 39 | void eom_print_set_page_setup (GtkPageSetup *page_setup); 40 | 41 | G_GNUC_INTERNAL 42 | GtkPrintSettings * eom_print_get_print_settings (void); 43 | 44 | G_GNUC_INTERNAL 45 | void eom_print_set_print_settings (GtkPrintSettings *print_settings); 46 | 47 | G_END_DECLS 48 | 49 | #endif /* __EOM_PRINT_H__ */ 50 | -------------------------------------------------------------------------------- /src/eom-properties-dialog.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Image Properties Dialog 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_PROPERTIES_DIALOG_H__ 23 | #define __EOM_PROPERTIES_DIALOG_H__ 24 | 25 | #include "eom-image.h" 26 | #include "eom-thumb-view.h" 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | G_BEGIN_DECLS 33 | 34 | typedef struct _EomPropertiesDialog EomPropertiesDialog; 35 | typedef struct _EomPropertiesDialogClass EomPropertiesDialogClass; 36 | typedef struct _EomPropertiesDialogPrivate EomPropertiesDialogPrivate; 37 | 38 | #define EOM_TYPE_PROPERTIES_DIALOG (eom_properties_dialog_get_type ()) 39 | #define EOM_PROPERTIES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_PROPERTIES_DIALOG, EomPropertiesDialog)) 40 | #define EOM_PROPERTIES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_PROPERTIES_DIALOG, EomPropertiesDialogClass)) 41 | #define EOM_IS_PROPERTIES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_PROPERTIES_DIALOG)) 42 | #define EOM_IS_PROPERTIES_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EOM_TYPE_PROPERTIES_DIALOG)) 43 | #define EOM_PROPERTIES_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EOM_TYPE_PROPERTIES_DIALOG, EomPropertiesDialogClass)) 44 | 45 | typedef enum { 46 | EOM_PROPERTIES_DIALOG_PAGE_GENERAL = 0, 47 | EOM_PROPERTIES_DIALOG_PAGE_EXIF, 48 | EOM_PROPERTIES_DIALOG_PAGE_DETAILS, 49 | EOM_PROPERTIES_DIALOG_N_PAGES 50 | } EomPropertiesDialogPage; 51 | 52 | struct _EomPropertiesDialog { 53 | GtkDialog dialog; 54 | 55 | EomPropertiesDialogPrivate *priv; 56 | }; 57 | 58 | struct _EomPropertiesDialogClass { 59 | GtkDialogClass parent_class; 60 | }; 61 | 62 | GType eom_properties_dialog_get_type (void) G_GNUC_CONST; 63 | 64 | GtkWidget *eom_properties_dialog_new (GtkWindow *parent, 65 | EomThumbView *thumbview, 66 | GtkAction *next_image_action, 67 | GtkAction *previous_image_action); 68 | 69 | void eom_properties_dialog_update (EomPropertiesDialog *prop, 70 | EomImage *image); 71 | 72 | void eom_properties_dialog_set_page (EomPropertiesDialog *prop, 73 | EomPropertiesDialogPage page); 74 | 75 | void eom_properties_dialog_set_netbook_mode (EomPropertiesDialog *dlg, 76 | gboolean enable); 77 | G_END_DECLS 78 | 79 | #endif /* __EOM_PROPERTIES_DIALOG_H__ */ 80 | -------------------------------------------------------------------------------- /src/eom-save-as-dialog-helper.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_SAVE_AS_DIALOG_HELPER_H_ 2 | #define _EOM_SAVE_AS_DIALOG_HELPER_H_ 3 | 4 | #include 5 | #include 6 | #include "eom-uri-converter.h" 7 | 8 | G_BEGIN_DECLS 9 | 10 | G_GNUC_INTERNAL 11 | GtkWidget* eom_save_as_dialog_new (GtkWindow *main, GList *images, GFile *base_file); 12 | 13 | G_GNUC_INTERNAL 14 | EomURIConverter* eom_save_as_dialog_get_converter (GtkWidget *dlg); 15 | 16 | G_END_DECLS 17 | 18 | #endif /* _EOM_SAVE_DIALOG_HELPER_H_ */ 19 | -------------------------------------------------------------------------------- /src/eom-scroll-view.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_SCROLL_VIEW_H_ 2 | #define _EOM_SCROLL_VIEW_H_ 3 | 4 | #include 5 | #include "eom-image.h" 6 | 7 | G_BEGIN_DECLS 8 | 9 | typedef struct _EomScrollView EomScrollView; 10 | typedef struct _EomScrollViewClass EomScrollViewClass; 11 | typedef struct _EomScrollViewPrivate EomScrollViewPrivate; 12 | 13 | #define EOM_TYPE_SCROLL_VIEW (eom_scroll_view_get_type ()) 14 | #define EOM_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_SCROLL_VIEW, EomScrollView)) 15 | #define EOM_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_SCROLL_VIEW, EomScrollViewClass)) 16 | #define EOM_IS_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_SCROLL_VIEW)) 17 | #define EOM_IS_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_SCROLL_VIEW)) 18 | 19 | struct _EomScrollView { 20 | GtkGrid base_instance; 21 | 22 | EomScrollViewPrivate *priv; 23 | }; 24 | 25 | struct _EomScrollViewClass { 26 | GtkGridClass parent_class; 27 | 28 | void (* zoom_changed) (EomScrollView *view, double zoom); 29 | }; 30 | 31 | typedef enum { 32 | EOM_TRANSP_BACKGROUND, 33 | EOM_TRANSP_CHECKED, 34 | EOM_TRANSP_COLOR 35 | } EomTransparencyStyle; 36 | 37 | GType eom_scroll_view_get_type (void) G_GNUC_CONST; 38 | GtkWidget* eom_scroll_view_new (void); 39 | 40 | /* loading stuff */ 41 | void eom_scroll_view_set_image (EomScrollView *view, EomImage *image); 42 | EomImage* eom_scroll_view_get_image (EomScrollView *view); 43 | 44 | /* general properties */ 45 | void eom_scroll_view_set_scroll_wheel_zoom (EomScrollView *view, gboolean scroll_wheel_zoom); 46 | void eom_scroll_view_set_zoom_upscale (EomScrollView *view, gboolean upscale); 47 | void eom_scroll_view_set_zoom_multiplier (EomScrollView *view, gdouble multiplier); 48 | void eom_scroll_view_set_antialiasing_in (EomScrollView *view, gboolean state); 49 | void eom_scroll_view_set_antialiasing_out (EomScrollView *view, gboolean state); 50 | void eom_scroll_view_set_transparency_color (EomScrollView *view, GdkRGBA *color); 51 | void eom_scroll_view_set_transparency (EomScrollView *view, EomTransparencyStyle style); 52 | gboolean eom_scroll_view_scrollbars_visible (EomScrollView *view); 53 | void eom_scroll_view_set_popup (EomScrollView *view, GtkMenu *menu); 54 | void eom_scroll_view_set_background_color (EomScrollView *view, 55 | const GdkRGBA *color); 56 | void eom_scroll_view_override_bg_color (EomScrollView *view, 57 | const GdkRGBA *color); 58 | void eom_scroll_view_set_use_bg_color (EomScrollView *view, gboolean use); 59 | /* zoom api */ 60 | void eom_scroll_view_zoom_in (EomScrollView *view, gboolean smooth); 61 | void eom_scroll_view_zoom_out (EomScrollView *view, gboolean smooth); 62 | void eom_scroll_view_zoom_fit (EomScrollView *view); 63 | void eom_scroll_view_set_zoom (EomScrollView *view, double zoom); 64 | double eom_scroll_view_get_zoom (EomScrollView *view); 65 | gboolean eom_scroll_view_get_zoom_is_min (EomScrollView *view); 66 | gboolean eom_scroll_view_get_zoom_is_max (EomScrollView *view); 67 | void eom_scroll_view_show_cursor (EomScrollView *view); 68 | void eom_scroll_view_hide_cursor (EomScrollView *view); 69 | 70 | G_END_DECLS 71 | 72 | #endif /* _EOM_SCROLL_VIEW_H_ */ 73 | 74 | -------------------------------------------------------------------------------- /src/eom-session.c: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Session Handler 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on gedit code (gedit/gedit-session.h) by: 8 | * - Gedit Team 9 | * - Federico Mena-Quintero 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program; if not, write to the Free Software 23 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 24 | */ 25 | 26 | #ifdef HAVE_CONFIG_H 27 | #include 28 | #endif 29 | 30 | #include "eom-session.h" 31 | #include "eom-window.h" 32 | #include "eom-application.h" 33 | 34 | void 35 | eom_session_init (EomApplication *application) 36 | { 37 | g_return_if_fail (EOM_IS_APPLICATION (application)); 38 | 39 | /* FIXME: Session management is currently a no-op in eom. */ 40 | } 41 | 42 | gboolean 43 | eom_session_is_restored (void) 44 | { 45 | return FALSE; 46 | } 47 | 48 | gboolean 49 | eom_session_load (void) 50 | { 51 | return TRUE; 52 | } 53 | -------------------------------------------------------------------------------- /src/eom-session.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Session Handler 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on gedit code (gedit/gedit-session.h) by: 8 | * - Gedit Team 9 | * - Federico Mena-Quintero 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program; if not, write to the Free Software 23 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 24 | */ 25 | 26 | #ifndef __EOM_SESSION_H__ 27 | #define __EOM_SESSION_H__ 28 | 29 | #include "eom-application.h" 30 | 31 | #include 32 | 33 | G_BEGIN_DECLS 34 | 35 | G_GNUC_INTERNAL 36 | void eom_session_init (EomApplication *application); 37 | 38 | G_GNUC_INTERNAL 39 | gboolean eom_session_is_restored (void); 40 | 41 | G_GNUC_INTERNAL 42 | gboolean eom_session_load (void); 43 | 44 | G_END_DECLS 45 | 46 | #endif /* __EOM_SESSION_H__ */ 47 | -------------------------------------------------------------------------------- /src/eom-sidebar.h: -------------------------------------------------------------------------------- 1 | /* Eye of Mate - Side bar 2 | * 3 | * Copyright (C) 2004 Red Hat, Inc. 4 | * Copyright (C) 2007 The Free Software Foundation 5 | * 6 | * Author: Lucas Rocha 7 | * 8 | * Based on evince code (shell/ev-sidebar.h) by: 9 | * - Jonathan Blandford 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU General Public License 22 | * along with this program; if not, write to the Free Software 23 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 24 | */ 25 | 26 | #ifndef __EOM_SIDEBAR_H__ 27 | #define __EOM_SIDEBAR_H__ 28 | 29 | #include 30 | 31 | G_BEGIN_DECLS 32 | 33 | typedef struct _EomSidebar EomSidebar; 34 | typedef struct _EomSidebarClass EomSidebarClass; 35 | typedef struct _EomSidebarPrivate EomSidebarPrivate; 36 | 37 | #define EOM_TYPE_SIDEBAR (eom_sidebar_get_type()) 38 | #define EOM_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_SIDEBAR, EomSidebar)) 39 | #define EOM_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_SIDEBAR, EomSidebarClass)) 40 | #define EOM_IS_SIDEBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_SIDEBAR)) 41 | #define EOM_IS_SIDEBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EOM_TYPE_SIDEBAR)) 42 | #define EOM_SIDEBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EOM_TYPE_SIDEBAR, EomSidebarClass)) 43 | 44 | struct _EomSidebar { 45 | GtkBox base_instance; 46 | 47 | EomSidebarPrivate *priv; 48 | }; 49 | 50 | struct _EomSidebarClass { 51 | GtkBoxClass base_class; 52 | 53 | void (* page_added) (EomSidebar *eom_sidebar, 54 | GtkWidget *main_widget); 55 | 56 | void (* page_removed) (EomSidebar *eom_sidebar, 57 | GtkWidget *main_widget); 58 | }; 59 | 60 | GType eom_sidebar_get_type (void); 61 | 62 | GtkWidget *eom_sidebar_new (void); 63 | 64 | void eom_sidebar_add_page (EomSidebar *eom_sidebar, 65 | const gchar *title, 66 | GtkWidget *main_widget); 67 | 68 | void eom_sidebar_remove_page (EomSidebar *eom_sidebar, 69 | GtkWidget *main_widget); 70 | 71 | void eom_sidebar_set_page (EomSidebar *eom_sidebar, 72 | GtkWidget *main_widget); 73 | 74 | gint eom_sidebar_get_n_pages (EomSidebar *eom_sidebar); 75 | 76 | gboolean eom_sidebar_is_empty (EomSidebar *eom_sidebar); 77 | 78 | G_END_DECLS 79 | 80 | #endif /* __EOM_SIDEBAR_H__ */ 81 | 82 | -------------------------------------------------------------------------------- /src/eom-statusbar.h: -------------------------------------------------------------------------------- 1 | /* Eye of Mate - Statusbar 2 | * 3 | * Copyright (C) 2000-2006 The Free Software Foundation 4 | * 5 | * Author: Federico Mena-Quintero 6 | * Jens Finke 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 21 | */ 22 | 23 | #ifndef __EOM_STATUSBAR_H__ 24 | #define __EOM_STATUSBAR_H__ 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | G_BEGIN_DECLS 31 | 32 | typedef struct _EomStatusbar EomStatusbar; 33 | typedef struct _EomStatusbarPrivate EomStatusbarPrivate; 34 | typedef struct _EomStatusbarClass EomStatusbarClass; 35 | 36 | #define EOM_TYPE_STATUSBAR (eom_statusbar_get_type ()) 37 | #define EOM_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_STATUSBAR, EomStatusbar)) 38 | #define EOM_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_STATUSBAR, EomStatusbarClass)) 39 | #define EOM_IS_STATUSBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_STATUSBAR)) 40 | #define EOM_IS_STATUSBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_STATUSBAR)) 41 | #define EOM_STATUSBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EOM_TYPE_STATUSBAR, EomStatusbarClass)) 42 | 43 | struct _EomStatusbar 44 | { 45 | GtkStatusbar parent; 46 | 47 | EomStatusbarPrivate *priv; 48 | }; 49 | 50 | struct _EomStatusbarClass 51 | { 52 | GtkStatusbarClass parent_class; 53 | }; 54 | 55 | GType eom_statusbar_get_type (void) G_GNUC_CONST; 56 | 57 | GtkWidget *eom_statusbar_new (void); 58 | 59 | void eom_statusbar_set_image_number (EomStatusbar *statusbar, 60 | gint num, 61 | gint tot); 62 | 63 | void eom_statusbar_set_progress (EomStatusbar *statusbar, 64 | gdouble progress); 65 | 66 | G_END_DECLS 67 | 68 | #endif /* __EOM_STATUSBAR_H__ */ 69 | -------------------------------------------------------------------------------- /src/eom-thumb-nav.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Thumbnail Navigator 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef __EOM_THUMB_NAV_H__ 23 | #define __EOM_THUMB_NAV_H__ 24 | 25 | #include "eom-thumb-view.h" 26 | 27 | #include 28 | #include 29 | #include 30 | 31 | G_BEGIN_DECLS 32 | 33 | typedef struct _EomThumbNav EomThumbNav; 34 | typedef struct _EomThumbNavClass EomThumbNavClass; 35 | typedef struct _EomThumbNavPrivate EomThumbNavPrivate; 36 | 37 | #define EOM_TYPE_THUMB_NAV (eom_thumb_nav_get_type ()) 38 | #define EOM_THUMB_NAV(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), EOM_TYPE_THUMB_NAV, EomThumbNav)) 39 | #define EOM_THUMB_NAV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EOM_TYPE_THUMB_NAV, EomThumbNavClass)) 40 | #define EOM_IS_THUMB_NAV(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), EOM_TYPE_THUMB_NAV)) 41 | #define EOM_IS_THUMB_NAV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), EOM_TYPE_THUMB_NAV)) 42 | #define EOM_THUMB_NAV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), EOM_TYPE_THUMB_NAV, EomThumbNavClass)) 43 | 44 | typedef enum { 45 | EOM_THUMB_NAV_MODE_ONE_ROW, 46 | EOM_THUMB_NAV_MODE_ONE_COLUMN, 47 | EOM_THUMB_NAV_MODE_MULTIPLE_ROWS, 48 | EOM_THUMB_NAV_MODE_MULTIPLE_COLUMNS 49 | } EomThumbNavMode; 50 | 51 | struct _EomThumbNav { 52 | GtkBox base_instance; 53 | 54 | EomThumbNavPrivate *priv; 55 | }; 56 | 57 | struct _EomThumbNavClass { 58 | GtkBoxClass parent_class; 59 | }; 60 | 61 | GType eom_thumb_nav_get_type (void) G_GNUC_CONST; 62 | 63 | GtkWidget *eom_thumb_nav_new (GtkWidget *thumbview, 64 | EomThumbNavMode mode, 65 | gboolean show_buttons); 66 | 67 | gboolean eom_thumb_nav_get_show_buttons (EomThumbNav *nav); 68 | 69 | void eom_thumb_nav_set_show_buttons (EomThumbNav *nav, 70 | gboolean show_buttons); 71 | 72 | EomThumbNavMode eom_thumb_nav_get_mode (EomThumbNav *nav); 73 | 74 | void eom_thumb_nav_set_mode (EomThumbNav *nav, 75 | EomThumbNavMode mode); 76 | 77 | G_END_DECLS 78 | 79 | #endif /* __EOM_THUMB_NAV_H__ */ 80 | -------------------------------------------------------------------------------- /src/eom-thumb-view.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Thumbnail View 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Claudio Saavedra 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef EOM_THUMB_VIEW_H 23 | #define EOM_THUMB_VIEW_H 24 | 25 | #include "eom-image.h" 26 | #include "eom-list-store.h" 27 | 28 | G_BEGIN_DECLS 29 | 30 | #define EOM_TYPE_THUMB_VIEW (eom_thumb_view_get_type ()) 31 | #define EOM_THUMB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOM_TYPE_THUMB_VIEW, EomThumbView)) 32 | #define EOM_THUMB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOM_TYPE_THUMB_VIEW, EomThumbViewClass)) 33 | #define EOM_IS_THUMB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOM_TYPE_THUMB_VIEW)) 34 | #define EOM_IS_THUMB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOM_TYPE_THUMB_VIEW)) 35 | #define EOM_THUMB_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EOM_TYPE_THUMB_VIEW, EomThumbViewClass)) 36 | 37 | typedef struct _EomThumbView EomThumbView; 38 | typedef struct _EomThumbViewClass EomThumbViewClass; 39 | typedef struct _EomThumbViewPrivate EomThumbViewPrivate; 40 | 41 | typedef enum { 42 | EOM_THUMB_VIEW_SELECT_CURRENT = 0, 43 | EOM_THUMB_VIEW_SELECT_LEFT, 44 | EOM_THUMB_VIEW_SELECT_RIGHT, 45 | EOM_THUMB_VIEW_SELECT_FIRST, 46 | EOM_THUMB_VIEW_SELECT_LAST, 47 | EOM_THUMB_VIEW_SELECT_RANDOM 48 | } EomThumbViewSelectionChange; 49 | 50 | struct _EomThumbView { 51 | GtkIconView icon_view; 52 | EomThumbViewPrivate *priv; 53 | }; 54 | 55 | struct _EomThumbViewClass { 56 | GtkIconViewClass icon_view_class; 57 | }; 58 | 59 | GType eom_thumb_view_get_type (void) G_GNUC_CONST; 60 | 61 | GtkWidget *eom_thumb_view_new (void); 62 | 63 | void eom_thumb_view_set_model (EomThumbView *thumbview, 64 | EomListStore *store); 65 | 66 | void eom_thumb_view_set_item_height (EomThumbView *thumbview, 67 | gint height); 68 | 69 | guint eom_thumb_view_get_n_selected (EomThumbView *thumbview); 70 | 71 | EomImage *eom_thumb_view_get_first_selected_image (EomThumbView *thumbview); 72 | 73 | GList *eom_thumb_view_get_selected_images (EomThumbView *thumbview); 74 | 75 | void eom_thumb_view_select_single (EomThumbView *thumbview, 76 | EomThumbViewSelectionChange change); 77 | 78 | void eom_thumb_view_set_current_image (EomThumbView *thumbview, 79 | EomImage *image, 80 | gboolean deselect_other); 81 | 82 | void eom_thumb_view_set_thumbnail_popup (EomThumbView *thumbview, 83 | GtkMenu *menu); 84 | 85 | G_END_DECLS 86 | 87 | #endif /* EOM_THUMB_VIEW_H */ 88 | -------------------------------------------------------------------------------- /src/eom-thumbnail.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - Thumbnailing functions 2 | * 3 | * Copyright (C) 2000-2007 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on caja code (libcaja-private/caja-thumbnail.c) by: 8 | * - Andy Hertzfeld 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef _EOM_THUMBNAIL_H_ 26 | #define _EOM_THUMBNAIL_H_ 27 | 28 | #include 29 | #include "eom-image.h" 30 | 31 | G_BEGIN_DECLS 32 | 33 | void eom_thumbnail_init (void); 34 | 35 | GdkPixbuf* eom_thumbnail_fit_to_size (GdkPixbuf *thumbnail, 36 | gint dimension); 37 | 38 | GdkPixbuf* eom_thumbnail_add_frame (GdkPixbuf *thumbnail); 39 | 40 | GdkPixbuf* eom_thumbnail_load (EomImage *image, 41 | GError **error); 42 | 43 | #define EOM_THUMBNAIL_ORIGINAL_WIDTH "eom-thumbnail-orig-width" 44 | #define EOM_THUMBNAIL_ORIGINAL_HEIGHT "eom-thumbnail-orig-height" 45 | 46 | G_END_DECLS 47 | 48 | #endif /* _EOM_THUMBNAIL_H_ */ 49 | -------------------------------------------------------------------------------- /src/eom-transform.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_TRANSFORM_H_ 2 | #define _EOM_TRANSFORM_H_ 3 | 4 | #include 5 | #include 6 | 7 | G_BEGIN_DECLS 8 | 9 | #ifndef __EOM_JOB_DECLR__ 10 | #define __EOM_JOB_DECLR__ 11 | typedef struct _EomJob EomJob; 12 | #endif 13 | 14 | typedef enum { 15 | EOM_TRANSFORM_NONE, 16 | EOM_TRANSFORM_ROT_90, 17 | EOM_TRANSFORM_ROT_180, 18 | EOM_TRANSFORM_ROT_270, 19 | EOM_TRANSFORM_FLIP_HORIZONTAL, 20 | EOM_TRANSFORM_FLIP_VERTICAL, 21 | EOM_TRANSFORM_TRANSPOSE, 22 | EOM_TRANSFORM_TRANSVERSE 23 | } EomTransformType; 24 | 25 | #define EOM_TYPE_TRANSFORM (eom_transform_get_type ()) 26 | #define EOM_TRANSFORM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_TRANSFORM, EomTransform)) 27 | #define EOM_TRANSFORM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_TRANSFORM, EomTransformClass)) 28 | #define EOM_IS_TRANSFORM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_TRANSFORM)) 29 | #define EOM_IS_TRANSFORM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_TRANSFORM)) 30 | #define EOM_TRANSFORM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_TRANSFORM, EomTransformClass)) 31 | 32 | /* ========================================= 33 | 34 | GObjecat wrapper around an affine transformation 35 | 36 | ----------------------------------------*/ 37 | 38 | typedef struct _EomTransform EomTransform; 39 | typedef struct _EomTransformClass EomTransformClass; 40 | typedef struct _EomTransformPrivate EomTransformPrivate; 41 | 42 | struct _EomTransform { 43 | GObject parent; 44 | 45 | EomTransformPrivate *priv; 46 | }; 47 | 48 | struct _EomTransformClass { 49 | GObjectClass parent_klass; 50 | }; 51 | 52 | GType eom_transform_get_type (void) G_GNUC_CONST; 53 | 54 | GdkPixbuf* eom_transform_apply (EomTransform *trans, GdkPixbuf *pixbuf, EomJob *job); 55 | EomTransform* eom_transform_reverse (EomTransform *trans); 56 | EomTransform* eom_transform_compose (EomTransform *trans, EomTransform *compose); 57 | gboolean eom_transform_is_identity (EomTransform *trans); 58 | 59 | EomTransform* eom_transform_identity_new (void); 60 | EomTransform* eom_transform_rotate_new (int degree); 61 | EomTransform* eom_transform_flip_new (EomTransformType type /* only EOM_TRANSFORM_FLIP_* are valid */); 62 | #if 0 63 | EomTransform* eom_transform_scale_new (double sx, double sy); 64 | #endif 65 | EomTransform* eom_transform_new (EomTransformType trans); 66 | 67 | EomTransformType eom_transform_get_transform_type (EomTransform *trans); 68 | 69 | gboolean eom_transform_get_affine (EomTransform *trans, cairo_matrix_t *affine); 70 | 71 | G_END_DECLS 72 | 73 | #endif /* _EOM_TRANSFORM_H_ */ 74 | 75 | -------------------------------------------------------------------------------- /src/eom-uri-converter.h: -------------------------------------------------------------------------------- 1 | #ifndef _EOM_URI_CONVERTER_H_ 2 | #define _EOM_URI_CONVERTER_H_ 3 | 4 | #include 5 | #include 6 | #include "eom-image.h" 7 | 8 | G_BEGIN_DECLS 9 | 10 | #define EOM_TYPE_URI_CONVERTER (eom_uri_converter_get_type ()) 11 | #define EOM_URI_CONVERTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_URI_CONVERTER, EomURIConverter)) 12 | #define EOM_URI_CONVERTER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_URI_CONVERTER, EomURIConverterClass)) 13 | #define EOM_IS_URI_CONVERTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_URI_CONVERTER)) 14 | #define EOM_IS_URI_CONVERTER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_URI_CONVERTER)) 15 | #define EOM_URI_CONVERTER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_URI_CONVERTER, EomURIConverterClass)) 16 | 17 | #ifndef __EOM_URI_CONVERTER_DECLR__ 18 | #define __EOM_URI_CONVERTER_DECLR__ 19 | typedef struct _EomURIConverter EomURIConverter; 20 | #endif 21 | typedef struct _EomURIConverterClass EomURIConverterClass; 22 | typedef struct _EomURIConverterPrivate EomURIConverterPrivate; 23 | 24 | typedef enum { 25 | EOM_UC_STRING, 26 | EOM_UC_FILENAME, 27 | EOM_UC_COUNTER, 28 | EOM_UC_COMMENT, 29 | EOM_UC_DATE, 30 | EOM_UC_TIME, 31 | EOM_UC_DAY, 32 | EOM_UC_MONTH, 33 | EOM_UC_YEAR, 34 | EOM_UC_HOUR, 35 | EOM_UC_MINUTE, 36 | EOM_UC_SECOND, 37 | EOM_UC_END 38 | } EomUCType; 39 | 40 | typedef struct { 41 | char *description; 42 | char *rep; 43 | gboolean req_exif; 44 | } EomUCInfo; 45 | 46 | typedef enum { 47 | EOM_UC_ERROR_INVALID_UNICODE, 48 | EOM_UC_ERROR_INVALID_CHARACTER, 49 | EOM_UC_ERROR_EQUAL_FILENAMES, 50 | EOM_UC_ERROR_UNKNOWN 51 | } EomUCError; 52 | 53 | #define EOM_UC_ERROR eom_uc_error_quark () 54 | 55 | struct _EomURIConverter { 56 | GObject parent; 57 | 58 | EomURIConverterPrivate *priv; 59 | }; 60 | 61 | struct _EomURIConverterClass { 62 | GObjectClass parent_klass; 63 | }; 64 | 65 | G_GNUC_INTERNAL 66 | GType eom_uri_converter_get_type (void) G_GNUC_CONST; 67 | 68 | G_GNUC_INTERNAL 69 | GQuark eom_uc_error_quark (void); 70 | 71 | G_GNUC_INTERNAL 72 | EomURIConverter* eom_uri_converter_new (GFile *base_file, 73 | GdkPixbufFormat *img_format, 74 | const char *format_string); 75 | 76 | G_GNUC_INTERNAL 77 | gboolean eom_uri_converter_check (EomURIConverter *converter, 78 | GList *img_list, 79 | GError **error); 80 | 81 | G_GNUC_INTERNAL 82 | gboolean eom_uri_converter_requires_exif (EomURIConverter *converter); 83 | 84 | G_GNUC_INTERNAL 85 | gboolean eom_uri_converter_do (EomURIConverter *converter, 86 | EomImage *image, 87 | GFile **file, 88 | GdkPixbufFormat **format, 89 | GError **error); 90 | 91 | G_GNUC_INTERNAL 92 | char* eom_uri_converter_preview (const char *format_str, 93 | EomImage *img, 94 | GdkPixbufFormat *format, 95 | gulong counter, 96 | guint n_images, 97 | gboolean convert_spaces, 98 | gunichar space_char); 99 | 100 | /* for debugging purpose only */ 101 | G_GNUC_INTERNAL 102 | void eom_uri_converter_print_list (EomURIConverter *conv); 103 | 104 | G_END_DECLS 105 | 106 | #endif /* _EOM_URI_CONVERTER_H_ */ 107 | -------------------------------------------------------------------------------- /src/eom-util.h: -------------------------------------------------------------------------------- 1 | /* Eye Of Mate - General Utilities 2 | * 3 | * Copyright (C) 2006 The Free Software Foundation 4 | * 5 | * Author: Lucas Rocha 6 | * 7 | * Based on code by: 8 | * - Jens Finke 9 | * 10 | * This program is free software; you can redistribute it and/or modify 11 | * it under the terms of the GNU General Public License as published by 12 | * the Free Software Foundation; either version 2 of the License, or 13 | * (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program; if not, write to the Free Software 22 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 23 | */ 24 | 25 | #ifndef __EOM_UTIL_H__ 26 | #define __EOM_UTIL_H__ 27 | 28 | #include 29 | 30 | G_BEGIN_DECLS 31 | 32 | G_GNUC_INTERNAL 33 | void eom_util_show_help (const gchar *section, 34 | GtkWindow *parent); 35 | 36 | G_GNUC_INTERNAL 37 | gchar *eom_util_make_valid_utf8 (const gchar *name); 38 | 39 | G_GNUC_INTERNAL 40 | GSList *eom_util_parse_uri_string_list_to_file_list (const gchar *uri_list); 41 | 42 | G_GNUC_INTERNAL 43 | GSList *eom_util_string_list_to_file_list (GSList *string_list); 44 | 45 | G_GNUC_INTERNAL 46 | GSList *eom_util_strings_to_file_list (gchar **strings); 47 | 48 | G_GNUC_INTERNAL 49 | GSList *eom_util_string_array_to_list (const gchar **files, 50 | gboolean create_uri); 51 | 52 | G_GNUC_INTERNAL 53 | gchar **eom_util_string_array_make_absolute (gchar **files); 54 | 55 | G_GNUC_INTERNAL 56 | const gchar *eom_util_dot_dir (void); 57 | 58 | G_GNUC_INTERNAL 59 | char * eom_util_filename_get_extension (const char * filename_with_extension); 60 | 61 | G_GNUC_INTERNAL 62 | gboolean eom_util_file_is_persistent (GFile *file); 63 | 64 | G_GNUC_INTERNAL 65 | void eom_util_show_file_in_filemanager (GFile *file, 66 | GtkWindow *toplevel); 67 | 68 | gboolean eom_notebook_scroll_event_cb (GtkWidget *notebook, 69 | GdkEventScroll *event); 70 | 71 | G_END_DECLS 72 | 73 | #endif /* __EOM_UTIL_H__ */ 74 | -------------------------------------------------------------------------------- /src/eom-window-activatable.c: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-window-activatable.c 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2011 Felix Riemann 8 | * 9 | * Base on code by: 10 | * - Steve Frécinaux 11 | * 12 | * This program is free software; you can redistribute it and/or 13 | * modify it under the terms of the GNU General Public License 14 | * as published by the Free Software Foundation; either version 2 15 | * of the License, or (at your option) any later version. 16 | * 17 | * This program is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License along 23 | * with this program; if not, write to the Free Software Foundation, Inc., 24 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 25 | */ 26 | 27 | #ifdef HAVE_CONFIG_H 28 | #include "config.h" 29 | #endif 30 | 31 | #include "eom-window-activatable.h" 32 | 33 | #include 34 | #include "eom-window.h" 35 | 36 | G_DEFINE_INTERFACE(EomWindowActivatable, eom_window_activatable, G_TYPE_OBJECT) 37 | 38 | void 39 | eom_window_activatable_default_init (EomWindowActivatableInterface *iface) 40 | { 41 | static gboolean initialized = FALSE; 42 | 43 | if (!initialized) { 44 | /** 45 | * EomWindowActivatable:window: 46 | * 47 | * This is the #EomWindow this #EomWindowActivatable instance 48 | * should be attached to. 49 | */ 50 | g_object_interface_install_property (iface, 51 | g_param_spec_object ("window", "Window", 52 | "The EomWindow this " 53 | "instance it attached to", 54 | EOM_TYPE_WINDOW, 55 | G_PARAM_READWRITE | 56 | G_PARAM_CONSTRUCT_ONLY | 57 | G_PARAM_STATIC_STRINGS)); 58 | initialized = TRUE; 59 | } 60 | } 61 | 62 | void 63 | eom_window_activatable_activate (EomWindowActivatable *activatable) 64 | { 65 | EomWindowActivatableInterface *iface; 66 | 67 | g_return_if_fail (EOM_IS_WINDOW_ACTIVATABLE (activatable)); 68 | 69 | iface = EOM_WINDOW_ACTIVATABLE_GET_IFACE (activatable); 70 | 71 | if (G_LIKELY (iface->activate != NULL)) 72 | iface->activate (activatable); 73 | } 74 | 75 | void 76 | eom_window_activatable_deactivate (EomWindowActivatable *activatable) 77 | { 78 | EomWindowActivatableInterface *iface; 79 | 80 | g_return_if_fail (EOM_IS_WINDOW_ACTIVATABLE (activatable)); 81 | 82 | iface = EOM_WINDOW_ACTIVATABLE_GET_IFACE (activatable); 83 | 84 | if (G_LIKELY (iface->deactivate != NULL)) 85 | iface->deactivate (activatable); 86 | } 87 | 88 | -------------------------------------------------------------------------------- /src/eom-window-activatable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eom-window-activatable.h 3 | * This file is part of eom 4 | * 5 | * Author: Felix Riemann 6 | * 7 | * Copyright (C) 2011 Felix Riemann 8 | * 9 | * Base on code by: 10 | * - Steve Frécinaux 11 | * 12 | * This program is free software; you can redistribute it and/or 13 | * modify it under the terms of the GNU General Public License 14 | * as published by the Free Software Foundation; either version 2 15 | * of the License, or (at your option) any later version. 16 | * 17 | * This program is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU General Public License along 23 | * with this program; if not, write to the Free Software Foundation, Inc., 24 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 25 | */ 26 | 27 | #ifndef __EOM_WINDOW_ACTIVATABLE_H__ 28 | #define __EOM_WINDOW_ACTIVATABLE_H__ 29 | 30 | #include 31 | 32 | G_BEGIN_DECLS 33 | 34 | #define EOM_TYPE_WINDOW_ACTIVATABLE (eom_window_activatable_get_type ()) 35 | #define EOM_WINDOW_ACTIVATABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ 36 | EOM_TYPE_WINDOW_ACTIVATABLE, \ 37 | EomWindowActivatable)) 38 | #define EOM_WINDOW_ACTIVATABLE_IFACE(obj) \ 39 | (G_TYPE_CHECK_CLASS_CAST ((obj), \ 40 | EOM_TYPE_WINDOW_ACTIVATABLE, \ 41 | EomWindowActivatableInterface)) 42 | #define EOM_IS_WINDOW_ACTIVATABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ 43 | EOM_TYPE_WINDOW_ACTIVATABLE)) 44 | #define EOM_WINDOW_ACTIVATABLE_GET_IFACE(obj) \ 45 | (G_TYPE_INSTANCE_GET_INTERFACE ((obj), \ 46 | EOM_TYPE_WINDOW_ACTIVATABLE, \ 47 | EomWindowActivatableInterface)) 48 | 49 | typedef struct _EomWindowActivatable EomWindowActivatable; 50 | typedef struct _EomWindowActivatableInterface EomWindowActivatableInterface; 51 | 52 | struct _EomWindowActivatableInterface 53 | { 54 | GTypeInterface g_iface; 55 | 56 | /* vfuncs */ 57 | 58 | void (*activate) (EomWindowActivatable *activatable); 59 | void (*deactivate) (EomWindowActivatable *activatable); 60 | }; 61 | 62 | GType eom_window_activatable_get_type (void) G_GNUC_CONST; 63 | 64 | void eom_window_activatable_activate (EomWindowActivatable *activatable); 65 | void eom_window_activatable_deactivate (EomWindowActivatable *activatable); 66 | 67 | G_END_DECLS 68 | #endif /* __EOM_WINDOW_ACTIVATABLE_H__ */ 69 | 70 | -------------------------------------------------------------------------------- /src/eom.gresource.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | eom.css 5 | eom-image-properties-dialog.ui 6 | eom-multiple-save-as-dialog.ui 7 | eom-preferences-dialog.ui 8 | eom-ui.xml 9 | metadata-sidebar.ui 10 | eom.about 11 | pixmaps/thumbnail-frame.png 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/zoom.c: -------------------------------------------------------------------------------- 1 | /* Eye of Mate image viewer - utility functions for computing zoom factors 2 | * 3 | * Copyright (C) 2000 The Free Software Foundation 4 | * 5 | * Author: Federico Mena-Quintero 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #include 23 | #include 24 | #include "zoom.h" 25 | 26 | /** 27 | * zoom_fit_size: 28 | * @dest_width: Width of destination area. 29 | * @dest_height: Height of destination area. 30 | * @src_width: Width of source image. 31 | * @src_height: Height of source image. 32 | * @upscale_smaller: Whether to scale up images smaller than the destination size. 33 | * @width: Return value for image width. 34 | * @height: Return value for image height. 35 | * 36 | * Computes the final dimensions of an image that is to be scaled to fit to a 37 | * certain size. If @upscale_smaller is TRUE, then images smaller than the 38 | * destination size will be scaled up; otherwise, they will be left at their 39 | * original size. 40 | **/ 41 | void 42 | zoom_fit_size (guint dest_width, guint dest_height, 43 | guint src_width, guint src_height, 44 | gboolean upscale_smaller, 45 | guint *width, guint *height) 46 | { 47 | guint w, h; 48 | 49 | g_return_if_fail (width != NULL); 50 | g_return_if_fail (height != NULL); 51 | 52 | if (src_width == 0 || src_height == 0) { 53 | *width = 0; 54 | *height = 0; 55 | return; 56 | } 57 | 58 | if (src_width <= dest_width && src_height <= dest_height && !upscale_smaller) { 59 | *width = src_width; 60 | *height = src_height; 61 | return; 62 | } 63 | 64 | w = dest_width; 65 | h = floor ((double) (src_height * w) / src_width + 0.5); 66 | 67 | if (h > dest_height) { 68 | h = dest_height; 69 | w = floor ((double) (src_width * h) / src_height + 0.5); 70 | } 71 | 72 | g_assert (w <= dest_width); 73 | g_assert (h <= dest_height); 74 | 75 | *width = w; 76 | *height = h; 77 | } 78 | 79 | /** 80 | * zoom_fit_scale: 81 | * @dest_width: Width of destination area. 82 | * @dest_height: Height of destination area. 83 | * @src_width: Width of source image. 84 | * @src_height: Height of source image. 85 | * @upscale_smaller: Whether to scale up images smaller than the destination size. 86 | * 87 | * Similar to zoom_fit_size(), but returns the zoom factor of the final image 88 | * with respect to the original image's size. 89 | * 90 | * Return value: Zoom factor with respect to the original size. 91 | **/ 92 | double 93 | zoom_fit_scale (guint dest_width, guint dest_height, 94 | guint src_width, guint src_height, 95 | gboolean upscale_smaller) 96 | { 97 | guint w, h; 98 | double wfactor, hfactor; 99 | double factor; 100 | 101 | if (src_width == 0 || src_height == 0) 102 | return 1.0; 103 | 104 | if (dest_width == 0 || dest_height == 0) 105 | return 0.0; 106 | 107 | zoom_fit_size (dest_width, dest_height, src_width, src_height, upscale_smaller, &w, &h); 108 | 109 | wfactor = (double) w / src_width; 110 | hfactor = (double) h / src_height; 111 | 112 | factor = MIN (wfactor, hfactor); 113 | 114 | return factor; 115 | } 116 | 117 | -------------------------------------------------------------------------------- /src/zoom.h: -------------------------------------------------------------------------------- 1 | /* Eye of Mate image viewer - utility functions for computing zoom factors 2 | * 3 | * Copyright (C) 2000 The Free Software Foundation 4 | * 5 | * Author: Federico Mena-Quintero 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 20 | */ 21 | 22 | #ifndef ZOOM_H 23 | #define ZOOM_H 24 | 25 | #include 26 | 27 | G_GNUC_INTERNAL 28 | void zoom_fit_size (guint dest_width, guint dest_height, 29 | guint src_width, guint src_height, 30 | gboolean upscale_smaller, 31 | guint *width, guint *height); 32 | 33 | G_GNUC_INTERNAL 34 | double zoom_fit_scale (guint dest_width, guint dest_height, 35 | guint src_width, guint src_height, 36 | gboolean upscale_smaller); 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /thumbnailer/Makefile.am: -------------------------------------------------------------------------------- 1 | NULL = 2 | 3 | if USE_INTERNAL_THUMBNAILER 4 | 5 | bin_PROGRAMS = eom-thumbnailer 6 | eom_thumbnailer_SOURCES = \ 7 | eom-thumbnailer.c \ 8 | $(NULL) 9 | eom_thumbnailer_CPPFLAGS = \ 10 | -I$(top_srcdir) \ 11 | -I$(top_builddir) \ 12 | $(AM_CPPFLAGS) \ 13 | $(NULL) 14 | eom_thumbnailer_CFLAGS = \ 15 | $(THUMBNAILER_CFLAGS) \ 16 | $(DISABLE_DEPRECATED) \ 17 | $(WARN_CFLAGS) \ 18 | $(AM_CFLAGS) \ 19 | $(NULL) 20 | eom_thumbnailer_LDFLAGS = \ 21 | $(AM_LDFLAGS) \ 22 | -lm \ 23 | $(THUMBNAILER_LIBS) \ 24 | $(NULL) 25 | 26 | endif 27 | 28 | thumbnailerdir = $(datadir)/thumbnailers 29 | thumbnailer_DATA = eom-thumbnailer.thumbnailer 30 | 31 | EXTRA_DIST = \ 32 | eom-thumbnailer.thumbnailer.in \ 33 | $(NULL) 34 | 35 | CLEANFILES = \ 36 | $(thumbnailer_DATA) \ 37 | $(NULL) 38 | 39 | -include $(top_srcdir)/git.mk 40 | -------------------------------------------------------------------------------- /thumbnailer/eom-thumbnailer.thumbnailer.in: -------------------------------------------------------------------------------- 1 | [Thumbnailer Entry] 2 | TryExec=@EOM_THUMBNAILER@ 3 | Exec=@EOM_THUMBNAILER@ -s %s %u %o 4 | MimeType=image/webp; 5 | -------------------------------------------------------------------------------- /thumbnailer/meson.build: -------------------------------------------------------------------------------- 1 | if not get_option('gdk-pixbuf-thumbnailer') 2 | thumbnailer = executable( 3 | 'eom-thumbnailer', 4 | sources: [ 5 | 'eom-thumbnailer.c', 6 | ], 7 | dependencies: [all_deps, magick], 8 | include_directories: top_inc, 9 | install: true, 10 | ) 11 | endif 12 | 13 | thumbnailerdir = datadir / 'thumbnailers' 14 | thumbnailerfile = configure_file(input: 'eom-thumbnailer.thumbnailer.in', configuration: pkg_info, output: 'eom-thumbnailer.thumbnailer') 15 | install_data(thumbnailerfile, install_dir: thumbnailerdir) 16 | -------------------------------------------------------------------------------- /update-authors.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | =pod 3 | 4 | update-authors.pl is part of Eye of MATE. 5 | 6 | Eye of MATE is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation, either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | Eye of MATE is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with Eye of MATE. If not, see . 18 | 19 | =cut 20 | use strict; 21 | use warnings; 22 | 23 | sub ReplaceAuthors { 24 | my @authors = @_; 25 | $_ eq 'bl0ckeduser ' and $_ = 'Gabriel Cormier-Affleck ' for @authors; 26 | $_ eq 'hekel ' and $_ = 'Adam Erdman ' for @authors; 27 | $_ eq 'infirit ' and $_ = 'Sander Sweers ' for @authors; 28 | $_ eq 'leigh123linux ' and $_ = 'Leigh Scott ' for @authors; 29 | $_ eq 'lyokha ' and $_ = 'Alexey Radkov ' for @authors; 30 | $_ eq 'Martin Wimpress ' and $_ = 'Martin Wimpress ' for @authors; 31 | $_ eq 'monsta ' and $_ = 'Vlad Orlov ' for @authors; 32 | $_ eq 'Monsta ' and $_ = 'Vlad Orlov ' for @authors; 33 | $_ eq 'raveit65 ' and $_ = 'Wolfgang Ulbrich ' for @authors; 34 | $_ eq 'raveit65 ' and $_ = 'Wolfgang Ulbrich ' for @authors; 35 | $_ eq 'rbuj ' and $_ = 'Robert Buj ' for @authors; 36 | $_ eq 'Scott Balneaves ' and $_ = 'Scott Balneaves ' for @authors; 37 | $_ eq 'Wolfgang Ulbrich ' and $_ = 'Wolfgang Ulbrich ' for @authors; 38 | return @authors; 39 | } 40 | 41 | sub GetCurrentAuthors { 42 | my @authors; 43 | open(FILE,"data/eom.about") or die "Can't open data/eom.about"; 44 | while () { 45 | if (/^Authors=*(.+)$/) { 46 | @authors=split(";",$1); 47 | } 48 | } 49 | close FILE; 50 | return ReplaceAuthors(@authors); 51 | } 52 | 53 | sub GetNewAuthors { 54 | my @authors = `git log --pretty="%an <%ae>" --since "2012-01-01" -- . "_.h" "_.c" | sort | uniq | sed 's/@/%/g' | sed '/^mate-i18n.*/d'`; 55 | chomp @authors; 56 | return ReplaceAuthors(@authors); 57 | } 58 | 59 | my @A = GetCurrentAuthors; 60 | my @B = GetNewAuthors; 61 | for (@B) { 62 | s/<\d+\+(.+?)%users\.noreply\.github\.com>/<$1%users\.noreply\.github\.com>/; 63 | s/<(.+?)%users\.noreply\.github\.com>/https:\/\/github.com\/$1/; 64 | } 65 | my @merged = sort { $a cmp $b } keys %{{map {($_ => 1)} (@A, @B)}}; 66 | print join(';',@merged) . ';'; 67 | -------------------------------------------------------------------------------- /update-changelog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | if [ -d "${MESON_SOURCE_ROOT}/.git" ]; then 4 | GIT_DIR="${MESON_SOURCE_ROOT}/.git" git log --stat > $MESON_DIST_ROOT/ChangeLog 5 | fi 6 | --------------------------------------------------------------------------------