nautilus-compare-0.0.4+po1/0000755000175000017500000000000012146705202013563 5ustar andandnautilus-compare-0.0.4+po1/data/0000755000175000017500000000000012146705172014502 5ustar andandnautilus-compare-0.0.4+po1/data/nautilus-compare-notification0000644000175000017500000000104112146705172022375 0ustar andandName: Nautilus Compare Extension requires restarting Nautilus Priority: High Terminal: False DontShowAfterReboot: True DisplayIf: pgrep nautilus Description: Nautilus Compare Extension has been installed. Restart of Nautilus is needed to make it work properly (hint: 'nautilus -q' in terminal). Or if you prefer, a session restart will be more than enough. After restart, a new option will emerge in Nautilus context menu. This option lets you compare selected files with your preferred 'diff' tool as well as select files for later comparison. nautilus-compare-0.0.4+po1/data/nautilus-compare-preferences.desktop0000644000175000017500000000037212146705172023666 0ustar andand [Desktop Entry] Name=Nautilus Compare Extension Preferences Type=Application GenericName=Preferences for Nautilus Compare Extension Icon=gtk-preferences Categories=Settings; X-Ubuntu-Gettext-Domain=nautilus-compare Exec=nautilus-compare-preferences nautilus-compare-0.0.4+po1/po/0000755000175000017500000000000012146705172014207 5ustar andandnautilus-compare-0.0.4+po1/po/nautilus-compare.pot0000644000175000017500000000264312146705172020230 0ustar andand# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "" #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "" nautilus-compare-0.0.4+po1/po/ms.po0000644000175000017500000000345112146705172015171 0ustar andand# Malay translation for nautilus-compare # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2011-12-31 18:52+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-01-01 05:55+0000\n" "X-Generator: Launchpad (build 14560)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Banding dengan " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Banding dengan fail yang sebelum ini diingati" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Banding Kemudian" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Ingat fail untuk perbandingan nanti" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Bandingkan fail pilihan dengan fail yang diingati sebelum ini" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Banding" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Bandingkan fail pilihan" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Keutamaan Sambungan Nautilus Compare" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Beza Biasa" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Beza Tiga-Cara" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Beza N-Cara" nautilus-compare-0.0.4+po1/po/fr.po0000644000175000017500000000355712146705172015170 0ustar andand# French translation for nautilus-compare # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2013-01-08 18:53+0000\n" "Last-Translator: Vincent RUIZ \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-09 05:22+0000\n" "X-Generator: Launchpad (build 16412)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Comparer à " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Comparer au fichier déjà sélectionné" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Comparer plus tard" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Selectionner pour comparaison ultérieure" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Comparer les fichiers sélectionnés avec le fichier déjà mémorisé" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Comparer" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Comparer les fichiers sélectionnés" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Préférences de l'extension Nautilus Compare" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Diff normal" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Triple comparaison" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Comparaison multiple" nautilus-compare-0.0.4+po1/po/es.po0000644000175000017500000000347212146705172015164 0ustar andand# Spanish translation for nautilus-compare # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2013-01-19 23:11+0000\n" "Last-Translator: Gabriel P-C \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-01-21 04:57+0000\n" "X-Generator: Launchpad (build 16430)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Comparar a " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Comparar al archivo memorizado anteriormente" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Coparar más tarde" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Memorizar archivo para compararlo más tarde" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "" "Comparar archivos seleccionados con los archivos memorizados anteriormente" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Comparar" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Comparar archivos seleccionados" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Preferencias de la extensión Compare" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Diff normal" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "" nautilus-compare-0.0.4+po1/po/de.po0000644000175000017500000000352512146705172015144 0ustar andand# German translation for nautilus-compare # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2012-09-10 18:10+0000\n" "Last-Translator: Philip Laube \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-09-11 05:14+0000\n" "X-Generator: Launchpad (build 15924)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Vergleiche mit " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Vergleiche die zuvor gemerkte Datei" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Vergleiche später" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Merke diese Datei für einen späteren Vergleich" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Vergleiche ausgewählte Dateien mit einer zuvor germerkten Datei" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Vergleiche" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Vergleiche ausgewählte Dateien" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Einstellungen für die Nautilus-Vergleichserweiterung" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Normales Diff" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Dreiweg Diff" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "N-weg Diff" nautilus-compare-0.0.4+po1/po/el.po0000644000175000017500000000356012146705172015153 0ustar andand# Greek translation for nautilus-compare # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2012-12-06 19:32+0000\n" "Last-Translator: giorgos000 \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-12-07 04:54+0000\n" "X-Generator: Launchpad (build 16341)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Σύγκριση με " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Σύγκριση με το προηγούμενο αρχείο" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Σύγκριση" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Σύγκριση επιλεγμένων αρχείων" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Προτιμήσεις επέκτασης σύγκρισης του Ναυτίλου" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Κανονική διαφορά" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Τριπλή διαφορά" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Πολλαπλή διαφορά" nautilus-compare-0.0.4+po1/po/gl.po0000644000175000017500000000355712146705172015163 0ustar andand# Galician translation for nautilus-compare # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2011-12-16 09:45+0000\n" "Last-Translator: Andres Prieto \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2011-12-17 06:47+0000\n" "X-Generator: Launchpad (build 14525)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Comparar con " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Comparar co ficheiro recordado antes" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Comparar máis tarde" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Recordar o ficheiro para comparar máis tarde" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "" "Comparar os ficheiros seleccionados co ficheiro recordado anteriormente" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Comparar" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Comparar ficheiros seleccionados" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Preferencias da extensión Nautilus Compare" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Diferenza normal" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Diferenza a tres bandas" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Diferenza a N bandas" nautilus-compare-0.0.4+po1/po/it.po0000644000175000017500000000356712146705172015176 0ustar andand# Italian translation for nautilus-compare # Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2012-03-09 13:20+0000\n" "Last-Translator: Claudio Arseni \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-03-10 05:25+0000\n" "X-Generator: Launchpad (build 14914)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Confronta con " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Confronta con il file memorizzato in precedenza" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Confronta più tadi" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Memorizza il file per confrontarlo più tardi" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Confronta i file selezionati con il file memorizzato in precedenza" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Confronta" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Confronta i file selezionati" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Preferenze dell'estensione di confronto per Nautilus" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Diff normale" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Diff su tre file" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Diff su N file" nautilus-compare-0.0.4+po1/po/et.po0000644000175000017500000000352412146705172015163 0ustar andand# Estonian translation for the nautilus-compare # Copyright (C) 2011 Guido Tabbernuk # This file is distributed under the same license as the nautilus-compare package. # Guido Tabbernuk , 2011. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare 0.0.1\n" "Report-Msgid-Bugs-To: boamaod@gmail.com\n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2011-10-30 22:21+0000\n" "Last-Translator: tabbernuk \n" "Language-Team: eesti \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2011-10-31 05:46+0000\n" "X-Generator: Launchpad (build 14197)\n" "Language: et\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Võrdle " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Võrdleb varem meelde jäetud failiga" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Võrdle hiljem" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Jätab faili meelde, et hiljem seda võrrelda" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Võrdleb valitud faile varem meelde jäetud failiga" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Võrdle" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Võrdleb valitud faile omavahel" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Nautilus Compare' laienduse eelistused" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "Tavaline diff" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "Kolmesuunaline diff" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "Paljutasemelne diff" nautilus-compare-0.0.4+po1/po/pt_BR.po0000644000175000017500000000354612146705172015565 0ustar andand# Brazilian Portuguese translation for nautilus-compare # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the nautilus-compare package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: nautilus-compare\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2011-10-29 02:21+0300\n" "PO-Revision-Date: 2013-03-30 14:49+0000\n" "Last-Translator: Eliel Miller \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-03-31 05:39+0000\n" "X-Generator: Launchpad (build 16546)\n" #: src/nautilus-compare.py:106 src/nautilus-compare.py:129 msgid "Compare to " msgstr "Comparar com " #: src/nautilus-compare.py:107 msgid "Compare to the file remembered before" msgstr "Comparar com arquivo marcado anteriormente" #: src/nautilus-compare.py:116 msgid "Compare Later" msgstr "Comparar mais tarde" #: src/nautilus-compare.py:117 msgid "Remember file for later comparison" msgstr "Marcar arquivo para comparar mais tarde" #: src/nautilus-compare.py:130 msgid "Compare selected files to the file remembered before" msgstr "Comparar arquivos selecionados com arquivo marcado anteriormente" #: src/nautilus-compare.py:141 msgid "Compare" msgstr "Comparar" #: src/nautilus-compare.py:142 msgid "Compare selected files" msgstr "Comparar arquivos selecionados" #: src/nautilus-compare-setup.py:92 msgid "Nautilus Compare Extension Preferences" msgstr "Preferências da extensão de comparação de arquivos do Nautilus" #: src/nautilus-compare-setup.py:100 msgid "Normal Diff" msgstr "" #: src/nautilus-compare-setup.py:112 msgid "Three-Way Diff" msgstr "" #: src/nautilus-compare-setup.py:124 msgid "N-Way Diff" msgstr "" nautilus-compare-0.0.4+po1/src/0000755000175000017500000000000012146705172014360 5ustar andandnautilus-compare-0.0.4+po1/src/nautilus-compare-preferences.py0000755000175000017500000001153212146705172022526 0ustar andand#!/usr/bin/python # -*- coding: utf-8 -*- # nautilus-compare --- Context menu extension for Nautilus file manager # Copyright (C) 2011 Guido Tabbernuk # # 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 3 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import gtk import os import gettext import locale import utils def combo_add_and_select(combo, text): '''Convenience function to add/selct item in ComboBoxEntry''' combo.append_text(text) model=combo.get_model() iter=model.get_iter_first() while model.iter_next(iter): iter=model.iter_next(iter) combo.set_active_iter(iter) class NautilusCompareExtensionPreferences: '''The main class for preferences dialog using PyGTK''' combo = None combo_3way = None combo_multi = None def cancel_event(self, widget, event, data = None): '''This callback quits the program''' gtk.main_quit() return False def changed_cb(self, combo): '''Any of the comboboxes has changed, change the data accordingly''' model = combo.get_model() index = combo.get_active() entry = combo.get_child().get_text() selection="" if len(entry)>0: selection=entry elif index: selection=model[index][0] if combo is self.combo: self.config.diff_engine = selection elif combo is self.combo_3way: self.config.diff_engine_3way = selection elif combo is self.combo_multi: self.config.diff_engine_multi = selection return def save_event(self, widget, event, data = None): '''This callback saves the settings and quits the program.''' self.config.save() gtk.main_quit() return False def __init__(self): '''Load config and create UI''' self.config = utils.NautilusCompareConfig() self.config.load() # find out if some new engines have been installed self.config.add_missing_predefined_engines() # initialize i18n locale.setlocale(locale.LC_ALL, '') gettext.bindtextdomain(utils.APP) gettext.textdomain(utils.APP) _ = gettext.gettext self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) #self.window.set_position(gtk.WIN_POS_CENTER) icon=self.window.render_icon(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_DIALOG) self.window.set_icon(icon) self.window.set_resizable(False) self.window.set_title(_("Nautilus Compare Extension Preferences")) self.window.connect("delete_event",self.cancel_event) self.window.set_border_width(15) main_vbox = gtk.VBox(False, 0) self.window.add(main_vbox) # normal diff frame = gtk.Frame(_("Normal Diff")) self.combo = gtk.combo_box_entry_new_text() for text in self.config.engines: if text == self.config.diff_engine: combo_add_and_select(self.combo, text) else: self.combo.append_text(text) self.combo.connect('changed', self.changed_cb) frame.add(self.combo) main_vbox.pack_start(frame, True, True, 0) # 3-way diff frame_3way = gtk.Frame(_("Three-Way Diff")) self.combo_3way = gtk.combo_box_entry_new_text() for text in self.config.engines: if text == self.config.diff_engine_3way: combo_add_and_select(self.combo_3way, text) else: self.combo_3way.append_text(text) self.combo_3way.connect('changed', self.changed_cb) frame_3way.add(self.combo_3way) main_vbox.pack_start(frame_3way, True, True, 0) # n-way diff frame_multi = gtk.Frame(_("N-Way Diff")) self.combo_multi = gtk.combo_box_entry_new_text() for text in self.config.engines: if text == self.config.diff_engine_multi: combo_add_and_select(self.combo_multi, text) else: self.combo_multi.append_text(text) self.combo_multi.connect('changed', self.changed_cb) frame_multi.add(self.combo_multi) main_vbox.pack_start(frame_multi, True, True, 0) separator = gtk.HBox(False,5) main_vbox.pack_start(separator, False, True, 5) # cancel / ok confirm_hbox = gtk.HBox(False,0) main_vbox.pack_start(confirm_hbox, False, False, 0) cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL) cancel_button.connect_object("clicked", self.cancel_event, self.window, None) confirm_hbox.pack_start(cancel_button, True, True, 5) ok_button = gtk.Button(stock=gtk.STOCK_OK) ok_button.connect_object("clicked", self.save_event, self.window, None) confirm_hbox.pack_start(ok_button, True, True, 5) self.window.show_all() def main(self): '''GTK main method''' gtk.main() if __name__ == "__main__": prefs = NautilusCompareExtensionPreferences() prefs.main() nautilus-compare-0.0.4+po1/src/nautilus-compare.py0000644000175000017500000001165212146705172020227 0ustar andand#!/usr/bin/python # -*- coding: utf-8 -*- # nautilus-compare --- Context menu extension for Nautilus file manager # Copyright (C) 2011 Guido Tabbernuk # # 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 3 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import sys import os import urllib import gettext import locale from gi.repository import Nautilus, GObject, Gio sys.path.append("/usr/share/nautilus-compare") import utils class NautilusCompareExtension(GObject.GObject, Nautilus.MenuProvider): '''Class for the extension itself''' # to hold an item for later comparison for_later = None def __init__(self): '''Load config''' self.config = utils.NautilusCompareConfig() self.config.load() def menu_activate_cb(self, menu, paths): '''Telling from amount of paths runs appropriate comparator engine''' if len(paths) == 1: self.for_later = paths[0] return args = "" for path in paths: args += "\"%s\" " % path cmd = None if len(paths) == 2: cmd = (self.config.diff_engine + " " + args + "&") elif len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0: cmd = (self.config.diff_engine_3way + " " + args + "&") elif len(self.config.diff_engine_multi.strip()) > 0: cmd = (self.config.diff_engine_multi + " " + args + "&") if cmd is not None: os.system(cmd) def valid_file(self, file): '''Tests if the file is valid comparable''' if file.get_uri_scheme() == 'file' and file.get_file_type() in (Gio.FileType.DIRECTORY, Gio.FileType.REGULAR, Gio.FileType.SYMBOLIC_LINK): return True else: return False def get_file_items(self, window, files): '''Main method to detect what choices should be offered in the context menu''' paths = [] for file in files: if self.valid_file(file): path = urllib.unquote(file.get_uri()[7:]) paths.append(path) # no files selected if len(paths) < 1: return # initialize i18n locale.setlocale(locale.LC_ALL, '') gettext.bindtextdomain(utils.APP) gettext.textdomain(utils.APP) _ = gettext.gettext item1 = None item2 = None item3 = None # for paths with remembered items new_paths = list(paths) # exactly one file selected if len(paths) == 1: # and one was already selected for later comparison if self.for_later is not None: # we don't want to compare file to itself if self.for_later not in paths: item1 = Nautilus.MenuItem( name="NautilusCompareExtension::CompareTo", label=_('Compare to ') + self.for_later, tip=_("Compare to the file remembered before") ) # compare the one saved for later to the one selected now new_paths.insert(0, self.for_later) # if only one file selected, we offer to remember it for later anyway item3 = Nautilus.MenuItem( name="NautilusCompareExtension::CompareLater", label=_('Compare Later'), tip=_("Remember file for later comparison") ) # can always compare, if more than one selected else: # if we have already remembered one file and add some more, we can do n-way compare if self.for_later is not None: if self.for_later not in paths: # if multi compare enabled and in case of 2 files selected 3way compare enabled if len(self.config.diff_engine_multi.strip()) > 0 or (len(paths) == 2 and len(self.config.diff_engine_3way.strip()) > 0): item1 = Nautilus.MenuItem( name="NautilusCompareExtension::MultiCompare", label=_('Compare to ') + self.for_later, tip=_("Compare selected files to the file remembered before") ) # compare the one saved for later to the ones selected now new_paths.insert(0, self.for_later) # if multi compare enabled, we can compare any number # if there are two files selected we can always compare # if three files selected and 3-way compare is on, we can do it if len(self.config.diff_engine_multi.strip()) > 0 or len(paths) == 2 or (len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0): item2 = Nautilus.MenuItem( name="NautilusCompareExtension::CompareWithin", label=_('Compare'), tip=_("Compare selected files") ) if item1: item1.connect('activate', self.menu_activate_cb, new_paths) if item2: item2.connect('activate', self.menu_activate_cb, paths) if item3: item3.connect('activate', self.menu_activate_cb, paths) items = [item1, item2, item3] while None in items: items.remove(None) return items nautilus-compare-0.0.4+po1/src/utils.py0000644000175000017500000001077512146705172016104 0ustar andand#!/usr/bin/python # -*- coding: utf-8 -*- # nautilus-compare --- Context menu extension for Nautilus file manager # Copyright (C) 2011 Guido Tabbernuk # # 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 3 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import os import xdg.BaseDirectory import ConfigParser APP = 'nautilus-compare' # settings CONFIG_FILES = [os.path.join(xdg.BaseDirectory.xdg_config_home, APP + ".conf"), os.path.join("/etc", APP + ".conf")] CONFIG_FILE = CONFIG_FILES[0] SETTINGS_MAIN = 'Settings' DIFF_PATH = 'diff_engine_path' DIFF_PATH_3WAY = 'diff_engine_path_3way' DIFF_PATH_MULTI = 'diff_engine_path_multi' COMPARATORS = 'defined_comparators' # ordered by preference PREDEFINED_ENGINES = ['meld', 'kdiff3', 'diffuse', 'kompare', 'fldiff', 'tkdiff'] DEFAULT_DIFF_ENGINE = "meld" # where comparator engines are sought COMPARATOR_PATHS = ['/usr/bin', '/usr/local/bin'] class NautilusCompareConfig: diff_engine = DEFAULT_DIFF_ENGINE diff_engine_3way = DEFAULT_DIFF_ENGINE diff_engine_multi = "" engines = [] config = None def load(self): '''Loads config options if available. If not, creates them using the best heuristics availabe.''' self.config = ConfigParser.ConfigParser() # allow system-wide default settings from /etc/* if os.path.isfile(CONFIG_FILES[0]): self.config.read(CONFIG_FILES[0]) else: self.config.read(CONFIG_FILES[1]) # read from start or flush from the point where cancelled try: self.diff_engine = self.config.get(SETTINGS_MAIN, DIFF_PATH) self.diff_engine_3way = self.config.get(SETTINGS_MAIN, DIFF_PATH_3WAY) self.diff_engine_multi = self.config.get(SETTINGS_MAIN, DIFF_PATH_MULTI) self.engines = eval(self.config.get(SETTINGS_MAIN, COMPARATORS)) except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): # maybe settings were half loaded when exception was thrown try: self.config.add_section(SETTINGS_MAIN) except ConfigParser.DuplicateSectionError: pass self.add_missing_predefined_engines() # add choice for "engine not enabled" # (always needed, because at least self.engines cannot be loaded) self.engines.insert(0, "") # if default engine is not installed, replace with preferred installed engine if len(self.engines) > 0: if self.diff_engine not in self.engines: self.diff_engine = self.engines[0] if self.diff_engine_3way not in self.engines: self.diff_engine_3way = self.engines[0] if self.diff_engine_multi not in self.engines: self.diff_engine_multi = self.engines[0] self.engines.sort() self.config.set(SETTINGS_MAIN, DIFF_PATH, self.diff_engine) self.config.set(SETTINGS_MAIN, DIFF_PATH_3WAY, self.diff_engine_3way) self.config.set(SETTINGS_MAIN, DIFF_PATH_MULTI, self.diff_engine_multi) self.config.set(SETTINGS_MAIN, COMPARATORS, self.engines) with open(CONFIG_FILE, 'wb') as f: self.config.write(f) def add_missing_predefined_engines(self): '''Adds predefined engines which are installed, but missing in engines list.''' system_utils = [] for path in COMPARATOR_PATHS: system_utils += os.listdir(path) for engine in PREDEFINED_ENGINES: if engine not in self.engines and engine in system_utils: self.engines.append(engine) def save(self): '''Saves config options''' try: self.config.add_section(SETTINGS_MAIN) except ConfigParser.DuplicateSectionError: pass self.config.set(SETTINGS_MAIN, DIFF_PATH, self.diff_engine) self.config.set(SETTINGS_MAIN, DIFF_PATH_3WAY, self.diff_engine_3way) self.config.set(SETTINGS_MAIN, DIFF_PATH_MULTI, self.diff_engine_multi) if self.diff_engine not in self.engines: self.engines.append(self.diff_engine) if self.diff_engine_3way not in self.engines: self.engines.append(self.diff_engine_3way) if self.diff_engine_multi not in self.engines: self.engines.append(self.diff_engine_multi) self.config.set(SETTINGS_MAIN, COMPARATORS, self.engines) with open(CONFIG_FILE, 'wb') as f: self.config.write(f)