diff --git a/.gitignore b/.gitignore index c0622f45..12694605 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ nemo-compare/debian/nemo-compare/ nemo-dropbox/debian/nemo-dropbox/ nemo-emblems/debian/nemo-emblems/ nemo-fileroller/debian/nemo-fileroller/ +nemo-fits/debian/nemo-fits/ nemo-image-converter/debian/nemo-image-converter/ nemo-media-columns/debian/nemo-media-columns/ nemo-pastebin/debian/nemo-pastebin/ diff --git a/build-order b/build-order index 3cffa070..52efffcc 100644 --- a/build-order +++ b/build-order @@ -6,6 +6,7 @@ nemo-compare nemo-dropbox nemo-emblems nemo-fileroller +nemo-fits nemo-image-converter nemo-media-columns nemo-pastebin diff --git a/makepot b/makepot index b949496f..992e990a 100755 --- a/makepot +++ b/makepot @@ -30,6 +30,8 @@ potfiles_c=( nemo-dropbox/src/*.h nemo-fileroller/src/*.c nemo-fileroller/src/*.h + nemo-fits/*.c + nemo-fits/*.h nemo-image-converter/data/*.ui.h nemo-image-converter/src/*.c nemo-image-converter/src/*.h diff --git a/nemo-extensions.pot b/nemo-extensions.pot index 62a78466..97cacfa0 100644 --- a/nemo-extensions.pot +++ b/nemo-extensions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-15 14:48+0000\n" +"POT-Creation-Date: 2025-12-29 14:12+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,295 +18,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.py:41 -msgid "Audio" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.py:68 -msgid "No Info" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:1 -msgid "Title:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:2 -msgid "Artist:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:3 -msgid "Album:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:4 -msgid "Album Artist:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:5 -msgid "Genre:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:6 -msgid "Year:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:7 -msgid "Track #:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:8 -msgid "Length:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:9 -msgid "Bitrate:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:10 -msgid "Sample Rate:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:11 -msgid "Encoded by:" -msgstr "" - -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:12 -msgid "Copyright:" -msgstr "" - -#: nemo-compare/src/nemo-compare-preferences.py:99 -msgid "Nemo Compare" -msgstr "" - -#: nemo-compare/src/nemo-compare-preferences.py:107 -msgid "Normal Diff" -msgstr "" - -#: nemo-compare/src/nemo-compare-preferences.py:122 -msgid "Three-Way Diff" -msgstr "" - -#: nemo-compare/src/nemo-compare-preferences.py:137 -msgid "N-Way Diff" -msgstr "" - -#: nemo-compare/src/nemo-compare.py:112 nemo-compare/src/nemo-compare.py:135 -#: nemo-compare/src/nemo-compare.py:114 nemo-compare/src/nemo-compare.py:137 -msgid "Compare to: " -msgstr "" - -#: nemo-compare/src/nemo-compare.py:113 nemo-compare/src/nemo-compare.py:136 -#: nemo-compare/src/nemo-compare.py:115 nemo-compare/src/nemo-compare.py:138 -msgid "Compare to the file previously selected" -msgstr "" - -#: nemo-compare/src/nemo-compare.py:122 nemo-compare/src/nemo-compare.py:124 -msgid "Compare Later" -msgstr "" - -#: nemo-compare/src/nemo-compare.py:123 nemo-compare/src/nemo-compare.py:125 -msgid "Remember file for later comparison" -msgstr "" - -#: nemo-compare/src/nemo-compare.py:147 nemo-compare/src/nemo-compare.py:149 -msgid "Compare" -msgstr "" - -#: nemo-compare/src/nemo-compare.py:148 nemo-compare/src/nemo-compare.py:150 -msgid "Compare selected files" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Art" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Camera" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Danger" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Default" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Development" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Documents" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Downloads" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Favorite" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Games" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Generic" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Important" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Installed" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Mail" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Marketing" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Money" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Multimedia" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "New" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Note" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Ohno" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Package" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "People" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Personal" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Photos" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Plan" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Presentation" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Sales" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Sound" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "System" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Urgent" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Videos" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:50 -#: nemo-emblems/nemo-extension/nemo-emblems.py:58 -#: nemo-emblems/nemo-extension/nemo-emblems.py:55 -msgid "Web" -msgstr "" - -#: nemo-emblems/nemo-extension/nemo-emblems.py:88 -#: nemo-emblems/nemo-extension/nemo-emblems.py:100 -#: nemo-emblems/nemo-extension/nemo-emblems.py:108 -#: nemo-emblems/nemo-extension/nemo-emblems.py:105 -msgid "Emblems" +#: nemo-dropbox/src/nemo-dropbox.c:463 +msgid "Allows managing of Dropbox web service from the context menu" msgstr "" #: nemo-fileroller/src/nemo-fileroller.c:335 @@ -333,160 +46,92 @@ msgstr "" msgid "Create a compressed archive with the selected objects" msgstr "" -#: nemo-gtkhash/src/callbacks.c:47 -msgid "Save Digests" -msgstr "" - -#: nemo-gtkhash/src/callbacks.c:236 -msgid "A GTK+ utility for computing message digests or checksums." -msgstr "" - -#: nemo-gtkhash/src/callbacks.c:240 -msgid "translator-credits" -msgstr "" - -#: nemo-gtkhash/src/callbacks.c:262 -msgid "Select Files" -msgstr "" - -#: nemo-gtkhash/src/gui.c:293 -#, c-format -msgid "Failed to read \"%s\"" -msgstr "" - -#: nemo-gtkhash/src/gui.c:310 -#, c-format -msgid "" -"Failed to read \"%s\":\n" -"%s" -msgstr "" - -#: nemo-gtkhash/src/gui.c:359 -msgid "Not a regular file" -msgstr "" - -#: nemo-gtkhash/src/gui.c:381 -msgid "Unknown error" -msgstr "" - -#: nemo-gtkhash/src/gui.c:383 -#, c-format -msgid "" -"Failed to add \"%s\":\n" -"%s" -msgstr "" - -#: nemo-gtkhash/src/hash.c:74 nemo-gtkhash/src/nautilus/properties-hash.c:61 -#, c-format -msgid "%s of %s - 1 minute left (%s/sec)" -msgstr "" - -#: nemo-gtkhash/src/hash.c:77 nemo-gtkhash/src/nautilus/properties-hash.c:64 -#, c-format -msgid "%s of %s - %u minutes left (%s/sec)" -msgstr "" - -#: nemo-gtkhash/src/hash.c:81 nemo-gtkhash/src/nautilus/properties-hash.c:68 -#, c-format -msgid "%s of %s - 1 second left (%s/sec)" -msgstr "" - -#: nemo-gtkhash/src/hash.c:84 nemo-gtkhash/src/nautilus/properties-hash.c:71 -#, c-format -msgid "%s of %s - %u seconds left (%s/sec)" +#: nemo-fileroller/src/nemo-fileroller.c:398 +msgid "Allows managing of archives from the context menu" msgstr "" -#: nemo-gtkhash/src/main.c:86 -msgid "Check against the specified digest or checksum" +#: nemo-fits/nemo-fits.c:82 nemo-audio-tab/nemo-extension/nemo-audio-tab.py:71 +msgid "No Info" msgstr "" -#: nemo-gtkhash/src/main.c:86 -msgid "DIGEST" +#: nemo-fits/nemo-fits.c:132 +msgid "Error:" msgstr "" -#: nemo-gtkhash/src/main.c:90 -msgid "Read program data from the specified directory" +#: nemo-fits/nemo-fits.c:132 +msgid "Could not open FITS file" msgstr "" -#: nemo-gtkhash/src/main.c:90 -msgid "DIRECTORY" +#: nemo-fits/nemo-fits.c:148 +msgid " (width x height)" msgstr "" -#: nemo-gtkhash/src/main.c:94 -msgid "Hash the specified text" +#: nemo-fits/nemo-fits.c:150 +msgid " (width x height x depth)" msgstr "" -#: nemo-gtkhash/src/main.c:94 -msgid "TEXT" +#: nemo-fits/nemo-fits.c:152 +msgid "Dimensions:" msgstr "" -#: nemo-gtkhash/src/main.c:98 -msgid "Show version information" +#: nemo-fits/nemo-fits.c:165 +msgid "Binning:" msgstr "" -#: nemo-gtkhash/src/main.c:102 -msgid "[FILE|URI...]" +#: nemo-fits/nemo-fits.c:182 +msgid "Data Type:" msgstr "" -#: nemo-gtkhash/src/prefs.c:76 -msgid "Failed to enable any supported hash functions." +#: nemo-fits/nemo-fits.c:188 +msgid "Object:" msgstr "" -#: nemo-gtkhash/src/nautilus/properties.c:436 -#: nemo-gtkhash/src/nautilus/properties.c:439 -#: nemo-gtkhash/src/nautilus/properties.c:441 -msgid "Digests" +#: nemo-fits/nemo-fits.c:192 +msgid "Telescope:" msgstr "" -#: nemo-image-converter/src/nemo-image-converter.c:121 -msgid "_Resize Images..." +#: nemo-fits/nemo-fits.c:196 +msgid "Instrument:" msgstr "" -#: nemo-image-converter/src/nemo-image-converter.c:122 -msgid "Resize each selected image" +#: nemo-fits/nemo-fits.c:200 +msgid "Observer:" msgstr "" -#: nemo-image-converter/src/nemo-image-converter.c:131 -msgid "Ro_tate Images..." +#: nemo-fits/nemo-fits.c:206 +msgid "Date Observed:" msgstr "" -#: nemo-image-converter/src/nemo-image-converter.c:132 -msgid "Rotate each selected image" +#: nemo-fits/nemo-fits.c:214 nemo-fits/nemo-fits.c:217 +msgid "Exposure Time:" msgstr "" -#: nemo-image-converter/src/nemo-image-resizer.c:211 -#: nemo-image-converter/src/nemo-image-rotator.c:208 -msgid "_Skip" +#: nemo-fits/nemo-fits.c:222 +msgid "Filter:" msgstr "" -#: nemo-image-converter/src/nemo-image-resizer.c:213 -#: nemo-image-converter/src/nemo-image-rotator.c:210 -msgid "_Retry" +#: nemo-fits/nemo-fits.c:226 +msgid "Bayer Pattern:" msgstr "" -#: nemo-image-converter/src/nemo-image-resizer.c:291 -#, c-format -msgid "Resizing image: %d of %d" +#: nemo-fits/nemo-fits.c:234 nemo-fits/nemo-fits.c:237 +msgid "Gain:" msgstr "" -#: nemo-image-converter/src/nemo-image-resizer.c:296 -#, c-format -msgid "Resizing \"%s\"" +#: nemo-fits/nemo-fits.c:246 nemo-fits/nemo-fits.c:249 +msgid "Offset:" msgstr "" -#: nemo-image-converter/src/nemo-image-resizer.c:314 -#: nemo-image-converter/src/nemo-image-rotator.c:313 -msgid "Please enter a valid filename suffix!" +#: nemo-fits/nemo-fits.c:258 nemo-fits/nemo-fits.c:261 +msgid "CCD Temperature:" msgstr "" -#: nemo-image-converter/src/nemo-image-rotator.c:290 -#, c-format -msgid "Rotating image: %d of %d" +#: nemo-fits/nemo-fits.c:273 +msgid "Image" msgstr "" -#: nemo-image-converter/src/nemo-image-rotator.c:295 -#, c-format -msgid "Rotating \"%s\"" +#: nemo-fits/nemo-fits.c:301 +msgid "View FITS image information from the properties tab" msgstr "" #: nemo-image-converter/data/nemo-image-resize.ui.h:1 @@ -620,112 +265,59 @@ msgstr "" msgid "_Rotate" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:73 -#: nemo-media-columns/nemo-media-columns.py:92 -msgid "Title" +#: nemo-image-converter/src/nemo-image-converter.c:121 +msgid "_Resize Images..." msgstr "" -#: nemo-media-columns/nemo-media-columns.py:74 -#: nemo-media-columns/nemo-media-columns.py:93 -msgid "Album" +#: nemo-image-converter/src/nemo-image-converter.c:122 +msgid "Resize each selected image" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:75 -#: nemo-media-columns/nemo-media-columns.py:94 -msgid "Artist" +#: nemo-image-converter/src/nemo-image-converter.c:131 +msgid "Ro_tate Images..." msgstr "" -#: nemo-media-columns/nemo-media-columns.py:76 -#: nemo-media-columns/nemo-media-columns.py:95 -msgid "Track" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:77 -#: nemo-media-columns/nemo-media-columns.py:96 -msgid "Genre" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:78 -#: nemo-media-columns/nemo-media-columns.py:97 -msgid "Date" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:79 -#: nemo-media-columns/nemo-media-columns.py:98 -msgid "Bitrate" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:80 -#: nemo-media-columns/nemo-media-columns.py:99 -msgid "Pages" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:81 -#: nemo-media-columns/nemo-media-columns.py:100 -msgid "Sample Rate" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:82 -#: nemo-media-columns/nemo-media-columns.py:101 -msgid "Length" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:83 -#: nemo-media-columns/nemo-media-columns.py:104 -msgid "EXIF Date" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:84 -#: nemo-media-columns/nemo-media-columns.py:105 -msgid "EXIF Software" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:85 -#: nemo-media-columns/nemo-media-columns.py:106 -msgid "EXIF Flash" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:86 -#: nemo-media-columns/nemo-media-columns.py:107 -msgid "EXIF Image Size" -msgstr "" - -#: nemo-media-columns/nemo-media-columns.py:87 -#: nemo-media-columns/nemo-media-columns.py:108 -msgid "EXIF Rating" +#: nemo-image-converter/src/nemo-image-converter.c:132 +msgid "Rotate each selected image" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:88 -#: nemo-media-columns/nemo-media-columns.py:109 -msgid "Image Size" +#: nemo-image-converter/src/nemo-image-converter.c:153 +msgid "Allows image resizing and rotation from the context menu" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:1 -msgid "Nemo Pastebin" +#: nemo-image-converter/src/nemo-image-resizer.c:211 +#: nemo-image-converter/src/nemo-image-rotator.c:208 +msgid "_Skip" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:2 -msgid "Pastebin" +#: nemo-image-converter/src/nemo-image-resizer.c:213 +#: nemo-image-converter/src/nemo-image-rotator.c:210 +msgid "_Retry" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:3 -msgid "Open the browser" +#: nemo-image-converter/src/nemo-image-resizer.c:291 +#, c-format +msgid "Resizing image: %d of %d" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:4 -msgid "Show a notification" +#: nemo-image-converter/src/nemo-image-resizer.c:296 +#, c-format +msgid "Resizing \"%s\"" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:5 -msgid "Username" +#: nemo-image-converter/src/nemo-image-resizer.c:314 +#: nemo-image-converter/src/nemo-image-rotator.c:314 +msgid "Please enter a valid filename suffix!" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:6 -msgid "Password" +#: nemo-image-converter/src/nemo-image-rotator.c:291 +#, c-format +msgid "Rotating image: %d of %d" msgstr "" -#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:7 -msgid "Author" +#: nemo-image-converter/src/nemo-image-rotator.c:296 +#, c-format +msgid "Rotating \"%s\"" msgstr "" #: nemo-preview/src/libnemo-preview/nemo-preview-file-loader.c:639 @@ -739,50 +331,6 @@ msgstr[1] "" msgid "Empty Folder" msgstr "" -#: nemo-preview/src/js/ui/fallbackRenderer.js:123 -#: nemo-preview/src/js/ui/fallbackRenderer.js:125 -msgid "Type" -msgstr "" - -#: nemo-preview/src/js/ui/fallbackRenderer.js:124 -#: nemo-preview/src/js/ui/fallbackRenderer.js:133 -#: nemo-preview/src/js/ui/fallbackRenderer.js:139 -#: nemo-preview/src/js/ui/spinnerBox.js:60 -#: nemo-preview/src/js/ui/fallbackRenderer.js:126 -#: nemo-preview/src/js/ui/fallbackRenderer.js:135 -#: nemo-preview/src/js/ui/fallbackRenderer.js:141 -#: nemo-preview/src/js/ui/spinnerBox.js:61 -msgid "Loading..." -msgstr "" - -#: nemo-preview/src/js/ui/fallbackRenderer.js:132 -#: nemo-preview/src/js/ui/fallbackRenderer.js:134 -msgid "Size" -msgstr "" - -#: nemo-preview/src/js/ui/fallbackRenderer.js:138 -#: nemo-preview/src/js/ui/fallbackRenderer.js:140 -msgid "Modified" -msgstr "" - -#: nemo-preview/src/js/viewers/audio.js:176 -#: nemo-preview/src/js/viewers/audio.js:177 -#: nemo-preview/src/js/viewers/audio.js:179 -msgid "from" -msgstr "" - -#: nemo-preview/src/js/viewers/audio.js:178 -#: nemo-preview/src/js/viewers/audio.js:179 -#: nemo-preview/src/js/viewers/audio.js:181 -msgid "by" -msgstr "" - -#: nemo-preview/src/js/viewers/xreader.js:81 -#: nemo-preview/src/js/viewers/xreader.js:82 -#, javascript-format -msgid "%d of %d" -msgstr "" - #: nemo-repairer/src/encoding-dialog.c:195 #, c-format msgid "" @@ -836,6 +384,10 @@ msgstr "" msgid "Select a filename from sub menu items." msgstr "" +#: nemo-repairer/src/nemo-filename-repairer.c:523 +msgid "Allows filename encoding repair from the context menu" +msgstr "" + #: nemo-repairer/src/repair-dialog.c:82 msgid "Arabic - CP1256" msgstr "" @@ -939,6 +491,30 @@ msgstr "" msgid "Include _subdirectories" msgstr "" +#: nemo-seahorse/nemo-ext/nemo-seahorse.c:159 +msgid "Encrypt..." +msgstr "" + +#: nemo-seahorse/nemo-ext/nemo-seahorse.c:160 +msgid "Encrypt (and optionally sign) the selected file" +msgid_plural "Encrypt the selected files" +msgstr[0] "" +msgstr[1] "" + +#: nemo-seahorse/nemo-ext/nemo-seahorse.c:166 +msgid "Sign" +msgstr "" + +#: nemo-seahorse/nemo-ext/nemo-seahorse.c:167 +msgid "Sign the selected file" +msgid_plural "Sign the selected files" +msgstr[0] "" +msgstr[1] "" + +#: nemo-seahorse/nemo-ext/nemo-seahorse.c:181 +msgid "Allows encryption and decryption of OpenPGP files from the context menu" +msgstr "" + #: nemo-seahorse/tool/seahorse-notification.c:569 msgid "Key Imported" msgid_plural "Keys Imported" @@ -1405,33 +981,47 @@ msgstr "" msgid "Progress Title" msgstr "" -#: nemo-seahorse/nemo-ext/nemo-seahorse.c:159 -msgid "Encrypt..." +#: nemo-share/interfaces/share-dialog.ui.h:1 nemo-share/src/nemo-share.c:1235 +msgid "Folder Sharing" msgstr "" -#: nemo-seahorse/nemo-ext/nemo-seahorse.c:160 -msgid "Encrypt (and optionally sign) the selected file" -msgid_plural "Encrypt the selected files" -msgstr[0] "" -msgstr[1] "" +#: nemo-share/interfaces/share-dialog.ui.h:2 +msgid "Share this _folder" +msgstr "" -#: nemo-seahorse/nemo-ext/nemo-seahorse.c:166 -msgid "Sign" +#: nemo-share/interfaces/share-dialog.ui.h:3 +msgid "Share _name:" msgstr "" -#: nemo-seahorse/nemo-ext/nemo-seahorse.c:167 -msgid "Sign the selected file" -msgid_plural "Sign the selected files" -msgstr[0] "" -msgstr[1] "" +#: nemo-share/interfaces/share-dialog.ui.h:4 +msgid "Co_mment:" +msgstr "" + +#: nemo-share/interfaces/share-dialog.ui.h:5 +msgid "_Allow others to create and delete files in this folder" +msgstr "" + +#: nemo-share/interfaces/share-dialog.ui.h:6 +msgid "_Guest access (for people without a user account)" +msgstr "" + +#: nemo-share/interfaces/share-dialog.ui.h:7 +msgid "Install" +msgstr "" + +#: nemo-share/interfaces/share-dialog.ui.h:8 +msgid "" +"Samba needs to be installed, appropriate firewall rules need to be added and " +"your user account needs to join the 'sambashare' group." +msgstr "" -#: nemo-share/src/nemo-share.c:121 +#: nemo-share/src/nemo-share.c:119 #, c-format msgid "" "Nemo needs to add some permissions to your folder \"%s\" in order to share it" msgstr "" -#: nemo-share/src/nemo-share.c:129 +#: nemo-share/src/nemo-share.c:127 #, c-format msgid "" "The folder \"%s\" needs the following extra permissions for sharing to " @@ -1439,92 +1029,91 @@ msgid "" "%s%s%sDo you want Nemo to add these permissions to the folder automatically?" msgstr "" -#: nemo-share/src/nemo-share.c:133 +#: nemo-share/src/nemo-share.c:131 msgid " - read permission by others\n" msgstr "" -#: nemo-share/src/nemo-share.c:134 +#: nemo-share/src/nemo-share.c:132 msgid " - write permission by others\n" msgstr "" -#: nemo-share/src/nemo-share.c:135 +#: nemo-share/src/nemo-share.c:133 msgid " - execute permission by others\n" msgstr "" -#: nemo-share/src/nemo-share.c:139 +#: nemo-share/src/nemo-share.c:137 msgid "Add the permissions automatically" msgstr "" -#: nemo-share/src/nemo-share.c:165 +#: nemo-share/src/nemo-share.c:163 #, c-format msgid "Could not change the permissions of folder \"%s\"" msgstr "" -#: nemo-share/src/nemo-share.c:467 +#: nemo-share/src/nemo-share.c:465 msgid "The share name cannot be empty" msgstr "" -#: nemo-share/src/nemo-share.c:473 +#: nemo-share/src/nemo-share.c:471 msgid "The share name is too long" msgstr "" -#: nemo-share/src/nemo-share.c:486 +#: nemo-share/src/nemo-share.c:484 #, c-format msgid "Error while getting share information: %s" msgstr "" -#: nemo-share/src/nemo-share.c:494 +#: nemo-share/src/nemo-share.c:492 msgid "Another share has the same name" msgstr "" -#: nemo-share/src/nemo-share.c:505 +#: nemo-share/src/nemo-share.c:503 msgid "" "This folder is located in an encrypted directory. It will not be accessible " "by other users unless the option 'force user' is specified in /etc/samba/smb." "conf." msgstr "" -#: nemo-share/src/nemo-share.c:529 +#: nemo-share/src/nemo-share.c:527 #, c-format msgid "The permissions for %s prevent other users from accessing this share" msgstr "" -#: nemo-share/src/nemo-share.c:577 nemo-share/src/nemo-share.c:881 +#: nemo-share/src/nemo-share.c:575 nemo-share/src/nemo-share.c:879 msgid "Modify _Share" msgstr "" -#: nemo-share/src/nemo-share.c:577 nemo-share/src/nemo-share.c:883 +#: nemo-share/src/nemo-share.c:575 nemo-share/src/nemo-share.c:881 msgid "Create _Share" msgstr "" -#: nemo-share/src/nemo-share.c:613 +#: nemo-share/src/nemo-share.c:611 msgid "Please reboot to finalize changes" msgstr "" -#: nemo-share/src/nemo-share.c:616 +#: nemo-share/src/nemo-share.c:614 msgid "" "Something went wrong. You may need to install samba and add your user to " "the 'sambashare' group manually." msgstr "" -#: nemo-share/src/nemo-share.c:769 +#: nemo-share/src/nemo-share.c:767 msgid "There was an error while getting the sharing information" msgstr "" -#: nemo-share/src/nemo-share.c:1176 nemo-share/src/nemo-share.c:1177 -msgid "Share" +#: nemo-share/src/nemo-share.c:1113 +msgid "Allows you to quickly share a folder from the context menu" msgstr "" -#: nemo-share/src/nemo-share.c:1236 nemo-share/interfaces/share-dialog.ui.h:1 -#: nemo-share/src/nemo-share.c:1237 -msgid "Folder Sharing" +#: nemo-share/src/nemo-share.c:1175 +msgid "Share" msgstr "" -#: nemo-share/src/nemo-share.c:1277 nemo-share/src/nemo-share.c:1278 +#: nemo-share/src/nemo-share.c:1276 msgid "Sharing Options" msgstr "" -#: nemo-share/src/nemo-share.c:1278 nemo-share/src/nemo-share.c:1279 +#: nemo-share/src/nemo-share.c:1277 msgid "Share this Folder" msgstr "" @@ -1586,196 +1175,481 @@ msgid "" "first and add a new one" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:2 -msgid "Share this _folder" +#: nemo-preview/src/js/ui/fallbackRenderer.js:125 +msgid "Type" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:3 -msgid "Share _name:" +#: nemo-preview/src/js/ui/fallbackRenderer.js:126 +#: nemo-preview/src/js/ui/fallbackRenderer.js:135 +#: nemo-preview/src/js/ui/fallbackRenderer.js:141 +#: nemo-preview/src/js/ui/spinnerBox.js:61 +msgid "Loading..." msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:4 -msgid "Co_mment:" +#: nemo-preview/src/js/ui/fallbackRenderer.js:134 +msgid "Size" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:5 -msgid "_Allow others to create and delete files in this folder" +#: nemo-preview/src/js/ui/fallbackRenderer.js:140 +msgid "Modified" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:6 -msgid "_Guest access (for people without a user account)" +#: nemo-preview/src/js/viewers/audio.js:179 +msgid "from" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:7 -msgid "Install" +#: nemo-preview/src/js/viewers/audio.js:181 +msgid "by" msgstr "" -#: nemo-share/interfaces/share-dialog.ui.h:8 -msgid "" -"Samba needs to be installed, appropriate firewall rules need to be added and " -"your user account needs to join the 'sambashare' group." +#: nemo-preview/src/js/viewers/xreader.js:82 +#, javascript-format +msgid "%d of %d" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:44 -msgid "Nemo-Terminal Preferences" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:1 +msgid "Title:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:70 -msgid "Visible by default" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:2 +msgid "Artist:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:74 -msgid "Top" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:3 +msgid "Album:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:75 -msgid "Bottom" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:4 +msgid "Album Artist:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:80 -msgid "Terminal position" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:5 +msgid "Genre:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:84 -msgid "Independent" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:6 +msgid "Year:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:85 -msgid "Terminal follows view location" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:7 +msgid "Track #:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:92 -msgid "Location mode" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:8 +msgid "Length:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:100 -msgid "Terminal bell" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:9 +msgid "Bitrate:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:109 -msgid "Default number of lines for the terminal" -msgstr "" - -#: nemo-terminal/src/nemo-terminal-prefs.py:149 -msgid "Keyboard shortcut" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:10 +msgid "Sample Rate:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:152 -msgid "Basic" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:11 +msgid "Encoded by:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:171 -msgid "Shell to use (leave blank for system default)" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.glade.h:12 +msgid "Copyright:" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:187 -msgid "Terminal erase line key sequence" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.py:44 +msgid "Audio" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:195 -msgid "Terminal restore line key sequence" +#: nemo-audio-tab/nemo-extension/nemo-audio-tab.py:199 +msgid "View audio tag information from the properties tab" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:203 -msgid "Change directory command" +#: nemo-compare/src/nemo-compare-preferences.py:99 +msgid "Nemo Compare" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:208 -msgid "Restore defaults" +#: nemo-compare/src/nemo-compare-preferences.py:107 +msgid "Normal Diff" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:217 -msgid "Sequences must be escaped according to python rules." +#: nemo-compare/src/nemo-compare-preferences.py:122 +msgid "Three-Way Diff" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:218 -#, python-format -msgid "'%s' is replaced by the quoted directory name." +#: nemo-compare/src/nemo-compare-preferences.py:137 +msgid "N-Way Diff" msgstr "" -#: nemo-terminal/src/nemo-terminal-prefs.py:225 -msgid "Advanced" +#: nemo-compare/src/nemo-compare.py:117 nemo-compare/src/nemo-compare.py:140 +msgid "Compare to: " msgstr "" -#: nemo-terminal/src/nemo_terminal.py:149 -msgid "Paste Filenames" +#: nemo-compare/src/nemo-compare.py:118 nemo-compare/src/nemo-compare.py:141 +msgid "Compare to the file previously selected" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:102 -msgid "Composer" +#: nemo-compare/src/nemo-compare.py:127 +msgid "Compare Later" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:103 -msgid "Description" +#: nemo-compare/src/nemo-compare.py:128 +msgid "Remember file for later comparison" msgstr "" -#: nemo-fileroller/src/nemo-fileroller.c:398 -msgid "Allows managing of archives from the context menu" +#: nemo-compare/src/nemo-compare.py:152 +msgid "Compare" msgstr "" -#: nemo-share/src/nemo-share.c:1115 -msgid "Allows you to quickly share a folder from the context menu" +#: nemo-compare/src/nemo-compare.py:153 +msgid "Compare selected files" msgstr "" -#: nemo-emblems/nemo-extension/nemo-emblems.py:19 -msgid "Nemo Emblems" +#: nemo-compare/src/nemo-compare.py:171 +msgid "Allows file comparison from the context menu" msgstr "" -#: nemo-emblems/nemo-extension/nemo-emblems.py:20 -#: nemo-emblems/nemo-extension/nemo-emblems.py:163 +#: nemo-emblems/nemo-extension/nemo-emblems.py:22 msgid "Change a folder or file emblem" msgstr "" -#: nemo-dropbox/src/nemo-dropbox.c:462 nemo-dropbox/src/nemo-dropbox.c:463 -msgid "Allows managing of Dropbox web service from the context menu" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Art" msgstr "" -#: nemo-image-converter/src/nemo-image-converter.c:153 -msgid "Allows image resizing and rotation from the context menu" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Camera" msgstr "" -#: nemo-repairer/src/nemo-filename-repairer.c:523 -msgid "Allows filename encoding repair from the context menu" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Danger" msgstr "" -#: nemo-seahorse/nemo-ext/nemo-seahorse.c:181 -msgid "Allows encryption and decryption of OpenPGP files from the context menu" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Default" msgstr "" -#: nemo-audio-tab/nemo-extension/nemo-audio-tab.py:195 -msgid "View audio tag information from the properties tab" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Development" msgstr "" -#: nemo-compare/src/nemo-compare.py:168 -msgid "Allows file comparison from the context menu" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Documents" msgstr "" -#: nemo-media-columns/nemo-media-columns.py:369 -msgid "Provides additional columns for the list view" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Downloads" msgstr "" -#: nemo-terminal/src/nemo_terminal.py:579 -msgid "Embedded terminal for Nemo" +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Favorite" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Games" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Generic" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Important" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Installed" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Mail" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Marketing" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Money" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Multimedia" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "New" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Note" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Ohno" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Package" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "People" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Personal" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Photos" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Plan" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Presentation" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Sales" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Sound" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "System" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Urgent" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Videos" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:60 +msgid "Web" +msgstr "" + +#: nemo-emblems/nemo-extension/nemo-emblems.py:110 +msgid "Emblems" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:104 +msgid "Title" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:105 +msgid "Album" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:106 +msgid "Artist" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:107 +msgid "Track" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:108 +msgid "Genre" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:109 +msgid "Date" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:110 +msgid "Bitrate" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:111 +msgid "Pages" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:112 +msgid "Sample Rate" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:113 +msgid "Length" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:114 +msgid "Composer" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:115 +msgid "Description" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:116 +msgid "EXIF Date" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:117 +msgid "EXIF Software" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:118 +msgid "EXIF Flash" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:119 +msgid "EXIF Image Size" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:120 +msgid "EXIF Rating" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:121 +msgid "Image Size" +msgstr "" + +#: nemo-media-columns/nemo-media-columns.py:381 +msgid "Provides additional columns for the list view" msgstr "" -#: nemo-pastebin/src/nemo-pastebin.py:111 +#: nemo-pastebin/src/nemo-pastebin.py:114 msgid "Unable to read or parse the result page." msgstr "" -#: nemo-pastebin/src/nemo-pastebin.py:112 +#: nemo-pastebin/src/nemo-pastebin.py:115 msgid "It could be a server timeout or a change server side. Try later." msgstr "" -#: nemo-pastebin/src/nemo-pastebin.py:169 +#: nemo-pastebin/src/nemo-pastebin.py:172 #, python-format msgid "Pastebin to %s" msgstr "" -#: nemo-pastebin/src/nemo-pastebin.py:170 +#: nemo-pastebin/src/nemo-pastebin.py:173 #, python-format msgid "Send this file to %s" msgstr "" -#: nemo-pastebin/src/nemo-pastebin.py:196 +#: nemo-pastebin/src/nemo-pastebin.py:199 msgid "Send files to a paste service via the context menu" msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:1 +msgid "Nemo Pastebin" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:2 +msgid "Pastebin" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:3 +msgid "Open the browser" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:4 +msgid "Show a notification" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:5 +msgid "Username" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:6 +msgid "Password" +msgstr "" + +#: nemo-pastebin/data/nemo-pastebin-configurator.ui.h:7 +msgid "Author" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:44 +msgid "Nemo-Terminal Preferences" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:70 +msgid "Visible by default" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:74 +msgid "Top" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:75 +msgid "Bottom" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:80 +msgid "Terminal position" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:84 +msgid "Independent" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:85 +msgid "Terminal follows view location" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:92 +msgid "Location mode" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:100 +msgid "Terminal bell" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:109 +msgid "Default number of lines for the terminal" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:149 +msgid "Keyboard shortcut" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:152 +msgid "Basic" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:171 +msgid "Shell to use (leave blank for system default)" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:187 +msgid "Terminal erase line key sequence" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:195 +msgid "Terminal restore line key sequence" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:203 +msgid "Change directory command" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:208 +msgid "Restore defaults" +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:217 +msgid "Sequences must be escaped according to python rules." +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:218 +#, python-format +msgid "'%s' is replaced by the quoted directory name." +msgstr "" + +#: nemo-terminal/src/nemo-terminal-prefs.py:225 +msgid "Advanced" +msgstr "" + +#: nemo-terminal/src/nemo_terminal.py:153 +msgid "Paste Filenames" +msgstr "" + +#: nemo-terminal/src/nemo_terminal.py:583 +msgid "Embedded terminal for Nemo" +msgstr "" diff --git a/nemo-fits/README b/nemo-fits/README new file mode 100644 index 00000000..3e443fba --- /dev/null +++ b/nemo-fits/README @@ -0,0 +1,19 @@ +Nemo Extension For fits Files + +About +nemo-fits is a nemo extension which provides: +A thumbnail of .fits files. +Information from the .fits file header in the Image tab. + +Project page: +https://github.com/linuxmint/nemo-extensions/ + +Bug Tracker +https://github.com/linuxmint/nemo-extensions/issues/ + +Install +$ ./configure +$ make +# make install + +Please read INSTALL, for detailed installation instructions. diff --git a/nemo-fits/debian/changelog b/nemo-fits/debian/changelog new file mode 100644 index 00000000..33f035f8 --- /dev/null +++ b/nemo-fits/debian/changelog @@ -0,0 +1,7 @@ +nemo-fits (6.6.0-1) wilma; urgency=medium + + * Initial release + * View FITS image metadata in properties tab + * Provide thumbnails + + -- Linux Mint Tue, 24 Dec 2024 12:00:00 +0000 diff --git a/nemo-fits/debian/control b/nemo-fits/debian/control new file mode 100644 index 00000000..9adb8571 --- /dev/null +++ b/nemo-fits/debian/control @@ -0,0 +1,33 @@ +Source: nemo-fits +Section: gnome +Priority: optional +Maintainer: Linux Mint +Build-Depends: debhelper-compat (= 13), + meson (>= 0.56.0), + libglib2.0-dev (>= 2.50.0), + libgtk-3-dev (>= 3.22.0), + libnemo-extension-dev (>= 3.0.0), + libcfitsio-dev (>= 3.0), + gettext, + intltool +Standards-Version: 4.6.0 +Homepage: https://github.com/linuxmint/nemo-extensions + +Package: nemo-fits +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends}, + nemo (>= 3.0.0), + libcfitsio9 | libcfitsio10 +Description: Nemo extension for FITS files + A Nemo extension that provides an "Image" tab + in the file properties dialog for FITS files commonly used in astronomy. + . + The extension displays metadata from FITS headers including: + - Image dimensions and data type + - Object name and observation details + - Telescope and instrument information + - Date of observation and exposure time + - Filter and coordinate system information + . + A thumbnailer is also provided. diff --git a/nemo-fits/debian/rules b/nemo-fits/debian/rules new file mode 100755 index 00000000..b10a2207 --- /dev/null +++ b/nemo-fits/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+bindnow + +%: + dh $@ --buildsystem=meson + +# Don't generate a shlibs file for the plugin +override_dh_makeshlibs: \ No newline at end of file diff --git a/nemo-fits/fits-thumbnailer.c b/nemo-fits/fits-thumbnailer.c new file mode 100644 index 00000000..f8832901 --- /dev/null +++ b/nemo-fits/fits-thumbnailer.c @@ -0,0 +1,163 @@ +#include +#include +#include +#include +#include +#include +#include + +#define MAX_SIZE 256 + +static gboolean +create_thumbnail (const char *input, const char *output, int size) +{ + fitsfile *fptr = NULL; + int status = 0, naxis; + long naxes[10], width, height, npixels; + double *img_data = NULL; + guchar *rgb_data = NULL; + GdkPixbuf *pixbuf = NULL, *scaled = NULL; + GError *error = NULL; + gboolean success = FALSE; + + if (fits_open_file (&fptr, input, READONLY, &status)) + return FALSE; + + if (fits_read_key (fptr, TINT, "NAXIS", &naxis, NULL, &status) || naxis < 2) + goto cleanup; + + for (int i = 1; i <= naxis && i <= 10; i++) { + char key[9]; + g_snprintf (key, sizeof(key), "NAXIS%d", i); + status = 0; + if (fits_read_key (fptr, TLONG, key, &naxes[i-1], NULL, &status)) + goto cleanup; + } + + width = naxes[0]; + height = naxes[1]; + npixels = width * height; + + if (width == 0 || height == 0) + goto cleanup; + + img_data = g_malloc (npixels * sizeof(double)); + if (!img_data) + goto cleanup; + + long fpixel[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + if (fits_read_pix (fptr, TDOUBLE, fpixel, npixels, NULL, img_data, NULL, &status)) + goto cleanup_data; + + double min_val = INFINITY, max_val = -INFINITY; + for (long i = 0; i < npixels; i++) { + if (isfinite(img_data[i])) { + if (img_data[i] < min_val) min_val = img_data[i]; + if (img_data[i] > max_val) max_val = img_data[i]; + } + } + + rgb_data = g_malloc (npixels * 3); + if (!rgb_data) + goto cleanup_data; + + double range = max_val - min_val; + if (range > 0) { + for (long i = 0; i < npixels; i++) { + guchar val = isfinite(img_data[i]) ? + (guchar)((img_data[i] - min_val) / range * 255.0) : 0; + + long row = i / width; + long col = i % width; + long idx = (height - 1 - row) * width + col; + + rgb_data[idx * 3] = rgb_data[idx * 3 + 1] = rgb_data[idx * 3 + 2] = val; + } + } else { + memset (rgb_data, 128, npixels * 3); + } + + pixbuf = gdk_pixbuf_new_from_data (rgb_data, GDK_COLORSPACE_RGB, FALSE, + 8, width, height, width * 3, + (GdkPixbufDestroyNotify)g_free, NULL); + if (!pixbuf) { + g_free (rgb_data); + goto cleanup_data; + } + + if (width > size || height > size) { + double scale = MIN((double)size / width, (double)size / height); + int new_w = MAX(1, (int)(width * scale)); + int new_h = MAX(1, (int)(height * scale)); + + scaled = gdk_pixbuf_scale_simple (pixbuf, new_w, new_h, GDK_INTERP_BILINEAR); + g_object_unref (pixbuf); + pixbuf = scaled; + } + + success = gdk_pixbuf_save (pixbuf, output, "png", &error, NULL); + if (!success && error) { + g_warning ("Save failed: %s", error->message); + g_error_free (error); + } + + g_object_unref (pixbuf); + +cleanup_data: + g_free (img_data); + +cleanup: + if (fptr) + fits_close_file (fptr, &status); + + return success; +} + +int +main (int argc, char **argv) +{ + int size = MAX_SIZE; + gboolean show_help = FALSE, show_version = FALSE; + + GOptionEntry entries[] = { + { "size", 's', 0, G_OPTION_ARG_INT, &size, "Thumbnail size (default: 256)", "SIZE" }, + { "help", 'h', 0, G_OPTION_ARG_NONE, &show_help, "Show help", NULL }, + { "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, "Show version", NULL }, + { NULL } + }; + + GOptionContext *context = g_option_context_new ("INPUT OUTPUT"); + g_option_context_add_main_entries (context, entries, NULL); + + GError *error = NULL; + if (!g_option_context_parse (context, &argc, &argv, &error)) { + g_printerr ("Option parsing failed: %s\n", error->message); + g_error_free (error); + g_option_context_free (context); + return 1; + } + + g_option_context_free (context); + + if (show_version) { + g_print ("fits-thumbnailer 6.4.0\n"); + return 0; + } + + if (show_help || argc != 3) { + g_print ("Usage: fits-thumbnailer [OPTIONS] INPUT OUTPUT\n" + "Generate thumbnails for FITS image files\n\n" + "Options:\n" + " -s, --size SIZE Thumbnail size in pixels (default: 256)\n" + " -h, --help Show this help\n" + " -v, --version Show version\n"); + return show_help ? 0 : 1; + } + + if (size < 1 || size > 2048) { + g_printerr ("Invalid size: %d (must be 1-2048)\n", size); + return 1; + } + + return create_thumbnail (argv[1], argv[2], size) ? 0 : 1; +} diff --git a/nemo-fits/fits.thumbnailer b/nemo-fits/fits.thumbnailer new file mode 100644 index 00000000..14f7fb81 --- /dev/null +++ b/nemo-fits/fits.thumbnailer @@ -0,0 +1,4 @@ +[Thumbnailer Entry] +TryExec=fits-thumbnailer +Exec=fits-thumbnailer -s %s %i %o +MimeType=image/fits;image/x-fits;application/fits; diff --git a/nemo-fits/meson.build b/nemo-fits/meson.build new file mode 100644 index 00000000..35b902d8 --- /dev/null +++ b/nemo-fits/meson.build @@ -0,0 +1,73 @@ +project('nemo-fits', + 'c', + version: '6.6.0', + meson_version: '>=0.56.0' +) + +project_url = 'https://github.com/linuxmint/nemo-extensions' + +i18n = import('i18n') +gnome = import('gnome') + +# Dependencies +glib_dep = dependency('glib-2.0', version: '>= 2.50.0') +gtk_dep = dependency('gtk+-3.0', version: '>= 3.22.0') +gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0') +nemo_extension_dep = dependency('libnemo-extension', version: '>= 3.0.0') +cfitsio_dep = dependency('cfitsio', version: '>= 3.0') + +# Configuration - Use repository-wide translation domain +conf_data = configuration_data() +conf_data.set_quoted('VERSION', meson.project_version()) +conf_data.set_quoted('GETTEXT_PACKAGE', 'nemo-extensions') +conf_data.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('localedir'))) + +config_h = configure_file( + output: 'config.h', + configuration: conf_data +) + +# Extension source files +extension_sources = files( + 'nemo-fits.c', +) + +extension_headers = files( + 'nemo-fits.h', +) + +extension_deps = [ + glib_dep, + gtk_dep, + nemo_extension_dep, + cfitsio_dep, +] + +# Include directories +include_dirs = include_directories('.') + +# Build the extension as a shared module +shared_module('nemo-fits', + sources: [extension_sources, extension_headers, config_h], + dependencies: extension_deps, + include_directories: include_dirs, + install: true, + install_dir: join_paths(get_option('libdir'), 'nemo', 'extensions-3.0'), + name_prefix: 'lib', + name_suffix: 'so' +) + +# Build the thumbnailer executable +thumbnailer_sources = files('fits-thumbnailer.c') + +executable('fits-thumbnailer', + sources: thumbnailer_sources, + dependencies: [glib_dep, gdk_pixbuf_dep, cfitsio_dep], + install: true, + install_dir: get_option('bindir') +) + +# Install thumbnailer definition +install_data('fits.thumbnailer', + install_dir: join_paths(get_option('datadir'), 'thumbnailers') +) \ No newline at end of file diff --git a/nemo-fits/nemo-fits.c b/nemo-fits/nemo-fits.c new file mode 100644 index 00000000..ee43305c --- /dev/null +++ b/nemo-fits/nemo-fits.c @@ -0,0 +1,330 @@ +#include +#include "nemo-fits.h" + +#include +#include +#include +#include +#include +#include +#include + +static GType provider_types[1]; + +struct _NemoFitsExtension { + GObject parent_slot; +}; + +struct _NemoFitsExtensionClass { + GObjectClass parent_slot; +}; + +static void property_page_provider_iface_init (NemoPropertyPageProviderIface *iface); +static void info_provider_iface_init (NemoInfoProviderIface *iface); +static void name_and_desc_provider_iface_init (NemoNameAndDescProviderIface *iface); + +G_DEFINE_DYNAMIC_TYPE_EXTENDED (NemoFitsExtension, nemo_fits_extension, G_TYPE_OBJECT, 0, + G_IMPLEMENT_INTERFACE_DYNAMIC (NEMO_TYPE_PROPERTY_PAGE_PROVIDER, + property_page_provider_iface_init) + G_IMPLEMENT_INTERFACE_DYNAMIC (NEMO_TYPE_INFO_PROVIDER, + info_provider_iface_init) + G_IMPLEMENT_INTERFACE_DYNAMIC (NEMO_TYPE_NAME_AND_DESC_PROVIDER, + name_and_desc_provider_iface_init)) + +static void +nemo_fits_extension_init (NemoFitsExtension *fits) +{ +} + +static void +nemo_fits_extension_class_init (NemoFitsExtensionClass *class) +{ +} + +static void +nemo_fits_extension_class_finalize (NemoFitsExtensionClass *class) +{ +} + +static gboolean +is_fits (const char *uri) +{ + return g_str_has_suffix (uri, ".fits") || + g_str_has_suffix (uri, ".fit") || + g_str_has_suffix (uri, ".fts") || + g_str_has_suffix (uri, ".FITS") || + g_str_has_suffix (uri, ".FIT") || + g_str_has_suffix (uri, ".FTS"); +} + +static char * +read_keyword (fitsfile *fptr, const char *key) +{ + char value[FLEN_VALUE]; + int status = 0; + + return fits_read_key_str (fptr, key, value, NULL, &status) ? NULL : g_strdup (value); +} + +static void +add_row (GtkGrid *grid, int row, const char *label, const char *value) +{ + GtkWidget *label_widget, *value_widget; + char *markup; + + label_widget = gtk_label_new (NULL); + markup = g_markup_printf_escaped ("%s", label); + gtk_label_set_markup (GTK_LABEL (label_widget), markup); + g_free (markup); + gtk_widget_set_halign (label_widget, GTK_ALIGN_END); + gtk_grid_attach (grid, label_widget, 0, row, 1, 1); + + value_widget = gtk_label_new (value ? value : _("No Info")); + gtk_widget_set_halign (value_widget, GTK_ALIGN_START); + gtk_label_set_selectable (GTK_LABEL (value_widget), TRUE); + gtk_grid_attach (grid, value_widget, 1, row, 1, 1); +} + +static void +add_separator (GtkGrid *grid, int row) +{ + GtkWidget *sep = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); + gtk_widget_set_margin_top (sep, 6); + gtk_widget_set_margin_bottom (sep, 6); + gtk_grid_attach (grid, sep, 0, row, 2, 1); +} + +static GList * +get_pages (NemoPropertyPageProvider *provider, GList *files) +{ + NemoFileInfo *file; + GtkWidget *grid; + NemoPropertyPage *page; + char *uri, *path, *value; + fitsfile *fptr = NULL; + int status = 0, naxis, bitpix, row = 0; + long naxes[10]; + + if (!files || files->next) + return NULL; + + file = files->data; + uri = nemo_file_info_get_uri (file); + + if (!is_fits (uri)) { + g_free (uri); + return NULL; + } + + path = g_filename_from_uri (uri, NULL, NULL); + g_free (uri); + + if (!path) + return NULL; + + grid = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (grid), 12); + gtk_grid_set_row_spacing (GTK_GRID (grid), 6); + gtk_container_set_border_width (GTK_CONTAINER (grid), 12); + + if (fits_open_file (&fptr, path, READONLY, &status)) { + g_free (path); + add_row (GTK_GRID (grid), row++, _("Error:"), _("Could not open FITS file")); + goto done; + } + + if (!fits_read_key (fptr, TINT, "NAXIS", &naxis, NULL, &status) && naxis > 0) { + GString *dims = g_string_new (""); + for (int i = 1; i <= naxis && i <= 10; i++) { + char key[9]; + g_snprintf (key, sizeof(key), "NAXIS%d", i); + status = 0; + if (!fits_read_key (fptr, TLONG, key, &naxes[i-1], NULL, &status)) { + if (i > 1) g_string_append (dims, " x "); + g_string_append_printf (dims, "%ld", naxes[i-1]); + } + } + if (naxis == 2) + g_string_append (dims, _(" (width x height)")); + else if (naxis == 3) + g_string_append (dims, _(" (width x height x depth)")); + + add_row (GTK_GRID (grid), row++, _("Dimensions:"), dims->str); + g_string_free (dims, TRUE); + } + + status = 0; + { + int xbin = 0, ybin = 0; + int has_x = !fits_read_key (fptr, TINT, "XBINNING", &xbin, NULL, &status); + status = 0; + int has_y = !fits_read_key (fptr, TINT, "YBINNING", &ybin, NULL, &status); + + if (has_x || has_y) { + char *bin = g_strdup_printf ("%d x %d", has_x ? xbin : 0, has_y ? ybin : 0); + add_row (GTK_GRID (grid), row++, _("Binning:"), bin); + g_free (bin); + } + } + + status = 0; + if (!fits_read_key (fptr, TINT, "BITPIX", &bitpix, NULL, &status)) { + const char *type = NULL; + switch (bitpix) { + case 8: type = "8-bit unsigned integer"; break; + case 16: type = "16-bit signed integer"; break; + case 32: type = "32-bit signed integer"; break; + case 64: type = "64-bit signed integer"; break; + case -32: type = "32-bit floating point"; break; + case -64: type = "64-bit floating point"; break; + } + if (type) + add_row (GTK_GRID (grid), row++, _("Data Type:"), _(type)); + } + + add_separator (GTK_GRID (grid), row++); + + value = read_keyword (fptr, "OBJECT"); + add_row (GTK_GRID (grid), row++, _("Object:"), value); + g_free (value); + + value = read_keyword (fptr, "TELESCOP"); + add_row (GTK_GRID (grid), row++, _("Telescope:"), value); + g_free (value); + + value = read_keyword (fptr, "INSTRUME"); + add_row (GTK_GRID (grid), row++, _("Instrument:"), value); + g_free (value); + + value = read_keyword (fptr, "OBSERVER"); + add_row (GTK_GRID (grid), row++, _("Observer:"), value); + g_free (value); + + add_separator (GTK_GRID (grid), row++); + + value = read_keyword (fptr, "DATE-OBS"); + add_row (GTK_GRID (grid), row++, _("Date Observed:"), value); + g_free (value); + + status = 0; + { + double exp; + if (!fits_read_key (fptr, TDOUBLE, "EXPTIME", &exp, NULL, &status)) { + char *str = g_strdup_printf ("%.1f s", exp); + add_row (GTK_GRID (grid), row++, _("Exposure Time:"), str); + g_free (str); + } else { + add_row (GTK_GRID (grid), row++, _("Exposure Time:"), NULL); + } + } + + value = read_keyword (fptr, "FILTER"); + add_row (GTK_GRID (grid), row++, _("Filter:"), value); + g_free (value); + + value = read_keyword (fptr, "BAYERPAT"); + add_row (GTK_GRID (grid), row++, _("Bayer Pattern:"), value); + g_free (value); + + status = 0; + { + double gain; + if (!fits_read_key (fptr, TDOUBLE, "GAIN", &gain, NULL, &status)) { + char *str = g_strdup_printf ("%.2f", gain); + add_row (GTK_GRID (grid), row++, _("Gain:"), str); + g_free (str); + } else { + add_row (GTK_GRID (grid), row++, _("Gain:"), NULL); + } + } + + status = 0; + { + int offset; + if (!fits_read_key (fptr, TINT, "OFFSET", &offset, NULL, &status)) { + char *str = g_strdup_printf ("%d", offset); + add_row (GTK_GRID (grid), row++, _("Offset:"), str); + g_free (str); + } else { + add_row (GTK_GRID (grid), row++, _("Offset:"), NULL); + } + } + + status = 0; + { + double temp; + if (!fits_read_key (fptr, TDOUBLE, "CCD-TEMP", &temp, NULL, &status)) { + char *str = g_strdup_printf ("%.2f °C", temp); + add_row (GTK_GRID (grid), row++, _("CCD Temperature:"), str); + g_free (str); + } else { + add_row (GTK_GRID (grid), row++, _("CCD Temperature:"), NULL); + } + } + + add_separator (GTK_GRID (grid), row++); + fits_close_file (fptr, &status); + +done: + g_free (path); + gtk_widget_show_all (grid); + + page = nemo_property_page_new ("NemoFitsExtension::property_page", + gtk_label_new (_("Image")), grid); + + return g_list_append (NULL, page); +} + +static NemoOperationResult +update_file_info (NemoInfoProvider *provider, NemoFileInfo *file, + GClosure *update_complete, NemoOperationHandle **handle) +{ + return NEMO_OPERATION_COMPLETE; +} + +static void +property_page_provider_iface_init (NemoPropertyPageProviderIface *iface) +{ + iface->get_pages = get_pages; +} + +static void +info_provider_iface_init (NemoInfoProviderIface *iface) +{ + iface->update_file_info = update_file_info; +} + +static GList * +get_name_and_desc (NemoNameAndDescProvider *provider) +{ + return g_list_append (NULL, g_strdup_printf ("nemo-fits:::%s", + _("View FITS image information from the properties tab"))); +} + +static void +name_and_desc_provider_iface_init (NemoNameAndDescProviderIface *iface) +{ + iface->get_name_and_desc = get_name_and_desc; +} + +void +nemo_module_initialize (GTypeModule *module) +{ + nemo_fits_extension_register_type (module); + provider_types[0] = NEMO_TYPE_FITS_EXTENSION; + + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +} + +void +nemo_module_shutdown (void) +{ +} + +void +nemo_module_list_types (const GType **types, int *num_types) +{ + *types = provider_types; + *num_types = G_N_ELEMENTS (provider_types); +} diff --git a/nemo-fits/nemo-fits.h b/nemo-fits/nemo-fits.h new file mode 100644 index 00000000..77a7e92d --- /dev/null +++ b/nemo-fits/nemo-fits.h @@ -0,0 +1,19 @@ +#ifndef NEMO_FITS_EXTENSION_H +#define NEMO_FITS_EXTENSION_H + +#include + +G_BEGIN_DECLS + +#define NEMO_TYPE_FITS_EXTENSION (nemo_fits_extension_get_type ()) +#define NEMO_FITS_EXTENSION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NEMO_TYPE_FITS_EXTENSION, NemoFitsExtension)) +#define NEMO_IS_FITS_EXTENSION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NEMO_TYPE_FITS_EXTENSION)) + +typedef struct _NemoFitsExtension NemoFitsExtension; +typedef struct _NemoFitsExtensionClass NemoFitsExtensionClass; + +GType nemo_fits_extension_get_type (void); + +G_END_DECLS + +#endif /* NEMO_FITS_EXTENSION_H */