1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-25 08:01:39 +00:00

Compare commits

..

11 Commits

Author SHA1 Message Date
Virgil Dupras
a7bc76bf7c Small tweaks to the Brazilian loc. 2012-07-07 16:08:30 -04:00
Virgil Dupras
89fb531f3d me v6.4.2 2012-07-07 15:57:05 -04:00
Virgil Dupras
f22baa8d5a Fixed iTunes intergration which was broken since iTunes 10.6.3.
More info at http://www.leancrew.com/all-this/2012/06/the-first-nail-in-the-coffin-of-python-appscript/

I'm a bit late to the party. I hadn't realised that these crash reports were caused by iTunes 10.6.3... Oops.
2012-07-07 15:44:13 -04:00
Virgil Dupras
7c2e601a30 Brazilian loc tweaks by Victor Figueiredo. 2012-07-07 11:34:58 -04:00
Virgil Dupras
16e4a5fddd Brazilian localization by Victor Figueiredo. 2012-07-03 12:42:23 -04:00
Virgil Dupras
4200f2a090 Moved cocoa packaging logic that is common to all HS apps into hscommon.build. 2012-06-20 13:09:42 -04:00
Virgil Dupras
45c8291645 Fixed a few inconsistencies in debian packaging that were left from the /usr/local/share --> /usr/share move. 2012-06-16 07:57:52 -07:00
Virgil Dupras
89f8214bce Improved debian packaging by reducing metadata duplication in the project.
--HG--
rename : debian_se/compat => debian/compat
rename : debian_se/control => debian/control
rename : debian_se/copyright => debian/copyright
rename : debian_se/dirs => debian/dirs
rename : debian_se/dupeguru_se.desktop => debian/dupeguru.desktop
rename : debian_se/rules => debian/rules
2012-06-16 07:35:23 -07:00
Virgil Dupras
16e1ee93d0 Fixed ME cocoa project which had duplicate items in resource copying build phase. 2012-06-13 13:12:22 -04:00
Virgil Dupras
222ae73590 Fix bug where invalid xml in iTunes library would make dgme crash. 2012-06-13 13:11:48 -04:00
Virgil Dupras
21c0292154 Added tag pe2.6.0 for changeset c8a9a4d35592 2012-06-06 18:27:08 -04:00
42 changed files with 1727 additions and 315 deletions

View File

@@ -18,12 +18,6 @@ cocoa/autogen
cocoa/*/Info.plist cocoa/*/Info.plist
cocoa/*/build cocoa/*/build
cocoa/*/*.app cocoa/*/*.app
cocoa/*/dg_cocoa.plugin
cocoa/*/fr.lproj/*.xib
cocoa/*/de.lproj/*.xib
cocoa/*/zh_CN.lproj/*.xib
cocoa/*/cs.lproj/*.xib
cocoa/*/it.lproj/*.xib
cs.lproj cs.lproj
de.lproj de.lproj
fr.lproj fr.lproj
@@ -32,6 +26,7 @@ hy.lproj
ru.lproj ru.lproj
uk.lproj uk.lproj
zh_CN.lproj zh_CN.lproj
pt_BR.lproj
qt/base/*_rc.py qt/base/*_rc.py
help/*/conf.py help/*/conf.py
help/*/changelog.rst help/*/changelog.rst

View File

@@ -76,3 +76,4 @@ c153aef25e5c9911f2197d13899591c50cf38ffc se3.4.1
c3d9f91dc9c9d60f370c72bc211f09be3e4fc18d se3.5.0 c3d9f91dc9c9d60f370c72bc211f09be3e4fc18d se3.5.0
254bce83ad6e56c102d69fd603f6845e2324b470 me6.4.0 254bce83ad6e56c102d69fd603f6845e2324b470 me6.4.0
e772f1de86744999ffbbe5845554417965b1dfba me6.4.1 e772f1de86744999ffbbe5845554417965b1dfba me6.4.1
c8a9a4d355927e509f514308c82306192bc71f92 pe2.6.0

View File

@@ -7,15 +7,17 @@
# http://www.hardcoded.net/licenses/bsd_license # http://www.hardcoded.net/licenses/bsd_license
import logging import logging
from appscript import app, its, k, CommandError, ApplicationNotFoundError
import plistlib import plistlib
import time import time
import os.path as op import os.path as op
from appscript import app, its, k, CommandError, ApplicationNotFoundError
from . import tunes
from cocoa import as_fetch, proxy from cocoa import as_fetch, proxy
from hscommon import io from hscommon import io
from hscommon.trans import trget from hscommon.trans import trget
from hscommon.path import Path from hscommon.path import Path
from hscommon.util import remove_invalid_xml
from core import directories from core import directories
from core.app import JobType from core.app import JobType
@@ -54,7 +56,7 @@ class ITunesSong(fs.MusicFile):
def remove_from_library(self): def remove_from_library(self):
try: try:
a = app(ITUNES) a = app(ITUNES, terms=tunes)
library = get_itunes_library(a) library = get_itunes_library(a)
if library is None: if library is None:
return return
@@ -78,7 +80,10 @@ def get_itunes_database_path():
def get_itunes_songs(plistpath): def get_itunes_songs(plistpath):
if not io.exists(plistpath): if not io.exists(plistpath):
return [] return []
plist = plistlib.readPlist(str(plistpath)) s = io.open(plistpath, 'rt', encoding='utf-8').read()
# iTunes sometimes produces XML files with invalid characters in it.
s = remove_invalid_xml(s, replace_with='')
plist = plistlib.readPlistFromBytes(s.encode('utf-8'))
result = [] result = []
for song_data in plist['Tracks'].values(): for song_data in plist['Tracks'].values():
if song_data['Track Type'] != 'File': if song_data['Track Type'] != 'File':
@@ -158,7 +163,7 @@ class DupeGuruME(DupeGuruBase):
if any(isinstance(dupe, ITunesSong) for dupe in marked): if any(isinstance(dupe, ITunesSong) for dupe in marked):
j.add_progress(0, desc=tr("Talking to iTunes. Don't touch it!")) j.add_progress(0, desc=tr("Talking to iTunes. Don't touch it!"))
try: try:
a = app(ITUNES) a = app(ITUNES, terms=tunes)
a.activate(timeout=0) a.activate(timeout=0)
except (CommandError, RuntimeError, ApplicationNotFoundError): except (CommandError, RuntimeError, ApplicationNotFoundError):
pass pass
@@ -208,7 +213,7 @@ class DupeGuruME(DupeGuruBase):
def start_scanning(self): def start_scanning(self):
if self.directories.has_itunes_path(): if self.directories.has_itunes_path():
try: try:
app(ITUNES) app(ITUNES, terms=tunes)
except ApplicationNotFoundError: except ApplicationNotFoundError:
self.view.show_message(tr("The iTunes application couldn't be found.")) self.view.show_message(tr("The iTunes application couldn't be found."))
return return
@@ -216,7 +221,7 @@ class DupeGuruME(DupeGuruBase):
def remove_dead_tracks(self): def remove_dead_tracks(self):
def do(j): def do(j):
a = app(ITUNES) a = app(ITUNES, terms=tunes)
a.activate(timeout=0) a.activate(timeout=0)
for index, track in enumerate(j.iter_with_progress(self.dead_tracks)): for index, track in enumerate(j.iter_with_progress(self.dead_tracks)):
if index % 100 == 0: if index % 100 == 0:
@@ -230,7 +235,7 @@ class DupeGuruME(DupeGuruBase):
def scan_dead_tracks(self): def scan_dead_tracks(self):
def do(j): def do(j):
a = app(ITUNES) a = app(ITUNES, terms=tunes)
a.activate(timeout=0) a.activate(timeout=0)
library = get_itunes_library(a) library = get_itunes_library(a)
if library is None: if library is None:

282
cocoa/inter/tunes.py Normal file
View File

@@ -0,0 +1,282 @@
# Taken from https://github.com/abarnert/itunesterms
version = 1.1
path = '/Applications/iTunes.app'
classes = \
[('print_settings', b'pset'),
('application', b'capp'),
('artwork', b'cArt'),
('audio_CD_playlist', b'cCDP'),
('audio_CD_track', b'cCDT'),
('browser_window', b'cBrW'),
('device_playlist', b'cDvP'),
('device_track', b'cDvT'),
('encoder', b'cEnc'),
('EQ_preset', b'cEQP'),
('EQ_window', b'cEQW'),
('file_track', b'cFlT'),
('folder_playlist', b'cFoP'),
('item', b'cobj'),
('library_playlist', b'cLiP'),
('playlist', b'cPly'),
('playlist_window', b'cPlW'),
('radio_tuner_playlist', b'cRTP'),
('shared_track', b'cShT'),
('source', b'cSrc'),
('track', b'cTrk'),
('URL_track', b'cURT'),
('user_playlist', b'cUsP'),
('visual', b'cVis'),
('window', b'cwin')]
enums = \
[('track_listing', b'kTrk'),
('album_listing', b'kAlb'),
('cd_insert', b'kCDi'),
('standard', b'lwst'),
('detailed', b'lwdt'),
('stopped', b'kPSS'),
('playing', b'kPSP'),
('paused', b'kPSp'),
('fast_forwarding', b'kPSF'),
('rewinding', b'kPSR'),
('off', b'kRpO'),
('one', b'kRp1'),
('all', b'kAll'),
('small', b'kVSS'),
('medium', b'kVSM'),
('large', b'kVSL'),
('library', b'kLib'),
('iPod', b'kPod'),
('audio_CD', b'kACD'),
('MP3_CD', b'kMCD'),
('device', b'kDev'),
('radio_tuner', b'kTun'),
('shared_library', b'kShd'),
('unknown', b'kUnk'),
('albums', b'kSrL'),
('artists', b'kSrR'),
('composers', b'kSrC'),
('displayed', b'kSrV'),
('songs', b'kSrS'),
('none', b'kNon'),
('Books', b'kSpA'),
('folder', b'kSpF'),
('Genius', b'kSpG'),
('iTunes_U', b'kSpU'),
('Library', b'kSpL'),
('Movies', b'kSpI'),
('Music', b'kSpZ'),
('Party_Shuffle', b'kSpS'),
('Podcasts', b'kSpP'),
('Purchased_Music', b'kSpM'),
('TV_Shows', b'kSpT'),
('movie', b'kVdM'),
('music_video', b'kVdV'),
('TV_show', b'kVdT'),
('user', b'kRtU'),
('computed', b'kRtC')]
properties = \
[('copies', b'lwcp'),
('collating', b'lwcl'),
('starting_page', b'lwfp'),
('ending_page', b'lwlp'),
('pages_across', b'lwla'),
('pages_down', b'lwld'),
('error_handling', b'lweh'),
('requested_print_time', b'lwqt'),
('printer_features', b'lwpf'),
('fax_number', b'faxn'),
('target_printer', b'trpr'),
('current_encoder', b'pEnc'),
('current_EQ_preset', b'pEQP'),
('current_playlist', b'pPla'),
('current_stream_title', b'pStT'),
('current_stream_URL', b'pStU'),
('current_track', b'pTrk'),
('current_visual', b'pVis'),
('EQ_enabled', b'pEQ '),
('fixed_indexing', b'pFix'),
('frontmost', b'pisf'),
('full_screen', b'pFSc'),
('name', b'pnam'),
('mute', b'pMut'),
('player_position', b'pPos'),
('player_state', b'pPlS'),
('selection', b'sele'),
('sound_volume', b'pVol'),
('version', b'vers'),
('visuals_enabled', b'pVsE'),
('visual_size', b'pVSz'),
('data', b'pPCT'),
('description', b'pDes'),
('downloaded', b'pDlA'),
('format', b'pFmt'),
('kind', b'pKnd'),
('raw_data', b'pRaw'),
('artist', b'pArt'),
('compilation', b'pAnt'),
('composer', b'pCmp'),
('disc_count', b'pDsC'),
('disc_number', b'pDsN'),
('genre', b'pGen'),
('year', b'pYr '),
('location', b'pLoc'),
('minimized', b'pMin'),
('view', b'pPly'),
('band_1', b'pEQ1'),
('band_2', b'pEQ2'),
('band_3', b'pEQ3'),
('band_4', b'pEQ4'),
('band_5', b'pEQ5'),
('band_6', b'pEQ6'),
('band_7', b'pEQ7'),
('band_8', b'pEQ8'),
('band_9', b'pEQ9'),
('band_10', b'pEQ0'),
('modifiable', b'pMod'),
('preamp', b'pEQA'),
('update_tracks', b'pUTC'),
('container', b'ctnr'),
('id', b'ID '),
('index', b'pidx'),
('persistent_ID', b'pPIS'),
('duration', b'pDur'),
('parent', b'pPlP'),
('shuffle', b'pShf'),
('size', b'pSiz'),
('song_repeat', b'pRpt'),
('special_kind', b'pSpK'),
('time', b'pTim'),
('visible', b'pvis'),
('capacity', b'capa'),
('free_space', b'frsp'),
('album', b'pAlb'),
('album_artist', b'pAlA'),
('album_rating', b'pAlR'),
('album_rating_kind', b'pARk'),
('bit_rate', b'pBRt'),
('bookmark', b'pBkt'),
('bookmarkable', b'pBkm'),
('bpm', b'pBPM'),
('category', b'pCat'),
('comment', b'pCmt'),
('database_ID', b'pDID'),
('date_added', b'pAdd'),
('enabled', b'enbl'),
('episode_ID', b'pEpD'),
('episode_number', b'pEpN'),
('EQ', b'pEQp'),
('finish', b'pStp'),
('gapless', b'pGpl'),
('grouping', b'pGrp'),
('long_description', b'pLds'),
('lyrics', b'pLyr'),
('modification_date', b'asmo'),
('played_count', b'pPlC'),
('played_date', b'pPlD'),
('podcast', b'pTPc'),
('rating', b'pRte'),
('rating_kind', b'pRtk'),
('release_date', b'pRlD'),
('sample_rate', b'pSRt'),
('season_number', b'pSeN'),
('shufflable', b'pSfa'),
('skipped_count', b'pSkC'),
('skipped_date', b'pSkD'),
('show', b'pShw'),
('sort_album', b'pSAl'),
('sort_artist', b'pSAr'),
('sort_album_artist', b'pSAA'),
('sort_name', b'pSNm'),
('sort_composer', b'pSCm'),
('sort_show', b'pSSN'),
('start', b'pStr'),
('track_count', b'pTrC'),
('track_number', b'pTrN'),
('unplayed', b'pUnp'),
('video_kind', b'pVdK'),
('volume_adjustment', b'pAdj'),
('address', b'pURL'),
('shared', b'pShr'),
('smart', b'pSmt'),
('bounds', b'pbnd'),
('closeable', b'hclb'),
('collapseable', b'pWSh'),
('collapsed', b'wshd'),
('position', b'ppos'),
('resizable', b'prsz'),
('zoomable', b'iszm'),
('zoomed', b'pzum')]
elements = \
[('artworks', b'cArt'),
('audio_CD_playlists', b'cCDP'),
('audio_CD_tracks', b'cCDT'),
('browser_windows', b'cBrW'),
('device_playlists', b'cDvP'),
('device_tracks', b'cDvT'),
('encoders', b'cEnc'),
('EQ_presets', b'cEQP'),
('EQ_windows', b'cEQW'),
('file_tracks', b'cFlT'),
('folder_playlists', b'cFoP'),
('items', b'cobj'),
('library_playlists', b'cLiP'),
('playlists', b'cPly'),
('playlist_windows', b'cPlW'),
('radio_tuner_playlists', b'cRTP'),
('shared_tracks', b'cShT'),
('sources', b'cSrc'),
('tracks', b'cTrk'),
('URL_tracks', b'cURT'),
('user_playlists', b'cUsP'),
('visuals', b'cVis'),
('windows', b'cwin'),
('application', b'capp'),
('print_settings', b'pset')]
commands = \
[('set', b'coresetd', [('to', b'data')]),
('exists', b'coredoex', []),
('move', b'coremove', [('to', b'insh')]),
('subscribe', b'hookpSub', []),
('playpause', b'hookPlPs', []),
('download', b'hookDwnl', []),
('close', b'coreclos', []),
('open', b'aevtodoc', []),
('open_location', b'GURLGURL', []),
('quit', b'aevtquit', []),
('pause', b'hookPaus', []),
('make',
'corecrel',
[('new', b'kocl'), ('at', b'insh'), ('with_properties', b'prdt')]),
('duplicate', b'coreclon', [('to', b'insh')]),
('print_',
'aevtpdoc',
[('print_dialog', b'pdlg'),
('with_properties', b'prdt'),
('kind', b'pKnd'),
('theme', b'pThm')]),
('add', b'hookAdd ', [('to', b'insh')]),
('rewind', b'hookRwnd', []),
('play', b'hookPlay', [('once', b'POne')]),
('run', b'aevtoapp', []),
('resume', b'hookResu', []),
('updatePodcast', b'hookUpd1', []),
('next_track', b'hookNext', []),
('stop', b'hookStop', []),
('search', b'hookSrch', [('for_', b'pTrm'), ('only', b'pAre')]),
('updateAllPodcasts', b'hookUpdp', []),
('update', b'hookUpdt', []),
('previous_track', b'hookPrev', []),
('fast_forward', b'hookFast', []),
('count', b'corecnte', [('each', b'kocl')]),
('reveal', b'hookRevl', []),
('convert', b'hookConv', []),
('eject', b'hookEjct', []),
('back_track', b'hookBack', []),
('refresh', b'hookRfrs', []),
('delete', b'coredelo', [])]

View File

@@ -43,6 +43,18 @@
CE1425890AFB718500BD5167 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; }; CE1425890AFB718500BD5167 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
CE14259F0AFB719300BD5167 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; }; CE14259F0AFB719300BD5167 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
CE1EAA0A12DF3E81009BA949 /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */; }; CE1EAA0A12DF3E81009BA949 /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */; };
CE20A79315A2843F00FAC2BA /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEF3185513D8660000B8CDCA /* about.xib */; };
CE20A79415A2843F00FAC2BA /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEF3185713D8660000B8CDCA /* ErrorReportWindow.xib */; };
CE20A79515A2843F00FAC2BA /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE74A12512537F2E008A8DF0 /* FairwareReminder.xib */; };
CE20A79815A2845A00FAC2BA /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05330D12E5D3ED0029EF25 /* DetailsPanel.xib */; };
CE20A7A115A2847500FAC2BA /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05330D12E5D3ED0029EF25 /* DetailsPanel.xib */; };
CE20A7A215A2847500FAC2BA /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05330F12E5D3ED0029EF25 /* DirectoryPanel.xib */; };
CE20A7A315A2847500FAC2BA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331112E5D3ED0029EF25 /* MainMenu.xib */; };
CE20A7A415A2847500FAC2BA /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331312E5D3ED0029EF25 /* ProblemDialog.xib */; };
CE20A7A515A2847500FAC2BA /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE1195941510FFB20063C8AF /* IgnoreListDialog.xib */; };
CE20A7A615A2847500FAC2BA /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331512E5D3ED0029EF25 /* ResultWindow.xib */; };
CE20A7A715A2847500FAC2BA /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05332112E5D4100029EF25 /* Preferences.xib */; };
CE20A7A815A2847500FAC2BA /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE84C9BB1423AF200050A6AD /* PrioritizeDialog.xib */; };
CE2239A2148FFE6600B3DC99 /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2239A1148FFE6600B3DC99 /* HSColumns.m */; }; CE2239A2148FFE6600B3DC99 /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2239A1148FFE6600B3DC99 /* HSColumns.m */; };
CE2E87F9142BC90A00519A68 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E87F8142BC90A00519A68 /* Quartz.framework */; }; CE2E87F9142BC90A00519A68 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E87F8142BC90A00519A68 /* Quartz.framework */; };
CE2E87FD142BC92C00519A68 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2E87FC142BC92C00519A68 /* HSQuicklook.m */; }; CE2E87FD142BC92C00519A68 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2E87FC142BC92C00519A68 /* HSQuicklook.m */; };
@@ -91,14 +103,6 @@
CE97060314C471F2007A28F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97060214C471F2007A28F6 /* main.m */; }; CE97060314C471F2007A28F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97060214C471F2007A28F6 /* main.m */; };
CEA14F431461ED63007F01A5 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CEA14F421461ED63007F01A5 /* locale */; }; CEA14F431461ED63007F01A5 /* locale in Resources */ = {isa = PBXBuildFile; fileRef = CEA14F421461ED63007F01A5 /* locale */; };
CEA39FA1157679FB00F294DE /* DeletionOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEA39F97157679FB00F294DE /* DeletionOptions.xib */; }; CEA39FA1157679FB00F294DE /* DeletionOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEA39F97157679FB00F294DE /* DeletionOptions.xib */; };
CEA39FA2157679FB00F294DE /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05330D12E5D3ED0029EF25 /* DetailsPanel.xib */; };
CEA39FA3157679FB00F294DE /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05330F12E5D3ED0029EF25 /* DirectoryPanel.xib */; };
CEA39FA4157679FB00F294DE /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331112E5D3ED0029EF25 /* MainMenu.xib */; };
CEA39FA5157679FB00F294DE /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331312E5D3ED0029EF25 /* ProblemDialog.xib */; };
CEA39FA6157679FB00F294DE /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE1195941510FFB20063C8AF /* IgnoreListDialog.xib */; };
CEA39FA7157679FB00F294DE /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05331512E5D3ED0029EF25 /* ResultWindow.xib */; };
CEA39FA8157679FB00F294DE /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05332112E5D4100029EF25 /* Preferences.xib */; };
CEA39FA9157679FB00F294DE /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE84C9BB1423AF200050A6AD /* PrioritizeDialog.xib */; };
CEA39FAD15767A2900F294DE /* PyDeletionOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA39FAC15767A2900F294DE /* PyDeletionOptions.m */; }; CEA39FAD15767A2900F294DE /* PyDeletionOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA39FAC15767A2900F294DE /* PyDeletionOptions.m */; };
CEA39FB015767A3A00F294DE /* DeletionOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA39FAF15767A3A00F294DE /* DeletionOptions.m */; }; CEA39FB015767A3A00F294DE /* DeletionOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA39FAF15767A3A00F294DE /* DeletionOptions.m */; };
CEB14D29124DFC2800FA7481 /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEB14D28124DFC2800FA7481 /* ResultTable.m */; }; CEB14D29124DFC2800FA7481 /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEB14D28124DFC2800FA7481 /* ResultTable.m */; };
@@ -181,6 +185,18 @@
CE1425880AFB718500BD5167 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Library/Frameworks/Sparkle.framework; sourceTree = "<absolute>"; }; CE1425880AFB718500BD5167 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Library/Frameworks/Sparkle.framework; sourceTree = "<absolute>"; };
CE1EAA0812DF3E81009BA949 /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; }; CE1EAA0812DF3E81009BA949 /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; };
CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; }; CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; };
CE20A79015A2843F00FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/about.xib; sourceTree = "<group>"; };
CE20A79115A2843F00FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE20A79215A2843F00FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE20A79715A2845A00FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = pt_BR.lproj/Preferences.xib; sourceTree = "<group>"; };
CE20A79915A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DeletionOptions.xib; sourceTree = "<group>"; };
CE20A79A15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE20A79B15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE20A79C15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/IgnoreListDialog.xib; sourceTree = "<group>"; };
CE20A79D15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE20A79E15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE20A79F15A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE20A7A015A2847500FAC2BA /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE2239A0148FFE6600B3DC99 /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = "<group>"; }; CE2239A0148FFE6600B3DC99 /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = "<group>"; };
CE2239A1148FFE6600B3DC99 /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = "<group>"; }; CE2239A1148FFE6600B3DC99 /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = "<group>"; };
CE2B2B5A1406ABDA0038D15A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = ../base/de.lproj/Localizable.strings; sourceTree = "<group>"; }; CE2B2B5A1406ABDA0038D15A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = ../base/de.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -698,6 +714,7 @@
hy, hy,
ru, ru,
uk, uk,
pt_BR,
); );
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */; mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = ""; projectDirPath = "";
@@ -734,14 +751,18 @@
CE97060114C46F70007A28F6 /* dg_cocoa.py in Resources */, CE97060114C46F70007A28F6 /* dg_cocoa.py in Resources */,
CE1195961510FFB20063C8AF /* IgnoreListDialog.xib in Resources */, CE1195961510FFB20063C8AF /* IgnoreListDialog.xib in Resources */,
CEA39FA1157679FB00F294DE /* DeletionOptions.xib in Resources */, CEA39FA1157679FB00F294DE /* DeletionOptions.xib in Resources */,
CEA39FA2157679FB00F294DE /* DetailsPanel.xib in Resources */, CE20A79315A2843F00FAC2BA /* about.xib in Resources */,
CEA39FA3157679FB00F294DE /* DirectoryPanel.xib in Resources */, CE20A79415A2843F00FAC2BA /* ErrorReportWindow.xib in Resources */,
CEA39FA4157679FB00F294DE /* MainMenu.xib in Resources */, CE20A79515A2843F00FAC2BA /* FairwareReminder.xib in Resources */,
CEA39FA5157679FB00F294DE /* ProblemDialog.xib in Resources */, CE20A79815A2845A00FAC2BA /* DetailsPanel.xib in Resources */,
CEA39FA6157679FB00F294DE /* IgnoreListDialog.xib in Resources */, CE20A7A115A2847500FAC2BA /* DetailsPanel.xib in Resources */,
CEA39FA7157679FB00F294DE /* ResultWindow.xib in Resources */, CE20A7A215A2847500FAC2BA /* DirectoryPanel.xib in Resources */,
CEA39FA8157679FB00F294DE /* Preferences.xib in Resources */, CE20A7A315A2847500FAC2BA /* MainMenu.xib in Resources */,
CEA39FA9157679FB00F294DE /* PrioritizeDialog.xib in Resources */, CE20A7A415A2847500FAC2BA /* ProblemDialog.xib in Resources */,
CE20A7A515A2847500FAC2BA /* IgnoreListDialog.xib in Resources */,
CE20A7A615A2847500FAC2BA /* ResultWindow.xib in Resources */,
CE20A7A715A2847500FAC2BA /* Preferences.xib in Resources */,
CE20A7A815A2847500FAC2BA /* PrioritizeDialog.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -824,6 +845,7 @@
CEC3D37C14911253006B1A91 /* hy */, CEC3D37C14911253006B1A91 /* hy */,
CE335AF714B393EE0000AF1A /* ru */, CE335AF714B393EE0000AF1A /* ru */,
CE35FCF514C637DD004E4864 /* uk */, CE35FCF514C637DD004E4864 /* uk */,
CE20A79A15A2847500FAC2BA /* pt_BR */,
); );
name = DetailsPanel.xib; name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -840,6 +862,7 @@
CEC3D37D14911253006B1A91 /* hy */, CEC3D37D14911253006B1A91 /* hy */,
CE335AF814B393EE0000AF1A /* ru */, CE335AF814B393EE0000AF1A /* ru */,
CE35FCF614C637DD004E4864 /* uk */, CE35FCF614C637DD004E4864 /* uk */,
CE20A79B15A2847500FAC2BA /* pt_BR */,
); );
name = DirectoryPanel.xib; name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -856,6 +879,7 @@
CEC3D37F14911253006B1A91 /* hy */, CEC3D37F14911253006B1A91 /* hy */,
CE335AFA14B393EE0000AF1A /* ru */, CE335AFA14B393EE0000AF1A /* ru */,
CE35FCF814C637DD004E4864 /* uk */, CE35FCF814C637DD004E4864 /* uk */,
CE20A79D15A2847500FAC2BA /* pt_BR */,
); );
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -872,6 +896,7 @@
CEC3D38114911253006B1A91 /* hy */, CEC3D38114911253006B1A91 /* hy */,
CE335AFC14B393EE0000AF1A /* ru */, CE335AFC14B393EE0000AF1A /* ru */,
CE35FCFA14C637DD004E4864 /* uk */, CE35FCFA14C637DD004E4864 /* uk */,
CE20A79F15A2847500FAC2BA /* pt_BR */,
); );
name = ProblemDialog.xib; name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -888,6 +913,7 @@
CEC3D38214911253006B1A91 /* hy */, CEC3D38214911253006B1A91 /* hy */,
CE335AFD14B393EE0000AF1A /* ru */, CE335AFD14B393EE0000AF1A /* ru */,
CE35FCFB14C637DD004E4864 /* uk */, CE35FCFB14C637DD004E4864 /* uk */,
CE20A7A015A2847500FAC2BA /* pt_BR */,
); );
name = ResultWindow.xib; name = ResultWindow.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -904,6 +930,7 @@
CEC3D38B14911263006B1A91 /* hy */, CEC3D38B14911263006B1A91 /* hy */,
CE335B0514B393FB0000AF1A /* ru */, CE335B0514B393FB0000AF1A /* ru */,
CE35FD0314C637EC004E4864 /* uk */, CE35FD0314C637EC004E4864 /* uk */,
CE20A79715A2845A00FAC2BA /* pt_BR */,
); );
name = Preferences.xib; name = Preferences.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -936,6 +963,7 @@
CE11959C151100020063C8AF /* ru */, CE11959C151100020063C8AF /* ru */,
CE11959D151100020063C8AF /* uk */, CE11959D151100020063C8AF /* uk */,
CE11959E151100020063C8AF /* zh_CN */, CE11959E151100020063C8AF /* zh_CN */,
CE20A79C15A2847500FAC2BA /* pt_BR */,
); );
name = IgnoreListDialog.xib; name = IgnoreListDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -952,6 +980,7 @@
CEC3D39114911288006B1A91 /* hy */, CEC3D39114911288006B1A91 /* hy */,
CE335AF014B393C60000AF1A /* ru */, CE335AF014B393C60000AF1A /* ru */,
CE35FCEE14C637B8004E4864 /* uk */, CE35FCEE14C637B8004E4864 /* uk */,
CE20A79215A2843F00FAC2BA /* pt_BR */,
); );
name = FairwareReminder.xib; name = FairwareReminder.xib;
path = ../../cocoalib/xib; path = ../../cocoalib/xib;
@@ -969,6 +998,7 @@
CEC3D38014911253006B1A91 /* hy */, CEC3D38014911253006B1A91 /* hy */,
CE335AFB14B393EE0000AF1A /* ru */, CE335AFB14B393EE0000AF1A /* ru */,
CE35FCF914C637DD004E4864 /* uk */, CE35FCF914C637DD004E4864 /* uk */,
CE20A79E15A2847500FAC2BA /* pt_BR */,
); );
name = PrioritizeDialog.xib; name = PrioritizeDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -985,6 +1015,7 @@
CEA39F9E157679FB00F294DE /* ru */, CEA39F9E157679FB00F294DE /* ru */,
CEA39F9F157679FB00F294DE /* uk */, CEA39F9F157679FB00F294DE /* uk */,
CEA39FA0157679FB00F294DE /* zh_CN */, CEA39FA0157679FB00F294DE /* zh_CN */,
CE20A79915A2847500FAC2BA /* pt_BR */,
); );
name = DeletionOptions.xib; name = DeletionOptions.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1001,6 +1032,7 @@
CEC3D38F14911288006B1A91 /* hy */, CEC3D38F14911288006B1A91 /* hy */,
CE335AEE14B393C60000AF1A /* ru */, CE335AEE14B393C60000AF1A /* ru */,
CE35FCEC14C637B8004E4864 /* uk */, CE35FCEC14C637B8004E4864 /* uk */,
CE20A79015A2843F00FAC2BA /* pt_BR */,
); );
name = about.xib; name = about.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1017,6 +1049,7 @@
CEC3D39014911288006B1A91 /* hy */, CEC3D39014911288006B1A91 /* hy */,
CE335AEF14B393C60000AF1A /* ru */, CE335AEF14B393C60000AF1A /* ru */,
CE35FCED14C637B8004E4864 /* uk */, CE35FCED14C637B8004E4864 /* uk */,
CE20A79115A2843F00FAC2BA /* pt_BR */,
); );
name = ErrorReportWindow.xib; name = ErrorReportWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";

View File

@@ -16,6 +16,18 @@
CE0533A812E5DA4D0029EF25 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A512E5DA4D0029EF25 /* Preferences.xib */; }; CE0533A812E5DA4D0029EF25 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A512E5DA4D0029EF25 /* Preferences.xib */; };
CE0533AB12E5DA6A0029EF25 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A912E5DA6A0029EF25 /* Localizable.strings */; }; CE0533AB12E5DA6A0029EF25 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A912E5DA6A0029EF25 /* Localizable.strings */; };
CE073F6309CAE1A3005C1D2F /* help in Resources */ = {isa = PBXBuildFile; fileRef = CE073F5409CAE1A3005C1D2F /* help */; }; CE073F6309CAE1A3005C1D2F /* help in Resources */ = {isa = PBXBuildFile; fileRef = CE073F5409CAE1A3005C1D2F /* help */; };
CE09AF4615A284F600BD431C /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CECB2AC113D867AD0081E295 /* about.xib */; };
CE09AF4715A284F600BD431C /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CECB2AC313D867AD0081E295 /* ErrorReportWindow.xib */; };
CE09AF4815A284F600BD431C /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE1EB5FF12537FB90034AABB /* FairwareReminder.xib */; };
CE09AF4C15A2851100BD431C /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339312E5DA350029EF25 /* DirectoryPanel.xib */; };
CE09AF4D15A2851100BD431C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339512E5DA350029EF25 /* MainMenu.xib */; };
CE09AF5515A2852600BD431C /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339312E5DA350029EF25 /* DirectoryPanel.xib */; };
CE09AF5615A2852600BD431C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339512E5DA350029EF25 /* MainMenu.xib */; };
CE09AF5715A2852600BD431C /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339712E5DA350029EF25 /* ProblemDialog.xib */; };
CE09AF5815A2852600BD431C /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE7857951511019400174D51 /* IgnoreListDialog.xib */; };
CE09AF5915A2852600BD431C /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE05339912E5DA350029EF25 /* ResultWindow.xib */; };
CE09AF5A15A2852600BD431C /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A312E5DA4D0029EF25 /* DetailsPanel.xib */; };
CE09AF5B15A2852600BD431C /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE0533A512E5DA4D0029EF25 /* Preferences.xib */; };
CE0C2AB61177011000BC749F /* HSTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0C2AB51177011000BC749F /* HSTable.m */; }; CE0C2AB61177011000BC749F /* HSTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0C2AB51177011000BC749F /* HSTable.m */; };
CE0C2ABD1177014200BC749F /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0C2ABB1177014200BC749F /* ProblemDialog.m */; }; CE0C2ABD1177014200BC749F /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0C2ABB1177014200BC749F /* ProblemDialog.m */; };
CE15C8A80ADEB8B50061D4A5 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE15C8A70ADEB8B50061D4A5 /* Sparkle.framework */; }; CE15C8A80ADEB8B50061D4A5 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE15C8A70ADEB8B50061D4A5 /* Sparkle.framework */; };
@@ -149,6 +161,18 @@
CE0533AE12E5DAAD0029EF25 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/Preferences.xib; sourceTree = "<group>"; }; CE0533AE12E5DAAD0029EF25 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/Preferences.xib; sourceTree = "<group>"; };
CE0533B712E5DC040029EF25 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../../cocoalib/fr.lproj/FairwareReminder.xib; sourceTree = SOURCE_ROOT; }; CE0533B712E5DC040029EF25 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../../cocoalib/fr.lproj/FairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CE073F5409CAE1A3005C1D2F /* help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = help; path = ../../build/help; sourceTree = SOURCE_ROOT; }; CE073F5409CAE1A3005C1D2F /* help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = help; path = ../../build/help; sourceTree = SOURCE_ROOT; };
CE09AF4315A284F600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/about.xib; sourceTree = "<group>"; };
CE09AF4415A284F600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE09AF4515A284F600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE09AF4A15A2851100BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = pt_BR.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE09AF4B15A2851100BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = pt_BR.lproj/Preferences.xib; sourceTree = "<group>"; };
CE09AF4E15A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DeletionOptions.xib; sourceTree = "<group>"; };
CE09AF4F15A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE09AF5015A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/IgnoreListDialog.xib; sourceTree = "<group>"; };
CE09AF5115A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE09AF5215A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE09AF5315A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE09AF5415A2852600BD431C /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE0C2AB41177011000BC749F /* HSTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable.h; sourceTree = "<group>"; }; CE0C2AB41177011000BC749F /* HSTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSTable.h; sourceTree = "<group>"; };
CE0C2AB51177011000BC749F /* HSTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable.m; sourceTree = "<group>"; }; CE0C2AB51177011000BC749F /* HSTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSTable.m; sourceTree = "<group>"; };
CE0C2ABA1177014200BC749F /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; }; CE0C2ABA1177014200BC749F /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; };
@@ -700,6 +724,7 @@
hy, hy,
uk, uk,
ru, ru,
pt_BR,
); );
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */; mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = ""; projectDirPath = "";
@@ -744,6 +769,18 @@
CED3BC2A15767B200028F3C9 /* DetailsPanel.xib in Resources */, CED3BC2A15767B200028F3C9 /* DetailsPanel.xib in Resources */,
CED3BC2B15767B200028F3C9 /* Preferences.xib in Resources */, CED3BC2B15767B200028F3C9 /* Preferences.xib in Resources */,
CED3BC2C15767B200028F3C9 /* PrioritizeDialog.xib in Resources */, CED3BC2C15767B200028F3C9 /* PrioritizeDialog.xib in Resources */,
CE09AF4615A284F600BD431C /* about.xib in Resources */,
CE09AF4715A284F600BD431C /* ErrorReportWindow.xib in Resources */,
CE09AF4815A284F600BD431C /* FairwareReminder.xib in Resources */,
CE09AF4C15A2851100BD431C /* DirectoryPanel.xib in Resources */,
CE09AF4D15A2851100BD431C /* MainMenu.xib in Resources */,
CE09AF5515A2852600BD431C /* DirectoryPanel.xib in Resources */,
CE09AF5615A2852600BD431C /* MainMenu.xib in Resources */,
CE09AF5715A2852600BD431C /* ProblemDialog.xib in Resources */,
CE09AF5815A2852600BD431C /* IgnoreListDialog.xib in Resources */,
CE09AF5915A2852600BD431C /* ResultWindow.xib in Resources */,
CE09AF5A15A2852600BD431C /* DetailsPanel.xib in Resources */,
CE09AF5B15A2852600BD431C /* Preferences.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -829,6 +866,7 @@
CEE6D5461491130D0087CDFC /* hy */, CEE6D5461491130D0087CDFC /* hy */,
CE905DEA14C638A500C0ECEF /* uk */, CE905DEA14C638A500C0ECEF /* uk */,
CE03DD6714FBD31300E998AC /* ru */, CE03DD6714FBD31300E998AC /* ru */,
CE09AF4F15A2852600BD431C /* pt_BR */,
); );
name = DirectoryPanel.xib; name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -845,6 +883,7 @@
CEE6D5481491130D0087CDFC /* hy */, CEE6D5481491130D0087CDFC /* hy */,
CE905DEC14C638A500C0ECEF /* uk */, CE905DEC14C638A500C0ECEF /* uk */,
CE03DD6814FBD31300E998AC /* ru */, CE03DD6814FBD31300E998AC /* ru */,
CE09AF5115A2852600BD431C /* pt_BR */,
); );
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -861,6 +900,7 @@
CEE6D54A1491130D0087CDFC /* hy */, CEE6D54A1491130D0087CDFC /* hy */,
CE905DEE14C638A500C0ECEF /* uk */, CE905DEE14C638A500C0ECEF /* uk */,
CE03DD6A14FBD31300E998AC /* ru */, CE03DD6A14FBD31300E998AC /* ru */,
CE09AF5315A2852600BD431C /* pt_BR */,
); );
name = ProblemDialog.xib; name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -877,6 +917,7 @@
CEE6D54B1491130D0087CDFC /* hy */, CEE6D54B1491130D0087CDFC /* hy */,
CE905DEF14C638A500C0ECEF /* uk */, CE905DEF14C638A500C0ECEF /* uk */,
CE03DD6B14FBD31300E998AC /* ru */, CE03DD6B14FBD31300E998AC /* ru */,
CE09AF5415A2852600BD431C /* pt_BR */,
); );
name = ResultWindow.xib; name = ResultWindow.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -893,6 +934,7 @@
CEE6D553149113190087CDFC /* hy */, CEE6D553149113190087CDFC /* hy */,
CE905DF614C638B000C0ECEF /* uk */, CE905DF614C638B000C0ECEF /* uk */,
CE03DD7214FBD33600E998AC /* ru */, CE03DD7214FBD33600E998AC /* ru */,
CE09AF4A15A2851100BD431C /* pt_BR */,
); );
name = DetailsPanel.xib; name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -909,6 +951,7 @@
CEE6D554149113190087CDFC /* hy */, CEE6D554149113190087CDFC /* hy */,
CE905DF714C638B000C0ECEF /* uk */, CE905DF714C638B000C0ECEF /* uk */,
CE03DD7314FBD33600E998AC /* ru */, CE03DD7314FBD33600E998AC /* ru */,
CE09AF4B15A2851100BD431C /* pt_BR */,
); );
name = Preferences.xib; name = Preferences.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -941,6 +984,7 @@
CEE6D55B149113320087CDFC /* hy */, CEE6D55B149113320087CDFC /* hy */,
CE905DE314C6387B00C0ECEF /* uk */, CE905DE314C6387B00C0ECEF /* uk */,
CE03DD7A14FBD36600E998AC /* ru */, CE03DD7A14FBD36600E998AC /* ru */,
CE09AF4515A284F600BD431C /* pt_BR */,
); );
name = FairwareReminder.xib; name = FairwareReminder.xib;
path = ../../cocoalib/xib; path = ../../cocoalib/xib;
@@ -958,6 +1002,7 @@
CE7857A0151101C900174D51 /* ru */, CE7857A0151101C900174D51 /* ru */,
CE7857A4151101DD00174D51 /* uk */, CE7857A4151101DD00174D51 /* uk */,
CE7857A5151101DD00174D51 /* zh_CN */, CE7857A5151101DD00174D51 /* zh_CN */,
CE09AF5015A2852600BD431C /* pt_BR */,
); );
name = IgnoreListDialog.xib; name = IgnoreListDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -974,6 +1019,7 @@
CEE6D5491491130D0087CDFC /* hy */, CEE6D5491491130D0087CDFC /* hy */,
CE905DED14C638A500C0ECEF /* uk */, CE905DED14C638A500C0ECEF /* uk */,
CE03DD6914FBD31300E998AC /* ru */, CE03DD6914FBD31300E998AC /* ru */,
CE09AF5215A2852600BD431C /* pt_BR */,
); );
name = PrioritizeDialog.xib; name = PrioritizeDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -990,6 +1036,7 @@
CEE6D559149113320087CDFC /* hy */, CEE6D559149113320087CDFC /* hy */,
CE905DE114C6387B00C0ECEF /* uk */, CE905DE114C6387B00C0ECEF /* uk */,
CE03DD7814FBD36600E998AC /* ru */, CE03DD7814FBD36600E998AC /* ru */,
CE09AF4315A284F600BD431C /* pt_BR */,
); );
name = about.xib; name = about.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1006,6 +1053,7 @@
CEE6D55A149113320087CDFC /* hy */, CEE6D55A149113320087CDFC /* hy */,
CE905DE214C6387B00C0ECEF /* uk */, CE905DE214C6387B00C0ECEF /* uk */,
CE03DD7914FBD36600E998AC /* ru */, CE03DD7914FBD36600E998AC /* ru */,
CE09AF4415A284F600BD431C /* pt_BR */,
); );
name = ErrorReportWindow.xib; name = ErrorReportWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1022,6 +1070,7 @@
CED3BC2115767B200028F3C9 /* ru */, CED3BC2115767B200028F3C9 /* ru */,
CED3BC2215767B200028F3C9 /* uk */, CED3BC2215767B200028F3C9 /* uk */,
CED3BC2315767B200028F3C9 /* zh_CN */, CED3BC2315767B200028F3C9 /* zh_CN */,
CE09AF4E15A2852600BD431C /* pt_BR */,
); );
name = DeletionOptions.xib; name = DeletionOptions.xib;
sourceTree = "<group>"; sourceTree = "<group>";

View File

@@ -35,6 +35,18 @@
CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC514BF903D00D180CB /* PyPrioritizeList.m */; }; CE548CC714BF903D00D180CB /* PyPrioritizeList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE548CC514BF903D00D180CB /* PyPrioritizeList.m */; };
CE587E9A14C07BCF004CA031 /* PyOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9814C07BCF004CA031 /* PyOutline.m */; }; CE587E9A14C07BCF004CA031 /* PyOutline.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9814C07BCF004CA031 /* PyOutline.m */; };
CE587E9E14C0801F004CA031 /* PySelectableList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9D14C0801F004CA031 /* PySelectableList.m */; }; CE587E9E14C0801F004CA031 /* PySelectableList.m in Sources */ = {isa = PBXBuildFile; fileRef = CE587E9D14C0801F004CA031 /* PySelectableList.m */; };
CE5A5C9C15A2837200C4E461 /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819913D85D9B00B6D649 /* about.xib */; };
CE5A5C9D15A2837200C4E461 /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE31819B13D85D9B00B6D649 /* ErrorReportWindow.xib */; };
CE5A5C9E15A2837200C4E461 /* FairwareReminder.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE79638412536C94008D405B /* FairwareReminder.xib */; };
CE5A5CA815A283C200C4E461 /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134212E5CE4D00A36C80 /* DetailsPanel.xib */; };
CE5A5CA915A283C200C4E461 /* DirectoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134412E5CE4D00A36C80 /* DirectoryPanel.xib */; };
CE5A5CAA15A283C200C4E461 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134612E5CE4D00A36C80 /* MainMenu.xib */; };
CE5A5CAB15A283C200C4E461 /* ProblemDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134812E5CE4D00A36C80 /* ProblemDialog.xib */; };
CE5A5CAC15A283C200C4E461 /* IgnoreListDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE412C0F1510ECCA00484122 /* IgnoreListDialog.xib */; };
CE5A5CAD15A283C200C4E461 /* ResultWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134A12E5CE4D00A36C80 /* ResultWindow.xib */; };
CE5A5CAE15A283C200C4E461 /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81135612E5CE6D00A36C80 /* Preferences.xib */; };
CE5A5CAF15A283C200C4E461 /* PrioritizeDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9777CF141F8CB400C13FB5 /* PrioritizeDialog.xib */; };
CE5A5CB115A283D700C4E461 /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE81134212E5CE4D00A36C80 /* DetailsPanel.xib */; };
CE647E571173024A006D28BA /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE647E551173024A006D28BA /* ProblemDialog.m */; }; CE647E571173024A006D28BA /* ProblemDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = CE647E551173024A006D28BA /* ProblemDialog.m */; };
CE6DD4E7124CA3070089A48D /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6DD4E6124CA3070089A48D /* ResultTable.m */; }; CE6DD4E7124CA3070089A48D /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6DD4E6124CA3070089A48D /* ResultTable.m */; };
CE6DD547124CAF1F0089A48D /* HSTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6DD546124CAF1F0089A48D /* HSTableView.m */; }; CE6DD547124CAF1F0089A48D /* HSTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6DD546124CAF1F0089A48D /* HSTableView.m */; };
@@ -197,6 +209,18 @@
CE587E9814C07BCF004CA031 /* PyOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline.m; sourceTree = "<group>"; }; CE587E9814C07BCF004CA031 /* PyOutline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PyOutline.m; sourceTree = "<group>"; };
CE587E9C14C0801F004CA031 /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = "<group>"; }; CE587E9C14C0801F004CA031 /* PySelectableList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PySelectableList.h; sourceTree = "<group>"; };
CE587E9D14C0801F004CA031 /* PySelectableList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList.m; sourceTree = "<group>"; }; CE587E9D14C0801F004CA031 /* PySelectableList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PySelectableList.m; sourceTree = "<group>"; };
CE5A5C9915A2837200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/about.xib; sourceTree = "<group>"; };
CE5A5C9A15A2837200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE5A5C9B15A2837200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../pt_BR.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE5A5CA015A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DeletionOptions.xib; sourceTree = "<group>"; };
CE5A5CA115A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE5A5CA215A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE5A5CA315A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/IgnoreListDialog.xib; sourceTree = "<group>"; };
CE5A5CA415A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE5A5CA515A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE5A5CA615A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE5A5CA715A283C200C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = ../base/pt_BR.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE5A5CB015A283D700C4E461 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = pt_BR; path = pt_BR.lproj/Preferences.xib; sourceTree = "<group>"; };
CE647E541173024A006D28BA /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; }; CE647E541173024A006D28BA /* ProblemDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProblemDialog.h; path = ../base/ProblemDialog.h; sourceTree = SOURCE_ROOT; };
CE647E551173024A006D28BA /* ProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProblemDialog.m; path = ../base/ProblemDialog.m; sourceTree = SOURCE_ROOT; }; CE647E551173024A006D28BA /* ProblemDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ProblemDialog.m; path = ../base/ProblemDialog.m; sourceTree = SOURCE_ROOT; };
CE6DD4E5124CA3070089A48D /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; }; CE6DD4E5124CA3070089A48D /* ResultTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultTable.h; path = ../base/ResultTable.h; sourceTree = SOURCE_ROOT; };
@@ -683,6 +707,7 @@
hy, hy,
ru, ru,
uk, uk,
pt_BR,
); );
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */; mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = ""; projectDirPath = "";
@@ -727,6 +752,18 @@
CEFC64EB157678DE00664D8C /* DirectoryPanel.xib in Resources */, CEFC64EB157678DE00664D8C /* DirectoryPanel.xib in Resources */,
CEFC64EC157678DE00664D8C /* MainMenu.xib in Resources */, CEFC64EC157678DE00664D8C /* MainMenu.xib in Resources */,
CEFC64ED157678DE00664D8C /* ProblemDialog.xib in Resources */, CEFC64ED157678DE00664D8C /* ProblemDialog.xib in Resources */,
CE5A5C9C15A2837200C4E461 /* about.xib in Resources */,
CE5A5C9D15A2837200C4E461 /* ErrorReportWindow.xib in Resources */,
CE5A5C9E15A2837200C4E461 /* FairwareReminder.xib in Resources */,
CE5A5CA815A283C200C4E461 /* DetailsPanel.xib in Resources */,
CE5A5CA915A283C200C4E461 /* DirectoryPanel.xib in Resources */,
CE5A5CAA15A283C200C4E461 /* MainMenu.xib in Resources */,
CE5A5CAB15A283C200C4E461 /* ProblemDialog.xib in Resources */,
CE5A5CAC15A283C200C4E461 /* IgnoreListDialog.xib in Resources */,
CE5A5CAD15A283C200C4E461 /* ResultWindow.xib in Resources */,
CE5A5CAE15A283C200C4E461 /* Preferences.xib in Resources */,
CE5A5CAF15A283C200C4E461 /* PrioritizeDialog.xib in Resources */,
CE5A5CB115A283D700C4E461 /* DetailsPanel.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -808,6 +845,7 @@
CE00BBD014910CA3006A717C /* hy */, CE00BBD014910CA3006A717C /* hy */,
CED638D514B38CC800B88D00 /* ru */, CED638D514B38CC800B88D00 /* ru */,
CEECCD0614C636C900A2F3A0 /* uk */, CEECCD0614C636C900A2F3A0 /* uk */,
CE5A5C9915A2837200C4E461 /* pt_BR */,
); );
name = about.xib; name = about.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -824,6 +862,7 @@
CE00BBD114910CA3006A717C /* hy */, CE00BBD114910CA3006A717C /* hy */,
CED638D614B38CC800B88D00 /* ru */, CED638D614B38CC800B88D00 /* ru */,
CEECCD0714C636C900A2F3A0 /* uk */, CEECCD0714C636C900A2F3A0 /* uk */,
CE5A5C9A15A2837200C4E461 /* pt_BR */,
); );
name = ErrorReportWindow.xib; name = ErrorReportWindow.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -840,6 +879,7 @@
CE148037151100FB00CD5DAD /* ru */, CE148037151100FB00CD5DAD /* ru */,
CE1480391511010500CD5DAD /* uk */, CE1480391511010500CD5DAD /* uk */,
CE14803B1511011000CD5DAD /* zh_CN */, CE14803B1511011000CD5DAD /* zh_CN */,
CE5A5CA315A283C200C4E461 /* pt_BR */,
); );
name = IgnoreListDialog.xib; name = IgnoreListDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -856,6 +896,7 @@
CE00BBD214910CA3006A717C /* hy */, CE00BBD214910CA3006A717C /* hy */,
CED638D714B38CC800B88D00 /* ru */, CED638D714B38CC800B88D00 /* ru */,
CEECCD0814C636C900A2F3A0 /* uk */, CEECCD0814C636C900A2F3A0 /* uk */,
CE5A5C9B15A2837200C4E461 /* pt_BR */,
); );
name = FairwareReminder.xib; name = FairwareReminder.xib;
path = ../../cocoalib/xib; path = ../../cocoalib/xib;
@@ -873,6 +914,7 @@
CE00BBBD14910C5E006A717C /* hy */, CE00BBBD14910C5E006A717C /* hy */,
CED638DC14B38CEC00B88D00 /* ru */, CED638DC14B38CEC00B88D00 /* ru */,
CEECCD0F14C6370000A2F3A0 /* uk */, CEECCD0F14C6370000A2F3A0 /* uk */,
CE5A5CA115A283C200C4E461 /* pt_BR */,
); );
name = DetailsPanel.xib; name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -889,6 +931,7 @@
CE00BBBE14910C5E006A717C /* hy */, CE00BBBE14910C5E006A717C /* hy */,
CED638DD14B38CEC00B88D00 /* ru */, CED638DD14B38CEC00B88D00 /* ru */,
CEECCD1014C6370000A2F3A0 /* uk */, CEECCD1014C6370000A2F3A0 /* uk */,
CE5A5CA215A283C200C4E461 /* pt_BR */,
); );
name = DirectoryPanel.xib; name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -905,6 +948,7 @@
CE00BBC014910C5E006A717C /* hy */, CE00BBC014910C5E006A717C /* hy */,
CED638DF14B38CEC00B88D00 /* ru */, CED638DF14B38CEC00B88D00 /* ru */,
CEECCD1214C6370000A2F3A0 /* uk */, CEECCD1214C6370000A2F3A0 /* uk */,
CE5A5CA415A283C200C4E461 /* pt_BR */,
); );
name = MainMenu.xib; name = MainMenu.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -921,6 +965,7 @@
CE00BBC214910C5E006A717C /* hy */, CE00BBC214910C5E006A717C /* hy */,
CED638E114B38CEC00B88D00 /* ru */, CED638E114B38CEC00B88D00 /* ru */,
CEECCD1414C6370000A2F3A0 /* uk */, CEECCD1414C6370000A2F3A0 /* uk */,
CE5A5CA615A283C200C4E461 /* pt_BR */,
); );
name = ProblemDialog.xib; name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -937,6 +982,7 @@
CE00BBC314910C5E006A717C /* hy */, CE00BBC314910C5E006A717C /* hy */,
CED638E214B38CEC00B88D00 /* ru */, CED638E214B38CEC00B88D00 /* ru */,
CEECCD1514C6370000A2F3A0 /* uk */, CEECCD1514C6370000A2F3A0 /* uk */,
CE5A5CA715A283C200C4E461 /* pt_BR */,
); );
name = ResultWindow.xib; name = ResultWindow.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -953,6 +999,7 @@
CE00BBCC14910C72006A717C /* hy */, CE00BBCC14910C72006A717C /* hy */,
CED638EA14B38CF800B88D00 /* ru */, CED638EA14B38CF800B88D00 /* ru */,
CEECCD1D14C6370C00A2F3A0 /* uk */, CEECCD1D14C6370C00A2F3A0 /* uk */,
CE5A5CB015A283D700C4E461 /* pt_BR */,
); );
name = Preferences.xib; name = Preferences.xib;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
@@ -985,6 +1032,7 @@
CE00BBC114910C5E006A717C /* hy */, CE00BBC114910C5E006A717C /* hy */,
CED638E014B38CEC00B88D00 /* ru */, CED638E014B38CEC00B88D00 /* ru */,
CEECCD1314C6370000A2F3A0 /* uk */, CEECCD1314C6370000A2F3A0 /* uk */,
CE5A5CA515A283C200C4E461 /* pt_BR */,
); );
name = PrioritizeDialog.xib; name = PrioritizeDialog.xib;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1001,6 +1049,7 @@
CEFC64E7157678DE00664D8C /* ru */, CEFC64E7157678DE00664D8C /* ru */,
CEFC64E8157678DE00664D8C /* uk */, CEFC64E8157678DE00664D8C /* uk */,
CEFC64E9157678DE00664D8C /* zh_CN */, CEFC64E9157678DE00664D8C /* zh_CN */,
CE5A5CA015A283C200C4E461 /* pt_BR */,
); );
name = DeletionOptions.xib; name = DeletionOptions.xib;
sourceTree = "<group>"; sourceTree = "<group>";

View File

@@ -1,2 +1,2 @@
__version__ = '6.4.1' __version__ = '6.4.2'
__appname__ = 'dupeGuru Music Edition' __appname__ = 'dupeGuru Music Edition'

View File

View File

@@ -1,4 +1,4 @@
Source: dupeguru-se Source: {pkgname}
Section: devel Section: devel
Priority: extra Priority: extra
Maintainer: Virgil Dupras <hsoft@hardcoded.net> Maintainer: Virgil Dupras <hsoft@hardcoded.net>
@@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.1 Standards-Version: 3.8.1
Homepage: http://www.hardcoded.net Homepage: http://www.hardcoded.net
Package: dupeguru-se Package: {pkgname}
Architecture: all Architecture: all
Depends: python3 (>=3.2), python3-pyqt4 Depends: python3 (>=3.2), python3-pyqt4
Description: dupeGuru Description: {longname}

3
debian/dirs vendored Normal file
View File

@@ -0,0 +1,3 @@
usr/bin
usr/share
usr/share/applications

View File

@@ -1,8 +1,8 @@
[Desktop Entry] [Desktop Entry]
Name=dupeGuru Name={longname}
Comment=Find duplicate files. Comment=Find duplicate files.
Exec=dupeguru_se Exec={execname}
Icon=/usr/share/dupeguru_se/dgse_logo_128.png Icon={iconpath}
Terminal=false Terminal=false
Type=Application Type=Application
Categories=Utility; Categories=Utility;

6
debian/me.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pkgname": "dupeguru-me",
"longname": "dupeGuru Music Edition",
"execname": "dupeguru_me",
"iconpath": "/usr/share/dupeguru_me/dgme_logo_128.png"
}

6
debian/pe.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pkgname": "dupeguru-pe",
"longname": "dupeGuru Picture Edition",
"execname": "dupeguru_pe",
"iconpath": "/usr/share/dupeguru_pe/dgpe_logo_128.png"
}

View File

@@ -42,10 +42,9 @@ install: build
dh_installdirs dh_installdirs
chmod +x src/run.py chmod +x src/run.py
cp -R src/ $(CURDIR)/debian/dupeguru-se/usr/share/dupeguru_se cp -R src/ $(CURDIR)/debian/{pkgname}/usr/share/{execname}
cp $(CURDIR)/debian/dupeguru_se.desktop $(CURDIR)/debian/dupeguru-se/usr/share/applications cp $(CURDIR)/debian/{execname}.desktop $(CURDIR)/debian/{pkgname}/usr/share/applications
mkdir $(CURDIR)/debian/dupeguru-se/usr/bin ln -s /usr/share/{execname}/run.py $(CURDIR)/debian/{pkgname}/usr/bin/{execname}
ln -s /usr/share/dupeguru_se/run.py $(CURDIR)/debian/dupeguru-se/usr/bin/dupeguru_se
# Build architecture-independent files here. # Build architecture-independent files here.

6
debian/se.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"pkgname": "dupeguru-se",
"longname": "dupeGuru",
"execname": "dupeguru_se",
"iconpath": "/usr/share/dupeguru_se/dgse_logo_128.png"
}

View File

@@ -1,12 +0,0 @@
Source: dupeguru-me
Section: devel
Priority: extra
Maintainer: Virgil Dupras <hsoft@hardcoded.net>
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.1
Homepage: http://www.hardcoded.net
Package: dupeguru-me
Architecture: all
Depends: python3 (>=3.2), python3-pyqt4
Description: dupeGuru Music Edition

View File

@@ -1,3 +0,0 @@
usr/local/bin
usr/local/share
usr/share/applications

View File

@@ -1,8 +0,0 @@
[Desktop Entry]
Name=dupeGuru Music Edition
Comment=Find duplicate songs in your collection.
Exec=dupeguru_me
Icon=/usr/share/dupeguru_me/dgme_logo_128.png
Terminal=false
Type=Application
Categories=Utility;

View File

@@ -1,87 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
# Add here commands to compile the package.
touch $@
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
dh_clean
install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
chmod +x src/run.py
cp -R src/ $(CURDIR)/debian/dupeguru-me/usr/share/dupeguru_me
cp $(CURDIR)/debian/dupeguru_me.desktop $(CURDIR)/debian/dupeguru-me/usr/share/applications
mkdir $(CURDIR)/debian/dupeguru-me/usr/bin
ln -s /usr/share/dupeguru_me/run.py $(CURDIR)/debian/dupeguru-me/usr/bin/dupeguru_me
# Build architecture-independent files here.
binary-indep: install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
dh_install
dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_python
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@@ -1 +0,0 @@
7

View File

@@ -1,12 +0,0 @@
Source: dupeguru-pe
Section: devel
Priority: extra
Maintainer: Virgil Dupras <hsoft@hardcoded.net>
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.1
Homepage: http://www.hardcoded.net
Package: dupeguru-pe
Architecture: any
Depends: python3 (>=3.2), python3-pyqt4
Description: dupeGuru Picture Edition

View File

@@ -1,11 +0,0 @@
Copyright 2012 Hardcoded Software Inc. (http://www.hardcoded.net)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Hardcoded Software Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
* If the source code has been published less than two years ago, any redistribution, in whole or in part, must retain full licensing functionality, without any attempt to change, obscure or in other ways circumvent its intent.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,3 +0,0 @@
usr/local/bin
usr/local/share
usr/share/applications

View File

@@ -1,8 +0,0 @@
[Desktop Entry]
Name=dupeGuru Picture Edition
Comment=Find duplicate pictures in your library.
Exec=dupeguru_pe
Icon=/usr/share/dupeguru_pe/dgpe_logo_128.png
Terminal=false
Type=Application
Categories=Utility;

View File

@@ -1,87 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
# Add here commands to compile the package.
touch $@
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
dh_clean
install: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
chmod +x src/run.py
cp -R src/ $(CURDIR)/debian/dupeguru-pe/usr/share/dupeguru_pe
cp $(CURDIR)/debian/dupeguru_pe.desktop $(CURDIR)/debian/dupeguru-pe/usr/share/applications
mkdir $(CURDIR)/debian/dupeguru-pe/usr/bin
ln -s /usr/share/dupeguru_pe/run.py $(CURDIR)/debian/dupeguru-pe/usr/bin/dupeguru_pe
# Build architecture-independent files here.
binary-indep: install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
dh_install
dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_python
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

View File

@@ -1 +0,0 @@
7

View File

@@ -1,11 +0,0 @@
Copyright 2012 Hardcoded Software Inc. (http://www.hardcoded.net)
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of Hardcoded Software Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
* If the source code has been published less than two years ago, any redistribution, in whole or in part, must retain full licensing functionality, without any attempt to change, obscure or in other ways circumvent its intent.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,3 +0,0 @@
usr/local/bin
usr/local/share
usr/share/applications

View File

@@ -1,3 +1,9 @@
=== 6.4.2 (2012-07-07)
* Fixed iTunes integration which was broken since iTunes 10.6.3. [Mac]
* Fixed a crash caused by invalid XML in iTunes libraries. [Mac]
* Added Brazilian localization by Victor Figueiredo.
=== 6.4.1 (2012-06-04) === 6.4.1 (2012-06-04)
* Fixed bug introduced in 6.4.0 preventing deletions from working. [Mac] * Fixed bug introduced in 6.4.0 preventing deletions from working. [Mac]

View File

@@ -22,6 +22,8 @@ Unten befindet sich die Liste aller Menschen, die direkt oder indirekt zu dupeGu
| **Nickolas Pohilets, Ukrainian localization** | **Nickolas Pohilets, Ukrainian localization**
| **Victor Figueiredo, Brazilian localization**
| **Python, Programming language** (`Website <http://www.python.org>`__) | **Python, Programming language** (`Website <http://www.python.org>`__)
| The bestest of the bests | The bestest of the bests

View File

@@ -24,12 +24,11 @@ Below is the list of people who contributed, directly or indirectly to dupeGuru.
| **Nickolas Pohilets, Ukrainian localization** | **Nickolas Pohilets, Ukrainian localization**
| **Victor Figueiredo, Brazilian localization**
| **Python, Programming language** (`Website <http://www.python.org>`__) | **Python, Programming language** (`Website <http://www.python.org>`__)
| The bestest of the bests | The bestest of the bests
| **PyObjC, Python-to-Cocoa bridge** (`Website <http://pyobjc.sourceforge.net>`__)
| Used for the Mac OS X version
| **PyQt, Python-to-Qt bridge** (`Website <http://www.riverbankcomputing.co.uk>`__) | **PyQt, Python-to-Qt bridge** (`Website <http://www.riverbankcomputing.co.uk>`__)
| Used for the Windows version | Used for the Windows version

View File

@@ -23,6 +23,8 @@ Voici la liste des contributeurs de dupeGuru. Merci!
| **Nickolas Pohilets, localisation ukrainienne** | **Nickolas Pohilets, localisation ukrainienne**
| **Victor Figueiredo, localisation brésilienne**
| **Python, Langage de programmation** (`Website <http://www.python.org>`__) | **Python, Langage de programmation** (`Website <http://www.python.org>`__)
| Le meilleur des meilleurs | Le meilleur des meilleurs

View File

@@ -24,6 +24,8 @@
| **Nickolas Pohilets, Ukrainian localization** | **Nickolas Pohilets, Ukrainian localization**
| **Victor Figueiredo, Brazilian localization**
| **Python, Ծրագրավորման լեզուն** (`Վեբ կայքը <http://www.python.org>`__) | **Python, Ծրագրավորման լեզուն** (`Վեբ կայքը <http://www.python.org>`__)
| Լավագույներից լավագույնը | Լավագույներից լավագույնը

View File

@@ -24,6 +24,8 @@
| **Nickolas Pohilets, Ukrainian localization** | **Nickolas Pohilets, Ukrainian localization**
| **Victor Figueiredo, Brazilian localization**
| **Python, Язык программирования** (`Веб сайт <http://www.python.org>`__) | **Python, Язык программирования** (`Веб сайт <http://www.python.org>`__)
| Самая лучшая | Самая лучшая

View File

@@ -24,6 +24,8 @@
| **Nickolas Pohilets, Ukrainian localization** | **Nickolas Pohilets, Ukrainian localization**
| **Victor Figueiredo, Brazilian localization**
| **Python, Мова програмування** (`Веб-сайт <http://www.python.org>`__) | **Python, Мова програмування** (`Веб-сайт <http://www.python.org>`__)
| Кращі рекорди | Кращі рекорди

View File

@@ -0,0 +1,112 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
#: core/gui/ignore_list_table.py:18 core/gui/ignore_list_table.py:19
#: core/gui/problem_table.py:17
msgid "File Path"
msgstr "Caminho"
#: core/gui/problem_table.py:18
msgid "Error Message"
msgstr "Mensagem de Erro"
#: core/prioritize.py:63 core_me/result_table.py:24 core_pe/result_table.py:21
#: core_se/result_table.py:21
msgid "Kind"
msgstr "Tipo"
#: core/prioritize.py:72 core_me/result_table.py:19 core_pe/result_table.py:19
#: core_se/result_table.py:19
msgid "Folder"
msgstr "Pasta"
#: core/prioritize.py:88 core_me/result_table.py:18 core_pe/result_table.py:18
#: core_se/result_table.py:18
msgid "Filename"
msgstr "Nome do Arquivo"
#: core/prioritize.py:132
msgid "Size"
msgstr "Tamanho"
#: core/prioritize.py:138 core_me/result_table.py:25
#: core_pe/result_table.py:23 core_se/result_table.py:22
msgid "Modification"
msgstr "Modificado"
#: core_me/prioritize.py:16
msgid "Duration"
msgstr "Duração"
#: core_me/prioritize.py:22 core_me/result_table.py:22
msgid "Bitrate"
msgstr "Taxa de Bits"
#: core_me/prioritize.py:28
msgid "Samplerate"
msgstr "Taxa de Bits"
#: core_me/result_table.py:20
msgid "Size (MB)"
msgstr "Tamanho"
#: core_me/result_table.py:21
msgid "Time"
msgstr "Duração"
#: core_me/result_table.py:23
msgid "Sample Rate"
msgstr "Tamanho da Amostra"
#: core_me/result_table.py:26
msgid "Title"
msgstr "Nome"
#: core_me/result_table.py:27
msgid "Artist"
msgstr "Artista"
#: core_me/result_table.py:28
msgid "Album"
msgstr "Álbum"
#: core_me/result_table.py:29
msgid "Genre"
msgstr "Gênero"
#: core_me/result_table.py:30
msgid "Year"
msgstr "Ano"
#: core_me/result_table.py:31
msgid "Track Number"
msgstr "Número da Faixa"
#: core_me/result_table.py:32
msgid "Comment"
msgstr "Comentário"
#: core_me/result_table.py:33 core_pe/result_table.py:24
#: core_se/result_table.py:23
msgid "Match %"
msgstr "% Precisão"
#: core_me/result_table.py:34 core_se/result_table.py:24
msgid "Words Used"
msgstr "Palavras Usadas"
#: core_me/result_table.py:35 core_pe/result_table.py:25
#: core_se/result_table.py:25
msgid "Dupe Count"
msgstr "Duplicatas"
#: core_pe/prioritize.py:16 core_pe/result_table.py:22
msgid "Dimensions"
msgstr "Dimensões"
#: core_pe/result_table.py:20 core_se/result_table.py:20
msgid "Size (KB)"
msgstr "Tamanho"

View File

@@ -0,0 +1,169 @@
msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
#: core/app.py:38
msgid "There are no marked duplicates. Nothing has been done."
msgstr "Não há duplicatas marcadas. Nada foi feito."
#: core/app.py:39
msgid "There are no selected duplicates. Nothing has been done."
msgstr "Não há duplicatas selecionadas. Nada foi feito."
#: core/app.py:96
msgid "will only be able to delete, move or copy 10 duplicates at once"
msgstr "poderá apagar, mover ou copiar somente 10 duplicatas por vez"
#: core/app.py:216
msgid "No duplicates found."
msgstr "Nenhuma duplicata encontrada"
#: core/app.py:229
msgid "All marked files were copied sucessfully."
msgstr "Todos os arquivos marcados foram copiados com sucesso"
#: core/app.py:230
msgid "All marked files were moved sucessfully."
msgstr "Todos os arquivos marcados foram relocados com sucesso"
#: core/app.py:231
msgid "All marked files were sucessfully sent to Trash."
msgstr "Todos os arquivos marcados foram movidos para o Lixo com sucesso"
#: core/app.py:258
msgid "You cannot delete, move or copy more than 10 duplicates at once in demo mode."
msgstr "Enquanto em modo demo, você não pode apagar, mover ou copiar mais que 10 duplicatas por vez."
#: core/app.py:279
msgid "All selected %d matches are going to be ignored in all subsequent scans. Continue?"
msgstr "%d duplicatas selecionadas serão ignoradas em escaneamentos posteriores. Continuar?"
#: core/app.py:339
msgid "copy"
msgstr "copiar"
#: core/app.py:339
msgid "move"
msgstr "mover"
#: core/app.py:340
msgid "Select a directory to {} marked files to"
msgstr "Selecione uma pasta para {} os arquivos marcados"
#: core/app.py:392
msgid "You have no custom command set up. Set it up in your preferences."
msgstr "Você não possui nenhum comando personalizado. Crie um nas preferências."
#: core/app.py:479 core/app.py:490
msgid "You are about to remove %d files from results. Continue?"
msgstr "Você removerá %d arquivo(s) dos resultados. Continuar?"
#: core/app.py:526
msgid "Collecting files to scan"
msgstr "Juntando arquivos para escanear"
#: core/app.py:537
msgid "The selected directories contain no scannable file."
msgstr "As pastas selecionadas não contém arquivos escaneáveis."
#: core/app.py:576
msgid "%s (%d discarded)"
msgstr "%s (%d rejeitado)"
#: core/engine.py:178 core/engine.py:215
msgid "0 matches found"
msgstr "0 coincidentes encontrados"
#: core/engine.py:196 core/engine.py:223
msgid "%d matches found"
msgstr "%d coincidentes encontrados"
#: core/engine.py:208 core/scanner.py:80
msgid "Read size of %d/%d files"
msgstr "Tamanho de leitura de %d/%d arquivos"
#: core/engine.py:355
msgid "Grouped %d/%d matches"
msgstr "%d/%d coincidentes agrupados"
#: core/gui/deletion_options.py:20
msgid "You are sending {} file(s) to the Trash."
msgstr "Você está movendo {} arquivo(s) para o Lixo"
#: core/gui/ignore_list_dialog.py:24
msgid "Do you really want to remove all %d items from the ignore list?"
msgstr "Deseja remover todos os %d itens da lista Ignorar?"
#: core/prioritize.py:68
msgid "None"
msgstr "Nenhum"
#: core/prioritize.py:94
msgid "Ends with number"
msgstr "Termina com número"
#: core/prioritize.py:96
msgid "Doesn't end with number"
msgstr "Não termina com número"
#: core/prioritize.py:117
msgid "Highest"
msgstr "Maior"
#: core/prioritize.py:117
msgid "Lowest"
msgstr "Menor"
#: core/prioritize.py:144
msgid "Newest"
msgstr "Mais recente"
#: core/prioritize.py:144
msgid "Oldest"
msgstr "Mais antigo"
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) duplicatas marcadas"
#: core/results.py:120
msgid " filter: %s"
msgstr " filtro: %s"
#: core/scanner.py:100
msgid "Read metadata of %d/%d files"
msgstr "Metadados lidos em %d/%d arquivos"
#: core/scanner.py:131
msgid "Removing false matches"
msgstr "Removendo coincidentes falsos"
#: core/scanner.py:149
msgid "Processed %d/%d matches against the ignore list"
msgstr "%d/%d coincidentes processados em oposição a lista Ignorar"
#: core/scanner.py:171
msgid "Doing group prioritization"
msgstr "Executando priorização de grupo"
#: core_pe/matchblock.py:60
msgid "Analyzed %d/%d pictures"
msgstr "%d/%d fotos analizadas"
#: core_pe/matchblock.py:152
msgid "Performed %d/%d chunk matches"
msgstr "%d/%d coincidentes em bloco executados"
#: core_pe/matchblock.py:157
msgid "Preparing for matching"
msgstr "Preparando para coincidentes"
#: core_pe/matchblock.py:192
msgid "Verified %d/%d matches"
msgstr "%d/%d coincidentes verificados"
#: core_pe/matchexif.py:21
msgid "Read EXIF of %d/%d pictures"
msgstr "EXIF de %d/%d fotos lidos"

View File

@@ -0,0 +1,931 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#: cocoa/inter/app.py:15 qt/base/app.py:40
msgid "Scanning for duplicates"
msgstr "Buscando por duplicatas"
#: cocoa/inter/app.py:16 qt/base/app.py:41
msgid "Loading"
msgstr "Carregando"
#: cocoa/inter/app.py:17 qt/base/app.py:42
msgid "Moving"
msgstr "Movendo"
#: cocoa/inter/app.py:18 qt/base/app.py:43
msgid "Copying"
msgstr "Copiando"
#: cocoa/inter/app.py:19
msgid "Sending to Trash"
msgstr "Movendo para o Lixo"
#: cocoa/inter/app_me.py:33
msgid "Removing dead tracks from your iTunes Library"
msgstr "Removendo faixas sem referência da sua Biblioteca do iTunes"
#: cocoa/inter/app_me.py:34
msgid "Scanning the iTunes Library"
msgstr "Escaneando Biblioteca do iTunes"
#: cocoa/inter/app_me.py:157 cocoa/inter/app_pe.py:186
msgid "Sending dupes to the Trash"
msgstr "Movendo duplicatas para o Lixo"
#: cocoa/inter/app_me.py:159
msgid "Talking to iTunes. Don't touch it!"
msgstr "Comunicando com o iTunes. Não mexa!"
#: cocoa/inter/app_me.py:185
msgid ""
"There were communication problems with iTunes. The operation couldn't be "
"completed."
msgstr "Ocorreu um erro de comunicação com o iTunes. A operação não pode ser "
"finalizada."
#: cocoa/inter/app_me.py:191 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"Your iTunes Library contains %d dead tracks ready to be removed. Continue?"
msgstr "Sua Biblioteca do iTunes contém %d faixas sem referência prontas a serem removidas. Continuar?"
#: cocoa/inter/app_me.py:195 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have no dead tracks in your iTunes Library"
msgstr "Você não possui nenhuma faixa sem referência na Biblioteca do iTunes"
#: cocoa/inter/app_me.py:213
msgid "The iTunes application couldn't be found."
msgstr "O aplicativo iTunes não foi encontrado."
#: cocoa/inter/app_pe.py:188
msgid "Talking to iPhoto. Don't touch it!"
msgstr "Comunicando com o iPhoto. Não mexa!"
#: cocoa/inter/app_pe.py:197
msgid "Talking to Aperture. Don't touch it!"
msgstr "Comunicando com o Aperture. Não mexa!"
#: cocoa/inter/app_pe.py:270
msgid "Deleted Aperture photos were sent to a project called \"dupeGuru Trash\"."
msgstr "As Fotos apagadas do Aperture foram movidas a um projeto chamado \"dupeGuru Trash\"."
#: cocoa/inter/app_pe.py:296
msgid "The iPhoto application couldn't be found."
msgstr "O aplicativo iPhoto não foi encontrado."
#: qt/base/app.py:44
msgid "Sending files to the recycle bin"
msgstr "Enviando arquivos para o Lixo"
#: qt/base/app.py:112
msgid "Quit"
msgstr "Encerrar"
#: qt/base/app.py:113 qt/base/preferences_dialog.py:123
msgid "Preferences"
msgstr "Preferências"
#: qt/base/app.py:114 qt/base/ignore_list_dialog.py:32
#: cocoa/base/en.lproj/IgnoreListDialog.strings:0
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Ignore List"
msgstr "Lista Ignorar"
#: qt/base/app.py:115 cocoa/base/en.lproj/MainMenu.strings:0
msgid "dupeGuru Help"
msgstr "Ajuda dupeGuru"
#: qt/base/app.py:116 cocoa/base/en.lproj/MainMenu.strings:0
msgid "About dupeGuru"
msgstr "Sobre o dupeGuru"
#: qt/base/app.py:117
msgid "Register dupeGuru"
msgstr "Registrar dupeGuru"
#: qt/base/app.py:118
msgid "Check for Update"
msgstr "Buscar Atualizaçõs"
#: qt/base/app.py:119
msgid "Open Debug Log"
msgstr "Abrir Log de Debug"
#: qt/base/app.py:234 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
msgstr ""
"Ainda há uma ação em execução. Não é possível iniciar outra agora. "
"Espere alguns segundos e tente novamente."
#: qt/base/deletion_options.py:29
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid "Deletion Options"
msgstr "Opções de Apagamento"
#: qt/base/deletion_options.py:34
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid "Hardlink deleted files"
msgstr "Criar hardlink de arquivos apagados"
#: qt/base/deletion_options.py:37
msgid " (Mac OS X or Linux only)"
msgstr " (Mac OS X ou Linux somente)"
#: qt/base/deletion_options.py:39
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid ""
"After having deleted a duplicate, place a hardlink targeting the reference "
"file to replace the deleted file."
msgstr ""
"Após apagar uma duplicata, criar um hardlink direcionado ao arquivo "
"original para substituir o arquivo apagado."
#: qt/base/deletion_options.py:44
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid "Directly delete files"
msgstr "Apagar arquivos imediatamente"
#: qt/base/deletion_options.py:46
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid ""
"Instead of sending files to trash, delete them directly. This option is "
"usually used as a workaround when the normal deletion method doesn't work."
msgstr ""
"Apagar arquivos imediatamente ao invés de movê-los para o Lixo. Essa opção é "
"usada como alternativa para quando o método normal falhar."
#: qt/base/deletion_options.py:52
#: cocoa/base/en.lproj/DeletionOptions.strings:0
msgid "Proceed"
msgstr "Continuar"
#: qt/base/deletion_options.py:53
#: cocoa/base/en.lproj/DeletionOptions.strings:0
#: cocoa/base/en.lproj/PrioritizeDialog.strings:0
msgid "Cancel"
msgstr "Cancelar"
#: qt/base/details_table.py:16 cocoa/base/en.lproj/DetailsPanel.strings:0
#: cocoa/pe/en.lproj/DetailsPanel.strings:0
msgid "Attribute"
msgstr "Atributo"
#: qt/base/details_table.py:16 cocoa/base/en.lproj/DetailsPanel.strings:0
#: cocoa/pe/en.lproj/DetailsPanel.strings:0
msgid "Selected"
msgstr "Seleção"
#: qt/base/details_table.py:16 qt/base/directories_model.py:21
#: cocoa/base/en.lproj/DetailsPanel.strings:0
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/pe/en.lproj/DetailsPanel.strings:0
msgid "Reference"
msgstr "Referência"
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "Carregar…"
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "Janela de Resultados"
#: qt/base/directories_dialog.py:59
msgid "Add Folder..."
msgstr "Adicionar Pasta…"
#: qt/base/directories_dialog.py:67 qt/base/result_window.py:75
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "Arquivo"
#: qt/base/directories_dialog.py:69 qt/base/result_window.py:83
msgid "View"
msgstr "Visualização"
#: qt/base/directories_dialog.py:71 qt/base/result_window.py:85
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "Ajuda"
#: qt/base/directories_dialog.py:73 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "Carregar Resultados Recentes"
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "Selecione as pastas a serem escaneadas e pressione \"Escanear\"."
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "Carregar"
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "Escanear"
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr "Resultados não salvos"
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Você possui resultados não salvos, deseja encerrar assim mesmo?"
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr "Selecione a pasta a ser adicionada à lista de escaneamento"
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "Selecione um resultado para carregar"
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr "Todos os Arquivos (*.*)"
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:293
msgid "dupeGuru Results (*.dupeguru)"
msgstr "Resultados do dupeGuru (*.dupeguru)"
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr "Iniciar um novo escaneamento"
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr "Você possui resultados não salvos, deseja continuar assim mesmo?"
#: qt/base/directories_model.py:20
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Name"
msgstr "Nome"
#: qt/base/directories_model.py:20
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "State"
msgstr "Estado"
#: qt/base/directories_model.py:21
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Excluded"
msgstr "Excluído"
#: qt/base/directories_model.py:21
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Normal"
msgstr "Normal"
#: qt/base/ignore_list_dialog.py:45
#: cocoa/base/en.lproj/IgnoreListDialog.strings:0
msgid "Remove Selected"
msgstr "Remover Seleção"
#: qt/base/ignore_list_dialog.py:46
#: cocoa/base/en.lproj/IgnoreListDialog.strings:0
msgid "Clear"
msgstr "Limpar"
#: qt/base/ignore_list_dialog.py:47 qt/base/problem_dialog.py:57
#: cocoa/base/en.lproj/IgnoreListDialog.strings:0
#: cocoa/base/en.lproj/ProblemDialog.strings:0
msgid "Close"
msgstr "Fechar"
#: qt/base/preferences_dialog.py:37
msgid "Scan Type:"
msgstr "Tipo de Scan:"
#: qt/base/preferences_dialog.py:50
msgid "Filter Hardness:"
msgstr "Pressão do Filtro"
#: qt/base/preferences_dialog.py:76
msgid "More Results"
msgstr "+ Resultados"
#: qt/base/preferences_dialog.py:81
msgid "Fewer Results"
msgstr "- Resultados"
#: qt/base/preferences_dialog.py:88 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "Tam. fonte:"
#: qt/base/preferences_dialog.py:92
msgid "Language:"
msgstr "Idioma:"
#: qt/base/preferences_dialog.py:98 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "Copiar e Mover:"
#: qt/base/preferences_dialog.py:101 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "Exatamente no destino"
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "Recriar caminho relativo"
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "Recriar caminho absoluto"
#: qt/base/preferences_dialog.py:106 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "Comando Personalizado (argumentos: %d para duplicata, %r para referência):"
#: qt/base/preferences_dialog.py:184
msgid "dupeGuru has to restart for language changes to take effect."
msgstr "É necessário reiniciar o dupeGuru para que as mudanças de idioma surtam efeito"
#: qt/base/prioritize_dialog.py:71
#: cocoa/base/en.lproj/PrioritizeDialog.strings:0
msgid "Re-Prioritize duplicates"
msgstr "Re-Priorizar duplicatas"
#: qt/base/prioritize_dialog.py:75
#: cocoa/base/en.lproj/PrioritizeDialog.strings:0
msgid ""
"Add criteria to the right box and click OK to send the dupes that correspond"
" the best to these criteria to their respective group's reference position. "
"Read the help file for more information."
msgstr ""
"Adicione critérios à caixa da direita e clique OK para elevar as duplicatas"
" à posição de referência em seus respectivos grupos, baseado nos critérios escolhidos. "
"Leia a Ajuda para maiores informações."
#: qt/base/problem_dialog.py:31 cocoa/base/en.lproj/ProblemDialog.strings:0
msgid "Problems!"
msgstr "Problemas!"
#: qt/base/problem_dialog.py:35 cocoa/base/en.lproj/ProblemDialog.strings:0
msgid ""
"There were problems processing some (or all) of the files. The cause of "
"these problems are described in the table below. Those files were not "
"removed from your results."
msgstr ""
"Problemas ao processar alguns (ou todos) os arquivos. A causa desses "
"problemas vem detalhada abaixo. Esses arquivos não foram removidos "
"dos seus resultados."
#: qt/base/problem_dialog.py:52 cocoa/base/en.lproj/ProblemDialog.strings:0
msgid "Reveal Selected"
msgstr "Mostrar no Finder"
#: qt/base/result_window.py:44 qt/base/result_window.py:168
#: qt/me/details_dialog.py:20 qt/pe/details_dialog.py:25
#: qt/se/details_dialog.py:20 cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Details"
msgstr "Detalhes"
#: qt/base/result_window.py:45 qt/base/result_window.py:79
#: qt/base/result_window.py:143 qt/base/result_window.py:167
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Actions"
msgstr "Ações"
#: qt/base/result_window.py:46 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Show Dupes Only"
msgstr "Mostrar Somente Duplicatas"
#: qt/base/result_window.py:47 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Show Delta Values"
msgstr "Mostrar Valores Delta"
#: qt/base/result_window.py:48
msgid "Send Marked to Recycle Bin..."
msgstr "Mover Marcados ao Lixo…"
#: qt/base/result_window.py:49 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Move Marked to..."
msgstr "Mover Marcados para…"
#: qt/base/result_window.py:50 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Copy Marked to..."
msgstr "Copiar Marcados para…"
#: qt/base/result_window.py:51 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Remove Marked from Results"
msgstr "Remover Marcados dos Resultados"
#: qt/base/result_window.py:52
msgid "Re-Prioritize Results..."
msgstr "Re-Priorizar Resultados…"
#: qt/base/result_window.py:53 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Remove Selected from Results"
msgstr "Remover Seleção dos Resultados"
#: qt/base/result_window.py:54 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Add Selected to Ignore List"
msgstr "Adicionar Seleção à Lista Ignorar"
#: qt/base/result_window.py:55 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Make Selected Reference"
msgstr "Fazer da Seleção Referência"
#: qt/base/result_window.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Open Selected with Default Application"
msgstr "Abrir Seleção com Aplicativo Padrão"
#: qt/base/result_window.py:57
msgid "Open Containing Folder of Selected"
msgstr "Abrir Pasta da Seleção"
#: qt/base/result_window.py:58 cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Rename Selected"
msgstr "Renomear Seleção"
#: qt/base/result_window.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Mark All"
msgstr "Marcar Todos"
#: qt/base/result_window.py:60 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Mark None"
msgstr "Marcar Nenhum"
#: qt/base/result_window.py:61 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Invert Marking"
msgstr "Inverter Marcação"
#: qt/base/result_window.py:62 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Mark Selected"
msgstr "Marcar Seleção"
#: qt/base/result_window.py:63
msgid "Export To HTML"
msgstr "Exportar como HTML"
#: qt/base/result_window.py:64 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Save Results..."
msgstr "Salvar Resultados…"
#: qt/base/result_window.py:65 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Invoke Custom Command"
msgstr "Executar Comando Personalizado"
#: qt/base/result_window.py:77
msgid "Mark"
msgstr "Marcar"
#: qt/base/result_window.py:81 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Columns"
msgstr "Colunas"
#: qt/base/result_window.py:139 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Reset to Defaults"
msgstr "Restaurar Padrões"
#: qt/base/result_window.py:161
msgid "{} Results"
msgstr "{} Resultados"
#: qt/base/result_window.py:169 cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Dupes Only"
msgstr "Duplicatas"
#: qt/base/result_window.py:170
msgid "Delta Values"
msgstr "Valores Delta"
#: qt/base/result_window.py:292 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a file to save your results to"
msgstr "Selecione um arquivo para salvar seus resultados"
#: qt/me/preferences_dialog.py:39 qt/se/preferences_dialog.py:39
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Filename"
msgstr "Nome do Arquivo"
#: qt/me/preferences_dialog.py:40 cocoa/me/en.lproj/Preferences.strings:0
msgid "Filename - Fields"
msgstr "Nome do Arquivo - Campos"
#: qt/me/preferences_dialog.py:41 cocoa/me/en.lproj/Preferences.strings:0
msgid "Filename - Fields (No Order)"
msgstr "Nome do Arquivo - Campos (Sem Ordem)"
#: qt/me/preferences_dialog.py:42 cocoa/me/en.lproj/Preferences.strings:0
msgid "Tags"
msgstr "Tags"
#: qt/me/preferences_dialog.py:43 qt/pe/preferences_dialog.py:33
#: qt/se/preferences_dialog.py:40 cocoa/pe/en.lproj/Preferences.strings:0
msgid "Contents"
msgstr "Conteúdo"
#: qt/me/preferences_dialog.py:44
msgid "Audio Contents"
msgstr "Conteúdo de Áudio"
#: qt/me/preferences_dialog.py:55 cocoa/me/en.lproj/Preferences.strings:0
msgid "Tags to scan:"
msgstr "Escanear Tags:"
#: qt/me/preferences_dialog.py:61 cocoa/me/en.lproj/Preferences.strings:0
msgid "Track"
msgstr "Faixa"
#: qt/me/preferences_dialog.py:63 cocoa/me/en.lproj/Preferences.strings:0
msgid "Artist"
msgstr "Artista"
#: qt/me/preferences_dialog.py:65 cocoa/me/en.lproj/Preferences.strings:0
msgid "Album"
msgstr "Álbum"
#: qt/me/preferences_dialog.py:67 cocoa/me/en.lproj/Preferences.strings:0
msgid "Title"
msgstr "Nome"
#: qt/me/preferences_dialog.py:69 cocoa/me/en.lproj/Preferences.strings:0
msgid "Genre"
msgstr "Gênero"
#: qt/me/preferences_dialog.py:71 cocoa/me/en.lproj/Preferences.strings:0
msgid "Year"
msgstr "Ano"
#: qt/me/preferences_dialog.py:75 qt/se/preferences_dialog.py:49
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Word weighting"
msgstr "Importância da palavra"
#: qt/me/preferences_dialog.py:77 qt/se/preferences_dialog.py:51
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Match similar words"
msgstr "Coincidir palavras similares"
#: qt/me/preferences_dialog.py:79 qt/pe/preferences_dialog.py:41
#: qt/se/preferences_dialog.py:53 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Can mix file kind"
msgstr "Pode misturar tipo de arquivo"
#: qt/me/preferences_dialog.py:81 qt/pe/preferences_dialog.py:43
#: qt/se/preferences_dialog.py:55 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Use regular expressions when filtering"
msgstr "Usar expressões regulares ao filtrar"
#: qt/me/preferences_dialog.py:83 qt/pe/preferences_dialog.py:45
#: qt/se/preferences_dialog.py:57 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Remove empty folders on delete or move"
msgstr "Remover pastas vazias ao apagar ou mover"
#: qt/me/preferences_dialog.py:85 qt/pe/preferences_dialog.py:47
#: qt/se/preferences_dialog.py:76 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Ignore duplicates hardlinking to the same file"
msgstr "Ignorar duplicatas de hardlink a um mesmo arquivo"
#: qt/me/preferences_dialog.py:87 qt/pe/preferences_dialog.py:49
#: qt/se/preferences_dialog.py:78 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Debug mode (restart required)"
msgstr "Modo Debug (requer reinício)"
#: qt/pe/preferences_dialog.py:34 cocoa/pe/en.lproj/Preferences.strings:0
msgid "EXIF Timestamp"
msgstr "Timestamp EXIF"
#: qt/pe/preferences_dialog.py:39 cocoa/pe/en.lproj/Preferences.strings:0
msgid "Match pictures of different dimensions"
msgstr "Coincidir fotos de dimensões diferentes"
#: qt/pe/result_window.py:19 qt/pe/result_window.py:24
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Clear Picture Cache"
msgstr "Apagar Cache de fotos"
#: qt/pe/result_window.py:25 cocoa/base/en.lproj/Localizable.strings:0
msgid "Do you really want to remove all your cached picture analysis?"
msgstr "Deseja remover todo o cache das fotos já analizadas?"
#: qt/pe/result_window.py:28
msgid "Picture cache cleared."
msgstr "Cache de fotos apagado."
#: qt/se/preferences_dialog.py:41 cocoa/se/en.lproj/Preferences.strings:0
msgid "Folders"
msgstr "Pastas"
#: qt/se/preferences_dialog.py:60
msgid "Ignore files smaller than"
msgstr "Ignorar arquivos menores que"
#: qt/se/preferences_dialog.py:71 cocoa/se/en.lproj/Preferences.strings:0
msgid "KB"
msgstr "KB"
#: cocoa/base/en.lproj/DetailsPanel.strings:0
#: cocoa/pe/en.lproj/DetailsPanel.strings:0
msgid "Details of Selected File"
msgstr "Detalhes do Arquivo Selecionado"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Add New Folder..."
msgstr "Criar Nova Pasta…"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Load from file..."
msgstr "Carregar do arquivo…"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Reset to Default"
msgstr "Restaurar Padrões"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "'%@' already is in the list."
msgstr "'%@' já está na lista"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "'%@' does not exist."
msgstr "'%@' não existe"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "The name '%@' already exists."
msgstr "O nome '%@' já existe"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Add iTunes Library"
msgstr "Adicionar Biblioteca do iTunes"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Remove Dead Tracks in iTunes"
msgstr "Remover Faixas sem Referência no iTunes"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Add iPhoto Library"
msgstr "Adicionar Biblioteca do iPhoto"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Add Aperture Library"
msgstr "Adicionar Biblioteca do Aperture"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Yes"
msgstr "Sim"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "No"
msgstr "Não"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "OK"
msgstr "OK"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Bring All to Front"
msgstr "Trazer Todas Para a Frente"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Window"
msgstr "Janela"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Minimize"
msgstr "Minimizar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Hide dupeGuru"
msgstr "Ocultar dupeGuru"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Quit dupeGuru"
msgstr "Encerrar dupeGuru"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Hide Others"
msgstr "Ocultar Outros"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Show All"
msgstr "Mostrar Tudo"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Zoom"
msgstr "Reduzir/Ampliar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Details Panel"
msgstr "Painel de Detalhes"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Preferences..."
msgstr "Preferências…"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Folder Selection Window"
msgstr "Janela de Seleção de Pasta"
#: cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Send Marked to Trash..."
msgstr "Mover Marcados para o Lixo…"
#: cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Reveal Selected in Finder"
msgstr "Mostrar Seleção no Finder"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Close Window"
msgstr "Fechar Janela"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Start Duplicate Scan"
msgstr "Iniciar Escaneamento de Duplicata"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Export Results to XHTML"
msgstr "Exportar Resultados para XHTML"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Check for update..."
msgstr "Buscar Atualizações…"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Mode"
msgstr "Modo"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Edit"
msgstr "Editar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Cut"
msgstr "Cortar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Copy"
msgstr "Copiar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Paste"
msgstr "Colar"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "dupeGuru Website"
msgstr "Site do dupeGuru"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Re-Prioritize Results"
msgstr "Re-Priorizar Resultados"
#: cocoa/base/en.lproj/MainMenu.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Quick Look"
msgstr "Visualização Rápida"
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Filter Results..."
msgstr "Filtrar Resultados…"
#: cocoa/base/en.lproj/PrioritizeDialog.strings:0
msgid "Ok"
msgstr "Ok"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "dupeGuru Results"
msgstr "Resultados do dupeGuru"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Marked: 0 files, 0 B. Total: 0 files, 0 B."
msgstr "Marcado: 0 arquivos, 0 B. Total: 0 arquivos, 0 B."
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Options"
msgstr "Opções"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Filter"
msgstr "Filtrar"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Action"
msgstr "Ação"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Directories"
msgstr "Pastas"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Delta"
msgstr "Delta"
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Menu"
msgstr "Menu"
#: cocoa/se/en.lproj/Preferences.strings:0
msgid "dupeGuru Preferences"
msgstr "Preferências do dupeGuru"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "More results"
msgstr "+ resultados"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Fewer results"
msgstr "- resultados"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Filter hardness:"
msgstr "Pressão do filtro:"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Scan type:"
msgstr "Tipo de scan:"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Content"
msgstr "Conteúdo"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Automatically check for updates"
msgstr "Buscar atualizações automaticamente"
#: cocoa/se/en.lproj/Preferences.strings:0
msgid "Ignore files smaller than:"
msgstr "Ignorar arquivos menores que:"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Basic"
msgstr "Básico"
#: cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Advanced"
msgstr "Avançado"
#: cocoa/se/en.lproj/Preferences.strings:0
msgid "Custom command (arguments: %d for dupe, %r for ref):"
msgstr "Comando personalizado (argumentos: %d (dup), %r (ref)):"
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "dupeGuru ME Preferences"
msgstr "Preferências do dupeGuru ME"
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Audio Content"
msgstr "Conteúdo de Áudio"
#: cocoa/me/en.lproj/Preferences.strings:0
msgid "Remove empty folders after delete and move"
msgstr "Remover pastas vazias após apagar e mover"
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "dupeGuru PE Preferences"
msgstr "Preferências do dupeGuru PE"

View File

@@ -14,31 +14,22 @@ import json
from argparse import ArgumentParser from argparse import ArgumentParser
from hscommon.plat import ISWINDOWS, ISLINUX from hscommon.plat import ISWINDOWS, ISLINUX
from hscommon.build import (build_dmg, add_to_pythonpath, print_and_do, copy_packages, from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, build_debian_changelog,
build_debian_changelog, copy_qt_plugins, get_module_version) copy_qt_plugins, get_module_version, filereplace, copy, setup_package_argparser,
package_cocoa_app_in_dmg)
def parse_args(): def parse_args():
parser = ArgumentParser() parser = ArgumentParser()
parser.add_argument('--sign', dest='sign_identity', setup_package_argparser(parser)
help="Sign app under specified identity before packaging (OS X only)") return parser.parse_args()
args = parser.parse_args()
return args
def package_cocoa(edition, sign_identity): def package_cocoa(edition, args):
app_path = { app_path = {
'se': 'cocoa/se/dupeGuru.app', 'se': 'cocoa/se/dupeGuru.app',
'me': 'cocoa/me/dupeGuru ME.app', 'me': 'cocoa/me/dupeGuru ME.app',
'pe': 'cocoa/pe/dupeGuru PE.app', 'pe': 'cocoa/pe/dupeGuru PE.app',
}[edition] }[edition]
# Rather than signing our app in XCode during the build phase, we sign it during the package package_cocoa_app_in_dmg(app_path, '.', args)
# phase because running the app before packaging can modify it and we want to be sure to have
# a valid signature.
if sign_identity:
sign_identity = "Developer ID Application: {}".format(sign_identity)
print_and_do('codesign --force --sign "{}" "{}"'.format(sign_identity, app_path))
else:
print("WARNING: packaging an unsigned application")
build_dmg(app_path, '.')
def package_windows(edition, dev): def package_windows(edition, dev):
if not ISWINDOWS: if not ISWINDOWS:
@@ -99,10 +90,17 @@ def package_debian(edition):
if edition == 'me': if edition == 'me':
packages.append('hsaudiotag') packages.append('hsaudiotag')
copy_packages(packages, srcpath) copy_packages(packages, srcpath)
shutil.copytree(ed('debian_{0}'), op.join(destpath, 'debian')) debdest = op.join(destpath, 'debian')
os.makedirs(debdest)
debopts = json.load(open(op.join('debian', ed('{}.json'))))
for fn in ['compat', 'copyright', 'dirs']:
copy(op.join('debian', fn), op.join(debdest, fn))
for fn in ['control', 'rules']:
filereplace(op.join('debian', fn), op.join(debdest, fn), **debopts)
filereplace(op.join('debian', 'dupeguru.desktop'), op.join(debdest, ed('dupeguru_{}.desktop')), **debopts)
changelogpath = op.join('help', ed('changelog_{}')) changelogpath = op.join('help', ed('changelog_{}'))
changelog_dest = op.join(destpath, 'debian', 'changelog') changelog_dest = op.join(debdest, 'changelog')
project_name = ed('dupeguru-{0}') project_name = debopts['pkgname']
from_version = {'se': '2.9.2', 'me': '5.7.2', 'pe': '1.8.5'}[edition] from_version = {'se': '2.9.2', 'me': '5.7.2', 'pe': '1.8.5'}[edition]
build_debian_changelog(changelogpath, changelog_dest, project_name, from_version=from_version) build_debian_changelog(changelogpath, changelog_dest, project_name, from_version=from_version)
shutil.copytree(op.join('build', 'help'), op.join(srcpath, 'help')) shutil.copytree(op.join('build', 'help'), op.join(srcpath, 'help'))
@@ -120,7 +118,7 @@ def main():
dev = conf['dev'] dev = conf['dev']
print("Packaging dupeGuru {0} with UI {1}".format(edition.upper(), ui)) print("Packaging dupeGuru {0} with UI {1}".format(edition.upper(), ui))
if ui == 'cocoa': if ui == 'cocoa':
package_cocoa(edition, args.sign_identity) package_cocoa(edition, args)
elif ui == 'qt': elif ui == 'qt':
if ISWINDOWS: if ISWINDOWS:
package_windows(edition, dev) package_windows(edition, dev)

View File

@@ -17,7 +17,7 @@ from qtlib.preferences import LANGNAMES
tr = trget('ui') tr = trget('ui')
SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru', 'uk'] SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru', 'uk', 'pt_BR']
class PreferencesDialogBase(QDialog): class PreferencesDialogBase(QDialog):
def __init__(self, parent, app): def __init__(self, parent, app):