[Goodies-commits] r3246 - in ristretto/trunk: . icons/16x16 po src
Stephan Arts
stephan at xfce.org
Tue Sep 25 06:00:53 CEST 2007
Author: stephan
Date: 2007-09-25 04:00:53 +0000 (Tue, 25 Sep 2007)
New Revision: 3246
Added:
ristretto/trunk/src/main_window.c
ristretto/trunk/src/main_window.h
Modified:
ristretto/trunk/configure.in.in
ristretto/trunk/icons/16x16/ristretto.png
ristretto/trunk/po/POTFILES.in
ristretto/trunk/po/de.po
ristretto/trunk/po/fi.po
ristretto/trunk/po/fr.po
ristretto/trunk/po/nb_NO.po
ristretto/trunk/po/nl.po
ristretto/trunk/po/ristretto.pot
ristretto/trunk/src/Makefile.am
ristretto/trunk/src/main.c
ristretto/trunk/src/picture_viewer.c
ristretto/trunk/src/thumbnail_viewer.c
Log:
Cleanup the main_window code
Modified: ristretto/trunk/configure.in.in
===================================================================
--- ristretto/trunk/configure.in.in 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/configure.in.in 2007-09-25 04:00:53 UTC (rev 3246)
@@ -107,6 +107,7 @@
XDT_I18N([@LINGUAS@])
+XDT_CHECK_PACKAGE([LIBEXIF], [libexif], [0.6.0])
XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.10.0])
XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.12.0])
XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [2.12.0])
Modified: ristretto/trunk/icons/16x16/ristretto.png
===================================================================
(Binary files differ)
Modified: ristretto/trunk/po/POTFILES.in
===================================================================
--- ristretto/trunk/po/POTFILES.in 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/POTFILES.in 2007-09-25 04:00:53 UTC (rev 3246)
@@ -1,4 +1,5 @@
src/main.c
+src/main_window.c
src/navigator.c
src/picture_viewer.c
src/thumbnail_viewer.c
Modified: ristretto/trunk/po/de.po
===================================================================
--- ristretto/trunk/po/de.po 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/de.po 2007-09-25 04:00:53 UTC (rev 3246)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ristretto\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-12 19:18+0200\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: 2007-07-03 00:59:21+0200\n"
"Last-Translator: stephan arts <stephan at xfce.org>\n"
"Language-Team: German\n"
@@ -15,89 +15,72 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/main.c:180
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr "_Datei"
-#: ../src/main.c:182
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr "_Ordner öffnen"
-#: ../src/main.c:183
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr "_Zuletzt geöffnet"
-#: ../src/main.c:209
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr "_Bearbeiten"
-#: ../src/main.c:210
-msgid "Rotate _Left"
-msgstr "_Links drehen"
-
-#: ../src/main.c:211
-msgid "Rotate _Right"
-msgstr "_Rechts drehen"
-
-#: ../src/main.c:212
-msgid "Flip _Vertically"
-msgstr "_Vertikal spiegeln"
-
-#: ../src/main.c:213
-msgid "Flip _Horizontally"
-msgstr "_Horizontal spiegeln"
-
-#: ../src/main.c:214
-msgid "_Open with..."
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr "Ö_fnen mit..."
-#: ../src/main.c:222 ../src/main.c:571
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr "Keine Programme verfügbar"
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:232
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr "_Ansicht"
-#: ../src/main.c:233
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr "_Werkzeugleiste anzeigen"
-#: ../src/main.c:234
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr "Vor_schaubilder"
-#: ../src/main.c:248
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr "_Horizontal anzeigen"
-#: ../src/main.c:249
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr "_Vertikal anzeigen"
-#: ../src/main.c:250
+#: ../src/main_window.c:307
msgid "Hide"
msgstr "Ver_bergen"
-#: ../src/main.c:256
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr "_Gehe zu"
-#: ../src/main.c:284
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr "_Hilfe"
-#: ../src/main.c:491
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr "Entwickler:"
-#: ../src/main.c:501
+#: ../src/main_window.c:683
msgid ""
"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
"environment."
@@ -105,27 +88,22 @@
"Ristretto ist ein schneller und leichter Bildbetrachter für die "
"Arbeitsumgebung Xfce."
-#: ../src/main.c:509
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr "Christian Dywan <christian at twotoasts.de>"
-#: ../src/main.c:812
+#: ../src/main_window.c:711
msgid "Open image"
msgstr "Bild öffnen"
-#: ../src/main.c:848
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr "Datei konnte nicht geöffnet werden"
-#: ../src/main.c:860
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr "_Ordner öffnen"
-#: ../src/main.c:1036
-msgid ""
-"Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr "Sind Sie sicher, dass Sie ristrettos Liste der zuletzt geöffneten Dokumente leeren wollen?"
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr "Bildbetrachter"
@@ -138,5 +116,24 @@
msgid "Xfce Image viewer"
msgstr "Xfce Bildbetrachter"
+#~ msgid "Rotate _Left"
+#~ msgstr "_Links drehen"
+
+#~ msgid "Rotate _Right"
+#~ msgstr "_Rechts drehen"
+
+#~ msgid "Flip _Vertically"
+#~ msgstr "_Vertikal spiegeln"
+
+#~ msgid "Flip _Horizontally"
+#~ msgstr "_Horizontal spiegeln"
+
+#~ msgid ""
+#~ "Are you sure you want to clear ristretto's list of recently opened "
+#~ "documents?"
+#~ msgstr ""
+#~ "Sind Sie sicher, dass Sie ristrettos Liste der zuletzt geöffneten "
+#~ "Dokumente leeren wollen?"
+
#~ msgid "_Clear"
#~ msgstr "_Leeren"
Modified: ristretto/trunk/po/fi.po
===================================================================
--- ristretto/trunk/po/fi.po 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/fi.po 2007-09-25 04:00:53 UTC (rev 3246)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ristretto 0.0.5\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-14 11:03+0300\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: 2007-09-14 11:19+0300\n"
"Last-Translator: Jari Rahkonen <jari.rahkonen at pp1.inet.fi>\n"
"Language-Team: Finnish <xfce-i18n at xfce.org>\n"
@@ -15,117 +15,93 @@
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/main.c:187
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr "_Tiedosto"
-#: ../src/main.c:189
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr "Avaa _hakemisto"
-#: ../src/main.c:190
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr "_Viimeaikaiset"
-#: ../src/main.c:217
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr "_Muokkaa"
-#: ../src/main.c:218
-msgid "Rotate _Left"
-msgstr "Käännä _vasempaan"
-
-#: ../src/main.c:219
-msgid "Rotate _Right"
-msgstr "Käännä _oikeaan"
-
-#: ../src/main.c:220
-msgid "Flip _Vertically"
-msgstr "Peilaa _pystysuunnassa"
-
-#: ../src/main.c:221
-msgid "Flip _Horizontally"
-msgstr "Peilaa v_aakasuunnassa"
-
-#: ../src/main.c:222
-msgid "_Open with..."
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr "_Avaa sovelluksessa..."
-#: ../src/main.c:230 ../src/main.c:617 ../src/main.c:636
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr "Sovelluksia ei saatavilla"
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:240
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr "_Näytä"
-#: ../src/main.c:241
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr "Näytä työkalupalkki"
-#: ../src/main.c:242
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr "Pienoiskuvat"
-#: ../src/main.c:256
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr "Näytä vaakasuunnassa"
-#: ../src/main.c:257
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr "Näytä pystysuunnassa"
-#: ../src/main.c:258
+#: ../src/main_window.c:307
msgid "Hide"
msgstr "Piilota"
-#: ../src/main.c:264
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr "_Siirry"
-#: ../src/main.c:296
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr "_Ohje"
-#: ../src/main.c:505
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr "Kehittäjä:"
-#: ../src/main.c:515
+#: ../src/main_window.c:683
msgid ""
"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
"environment."
-msgstr ""
-"Ristretto on nopea ja kevyt kuvankatseluohjelma Xfce-työpöydälle."
+msgstr "Ristretto on nopea ja kevyt kuvankatseluohjelma Xfce-työpöydälle."
-#: ../src/main.c:523
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr "Jari Rahkonen <jari.rahkonen at pp1.inet.fi>"
-#: ../src/main.c:866
+#: ../src/main_window.c:711
msgid "Open image"
msgstr "Avaa kuva"
-#: ../src/main.c:901
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr "Tiedoston avaus ei onnistunut"
-#: ../src/main.c:913
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr "Avaa hakemisto"
-#: ../src/main.c:1089
-msgid ""
-"Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr ""
-"Haluatko varmasti tyhjentää ristretton viimeaikaisten tiedostojen listan?"
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr "Kuvankatseluohjelma"
@@ -137,3 +113,21 @@
#: ../ristretto.desktop.in.h:3
msgid "Xfce Image viewer"
msgstr "Xfce:n kuvankatseluohjelma"
+
+#~ msgid "Rotate _Left"
+#~ msgstr "Käännä _vasempaan"
+
+#~ msgid "Rotate _Right"
+#~ msgstr "Käännä _oikeaan"
+
+#~ msgid "Flip _Vertically"
+#~ msgstr "Peilaa _pystysuunnassa"
+
+#~ msgid "Flip _Horizontally"
+#~ msgstr "Peilaa v_aakasuunnassa"
+
+#~ msgid ""
+#~ "Are you sure you want to clear ristretto's list of recently opened "
+#~ "documents?"
+#~ msgstr ""
+#~ "Haluatko varmasti tyhjentää ristretton viimeaikaisten tiedostojen listan?"
Modified: ristretto/trunk/po/fr.po
===================================================================
--- ristretto/trunk/po/fr.po 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/fr.po 2007-09-25 04:00:53 UTC (rev 3246)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ristretto\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-12 19:18+0200\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: 2007-09-12 22:11+0100\n"
"Last-Translator: Mike Massonnet <mmassonnet at gmail.com>\n"
"Language-Team: French\n"
@@ -15,113 +15,95 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/main.c:180
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr "_Fichier"
-#: ../src/main.c:182
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr "O_uvrir un répertoire"
-#: ../src/main.c:183
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr "_Récemment ouvert"
-#: ../src/main.c:209
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr "_Editer"
-#: ../src/main.c:210
-msgid "Rotate _Left"
-msgstr "Tourner vers la _gauche"
-
-#: ../src/main.c:211
-msgid "Rotate _Right"
-msgstr "Tourner vers la _droite"
-
-#: ../src/main.c:212
-msgid "Flip _Vertically"
-msgstr "Retourner _verticalement"
-
-#: ../src/main.c:213
-msgid "Flip _Horizontally"
-msgstr "Retourner _horizontalement"
-
-#: ../src/main.c:214
-msgid "_Open with..."
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr "_Ouvrir avec..."
-#: ../src/main.c:222
-#: ../src/main.c:571
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr "Aucune application disponible"
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:232
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr "_Afficher"
-#: ../src/main.c:233
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr "Barre d'outils"
-#: ../src/main.c:234
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr "Vue des miniatures"
-#: ../src/main.c:248
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr "Afficher horizontalement"
-#: ../src/main.c:249
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr "Afficher verticalement"
-#: ../src/main.c:250
+#: ../src/main_window.c:307
msgid "Hide"
msgstr "Cacher"
-#: ../src/main.c:256
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr "A_ller"
-#: ../src/main.c:284
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr "A_ide"
-#: ../src/main.c:491
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr "Développeur :"
-#: ../src/main.c:501
-msgid "Ristretto is a fast and lightweight picture-viewer for the Xfce desktop environment."
-msgstr "Ristretto est un visualiseur d'images léger et rapide pour l'environnement de bureau Xfce."
+#: ../src/main_window.c:683
+msgid ""
+"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
+"environment."
+msgstr ""
+"Ristretto est un visualiseur d'images léger et rapide pour l'environnement "
+"de bureau Xfce."
-#: ../src/main.c:509
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr "Mike Massonnet <mmassonnet at xfce.org>"
-#: ../src/main.c:812
+#: ../src/main_window.c:711
msgid "Open image"
msgstr "Ouvrir une image"
-#: ../src/main.c:848
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr "Impossible d'ouvrir le fichier"
-#: ../src/main.c:860
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr "Ouvrir un répertoire"
-#: ../src/main.c:1036
-msgid "Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr "Êtes-vous certain de vouloir supprimer la liste des documents récemment ouverts de Ristretto ?"
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr "Visualiseur d'Images"
@@ -134,3 +116,21 @@
msgid "Xfce Image viewer"
msgstr "Visualiseur d'Images pour Xfce"
+#~ msgid "Rotate _Left"
+#~ msgstr "Tourner vers la _gauche"
+
+#~ msgid "Rotate _Right"
+#~ msgstr "Tourner vers la _droite"
+
+#~ msgid "Flip _Vertically"
+#~ msgstr "Retourner _verticalement"
+
+#~ msgid "Flip _Horizontally"
+#~ msgstr "Retourner _horizontalement"
+
+#~ msgid ""
+#~ "Are you sure you want to clear ristretto's list of recently opened "
+#~ "documents?"
+#~ msgstr ""
+#~ "Êtes-vous certain de vouloir supprimer la liste des documents récemment "
+#~ "ouverts de Ristretto ?"
Modified: ristretto/trunk/po/nb_NO.po
===================================================================
--- ristretto/trunk/po/nb_NO.po 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/nb_NO.po 2007-09-25 04:00:53 UTC (rev 3246)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ristretto\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-12 19:18+0200\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: 2007-08-29 21:12+0200\n"
"Last-Translator: Terje Uriansrud <ter at operamail.com>\n"
"Language-Team: Norwegian Bokmal\n"
@@ -16,115 +16,93 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/main.c:180
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr "_Fil"
-#: ../src/main.c:182
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr "Åp_ne mappe"
-#: ../src/main.c:183
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr "Nylig _brukt"
-#: ../src/main.c:209
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr "_Rediger"
-#: ../src/main.c:210
-msgid "Rotate _Left"
-msgstr "Roter _venstre"
-
-#: ../src/main.c:211
-msgid "Rotate _Right"
-msgstr "Roter _høyre"
-
-#: ../src/main.c:212
-msgid "Flip _Vertically"
-msgstr "Vend _loddrett"
-
-#: ../src/main.c:213
-msgid "Flip _Horizontally"
-msgstr "Vend v_annrett"
-
-#: ../src/main.c:214
-msgid "_Open with..."
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr ""
-#: ../src/main.c:222 ../src/main.c:571
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr ""
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:232
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr "_Vis"
-#: ../src/main.c:233
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr ""
-#: ../src/main.c:234
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr "Miniatyrvisning"
-#: ../src/main.c:248
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr "Vis vannrett"
-#: ../src/main.c:249
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr "Vis loddrett"
-#: ../src/main.c:250
+#: ../src/main_window.c:307
msgid "Hide"
msgstr "Skjul"
-#: ../src/main.c:256
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr "_Gå"
-#: ../src/main.c:284
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr "_Hjelp"
-#: ../src/main.c:491
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr "Utvikler:"
-#: ../src/main.c:501
+#: ../src/main_window.c:683
msgid ""
"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
"environment."
msgstr "Ristretto er en rask og lettvekts bildefremviser for Xfce skrivebordet"
-#: ../src/main.c:509
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr "Oversettelser"
-#: ../src/main.c:812
+#: ../src/main_window.c:711
msgid "Open image"
msgstr "Åpne bilde"
-#: ../src/main.c:848
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr ""
-#: ../src/main.c:860
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr "Åpne mappe"
-#: ../src/main.c:1036
-msgid ""
-"Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr ""
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr "Bildefremviser"
@@ -136,3 +114,15 @@
#: ../ristretto.desktop.in.h:3
msgid "Xfce Image viewer"
msgstr "Xfce Bildefremviser"
+
+#~ msgid "Rotate _Left"
+#~ msgstr "Roter _venstre"
+
+#~ msgid "Rotate _Right"
+#~ msgstr "Roter _høyre"
+
+#~ msgid "Flip _Vertically"
+#~ msgstr "Vend _loddrett"
+
+#~ msgid "Flip _Horizontally"
+#~ msgstr "Vend v_annrett"
Modified: ristretto/trunk/po/nl.po
===================================================================
--- ristretto/trunk/po/nl.po 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/nl.po 2007-09-25 04:00:53 UTC (rev 3246)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: ristretto 0.0.1-svn-r02537\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-12 19:18+0200\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: 2007-07-13 00:48+0200\n"
"Last-Translator: Stephan Arts <stephan at xfce.org>\n"
"Language-Team: Dutch\n"
@@ -16,89 +16,72 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/main.c:180
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr "_Bestand"
-#: ../src/main.c:182
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr "Map o_penen"
-#: ../src/main.c:183
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr "_Recent geopend"
-#: ../src/main.c:209
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr "B_ewerken"
-#: ../src/main.c:210
-msgid "Rotate _Left"
-msgstr "_Linksom draaien"
-
-#: ../src/main.c:211
-msgid "Rotate _Right"
-msgstr "_Rechtsom draaien"
-
-#: ../src/main.c:212
-msgid "Flip _Vertically"
-msgstr "_Verticaal spiegelen"
-
-#: ../src/main.c:213
-msgid "Flip _Horizontally"
-msgstr "_Horizontaal spiegelen"
-
-#: ../src/main.c:214
-msgid "_Open with..."
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr "_Openen met..."
-#: ../src/main.c:222 ../src/main.c:571
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr "Geen programma's beschikbaar"
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:232
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr "Beel_d"
-#: ../src/main.c:233
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr "Toon Werkbalk"
-#: ../src/main.c:234
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr "Miniatuur Weergave"
-#: ../src/main.c:248
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr "Horizontaal tonen"
-#: ../src/main.c:249
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr "Verticaal tonen"
-#: ../src/main.c:250
+#: ../src/main_window.c:307
msgid "Hide"
msgstr "Verbergen"
-#: ../src/main.c:256
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr "_Ga"
-#: ../src/main.c:284
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr "_Help"
-#: ../src/main.c:491
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr "Ontwikkelaar:"
-#: ../src/main.c:501
+#: ../src/main_window.c:683
msgid ""
"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
"environment."
@@ -106,29 +89,22 @@
"Ristretto is een snel en lichtgewicht afbeeldingsweergave-programma voor de "
"Xfce-desktop omgeving"
-#: ../src/main.c:509
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr "Stephan Arts <stephan at xfce.org>"
-#: ../src/main.c:812
+#: ../src/main_window.c:711
msgid "Open image"
msgstr "Afbeelding openen"
-#: ../src/main.c:848
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr "Kan bestand niet openen"
-#: ../src/main.c:860
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr "Map openen"
-#: ../src/main.c:1036
-msgid ""
-"Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr ""
-"Weet U zeker dat u de lijst met recent door ristretto geopende bestanden "
-"wilt wissen?"
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr "Afbeeldingsweergave"
@@ -141,6 +117,25 @@
msgid "Xfce Image viewer"
msgstr "Xfce Afbeeldings weergave"
+#~ msgid "Rotate _Left"
+#~ msgstr "_Linksom draaien"
+
+#~ msgid "Rotate _Right"
+#~ msgstr "_Rechtsom draaien"
+
+#~ msgid "Flip _Vertically"
+#~ msgstr "_Verticaal spiegelen"
+
+#~ msgid "Flip _Horizontally"
+#~ msgstr "_Horizontaal spiegelen"
+
+#~ msgid ""
+#~ "Are you sure you want to clear ristretto's list of recently opened "
+#~ "documents?"
+#~ msgstr ""
+#~ "Weet U zeker dat u de lijst met recent door ristretto geopende bestanden "
+#~ "wilt wissen?"
+
#~ msgid "_Clear"
#~ msgstr "_Opruimen"
Modified: ristretto/trunk/po/ristretto.pot
===================================================================
--- ristretto/trunk/po/ristretto.pot 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/po/ristretto.pot 2007-09-25 04:00:53 UTC (rev 3246)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: stephan at xfce.org\n"
-"POT-Creation-Date: 2007-09-12 19:18+0200\n"
+"POT-Creation-Date: 2007-09-25 06:00+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,115 +16,93 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/main.c:180
+#. Create 'File' menu
+#: ../src/main_window.c:219
msgid "_File"
msgstr ""
-#: ../src/main.c:182
+#: ../src/main_window.c:226
msgid "O_pen Folder"
msgstr ""
-#: ../src/main.c:183
+#: ../src/main_window.c:227
msgid "_Recently used"
msgstr ""
-#: ../src/main.c:209
+#. Create 'Edit' menu
+#: ../src/main_window.c:254
msgid "_Edit"
msgstr ""
-#: ../src/main.c:210
-msgid "Rotate _Left"
+#: ../src/main_window.c:259
+msgid "Open with..."
msgstr ""
-#: ../src/main.c:211
-msgid "Rotate _Right"
-msgstr ""
-
-#: ../src/main.c:212
-msgid "Flip _Vertically"
-msgstr ""
-
-#: ../src/main.c:213
-msgid "Flip _Horizontally"
-msgstr ""
-
-#: ../src/main.c:214
-msgid "_Open with..."
-msgstr ""
-
-#: ../src/main.c:222 ../src/main.c:571
+#: ../src/main_window.c:265
msgid "No applications available"
msgstr ""
-#.
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
-#. gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
-#.
-#: ../src/main.c:232
+#. Create 'View' menu
+#: ../src/main_window.c:273
msgid "_View"
msgstr ""
-#: ../src/main.c:233
+#: ../src/main_window.c:280
msgid "Show Toolbar"
msgstr ""
-#: ../src/main.c:234
+#: ../src/main_window.c:281
msgid "Thumbnail Viewer"
msgstr ""
-#: ../src/main.c:248
+#: ../src/main_window.c:299
msgid "Show Horizontally"
msgstr ""
-#: ../src/main.c:249
+#: ../src/main_window.c:303
msgid "Show Vertically"
msgstr ""
-#: ../src/main.c:250
+#: ../src/main_window.c:307
msgid "Hide"
msgstr ""
-#: ../src/main.c:256
+#. Create 'Go' menu
+#: ../src/main_window.c:317
msgid "_Go"
msgstr ""
-#: ../src/main.c:284
+#. Create 'Help' menu
+#: ../src/main_window.c:346
msgid "_Help"
msgstr ""
-#: ../src/main.c:491
+#: ../src/main_window.c:673
msgid "Developer:"
msgstr ""
-#: ../src/main.c:501
+#: ../src/main_window.c:683
msgid ""
"Ristretto is a fast and lightweight picture-viewer for the Xfce desktop "
"environment."
msgstr ""
-#: ../src/main.c:509
+#: ../src/main_window.c:691
msgid "translator-credits"
msgstr ""
-#: ../src/main.c:812
+#: ../src/main_window.c:711
msgid "Open image"
msgstr ""
-#: ../src/main.c:848
+#: ../src/main_window.c:746
msgid "Could not open file"
msgstr ""
-#: ../src/main.c:860
+#: ../src/main_window.c:756
msgid "Open folder"
msgstr ""
-#: ../src/main.c:1036
-msgid ""
-"Are you sure you want to clear ristretto's list of recently opened documents?"
-msgstr ""
-
#: ../ristretto.desktop.in.h:1
msgid "Image Viewer"
msgstr ""
Modified: ristretto/trunk/src/Makefile.am
===================================================================
--- ristretto/trunk/src/Makefile.am 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/src/Makefile.am 2007-09-25 04:00:53 UTC (rev 3246)
@@ -2,6 +2,7 @@
ristretto_SOURCES = \
main.c \
+ main_window.c main_window.h \
picture_viewer.c picture_viewer.h \
thumbnail_viewer.c thumbnail_viewer.h \
navigator.c navigator.h
@@ -9,6 +10,7 @@
ristretto_CFLAGS = \
$(GTK_CFLAGS) \
$(GLIB_CFLAGS) \
+ $(LIBEXIF_CFLAGS) \
$(LIBXFCE4UTIL_CFLAGS) \
$(THUNAR_VFS_CFLAGS) \
-DDATADIR=\"$(datadir)\" \
@@ -18,6 +20,7 @@
ristretto_LDADD = \
$(GTK_LIBS) \
$(GLIB_LIBS) \
+ $(LIBEXIF_LIBS) \
$(LIBXFCE4UTIL_LIBS) \
$(THUNAR_VFS_LIBS)
Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/src/main.c 2007-09-25 04:00:53 UTC (rev 3246)
@@ -24,113 +24,16 @@
#include "navigator.h"
#include "picture_viewer.h"
#include "thumbnail_viewer.h"
+#include "main_window.h"
static ThunarVfsMimeDatabase *mime_dbase = NULL;
static GtkIconTheme *icon_theme = NULL;
-static void
-cb_rstto_zoom_fit(GtkToolItem *item, RsttoPictureViewer *viewer);
-static void
-cb_rstto_zoom_100(GtkToolItem *item, RsttoPictureViewer *viewer);
-static void
-cb_rstto_zoom_in(GtkToolItem *item, RsttoPictureViewer *viewer);
-static void
-cb_rstto_zoom_out(GtkToolItem *item, RsttoPictureViewer *viewer);
-
-static void
-cb_rstto_fullscreen(GtkWidget *, GdkEventWindowState *event, RsttoPictureViewer *viewer);
-static gboolean
-cb_rstto_main_window_configure_event (GtkWidget *widget, GdkEventConfigure *event);
-static void
-cb_rstto_toggle_play(GtkImageMenuItem *item, RsttoNavigator *navigator);
-
-static void
-cb_rstto_previous(GtkToolItem *item, RsttoNavigator *);
-static void
-cb_rstto_forward(GtkToolItem *item, RsttoNavigator *);
-static void
-cb_rstto_first(GtkToolItem *item, RsttoNavigator *);
-static void
-cb_rstto_last(GtkToolItem *item, RsttoNavigator *);
-
-static void
-cb_rstto_open(GtkToolItem *item, RsttoNavigator *);
-static void
-cb_rstto_open_dir(GtkToolItem *item, RsttoNavigator *);
-static void
-cb_rstto_open_recent(GtkRecentChooser *chooser, RsttoNavigator *);
-static void
-cb_rstto_clear_recent(GtkWidget *widget, GtkRecentManager *manager);
-static gboolean
-rstto_clear_recent(GtkRecentManager *manager);
-static void
-cb_rstto_close_current(GtkWidget *item, RsttoNavigator *navigator);
-
-static void
-cb_rstto_help_about(GtkToolItem *item, GtkWindow *);
-static void
-cb_rstto_toggle_fullscreen(GtkToolItem *item, GtkWindow *window);
-
-static void
-cb_rstto_show_tv_v(GtkWidget *widget, RsttoThumbnailViewer *viewer);
-static void
-cb_rstto_show_tv_h(GtkWidget *widget, RsttoThumbnailViewer *viewer);
-static void
-cb_rstto_hide_tv(GtkWidget *widget, RsttoThumbnailViewer *viewer);
-
-static void
-cb_rstto_toggle_toolbar(GtkWidget *widget, RsttoThumbnailViewer *viewer);
-
-static void
-cb_rstto_rotate_cw(GtkWidget *widget, RsttoNavigator *navigator);
-static void
-cb_rstto_rotate_ccw(GtkWidget *widget, RsttoNavigator *navigator);
-static void
-cb_rstto_flip_h(GtkWidget *widget, RsttoNavigator *navigator);
-static void
-cb_rstto_flip_v(GtkWidget *widget, RsttoNavigator *navigator);
-
-static gboolean
-cb_rstto_key_press_event(GtkWidget *widget, GdkEventKey *event, RsttoNavigator *navigator);
-static void
-cb_rstto_nav_file_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, GtkWindow *window);
-static void
-cb_rstto_spawn_app(GtkWidget *widget, ThunarVfsMimeApplication *app);
-
-static gboolean window_fullscreen = FALSE;
-static GtkWidget *menu_bar;
-static GtkWidget *app_tool_bar;
-static GtkWidget *status_bar;
-static gboolean playing = FALSE;
-static GtkWidget *menu_item_play;
-static GtkWidget *menu_item_pause;
-static GtkWidget *menu_item_htv;
-static GtkWidget *menu_item_vtv;
-static GtkWidget *menu_item_ntv;
-static GtkWidget *menu_edit;
-static GtkWidget *menu_apps;
-static GList *menu_apps_list;
-
-static GtkWidget *main_hbox;
-static GtkWidget *main_vbox1;
-static GtkWidget *thumbnail_viewer;
static GtkRecentManager *recent_manager;
static XfceRc *xfce_rc;
-static const gchar *thumbnail_viewer_orientation;
-static gint window_save_geometry_timer_id = 0;
-static GtkWidget *menu_item_close;
-static GtkWidget *menu_item_first;
-static GtkWidget *menu_item_last;
-static GtkWidget *menu_item_forward;
-static GtkWidget *menu_item_back;
-static GtkToolItem *tool_item_forward;
-static GtkToolItem *tool_item_previous;
int main(int argc, char **argv)
{
- ThunarVfsPath *path = NULL;
- GtkWidget *viewer = NULL;
- gint n = 1;
#ifdef ENABLE_NLS
@@ -150,990 +53,17 @@
recent_manager = gtk_recent_manager_get_default();
xfce_rc = xfce_rc_config_open(XFCE_RESOURCE_CONFIG, "ristretto/ristrettorc", FALSE);
- thumbnail_viewer_orientation = xfce_rc_read_entry(xfce_rc, "ThumbnailViewerOrientation", "horizontal");
- gboolean toolbar_open_dir = xfce_rc_read_bool_entry(xfce_rc, "ToolbarOpenDir", FALSE);
- gboolean show_toolbar = xfce_rc_read_bool_entry(xfce_rc, "ShowToolBar", TRUE);
- gint window_width = xfce_rc_read_int_entry(xfce_rc, "LastWindowWidth", 400);
- gint window_height = xfce_rc_read_int_entry(xfce_rc, "LastWindowHeight", 300);
- gint slideshow_timeout = xfce_rc_read_int_entry(xfce_rc, "SlideShowTimeout", 5000);
+ GtkWidget *window = rstto_main_window_new();
- GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- GtkAccelGroup *accel_group = gtk_accel_group_new();
- gtk_window_set_title(GTK_WINDOW(window), PACKAGE_STRING);
- gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
-
-
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
- RsttoNavigator *navigator = rstto_navigator_new();
- rstto_navigator_set_timeout(navigator, slideshow_timeout);
- thumbnail_viewer = rstto_thumbnail_viewer_new(navigator);
- viewer = rstto_picture_viewer_new(navigator);
- g_signal_connect(window , "key-press-event", G_CALLBACK(cb_rstto_key_press_event) , navigator);
- g_signal_connect(G_OBJECT(navigator), "iter-changed", G_CALLBACK(cb_rstto_nav_file_changed), window);
-
-
- GtkWidget *s_window = gtk_scrolled_window_new(NULL,NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- GtkWidget *main_vbox = gtk_vbox_new(0, FALSE);
- main_hbox = gtk_hbox_new(0, FALSE);
- main_vbox1 = gtk_vbox_new(0, FALSE);
- menu_bar = gtk_menu_bar_new();
- app_tool_bar = gtk_toolbar_new();
- status_bar = gtk_statusbar_new();
-
- GtkWidget *menu_item_file = gtk_menu_item_new_with_mnemonic(_("_File"));
- GtkWidget *menu_item_open = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, accel_group);
- GtkWidget *menu_item_open_dir = gtk_menu_item_new_with_mnemonic(_("O_pen Folder"));
- GtkWidget *menu_item_recently = gtk_menu_item_new_with_mnemonic(_("_Recently used"));
- GtkWidget *menu_item_separator = gtk_separator_menu_item_new();
- menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_group);
- GtkWidget *menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
-
- GtkWidget *menu_file = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_file), menu_file);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_open);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_open_dir);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_recently);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_separator);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_close);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_file), menu_item_quit);
- gtk_widget_set_sensitive(menu_item_close, FALSE);
-
- GtkWidget *recent_chooser_menu = gtk_recent_chooser_menu_new_for_manager(GTK_RECENT_MANAGER(recent_manager));
- GtkRecentFilter *filter = gtk_recent_filter_new();
- gtk_recent_filter_add_application(filter, "ristretto");
- gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(recent_chooser_menu), filter);
-
- GtkWidget *menu_item_clear_recent = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, accel_group);
- menu_item_separator = gtk_separator_menu_item_new();
- gtk_menu_shell_append(GTK_MENU_SHELL(recent_chooser_menu), menu_item_separator);
- gtk_menu_shell_append(GTK_MENU_SHELL(recent_chooser_menu), menu_item_clear_recent);
-
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_recently), recent_chooser_menu);
-
- GtkWidget *menu_item_edit = gtk_menu_item_new_with_mnemonic(_("_Edit"));
- GtkWidget *menu_item_rotate_left = gtk_menu_item_new_with_mnemonic(_("Rotate _Left"));
- GtkWidget *menu_item_rotate_right = gtk_menu_item_new_with_mnemonic(_("Rotate _Right"));
- GtkWidget *menu_item_flip_v = gtk_menu_item_new_with_mnemonic(_("Flip _Vertically"));
- GtkWidget *menu_item_flip_h = gtk_menu_item_new_with_mnemonic(_("Flip _Horizontally"));
- GtkWidget *menu_item_apps = gtk_menu_item_new_with_mnemonic(_("_Open with..."));
-
- menu_edit = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_edit), menu_edit);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_apps);
-
- menu_apps = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_apps), menu_apps);
- GtkWidget *bottom_menu_item = gtk_menu_item_new_with_mnemonic(_("No applications available"));
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_apps), bottom_menu_item);
- gtk_widget_set_sensitive(bottom_menu_item, FALSE);
- /*
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_left);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_rotate_right);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_v);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_edit), menu_item_flip_h);
- */
-
- GtkWidget *menu_item_view = gtk_menu_item_new_with_mnemonic(_("_View"));
- GtkWidget *menu_item_toggle_toolbar = gtk_check_menu_item_new_with_mnemonic(_("Show Toolbar"));
- GtkWidget *menu_item_tv = gtk_menu_item_new_with_mnemonic(_("Thumbnail Viewer"));
- GtkWidget *menu_item_view_fs = gtk_image_menu_item_new_from_stock(GTK_STOCK_FULLSCREEN, NULL);
- gtk_widget_add_accelerator(menu_item_view_fs, "activate", accel_group, GDK_F11, 0,GTK_ACCEL_VISIBLE);
-
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item_toggle_toolbar), show_toolbar);
-
- GtkWidget *menu_view = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_view), menu_view);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_view), menu_item_toggle_toolbar);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_view), menu_item_tv);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_view), menu_item_view_fs);
-
- GtkWidget *menu_tv = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_tv), menu_tv);
- menu_item_htv = gtk_radio_menu_item_new_with_mnemonic(NULL, _("Show Horizontally"));
- menu_item_vtv = gtk_radio_menu_item_new_with_mnemonic_from_widget(GTK_RADIO_MENU_ITEM(menu_item_htv), _("Show Vertically"));
- menu_item_ntv = gtk_radio_menu_item_new_with_mnemonic_from_widget(GTK_RADIO_MENU_ITEM(menu_item_htv), _("Hide"));
-
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_tv), menu_item_htv);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_tv), menu_item_vtv);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_tv), menu_item_ntv);
-
- GtkWidget *menu_item_go = gtk_menu_item_new_with_mnemonic(_("_Go"));
-
- menu_item_first = gtk_image_menu_item_new_from_stock(GTK_STOCK_GOTO_FIRST, NULL);
- menu_item_last = gtk_image_menu_item_new_from_stock(GTK_STOCK_GOTO_LAST, NULL);
- menu_item_forward = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD, NULL);
- menu_item_back = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK, NULL);
- gtk_widget_add_accelerator(menu_item_first, "activate", accel_group, GDK_Home, 0,GTK_ACCEL_VISIBLE);
- gtk_widget_add_accelerator(menu_item_last, "activate", accel_group, GDK_End, 0,GTK_ACCEL_VISIBLE);
- gtk_widget_add_accelerator(menu_item_forward, "activate", accel_group, GDK_Page_Down, 0,GTK_ACCEL_VISIBLE);
- gtk_widget_add_accelerator(menu_item_back, "activate", accel_group, GDK_Page_Up, 0,GTK_ACCEL_VISIBLE);
- gtk_widget_set_sensitive(menu_item_first, FALSE);
- gtk_widget_set_sensitive(menu_item_last, FALSE);
- gtk_widget_set_sensitive(menu_item_back, FALSE);
- gtk_widget_set_sensitive(menu_item_forward, FALSE);
-
- menu_item_play = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PLAY, accel_group);
- menu_item_pause = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PAUSE, accel_group);
- gtk_widget_add_accelerator(menu_item_play, "activate", accel_group, GDK_F5, 0,GTK_ACCEL_VISIBLE);
- gtk_widget_add_accelerator(menu_item_pause, "activate", accel_group, GDK_F5, 0,GTK_ACCEL_VISIBLE);
-
- menu_item_separator = gtk_separator_menu_item_new();
-
- GtkWidget *menu_go = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_go), menu_go);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_first);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_last);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_forward);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_back);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_separator);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_play);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_go), menu_item_pause);
-
- GtkWidget *menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
- GtkWidget *menu_item_help_about = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, accel_group);
-
- GtkWidget *menu_help = gtk_menu_new();
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_help), menu_help);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_help), menu_item_help_about);
-
-
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item_file);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item_edit);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item_view);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item_go);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item_help);
-
- GtkToolItem *zoom_fit= gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_FIT);
- GtkToolItem *zoom_100= gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_100);
- GtkToolItem *zoom_out= gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
- GtkToolItem *zoom_in = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
- tool_item_forward = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
- tool_item_previous = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
- GtkToolItem *open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
- GtkToolItem *spacer = gtk_tool_item_new();
- GtkToolItem *separator = gtk_separator_tool_item_new();
-
- gtk_tool_item_set_is_important(tool_item_previous, TRUE);
- gtk_tool_item_set_is_important(tool_item_forward, TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_forward), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_previous), FALSE);
-
- gtk_tool_item_set_expand(spacer, TRUE);
- gtk_tool_item_set_homogeneous(spacer, FALSE);
-
- gtk_window_set_default_size(GTK_WINDOW(window), window_width, window_height);
-
- gtk_container_add(GTK_CONTAINER(s_window), viewer);
- gtk_box_pack_start(GTK_BOX(main_hbox), main_vbox1, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(main_vbox1), s_window, TRUE, TRUE, 0);
- if(!strcmp(thumbnail_viewer_orientation, "horizontal"))
- {
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_htv), TRUE);
- gtk_box_pack_start(GTK_BOX(main_vbox1), thumbnail_viewer, FALSE, TRUE, 0);
- rstto_thumbnail_viewer_set_orientation(RSTTO_THUMBNAIL_VIEWER(thumbnail_viewer), GTK_ORIENTATION_HORIZONTAL);
- }
- else
- {
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_vtv), TRUE);
- gtk_box_pack_start(GTK_BOX(main_hbox), thumbnail_viewer, FALSE, TRUE, 0);
- rstto_thumbnail_viewer_set_orientation(RSTTO_THUMBNAIL_VIEWER(thumbnail_viewer), GTK_ORIENTATION_VERTICAL);
- }
-
-
- gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, FALSE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), app_tool_bar, FALSE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), main_hbox, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), status_bar, FALSE, TRUE, 0);
-
-
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), zoom_fit, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), zoom_100, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), zoom_out, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), zoom_in, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), spacer, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), tool_item_forward, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), tool_item_previous, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), separator, 0);
- gtk_toolbar_insert(GTK_TOOLBAR(app_tool_bar), open, 0);
-
- g_signal_connect(G_OBJECT(zoom_fit), "clicked", G_CALLBACK(cb_rstto_zoom_fit), viewer);
- g_signal_connect(G_OBJECT(zoom_100), "clicked", G_CALLBACK(cb_rstto_zoom_100), viewer);
- g_signal_connect(G_OBJECT(zoom_in), "clicked", G_CALLBACK(cb_rstto_zoom_in), viewer);
- g_signal_connect(G_OBJECT(zoom_out), "clicked", G_CALLBACK(cb_rstto_zoom_out), viewer);
- g_signal_connect(G_OBJECT(tool_item_forward), "clicked", G_CALLBACK(cb_rstto_forward), navigator);
- g_signal_connect(G_OBJECT(tool_item_previous), "clicked", G_CALLBACK(cb_rstto_previous), navigator);
- if(toolbar_open_dir == TRUE)
- g_signal_connect(G_OBJECT(open), "clicked", G_CALLBACK(cb_rstto_open_dir), navigator);
- else
- g_signal_connect(G_OBJECT(open), "clicked", G_CALLBACK(cb_rstto_open), navigator);
-
- g_signal_connect(G_OBJECT(menu_item_clear_recent), "activate", G_CALLBACK(cb_rstto_clear_recent), recent_manager);
-
- g_signal_connect(G_OBJECT(menu_item_quit), "activate", G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(G_OBJECT(menu_item_open), "activate", G_CALLBACK(cb_rstto_open), navigator);
- g_signal_connect(G_OBJECT(menu_item_open_dir), "activate", G_CALLBACK(cb_rstto_open_dir), navigator);
- g_signal_connect(G_OBJECT(menu_item_help_about), "activate", G_CALLBACK(cb_rstto_help_about), window);
- g_signal_connect(G_OBJECT(menu_item_close), "activate", G_CALLBACK(cb_rstto_close_current), navigator);
-
- g_signal_connect(G_OBJECT(recent_chooser_menu), "item-activated", G_CALLBACK(cb_rstto_open_recent), navigator);
-
- g_signal_connect(G_OBJECT(menu_item_forward), "activate", G_CALLBACK(cb_rstto_forward), navigator);
- g_signal_connect(G_OBJECT(menu_item_back), "activate", G_CALLBACK(cb_rstto_previous), navigator);
- g_signal_connect(G_OBJECT(menu_item_first), "activate", G_CALLBACK(cb_rstto_first), navigator);
- g_signal_connect(G_OBJECT(menu_item_last), "activate", G_CALLBACK(cb_rstto_last), navigator);
-
- g_signal_connect(G_OBJECT(menu_item_rotate_left), "activate", G_CALLBACK(cb_rstto_rotate_ccw), navigator);
- g_signal_connect(G_OBJECT(menu_item_rotate_right), "activate", G_CALLBACK(cb_rstto_rotate_cw), navigator);
- g_signal_connect(G_OBJECT(menu_item_flip_v), "activate", G_CALLBACK(cb_rstto_flip_v), navigator);
- g_signal_connect(G_OBJECT(menu_item_flip_h), "activate", G_CALLBACK(cb_rstto_flip_h), navigator);
-
- g_signal_connect(G_OBJECT(menu_item_toggle_toolbar), "activate", G_CALLBACK(cb_rstto_toggle_toolbar), thumbnail_viewer);
-
- g_signal_connect(G_OBJECT(menu_item_vtv), "activate", G_CALLBACK(cb_rstto_show_tv_v), thumbnail_viewer);
- g_signal_connect(G_OBJECT(menu_item_htv), "activate", G_CALLBACK(cb_rstto_show_tv_h), thumbnail_viewer);
- g_signal_connect(G_OBJECT(menu_item_ntv), "activate", G_CALLBACK(cb_rstto_hide_tv), thumbnail_viewer);
-
- g_signal_connect(G_OBJECT(menu_item_play), "activate", G_CALLBACK(cb_rstto_toggle_play), navigator);
- g_signal_connect(G_OBJECT(menu_item_pause), "activate", G_CALLBACK(cb_rstto_toggle_play), navigator);
- g_signal_connect(G_OBJECT(menu_item_view_fs), "activate", G_CALLBACK(cb_rstto_toggle_fullscreen), window);
-
- g_signal_connect(G_OBJECT(window), "window-state-event", G_CALLBACK(cb_rstto_fullscreen), viewer);
- g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(cb_rstto_main_window_configure_event), NULL);
-
- gtk_container_add(GTK_CONTAINER(window), main_vbox);
-
- for (n = 1; n < argc; ++n)
- {
- path = thunar_vfs_path_new(argv[n], NULL);
-
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
- if(info)
- {
- if(strcmp(thunar_vfs_mime_info_get_name(info->mime_info), "inode/directory"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
- rstto_navigator_add (navigator, entry);
- }
- else
- {
- GDir *dir = g_dir_open(argv[n], 0, NULL);
- const gchar *filename = g_dir_read_name(dir);
- while (filename)
- {
- gchar *path_name = g_strconcat(argv[n], "/", filename, NULL);
- ThunarVfsPath *file_path = thunar_vfs_path_new(path_name, NULL);
- if (file_path)
- {
- ThunarVfsInfo *file_info = thunar_vfs_info_new_for_path(file_path, NULL);
- gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
- if(!strcmp(file_media, "image"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(file_info);
- rstto_navigator_add (navigator, entry);
- }
- g_free(file_media);
- thunar_vfs_path_unref(file_path);
- }
- g_free(path_name);
- filename = g_dir_read_name(dir);
- }
- rstto_navigator_jump_first(navigator);
- }
- gchar *uri = thunar_vfs_path_dup_uri(info->path);
- gtk_recent_manager_add_item(recent_manager, uri);
- g_free(uri);
- }
- thunar_vfs_path_unref(path);
- }
-
gtk_widget_show_all(window);
- gtk_widget_hide(menu_item_pause);
- gtk_widget_show(viewer);
+ rstto_main_window_set_thumbnail_viewer_visibility(RSTTO_MAIN_WINDOW(window), TRUE);
- if(!strcmp(thumbnail_viewer_orientation, "hide"))
- {
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_ntv), TRUE);
- gtk_widget_hide(GTK_WIDGET(thumbnail_viewer));
- }
- if (show_toolbar == FALSE)
- {
- gtk_widget_hide(GTK_WIDGET(app_tool_bar));
- }
-
gtk_main();
xfce_rc_flush(xfce_rc);
xfce_rc_close(xfce_rc);
return 0;
}
-
-static void
-cb_rstto_zoom_fit(GtkToolItem *item, RsttoPictureViewer *viewer)
-{
- rstto_picture_viewer_fit_scale(viewer);
-}
-
-static void
-cb_rstto_zoom_100(GtkToolItem *item, RsttoPictureViewer *viewer)
-{
- rstto_picture_viewer_set_scale(viewer, 1);
-}
-
-static void
-cb_rstto_zoom_in(GtkToolItem *item, RsttoPictureViewer *viewer)
-{
- gdouble scale = rstto_picture_viewer_get_scale(viewer);
- rstto_picture_viewer_set_scale(viewer, scale*1.2);
-}
-
-static void
-cb_rstto_zoom_out(GtkToolItem *item, RsttoPictureViewer *viewer)
-{
- gdouble scale = rstto_picture_viewer_get_scale(viewer);
- rstto_picture_viewer_set_scale(viewer, scale/1.2);
-}
-
-
-static void
-cb_rstto_help_about(GtkToolItem *item, GtkWindow *window)
-{
- const gchar *authors[] = {
- _("Developer:"),
- "Stephan Arts <stephan at xfce.org>",
- NULL};
-
- GtkWidget *about_dialog = gtk_about_dialog_new();
-
- gtk_about_dialog_set_name((GtkAboutDialog *)about_dialog, PACKAGE_NAME);
- gtk_about_dialog_set_version((GtkAboutDialog *)about_dialog, PACKAGE_VERSION);
-
- gtk_about_dialog_set_comments((GtkAboutDialog *)about_dialog,
- _("Ristretto is a fast and lightweight picture-viewer for the Xfce desktop environment."));
- gtk_about_dialog_set_website((GtkAboutDialog *)about_dialog,
- "http://goodies.xfce.org/projects/applications/ristretto");
- gtk_about_dialog_set_logo_icon_name((GtkAboutDialog *)about_dialog,
- "ristretto");
- gtk_about_dialog_set_authors((GtkAboutDialog *)about_dialog,
- authors);
- gtk_about_dialog_set_translator_credits((GtkAboutDialog *)about_dialog,
- _("translator-credits"));
- gtk_about_dialog_set_license((GtkAboutDialog *)about_dialog,
- xfce_get_license_text(XFCE_LICENSE_TEXT_GPL));
- gtk_about_dialog_set_copyright((GtkAboutDialog *)about_dialog,
- "Copyright \302\251 2006-2007 Stephan Arts");
-
- gtk_dialog_run(GTK_DIALOG(about_dialog));
-
- gtk_widget_destroy(about_dialog);
-}
-
-static void
-cb_rstto_first(GtkToolItem *item, RsttoNavigator *navigator)
-{
- rstto_navigator_jump_first(navigator);
-}
-
-static void
-cb_rstto_last(GtkToolItem *item, RsttoNavigator *navigator)
-{
- rstto_navigator_jump_last(navigator);
-}
-
-static void
-cb_rstto_forward(GtkToolItem *item, RsttoNavigator *navigator)
-{
- rstto_navigator_jump_forward(navigator);
-}
-
-static void
-cb_rstto_previous(GtkToolItem *item, RsttoNavigator *navigator)
-{
- rstto_navigator_jump_back(navigator);
-}
-
-static void
-cb_rstto_nav_file_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, GtkWindow *window)
-{
- ThunarVfsInfo *info = NULL;
- const gchar *filename = NULL;
- gchar *title;
-
- if(entry)
- {
- info = rstto_navigator_entry_get_info(entry);
- filename = info->display_name;
- gtk_widget_set_sensitive(menu_item_close, TRUE);
- gtk_widget_set_sensitive(menu_item_first, TRUE);
- gtk_widget_set_sensitive(menu_item_last, TRUE);
- gtk_widget_set_sensitive(menu_item_back, TRUE);
- gtk_widget_set_sensitive(menu_item_forward, TRUE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_forward), TRUE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_previous), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive(menu_item_close, FALSE);
- if (rstto_navigator_get_n_files(navigator) == 0)
- {
- gtk_widget_set_sensitive(menu_item_first, FALSE);
- gtk_widget_set_sensitive(menu_item_last, FALSE);
- gtk_widget_set_sensitive(menu_item_back, FALSE);
- gtk_widget_set_sensitive(menu_item_forward, FALSE);
-
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_forward), FALSE);
- gtk_widget_set_sensitive(GTK_WIDGET(tool_item_previous), FALSE);
- }
- }
-
- if(filename)
- {
- title = g_strconcat(PACKAGE_NAME, " - ", filename, NULL);
- gtk_window_set_title(window, title);
- g_free(title);
- }
- else
- gtk_window_set_title(window, PACKAGE_STRING);
-
- if (menu_apps)
- {
- gtk_container_foreach(GTK_CONTAINER(menu_apps), (GtkCallback)gtk_widget_destroy, NULL);
- if(menu_apps_list)
- {
- g_list_foreach(menu_apps_list, (GFunc)g_object_unref, NULL);
- g_list_free(menu_apps_list);
- menu_apps_list = NULL;
- }
- if(info)
- {
- menu_apps_list = thunar_vfs_mime_database_get_applications(mime_dbase, info->mime_info);
- GList *iter = menu_apps_list;
- if (iter == NULL)
- {
- GtkWidget *bottom_menu_item = gtk_menu_item_new_with_mnemonic(_("No applications available"));
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_apps), bottom_menu_item);
- gtk_widget_set_sensitive(bottom_menu_item, FALSE);
- gtk_widget_show(bottom_menu_item);
- }
- while(iter)
- {
- GtkWidget *menu_item = gtk_image_menu_item_new_with_label(thunar_vfs_mime_application_get_name(iter->data));
- GtkWidget *image = gtk_image_new_from_icon_name(thunar_vfs_mime_handler_lookup_icon_name(iter->data, icon_theme), GTK_ICON_SIZE_MENU);
- gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_apps), menu_item);
- g_object_set_data(iter->data, "entry", entry);
- g_signal_connect(menu_item, "activate", G_CALLBACK(cb_rstto_spawn_app), iter->data);
- gtk_widget_show(menu_item);
- iter = g_list_next(iter);
- }
- }
- else
- {
- GtkWidget *bottom_menu_item = gtk_menu_item_new_with_mnemonic(_("No applications available"));
- gtk_menu_shell_append(GTK_MENU_SHELL(menu_apps), bottom_menu_item);
- gtk_widget_set_sensitive(bottom_menu_item, FALSE);
- gtk_widget_show(bottom_menu_item);
- }
- }
-}
-
-static void
-cb_rstto_fullscreen(GtkWidget *widget, GdkEventWindowState *event, RsttoPictureViewer *viewer)
-{
- if(event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
- {
- if(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
- {
- window_fullscreen = TRUE;
- gtk_widget_hide(menu_bar);
- gtk_widget_hide(app_tool_bar);
- gtk_widget_hide(status_bar);
- }
- else
- {
- window_fullscreen = FALSE;
- gtk_widget_show(menu_bar);
- gtk_widget_show(app_tool_bar);
- gtk_widget_show(status_bar);
- }
- }
-}
-
-static void
-cb_rstto_toggle_play(GtkImageMenuItem *item, RsttoNavigator *navigator)
-{
- if(playing == TRUE)
- {
- gtk_widget_show(menu_item_play);
- gtk_widget_hide(menu_item_pause);
- playing = FALSE;
- }
- else
- {
- gtk_widget_hide(menu_item_play);
- gtk_widget_show(menu_item_pause);
- playing = TRUE;
- }
- rstto_navigator_set_running(navigator, playing);
-}
-
-static void
-cb_rstto_toggle_fullscreen(GtkToolItem *item, GtkWindow *window)
-{
- if(window_fullscreen)
- gtk_window_unfullscreen(window);
- else
- gtk_window_fullscreen(window);
-}
-
-static void
-cb_rstto_show_tv_v(GtkWidget *widget, RsttoThumbnailViewer *viewer)
-{
- GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET(viewer));
- gtk_widget_ref(GTK_WIDGET(viewer));
- gtk_container_remove(GTK_CONTAINER(parent), GTK_WIDGET(viewer));
- rstto_thumbnail_viewer_set_orientation(viewer, GTK_ORIENTATION_VERTICAL);
- gtk_box_pack_start(GTK_BOX(main_hbox), thumbnail_viewer, FALSE, TRUE, 0);
- gtk_widget_show(GTK_WIDGET(viewer));
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "vertical");
-}
-
-static void
-cb_rstto_show_tv_h(GtkWidget *widget, RsttoThumbnailViewer *viewer)
-{
- GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET(viewer));
- gtk_widget_ref(GTK_WIDGET(viewer));
- gtk_container_remove(GTK_CONTAINER(parent), GTK_WIDGET(viewer));
- rstto_thumbnail_viewer_set_orientation(viewer, GTK_ORIENTATION_HORIZONTAL);
- gtk_box_pack_start(GTK_BOX(main_vbox1), thumbnail_viewer, FALSE, TRUE, 0);
- gtk_widget_show(GTK_WIDGET(viewer));
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "horizontal");
-}
-
-static void
-cb_rstto_hide_tv(GtkWidget *widget, RsttoThumbnailViewer *viewer)
-{
- gtk_widget_hide(GTK_WIDGET(viewer));
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "hide");
-}
-
-static void
-cb_rstto_flip_h(GtkWidget *widget, RsttoNavigator *navigator)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
- rstto_navigator_flip_entry(navigator, entry, TRUE);
-}
-
-static void
-cb_rstto_flip_v(GtkWidget *widget, RsttoNavigator *navigator)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
- rstto_navigator_flip_entry(navigator, entry, FALSE);
-}
-
-static void
-cb_rstto_rotate_cw(GtkWidget *widget, RsttoNavigator *navigator)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
- GdkPixbufRotation rotation = rstto_navigator_entry_get_rotation(entry);
- switch (rotation)
- {
- case GDK_PIXBUF_ROTATE_NONE:
- rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
- break;
- case GDK_PIXBUF_ROTATE_CLOCKWISE:
- rotation = GDK_PIXBUF_ROTATE_UPSIDEDOWN;
- break;
- case GDK_PIXBUF_ROTATE_UPSIDEDOWN:
- rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
- break;
- case GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE:
- rotation = GDK_PIXBUF_ROTATE_NONE;
- break;
- }
-
- //rstto_navigator_set_entry_rotation(navigator, entry, rotation);
-}
-
-static void
-cb_rstto_rotate_ccw(GtkWidget *widget, RsttoNavigator *navigator)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
- GdkPixbufRotation rotation = rstto_navigator_entry_get_rotation(entry);
- switch (rotation)
- {
- case GDK_PIXBUF_ROTATE_NONE:
- rotation = GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE;
- break;
- case GDK_PIXBUF_ROTATE_CLOCKWISE:
- rotation = GDK_PIXBUF_ROTATE_NONE;
- break;
- case GDK_PIXBUF_ROTATE_UPSIDEDOWN:
- rotation = GDK_PIXBUF_ROTATE_CLOCKWISE;
- break;
- case GDK_PIXBUF_ROTATE_COUNTERCLOCKWISE:
- rotation = GDK_PIXBUF_ROTATE_UPSIDEDOWN;
- break;
- }
-
- //rstto_navigator_set_entry_rotation(navigator, entry, rotation);
-}
-
-static gboolean
-cb_rstto_key_press_event(GtkWidget *widget, GdkEventKey *event, RsttoNavigator *navigator)
-{
- GtkWindow *window = GTK_WINDOW(widget);
- if(gtk_window_activate_key(window, event) == FALSE)
- {
- switch(event->keyval)
- {
- case GDK_F5:
- if(playing == TRUE)
- {
- gtk_widget_show(menu_item_play);
- gtk_widget_hide(menu_item_pause);
- playing = FALSE;
- }
- else
- {
- gtk_widget_hide(menu_item_play);
- gtk_widget_show(menu_item_pause);
- playing = TRUE;
- }
- rstto_navigator_set_running(navigator, playing);
- break;
- case GDK_F11:
- if(window_fullscreen)
- gtk_window_unfullscreen(window);
- else
- gtk_window_fullscreen(window);
- break;
- case GDK_Home:
- rstto_navigator_jump_first(navigator);
- break;
- case GDK_End:
- rstto_navigator_jump_last(navigator);
- break;
- case GDK_Page_Down:
- case GDK_space:
- rstto_navigator_jump_forward(navigator);
- break;
- case GDK_Page_Up:
- case GDK_BackSpace:
- rstto_navigator_jump_back(navigator);
- break;
- case GDK_t:
- if (event->state & GDK_CONTROL_MASK)
- {
- if(strcmp(xfce_rc_read_entry(xfce_rc, "ThumbnailViewerOrientation", "hide"), "hide"))
- {
- gtk_widget_hide(GTK_WIDGET(thumbnail_viewer));
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "hide");
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_ntv), TRUE);
- }
- else
- {
- gtk_widget_show(GTK_WIDGET(thumbnail_viewer));
- switch (rstto_thumbnail_viewer_get_orientation(RSTTO_THUMBNAIL_VIEWER(thumbnail_viewer)))
- {
- case GTK_ORIENTATION_HORIZONTAL:
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "horizontal");
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_htv), TRUE);
- break;
- case GTK_ORIENTATION_VERTICAL:
- xfce_rc_write_entry(xfce_rc, "ThumbnailViewerOrientation", "vertical");
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(menu_item_vtv), TRUE);
- break;
- }
-
- }
- }
- break;
- }
- }
- return TRUE;
-}
-
-static void
-cb_rstto_open(GtkToolItem *item, RsttoNavigator *navigator)
-{
- GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(item));
-
- GtkWidget *dialog = gtk_file_chooser_dialog_new(_("Open image"),
- GTK_WINDOW(window),
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_OK,
- NULL);
-
- gint response = gtk_dialog_run(GTK_DIALOG(dialog));
- if(response == GTK_RESPONSE_OK)
- {
- const gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
-
- ThunarVfsPath *path = thunar_vfs_path_new(filename, NULL);
- if (path)
- {
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
- gchar *file_media = thunar_vfs_mime_info_get_media(info->mime_info);
- if(!strcmp(file_media, "image"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
- rstto_navigator_add (navigator, entry);
- gchar *uri = thunar_vfs_path_dup_uri(info->path);
- gtk_recent_manager_add_item(recent_manager, uri);
- g_free(uri);
- }
- g_free(file_media);
- thunar_vfs_path_unref(path);
- }
- else
- {
- gtk_widget_destroy(dialog);
- dialog = gtk_message_dialog_new(GTK_WINDOW(window),
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- _("Could not open file"));
- gtk_dialog_run(GTK_DIALOG(dialog));
- }
- }
- gtk_widget_destroy(dialog);
-}
-
-static void
-cb_rstto_open_dir(GtkToolItem *item, RsttoNavigator *navigator)
-{
- GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(item));
-
- GtkWidget *dialog = gtk_file_chooser_dialog_new(_("Open folder"),
- GTK_WINDOW(window),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_OK,
- NULL);
-
- gint response = gtk_dialog_run(GTK_DIALOG(dialog));
- if(response == GTK_RESPONSE_OK)
- {
- rstto_navigator_clear(navigator);
- const gchar *dir_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- GDir *dir = g_dir_open(dir_name, 0, NULL);
- if (dir)
- {
- const gchar *filename = g_dir_read_name(dir);
- while (filename)
- {
- gchar *path_name = g_strconcat(dir_name, "/", filename, NULL);
- ThunarVfsPath *path = thunar_vfs_path_new(path_name, NULL);
- if (path)
- {
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
- gchar *file_media = thunar_vfs_mime_info_get_media(info->mime_info);
- if(!strcmp(file_media, "image"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
- rstto_navigator_add (navigator, entry);
- }
- g_free(file_media);
- thunar_vfs_path_unref(path);
- }
- g_free(path_name);
- filename = g_dir_read_name(dir);
- }
- rstto_navigator_jump_first(navigator);
- gchar *uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
- gtk_recent_manager_add_item(recent_manager, uri);
- g_free(uri);
-
- }
-
- }
- gtk_widget_destroy(dialog);
-}
-
-static void
-cb_rstto_open_recent(GtkRecentChooser *chooser, RsttoNavigator *navigator)
-{
- gchar *uri = gtk_recent_chooser_get_current_uri(chooser);
- ThunarVfsPath *path = thunar_vfs_path_new(uri, NULL);
- if (path)
- {
- ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
- if(info)
- {
- if(strcmp(thunar_vfs_mime_info_get_name(info->mime_info), "inode/directory"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
- rstto_navigator_add (navigator, entry);
- }
- else
- {
- rstto_navigator_clear(navigator);
- gchar *dir_path = thunar_vfs_path_dup_string(info->path);
- GDir *dir = g_dir_open(dir_path, 0, NULL);
- const gchar *filename = g_dir_read_name(dir);
- while (filename)
- {
- gchar *path_name = g_strconcat(dir_path, "/", filename, NULL);
- ThunarVfsPath *file_path = thunar_vfs_path_new(path_name, NULL);
- if (file_path)
- {
- ThunarVfsInfo *file_info = thunar_vfs_info_new_for_path(file_path, NULL);
- gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
- if(!strcmp(file_media, "image"))
- {
- RsttoNavigatorEntry *entry = rstto_navigator_entry_new(file_info);
- rstto_navigator_add (navigator, entry);
- }
- g_free(file_media);
- thunar_vfs_path_unref(file_path);
- }
- g_free(path_name);
- filename = g_dir_read_name(dir);
- }
- rstto_navigator_jump_first(navigator);
- g_free(dir_path);
- }
- gchar *uri = thunar_vfs_path_dup_uri(info->path);
- gtk_recent_manager_add_item(recent_manager, uri);
- g_free(uri);
- }
- thunar_vfs_path_unref(path);
- }
-}
-
-static void
-cb_rstto_toggle_toolbar(GtkWidget *widget, RsttoThumbnailViewer *viewer)
-{
- gboolean active = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM(widget));
- if (active == TRUE)
- {
- gtk_widget_show(app_tool_bar);
- xfce_rc_write_bool_entry(xfce_rc, "ShowToolBar", TRUE);
- }
- else
- {
- gtk_widget_hide(app_tool_bar);
- xfce_rc_write_bool_entry(xfce_rc, "ShowToolBar", FALSE);
- }
-}
-
-static gboolean
-rstto_window_save_geometry_timer (gpointer user_data)
-{
- GtkWindow *window = GTK_WINDOW(user_data);
- gint width = 0;
- gint height = 0;
- /* check if the window is still visible */
- if (GTK_WIDGET_VISIBLE (window))
- {
- /* determine the current state of the window */
- gint state = gdk_window_get_state (GTK_WIDGET (window)->window);
-
- /* don't save geometry for maximized or fullscreen windows */
- if ((state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)) == 0)
- {
- /* determine the current width/height of the window... */
- gtk_window_get_size (GTK_WINDOW (window), &width, &height);
-
- /* ...and remember them as default for new windows */
- xfce_rc_write_int_entry (xfce_rc, "LastWindowWidth", width);
- xfce_rc_write_int_entry (xfce_rc, "LastWindowHeight", height);
- }
- }
- return FALSE;
-}
-
-static void
-rstto_window_save_geometry_timer_destroy(gpointer user_data)
-{
- window_save_geometry_timer_id = 0;
-}
-
-static gboolean
-cb_rstto_main_window_configure_event (GtkWidget *widget, GdkEventConfigure *event)
-{
- /* shamelessly copied from thunar, written by benny */
- /* check if we have a new dimension here */
- if (widget->allocation.width != event->width || widget->allocation.height != event->height)
- {
- /* drop any previous timer source */
- if (window_save_geometry_timer_id > 0)
- g_source_remove (window_save_geometry_timer_id);
-
- /* check if we should schedule another save timer */
- if (GTK_WIDGET_VISIBLE (widget))
- {
- /* save the geometry one second after the last configure event */
- window_save_geometry_timer_id = g_timeout_add_full (G_PRIORITY_LOW, 1000, rstto_window_save_geometry_timer,
- widget, rstto_window_save_geometry_timer_destroy);
- }
- }
-
- /* let Gtk+ handle the configure event */
- return FALSE;
-}
-
-static void
-cb_rstto_clear_recent(GtkWidget *widget, GtkRecentManager *manager)
-{
- GtkWidget *dialog = gtk_message_dialog_new(NULL,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK_CANCEL,
- _("Are you sure you want to clear ristretto's list of recently opened documents?"));
- gint result = gtk_dialog_run(GTK_DIALOG(dialog));
- if (result == GTK_RESPONSE_OK)
- {
- g_timeout_add(150, (GSourceFunc)rstto_clear_recent, manager);
- }
- gtk_widget_destroy(dialog);
-}
-
-static gboolean
-rstto_clear_recent(GtkRecentManager *manager)
-{
- GList *items = gtk_recent_manager_get_items(manager);
- GList *iter = items;
- while(iter)
- {
- if(gtk_recent_info_has_application(iter->data, "ristretto"))
- {
- gtk_recent_manager_remove_item(manager, gtk_recent_info_get_uri(iter->data), NULL);
- }
- iter = g_list_next(iter);
- }
- return FALSE;
-}
-
-static void
-cb_rstto_spawn_app(GtkWidget *widget, ThunarVfsMimeApplication *app)
-{
- ThunarVfsInfo *info = rstto_navigator_entry_get_info(g_object_get_data(G_OBJECT(app), "entry"));
- GList *list = g_list_prepend(NULL, info->path);
- thunar_vfs_mime_handler_exec(THUNAR_VFS_MIME_HANDLER(app), NULL, list, NULL);
-}
-
-static void
-cb_rstto_close_current(GtkWidget *item, RsttoNavigator *navigator)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(navigator);
- if (entry)
- {
- rstto_navigator_remove(navigator, entry);
- rstto_navigator_entry_free(entry);
- if (rstto_navigator_get_n_files(navigator) == 0)
- {
- gtk_widget_set_sensitive(item, FALSE);
- }
- }
- else
- {
- gtk_widget_set_sensitive(item, FALSE);
- }
-}
Added: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c (rev 0)
+++ ristretto/trunk/src/main_window.c 2007-09-25 04:00:53 UTC (rev 3246)
@@ -0,0 +1,901 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include <string.h>
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "navigator.h"
+#include "thumbnail_viewer.h"
+#include "picture_viewer.h"
+#include "main_window.h"
+
+
+struct _RsttoMainWindowPriv
+{
+ RsttoNavigator *navigator;
+ GtkWidget *thumbnail_viewer;
+ GtkWidget *picture_viewer;
+ GtkWidget *statusbar;
+ GtkRecentManager *manager;
+
+ struct {
+ GtkWidget *main_vbox;
+ GtkWidget *s_window;
+ GtkWidget *paned;
+ } containers;
+
+ struct {
+ GtkOrientation thumbnail_viewer_orientation;
+ gboolean thumbnail_viewer_visibility;
+ gboolean toolbar_visibility;
+ } settings;
+
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_file;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_open_file;
+ GtkWidget *menu_item_open_folder;
+ GtkWidget *menu_item_open_recently;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_separator_1;
+ GtkWidget *menu_item_clear;
+ } recently;
+ GtkWidget *menu_item_separator_1;
+ GtkWidget *menu_item_close;
+ GtkWidget *menu_item_quit;
+ } file;
+
+ GtkWidget *menu_item_edit;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_open_with;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_empty;
+ } open_with;
+ } edit;
+
+ GtkWidget *menu_item_view;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_show_toolbar;
+ GtkWidget *menu_item_show_thumbnail_viewer;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_thumbnail_viewer_horizontal;
+ GtkWidget *menu_item_thumbnail_viewer_vertical;
+ GtkWidget *menu_item_thumbnail_viewer_hide;
+ } show_thumbnail_viewer;
+
+ GtkWidget *menu_item_fullscreen;
+ } view;
+
+ GtkWidget *menu_item_go;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_next;
+ GtkWidget *menu_item_previous;
+ GtkWidget *menu_item_first;
+ GtkWidget *menu_item_last;
+ GtkWidget *menu_item_separator_1;
+ GtkWidget *menu_item_play;
+ GtkWidget *menu_item_pause;
+ } go;
+
+ GtkWidget *menu_item_help;
+ struct {
+ GtkWidget *menu;
+ GtkWidget *menu_item_about;
+ } help;
+ } menus;
+
+ struct {
+ GtkWidget *bar;
+
+ GtkToolItem *tool_item_open;
+ GtkToolItem *tool_item_separator_1;
+ GtkToolItem *tool_item_next;
+ GtkToolItem *tool_item_previous;
+ GtkToolItem *tool_item_spacer_1;
+
+ GtkToolItem *tool_item_zoom_fit;
+ GtkToolItem *tool_item_zoom_100;
+ GtkToolItem *tool_item_zoom_out;
+ GtkToolItem *tool_item_zoom_in;
+ } toolbar;
+};
+
+static void
+cb_rstto_main_window_thumbnail_viewer_horizontal(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_thumbnail_viewer_vertical(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_thumbnail_viewer_hide(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_toggle_toolbar(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_toggle_fullscreen(GtkWidget *widget, RsttoMainWindow *window);
+static gboolean
+cb_rstto_main_window_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data);
+static void
+cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data);
+static void
+cb_rstto_main_window_play(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_pause(GtkWidget *widget, RsttoMainWindow *window);
+
+static void
+cb_rstto_main_window_open_file(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_open_folder(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_open_recent(GtkRecentChooser *chooser, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_close(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_quit(GtkWidget *widget, RsttoMainWindow *window);
+static void
+cb_rstto_main_window_about(GtkWidget *widget, RsttoMainWindow *window);
+
+static void
+cb_rstto_main_window_nav_iter_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, RsttoMainWindow *window);
+
+static void
+rstto_main_window_init(RsttoMainWindow *);
+static void
+rstto_main_window_class_init(RsttoMainWindowClass *);
+
+static GtkWidgetClass *parent_class = NULL;
+
+GType
+rstto_main_window_get_type ()
+{
+ static GType rstto_main_window_type = 0;
+
+ if (!rstto_main_window_type)
+ {
+ static const GTypeInfo rstto_main_window_info =
+ {
+ sizeof (RsttoMainWindowClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) rstto_main_window_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL,
+ sizeof (RsttoMainWindow),
+ 0,
+ (GInstanceInitFunc) rstto_main_window_init,
+ NULL
+ };
+
+ rstto_main_window_type = g_type_register_static (GTK_TYPE_WINDOW, "RsttoMainWindow", &rstto_main_window_info, 0);
+ }
+ return rstto_main_window_type;
+}
+
+static void
+rstto_main_window_init(RsttoMainWindow *window)
+{
+ window->priv = g_new0(RsttoMainWindowPriv, 1);
+
+ GtkAccelGroup *accel_group = gtk_accel_group_new();
+
+ gtk_window_set_title(GTK_WINDOW(window), PACKAGE_STRING);
+ gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
+
+ window->priv->navigator = rstto_navigator_new();
+ window->priv->thumbnail_viewer = rstto_thumbnail_viewer_new(window->priv->navigator);
+ window->priv->picture_viewer = rstto_picture_viewer_new(window->priv->navigator);
+
+ window->priv->manager = gtk_recent_manager_get_default();
+
+/* Set up default settings */
+ window->priv->settings.thumbnail_viewer_orientation = GTK_ORIENTATION_HORIZONTAL;
+ window->priv->settings.thumbnail_viewer_visibility = TRUE;
+
+/* Create menu bar */
+ window->priv->menus.menu = gtk_menu_bar_new();
+
+/* Create 'File' menu */
+ window->priv->menus.menu_item_file = gtk_menu_item_new_with_mnemonic(_("_File"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.menu), window->priv->menus.menu_item_file);
+
+ window->priv->menus.file.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.file.menu), accel_group);
+
+ window->priv->menus.file.menu_item_open_file = gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, accel_group);
+ window->priv->menus.file.menu_item_open_folder = gtk_menu_item_new_with_mnemonic(_("O_pen Folder"));
+ window->priv->menus.file.menu_item_open_recently = gtk_menu_item_new_with_mnemonic(_("_Recently used"));
+ window->priv->menus.file.menu_item_separator_1 = gtk_separator_menu_item_new();
+ window->priv->menus.file.menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, accel_group);
+ window->priv->menus.file.menu_item_quit = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, accel_group);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_file), window->priv->menus.file.menu);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_open_file);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_open_folder);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_open_recently);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_separator_1);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_close);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.menu), window->priv->menus.file.menu_item_quit);
+
+ gtk_widget_set_sensitive(window->priv->menus.file.menu_item_close, FALSE);
+
+ window->priv->menus.file.recently.menu = gtk_recent_chooser_menu_new_for_manager(GTK_RECENT_MANAGER(window->priv->manager));
+ window->priv->menus.file.recently.menu_item_clear = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, accel_group);
+ window->priv->menus.file.recently.menu_item_separator_1 = gtk_separator_menu_item_new();
+
+ GtkRecentFilter *filter = gtk_recent_filter_new();
+ gtk_recent_filter_add_application(filter, "ristretto");
+ gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(window->priv->menus.file.recently.menu), filter);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.file.menu_item_open_recently), window->priv->menus.file.recently.menu);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.recently.menu), window->priv->menus.file.recently.menu_item_separator_1);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.file.recently.menu), window->priv->menus.file.recently.menu_item_clear);
+
+/* Create 'Edit' menu */
+ window->priv->menus.menu_item_edit = gtk_menu_item_new_with_mnemonic(_("_Edit"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.menu), window->priv->menus.menu_item_edit);
+
+ window->priv->menus.edit.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.edit.menu), accel_group);
+ window->priv->menus.edit.menu_item_open_with = gtk_menu_item_new_with_mnemonic(_("Open with..."));
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_edit), window->priv->menus.edit.menu);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.menu), window->priv->menus.edit.menu_item_open_with);
+
+ window->priv->menus.edit.open_with.menu = gtk_menu_new();
+ window->priv->menus.edit.open_with.menu_item_empty = gtk_menu_item_new_with_label(_("No applications available"));
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.edit.open_with.menu), window->priv->menus.edit.open_with.menu_item_empty);
+ gtk_widget_set_sensitive(window->priv->menus.edit.open_with.menu_item_empty, FALSE);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.edit.menu_item_open_with), window->priv->menus.edit.open_with.menu);
+
+/* Create 'View' menu */
+ window->priv->menus.menu_item_view = gtk_menu_item_new_with_mnemonic(_("_View"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.menu), window->priv->menus.menu_item_view);
+
+ window->priv->menus.view.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.view.menu), accel_group);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_view), window->priv->menus.view.menu);
+
+ window->priv->menus.view.menu_item_show_toolbar = gtk_check_menu_item_new_with_mnemonic(_("Show Toolbar"));
+ window->priv->menus.view.menu_item_show_thumbnail_viewer = gtk_menu_item_new_with_mnemonic(_("Thumbnail Viewer"));
+ window->priv->menus.view.menu_item_fullscreen = gtk_image_menu_item_new_from_stock(GTK_STOCK_FULLSCREEN, NULL);
+
+ gtk_widget_add_accelerator(window->priv->menus.view.menu_item_fullscreen, "activate", accel_group, GDK_F11, 0,GTK_ACCEL_VISIBLE);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(window->priv->menus.view.menu_item_show_toolbar), TRUE);
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.menu), window->priv->menus.view.menu_item_show_toolbar);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.menu), window->priv->menus.view.menu_item_show_thumbnail_viewer);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.menu), window->priv->menus.view.menu_item_fullscreen);
+
+ window->priv->menus.view.show_thumbnail_viewer.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.view.show_thumbnail_viewer.menu), accel_group);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.view.menu_item_show_thumbnail_viewer),
+ window->priv->menus.view.show_thumbnail_viewer.menu);
+ window->priv->menus.view.show_thumbnail_viewer.
+ menu_item_thumbnail_viewer_horizontal = gtk_radio_menu_item_new_with_mnemonic(
+ NULL,
+ _("Show Horizontally"));
+ window->priv->menus.view.show_thumbnail_viewer.
+ menu_item_thumbnail_viewer_vertical = gtk_radio_menu_item_new_with_mnemonic_from_widget(
+ GTK_RADIO_MENU_ITEM(window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_horizontal),
+ _("Show Vertically"));
+ window->priv->menus.view.show_thumbnail_viewer.
+ menu_item_thumbnail_viewer_hide = gtk_radio_menu_item_new_with_mnemonic_from_widget(
+ GTK_RADIO_MENU_ITEM(window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_horizontal),
+ _("Hide"));
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.show_thumbnail_viewer.menu),
+ window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_horizontal);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.show_thumbnail_viewer.menu),
+ window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_vertical);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.view.show_thumbnail_viewer.menu),
+ window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_hide);
+
+/* Create 'Go' menu */
+ window->priv->menus.menu_item_go= gtk_menu_item_new_with_mnemonic(_("_Go"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.menu), window->priv->menus.menu_item_go);
+
+ window->priv->menus.go.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.go.menu), accel_group);
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_go), window->priv->menus.go.menu);
+
+ window->priv->menus.go.menu_item_first = gtk_image_menu_item_new_from_stock(GTK_STOCK_GOTO_FIRST, NULL);
+ window->priv->menus.go.menu_item_last = gtk_image_menu_item_new_from_stock(GTK_STOCK_GOTO_LAST, NULL);
+ window->priv->menus.go.menu_item_next = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD, NULL);
+ window->priv->menus.go.menu_item_previous = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK, NULL);
+ window->priv->menus.go.menu_item_separator_1 = gtk_separator_menu_item_new();
+ window->priv->menus.go.menu_item_play = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PLAY, accel_group);
+ window->priv->menus.go.menu_item_pause = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PAUSE, accel_group);
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_next);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_previous);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_first);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_last);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_separator_1);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_play);
+
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_first, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_last, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_next, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_previous, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_play, FALSE);
+
+/* Create 'Help' menu */
+ window->priv->menus.menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.menu), window->priv->menus.menu_item_help);
+
+ window->priv->menus.help.menu = gtk_menu_new();
+ gtk_menu_set_accel_group(GTK_MENU(window->priv->menus.help.menu), accel_group);
+
+ window->priv->menus.help.menu_item_about = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, accel_group);
+ gtk_menu_shell_append(GTK_MENU_SHELL(window->priv->menus.help.menu), window->priv->menus.help.menu_item_about);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(window->priv->menus.menu_item_help), window->priv->menus.help.menu);
+
+/* Create toolbar */
+ window->priv->toolbar.bar = gtk_toolbar_new();
+ window->priv->toolbar.tool_item_open = gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
+ window->priv->toolbar.tool_item_separator_1 = gtk_separator_tool_item_new();
+ window->priv->toolbar.tool_item_next = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
+ window->priv->toolbar.tool_item_previous = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
+ window->priv->toolbar.tool_item_spacer_1= gtk_tool_item_new();
+
+ gtk_tool_item_set_is_important(window->priv->toolbar.tool_item_previous, TRUE);
+ gtk_tool_item_set_is_important(window->priv->toolbar.tool_item_next, TRUE);
+
+ gtk_tool_item_set_expand(window->priv->toolbar.tool_item_spacer_1, TRUE);
+ gtk_tool_item_set_homogeneous(window->priv->toolbar.tool_item_spacer_1, FALSE);
+
+ window->priv->toolbar.tool_item_zoom_fit = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_FIT);
+ window->priv->toolbar.tool_item_zoom_100 = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_100);
+ window->priv->toolbar.tool_item_zoom_in = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
+ window->priv->toolbar.tool_item_zoom_out = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
+
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_open, 0);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_separator_1, 1);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_previous, 2);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_next, 3);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_spacer_1, 4);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_zoom_in, 5);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_zoom_out, 6);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_zoom_fit, 7);
+ gtk_toolbar_insert(GTK_TOOLBAR(window->priv->toolbar.bar), window->priv->toolbar.tool_item_zoom_100, 8);
+
+/* Create statusbar */
+ window->priv->statusbar = gtk_statusbar_new();
+
+/* Create containers */
+ window->priv->containers.main_vbox = gtk_vbox_new(FALSE, 0);
+ window->priv->containers.s_window = gtk_scrolled_window_new(NULL, NULL);
+ window->priv->containers.paned = gtk_vbox_new(FALSE, 0);
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(window->priv->containers.s_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ gtk_container_add(GTK_CONTAINER(window), window->priv->containers.main_vbox);
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.main_vbox), window->priv->menus.menu, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.main_vbox), window->priv->toolbar.bar, FALSE, FALSE, 0);
+
+ gtk_container_add(GTK_CONTAINER(window->priv->containers.s_window), window->priv->picture_viewer);
+
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.paned), window->priv->containers.s_window, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.paned), window->priv->thumbnail_viewer, FALSE, FALSE, 0);
+
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.main_vbox), window->priv->containers.paned, TRUE, TRUE, 0);
+
+ gtk_box_pack_end(GTK_BOX(window->priv->containers.main_vbox), window->priv->statusbar, FALSE, FALSE, 0);
+
+/* Connect signals */
+
+ /* Thumbnail-viewer */
+ g_signal_connect(window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_horizontal,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_thumbnail_viewer_horizontal), window);
+ g_signal_connect(window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_vertical,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_thumbnail_viewer_vertical), window);
+ g_signal_connect(window->priv->menus.view.show_thumbnail_viewer.menu_item_thumbnail_viewer_hide,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_thumbnail_viewer_hide), window);
+
+ /* Toolbar show/hide */
+ g_signal_connect(window->priv->menus.view.menu_item_show_toolbar,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_toggle_toolbar), window);
+
+ /* Fullscreen */
+ g_signal_connect(window->priv->menus.view.menu_item_fullscreen,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_toggle_fullscreen), window);
+
+ /* Play / Pause */
+ g_signal_connect(window->priv->menus.go.menu_item_play,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_play), window);
+ g_signal_connect(window->priv->menus.go.menu_item_pause,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_pause), window);
+
+ /* Window evets */
+ g_signal_connect(G_OBJECT(window),
+ "window-state-event",
+ G_CALLBACK(cb_rstto_main_window_state_event), NULL);
+ g_signal_connect(G_OBJECT(window),
+ "key-press-event",
+ G_CALLBACK(cb_rstto_main_window_key_press_event), NULL);
+
+ /* Generic */
+ g_signal_connect(window->priv->menus.file.menu_item_open_file,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_open_file), window);
+ g_signal_connect(window->priv->menus.file.menu_item_open_folder,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_open_folder), window);
+ g_signal_connect(window->priv->menus.file.menu_item_close,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_close), window);
+ g_signal_connect(G_OBJECT(window->priv->menus.file.recently.menu),
+ "item-activated", G_CALLBACK(cb_rstto_main_window_open_recent), window);
+ g_signal_connect(window->priv->menus.file.menu_item_quit,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_quit), window);
+ g_signal_connect(window->priv->menus.help.menu_item_about,
+ "activate",
+ G_CALLBACK(cb_rstto_main_window_about), window);
+
+ g_signal_connect(G_OBJECT(window->priv->navigator),
+ "iter-changed",
+ G_CALLBACK(cb_rstto_main_window_nav_iter_changed), window);
+}
+
+static void
+rstto_main_window_class_init(RsttoMainWindowClass *window_class)
+{
+ parent_class = g_type_class_peek_parent(window_class);
+}
+
+GtkWidget *
+rstto_main_window_new()
+{
+ GtkWidget *widget;
+
+ widget = g_object_new(RSTTO_TYPE_MAIN_WINDOW, NULL);
+
+ return widget;
+}
+
+void
+rstto_main_window_set_thumbnail_viewer_orientation(RsttoMainWindow *window, GtkOrientation orientation)
+{
+ window->priv->settings.thumbnail_viewer_orientation = orientation;
+
+ gtk_widget_ref(window->priv->thumbnail_viewer);
+ gtk_widget_ref(window->priv->containers.s_window);
+ gtk_container_remove(GTK_CONTAINER(window->priv->containers.paned), window->priv->thumbnail_viewer);
+ gtk_container_remove(GTK_CONTAINER(window->priv->containers.paned), window->priv->containers.s_window);
+ gtk_widget_destroy(window->priv->containers.paned);
+
+ rstto_thumbnail_viewer_set_orientation(RSTTO_THUMBNAIL_VIEWER(window->priv->thumbnail_viewer), orientation);
+
+ switch (orientation)
+ {
+ case GTK_ORIENTATION_HORIZONTAL:
+ window->priv->containers.paned = gtk_vbox_new(FALSE, 0);
+ break;
+ case GTK_ORIENTATION_VERTICAL:
+ window->priv->containers.paned = gtk_hbox_new(FALSE, 0);
+ break;
+ }
+
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.paned), window->priv->containers.s_window, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.paned), window->priv->thumbnail_viewer, FALSE, FALSE, 0);
+
+ gtk_box_pack_start(GTK_BOX(window->priv->containers.main_vbox), window->priv->containers.paned, TRUE, TRUE, 0);
+ gtk_box_reorder_child(GTK_BOX(window->priv->containers.main_vbox), window->priv->containers.paned, -2);
+ gtk_widget_show(window->priv->containers.paned);
+
+}
+
+void
+rstto_main_window_set_thumbnail_viewer_visibility (RsttoMainWindow *window, gboolean visibility)
+{
+ window->priv->settings.thumbnail_viewer_visibility = visibility;
+ if (visibility == TRUE)
+ {
+ gtk_widget_show(window->priv->thumbnail_viewer);
+ }
+ else
+ {
+ gtk_widget_hide(window->priv->thumbnail_viewer);
+ }
+}
+
+/* CALLBACK FUNCTIONS */
+
+static void
+cb_rstto_main_window_thumbnail_viewer_horizontal(GtkWidget *widget, RsttoMainWindow *window)
+{
+ rstto_main_window_set_thumbnail_viewer_visibility(window, TRUE);
+ rstto_main_window_set_thumbnail_viewer_orientation(window, GTK_ORIENTATION_HORIZONTAL);
+}
+
+static void
+cb_rstto_main_window_thumbnail_viewer_vertical(GtkWidget *widget, RsttoMainWindow *window)
+{
+ rstto_main_window_set_thumbnail_viewer_visibility(window, TRUE);
+ rstto_main_window_set_thumbnail_viewer_orientation(window, GTK_ORIENTATION_VERTICAL);
+}
+
+static void
+cb_rstto_main_window_thumbnail_viewer_hide(GtkWidget *widget, RsttoMainWindow *window)
+{
+ rstto_main_window_set_thumbnail_viewer_visibility(window, FALSE);
+}
+
+static void
+cb_rstto_main_window_toggle_fullscreen(GtkWidget *widget, RsttoMainWindow *window)
+{
+ if(gdk_window_get_state(GTK_WIDGET(window)->window) & GDK_WINDOW_STATE_FULLSCREEN)
+ {
+ gtk_window_unfullscreen(GTK_WINDOW(window));
+ }
+ else
+ {
+ gtk_window_fullscreen(GTK_WINDOW(window));
+ }
+}
+
+static void
+cb_rstto_main_window_toggle_toolbar(GtkWidget *widget, RsttoMainWindow *window)
+{
+ gboolean active = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM(widget));
+
+ window->priv->settings.toolbar_visibility = active;
+
+ if (active == TRUE)
+ {
+ gtk_widget_show(window->priv->toolbar.bar);
+ }
+ else
+ {
+ gtk_widget_hide(window->priv->toolbar.bar);
+ }
+}
+
+static gboolean
+cb_rstto_main_window_key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
+{
+ GtkWindow *window = GTK_WINDOW(widget);
+ RsttoMainWindow *rstto_window = RSTTO_MAIN_WINDOW(widget);
+ if(gtk_window_activate_key(window, event) == FALSE)
+ {
+ switch(event->keyval)
+ {
+ case GDK_F5:
+ break;
+ case GDK_F11:
+ if(gdk_window_get_state(widget->window) & GDK_WINDOW_STATE_FULLSCREEN)
+ {
+ gtk_window_unfullscreen(window);
+ }
+ else
+ {
+ gtk_window_fullscreen(window);
+ }
+ break;
+ case GDK_Home:
+ rstto_navigator_jump_first(rstto_window->priv->navigator);
+ break;
+ case GDK_End:
+ rstto_navigator_jump_last(rstto_window->priv->navigator);
+ break;
+ case GDK_Page_Down:
+ case GDK_space:
+ rstto_navigator_jump_forward(rstto_window->priv->navigator);
+ break;
+ case GDK_Page_Up:
+ case GDK_BackSpace:
+ rstto_navigator_jump_back(rstto_window->priv->navigator);
+ break;
+ case GDK_t:
+ rstto_main_window_set_thumbnail_viewer_visibility(RSTTO_MAIN_WINDOW(window),
+ !(RSTTO_MAIN_WINDOW(window)->priv->settings.thumbnail_viewer_visibility));
+ break;
+ }
+ }
+ return TRUE;
+}
+
+static void
+cb_rstto_main_window_state_event(GtkWidget *widget, GdkEventWindowState *event, gpointer user_data)
+{
+ RsttoMainWindow *window = RSTTO_MAIN_WINDOW(widget);
+ if(event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
+ {
+ if(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
+ {
+ gtk_widget_hide(window->priv->menus.menu);
+ gtk_widget_hide(window->priv->toolbar.bar);
+ gtk_widget_hide(window->priv->statusbar);
+ }
+ else
+ {
+ gtk_widget_show(window->priv->menus.menu);
+ gtk_widget_show(window->priv->toolbar.bar);
+ gtk_widget_show(window->priv->statusbar);
+ }
+ }
+}
+
+static void
+cb_rstto_main_window_play(GtkWidget *widget, RsttoMainWindow *window)
+{
+ gtk_widget_ref(widget);
+ gtk_container_remove(GTK_CONTAINER(window->priv->menus.go.menu), widget);
+ gtk_menu_shell_insert(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_pause, 5);
+ gtk_widget_show_all(window->priv->menus.go.menu_item_pause);
+}
+
+static void
+cb_rstto_main_window_pause(GtkWidget *widget, RsttoMainWindow *window)
+{
+ gtk_widget_ref(widget);
+ gtk_container_remove(GTK_CONTAINER(window->priv->menus.go.menu), widget);
+ gtk_menu_shell_insert(GTK_MENU_SHELL(window->priv->menus.go.menu), window->priv->menus.go.menu_item_play, 5);
+ gtk_widget_show_all(window->priv->menus.go.menu_item_play);
+}
+
+static void
+cb_rstto_main_window_about(GtkWidget *widget, RsttoMainWindow *window)
+{
+ const gchar *authors[] = {
+ _("Developer:"),
+ "Stephan Arts <stephan at xfce.org>",
+ NULL};
+
+ GtkWidget *about_dialog = gtk_about_dialog_new();
+
+ gtk_about_dialog_set_name((GtkAboutDialog *)about_dialog, PACKAGE_NAME);
+ gtk_about_dialog_set_version((GtkAboutDialog *)about_dialog, PACKAGE_VERSION);
+
+ gtk_about_dialog_set_comments((GtkAboutDialog *)about_dialog,
+ _("Ristretto is a fast and lightweight picture-viewer for the Xfce desktop environment."));
+ gtk_about_dialog_set_website((GtkAboutDialog *)about_dialog,
+ "http://goodies.xfce.org/projects/applications/ristretto");
+ gtk_about_dialog_set_logo_icon_name((GtkAboutDialog *)about_dialog,
+ "ristretto");
+ gtk_about_dialog_set_authors((GtkAboutDialog *)about_dialog,
+ authors);
+ gtk_about_dialog_set_translator_credits((GtkAboutDialog *)about_dialog,
+ _("translator-credits"));
+ gtk_about_dialog_set_license((GtkAboutDialog *)about_dialog,
+ xfce_get_license_text(XFCE_LICENSE_TEXT_GPL));
+ gtk_about_dialog_set_copyright((GtkAboutDialog *)about_dialog,
+ "Copyright \302\251 2006-2007 Stephan Arts");
+
+ gtk_dialog_run(GTK_DIALOG(about_dialog));
+
+ gtk_widget_destroy(about_dialog);
+}
+
+static void
+cb_rstto_main_window_quit(GtkWidget *widget, RsttoMainWindow *window)
+{
+ gtk_widget_destroy(GTK_WIDGET(window));
+}
+
+static void
+cb_rstto_main_window_open_file(GtkWidget *widget, RsttoMainWindow *window)
+{
+ GtkWidget *dialog = gtk_file_chooser_dialog_new(_("Open image"),
+ GTK_WINDOW(window),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ NULL);
+
+ gint response = gtk_dialog_run(GTK_DIALOG(dialog));
+ if(response == GTK_RESPONSE_OK)
+ {
+ const gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+
+ ThunarVfsPath *path = thunar_vfs_path_new(filename, NULL);
+ if (path)
+ {
+ ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
+ gchar *file_media = thunar_vfs_mime_info_get_media(info->mime_info);
+ if(!strcmp(file_media, "image"))
+ {
+ RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
+ rstto_navigator_add (window->priv->navigator, entry);
+ gchar *uri = thunar_vfs_path_dup_uri(info->path);
+ gtk_recent_manager_add_item(window->priv->manager, uri);
+ g_free(uri);
+ }
+ g_free(file_media);
+ thunar_vfs_path_unref(path);
+ }
+ else
+ {
+ gtk_widget_destroy(dialog);
+ dialog = gtk_message_dialog_new(GTK_WINDOW(window),
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ _("Could not open file"));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ }
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void
+cb_rstto_main_window_open_folder(GtkWidget *widget, RsttoMainWindow *window)
+{
+ GtkWidget *dialog = gtk_file_chooser_dialog_new(_("Open folder"),
+ GTK_WINDOW(window),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_OK,
+ NULL);
+
+ gint response = gtk_dialog_run(GTK_DIALOG(dialog));
+ if(response == GTK_RESPONSE_OK)
+ {
+ rstto_navigator_clear(window->priv->navigator);
+ const gchar *dir_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ GDir *dir = g_dir_open(dir_name, 0, NULL);
+ if (dir)
+ {
+ const gchar *filename = g_dir_read_name(dir);
+ while (filename)
+ {
+ gchar *path_name = g_strconcat(dir_name, "/", filename, NULL);
+ ThunarVfsPath *path = thunar_vfs_path_new(path_name, NULL);
+ if (path)
+ {
+ ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
+ gchar *file_media = thunar_vfs_mime_info_get_media(info->mime_info);
+ if(!strcmp(file_media, "image"))
+ {
+ RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
+ rstto_navigator_add (window->priv->navigator, entry);
+ }
+ g_free(file_media);
+ thunar_vfs_path_unref(path);
+ }
+ g_free(path_name);
+ filename = g_dir_read_name(dir);
+ }
+ rstto_navigator_jump_first(window->priv->navigator);
+ gchar *uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
+ gtk_recent_manager_add_item(window->priv->manager, uri);
+ g_free(uri);
+
+ }
+
+ }
+ gtk_widget_destroy(dialog);
+}
+
+static void
+cb_rstto_main_window_open_recent(GtkRecentChooser *chooser, RsttoMainWindow *window)
+{
+ gchar *uri = gtk_recent_chooser_get_current_uri(chooser);
+ ThunarVfsPath *path = thunar_vfs_path_new(uri, NULL);
+ if (path)
+ {
+ ThunarVfsInfo *info = thunar_vfs_info_new_for_path(path, NULL);
+ if(info)
+ {
+ if(strcmp(thunar_vfs_mime_info_get_name(info->mime_info), "inode/directory"))
+ {
+ RsttoNavigatorEntry *entry = rstto_navigator_entry_new(info);
+ rstto_navigator_add (window->priv->navigator, entry);
+ }
+ else
+ {
+ rstto_navigator_clear(window->priv->navigator);
+ gchar *dir_path = thunar_vfs_path_dup_string(info->path);
+ GDir *dir = g_dir_open(dir_path, 0, NULL);
+ const gchar *filename = g_dir_read_name(dir);
+ while (filename)
+ {
+ gchar *path_name = g_strconcat(dir_path, "/", filename, NULL);
+ ThunarVfsPath *file_path = thunar_vfs_path_new(path_name, NULL);
+ if (file_path)
+ {
+ ThunarVfsInfo *file_info = thunar_vfs_info_new_for_path(file_path, NULL);
+ gchar *file_media = thunar_vfs_mime_info_get_media(file_info->mime_info);
+ if(!strcmp(file_media, "image"))
+ {
+ RsttoNavigatorEntry *entry = rstto_navigator_entry_new(file_info);
+ rstto_navigator_add (window->priv->navigator, entry);
+ }
+ g_free(file_media);
+ thunar_vfs_path_unref(file_path);
+ }
+ g_free(path_name);
+ filename = g_dir_read_name(dir);
+ }
+ rstto_navigator_jump_first(window->priv->navigator);
+ g_free(dir_path);
+ }
+ gchar *uri = thunar_vfs_path_dup_uri(info->path);
+ gtk_recent_manager_add_item(window->priv->manager, uri);
+ g_free(uri);
+ }
+ thunar_vfs_path_unref(path);
+ }
+
+}
+
+static void
+cb_rstto_main_window_close(GtkWidget *widget, RsttoMainWindow *window)
+{
+ RsttoNavigatorEntry *entry = rstto_navigator_get_file(window->priv->navigator);
+ if (entry)
+ {
+ rstto_navigator_remove(window->priv->navigator, entry);
+ rstto_navigator_entry_free(entry);
+ if (rstto_navigator_get_n_files(window->priv->navigator) == 0)
+ {
+ gtk_widget_set_sensitive(widget, FALSE);
+ }
+ }
+ else
+ {
+ gtk_widget_set_sensitive(widget, FALSE);
+ }
+}
+
+static void
+cb_rstto_main_window_nav_iter_changed(RsttoNavigator *navigator, gint nr, RsttoNavigatorEntry *entry, RsttoMainWindow *window)
+{
+ ThunarVfsInfo *info = NULL;
+ const gchar *filename = NULL;
+
+ if(entry)
+ {
+ info = rstto_navigator_entry_get_info(entry);
+ filename = info->display_name;
+ gtk_widget_set_sensitive(window->priv->menus.file.menu_item_close, TRUE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_first, TRUE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_last, TRUE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_previous, TRUE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_next, TRUE);
+ }
+ else
+ {
+ gtk_widget_set_sensitive(window->priv->menus.file.menu_item_close, FALSE);
+ if (rstto_navigator_get_n_files(window->priv->navigator) == 0)
+ {
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_first, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_last, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_previous, FALSE);
+ gtk_widget_set_sensitive(window->priv->menus.go.menu_item_next, FALSE);
+ }
+ }
+
+}
Added: ristretto/trunk/src/main_window.h
===================================================================
--- ristretto/trunk/src/main_window.h (rev 0)
+++ ristretto/trunk/src/main_window.h 2007-09-25 04:00:53 UTC (rev 3246)
@@ -0,0 +1,71 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __RISTRETTO_MAIN_WINDOW_H__
+#define __RISTRETTO_MAIN_WINDOW_H__
+
+G_BEGIN_DECLS
+
+#define RSTTO_TYPE_MAIN_WINDOW rstto_main_window_get_type()
+
+#define RSTTO_MAIN_WINDOW(obj)( \
+ G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+ RSTTO_TYPE_MAIN_WINDOW, \
+ RsttoMainWindow))
+
+#define RSTTO_IS_MAIN_WINDOW(obj)( \
+ G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+ RSTTO_TYPE_MAIN_WINDOW))
+
+#define RSTTO_MAIN_WINDOW_CLASS(klass)( \
+ G_TYPE_CHECK_CLASS_CAST ((klass), \
+ RSTTO_TYPE_MAIN_WINDOW, \
+ RsttoMainWindowClass))
+
+#define RSTTO_IS_MAIN_WINDOW_CLASS(klass)( \
+ G_TYPE_CHECK_CLASS_TYPE ((klass), \
+ RSTTO_TYPE_MAIN_WINDOW()))
+
+typedef struct _RsttoMainWindowPriv RsttoMainWindowPriv;
+
+typedef struct _RsttoMainWindow RsttoMainWindow;
+
+struct _RsttoMainWindow
+{
+ GtkWindow parent;
+ RsttoMainWindowPriv *priv;
+};
+
+typedef struct _RsttoMainWindowClass RsttoMainWindowClass;
+
+struct _RsttoMainWindowClass
+{
+ GtkWindowClass parent_class;
+};
+
+GType rstto_main_window_get_type();
+
+GtkWidget *rstto_main_window_new();
+
+void
+rstto_main_window_set_thumbnail_viewer_orientation(RsttoMainWindow *window, GtkOrientation orientation);
+void
+rstto_main_window_set_thumbnail_viewer_visibility (RsttoMainWindow *window, gboolean visibility);
+
+G_END_DECLS
+
+#endif /* __RISTRETTO_MAIN_WINDOW_H__ */
+
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/src/picture_viewer.c 2007-09-25 04:00:53 UTC (rev 3246)
@@ -665,7 +665,7 @@
}
g_timer_start(viewer->priv->timer);
if (viewer->priv->timeout_id == 0)
- viewer->priv->timeout_id = g_timeout_add(300, (GSourceFunc)cb_rstto_picture_viewer_update_image, viewer);
+ viewer->priv->timeout_id = g_timeout_add(200, (GSourceFunc)cb_rstto_picture_viewer_update_image, viewer);
}
else
{
Modified: ristretto/trunk/src/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c 2007-09-25 01:02:44 UTC (rev 3245)
+++ ristretto/trunk/src/thumbnail_viewer.c 2007-09-25 04:00:53 UTC (rev 3246)
@@ -145,16 +145,8 @@
static void
rstto_thumbnail_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition)
{
- RsttoThumbnailViewer *viewer = RSTTO_THUMBNAIL_VIEWER(widget);
- switch(viewer->priv->orientation)
- {
- case GTK_ORIENTATION_HORIZONTAL:
- requisition->height = 74;
- break;
- case GTK_ORIENTATION_VERTICAL:
- requisition->width = 74;
- break;
- }
+ requisition->height = 60;
+ requisition->width = 60;
}
static void
More information about the Goodies-commits
mailing list