mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
[#188 state:fixed] Instead of showing a crash report on iTunes communication problems, show a friendlier message.
This commit is contained in:
parent
22de2d803a
commit
5fb7742cf4
@ -213,6 +213,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[Dialogs showMessage:msg];
|
[Dialogs showMessage:msg];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)askYesNoWithPrompt:(NSString *)prompt
|
||||||
|
{
|
||||||
|
return [Dialogs askYesNo:prompt] == NSAlertFirstButtonReturn;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setupAsRegistered
|
- (void)setupAsRegistered
|
||||||
{
|
{
|
||||||
// Nothing to do.
|
// Nothing to do.
|
||||||
|
@ -20,7 +20,7 @@ JOBID2TITLE = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DupeGuruView(FairwareView):
|
class DupeGuruView(FairwareView):
|
||||||
pass
|
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
|
||||||
|
|
||||||
class PyDupeGuruBase(PyFairware):
|
class PyDupeGuruBase(PyFairware):
|
||||||
FOLLOW_PROTOCOLS = ['Worker']
|
FOLLOW_PROTOCOLS = ['Worker']
|
||||||
@ -193,3 +193,7 @@ class PyDupeGuruBase(PyFairware):
|
|||||||
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
|
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
|
||||||
proxy.postNotification_userInfo_('JobStarted', ud)
|
proxy.postNotification_userInfo_('JobStarted', ud)
|
||||||
|
|
||||||
|
@dontwrap
|
||||||
|
def ask_yes_no(self, prompt):
|
||||||
|
return self.callback.askYesNoWithPrompt_(prompt)
|
||||||
|
|
||||||
|
@ -171,6 +171,22 @@ class DupeGuruME(DupeGuruBase):
|
|||||||
return ITunesSong(path)
|
return ITunesSong(path)
|
||||||
return DupeGuruBase._create_file(self, path)
|
return DupeGuruBase._create_file(self, path)
|
||||||
|
|
||||||
|
def _job_completed(self, jobid, exc):
|
||||||
|
if (jobid in {JobType.RemoveDeadTracks, JobType.ScanDeadTracks}) and (exc is not None):
|
||||||
|
msg = tr("There were communication problems with iTunes. The operation couldn't be completed.")
|
||||||
|
self.view.show_message(msg)
|
||||||
|
return True
|
||||||
|
if jobid == JobType.ScanDeadTracks:
|
||||||
|
dead_tracks_count = len(self.dead_tracks)
|
||||||
|
if dead_tracks_count > 0:
|
||||||
|
msg = tr("Your iTunes Library contains %d dead tracks ready to be removed. Continue?")
|
||||||
|
if self.view.ask_yes_no(msg % dead_tracks_count):
|
||||||
|
self.remove_dead_tracks()
|
||||||
|
else:
|
||||||
|
msg = tr("You have no dead tracks in your iTunes Library")
|
||||||
|
self.view.show_message(msg)
|
||||||
|
DupeGuruBase._job_completed(self, jobid, exc)
|
||||||
|
|
||||||
def copy_or_move(self, dupe, copy, destination, dest_type):
|
def copy_or_move(self, dupe, copy, destination, dest_type):
|
||||||
if isinstance(dupe, ITunesSong):
|
if isinstance(dupe, ITunesSong):
|
||||||
copy = True
|
copy = True
|
||||||
@ -221,16 +237,9 @@ class PyDupeGuru(PyDupeGuruBase):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._init(DupeGuruME)
|
self._init(DupeGuruME)
|
||||||
|
|
||||||
def removeDeadTracks(self):
|
|
||||||
self.model.remove_dead_tracks()
|
|
||||||
|
|
||||||
def scanDeadTracks(self):
|
def scanDeadTracks(self):
|
||||||
self.model.scan_dead_tracks()
|
self.model.scan_dead_tracks()
|
||||||
|
|
||||||
#---Information
|
|
||||||
def deadTrackCount(self) -> int:
|
|
||||||
return len(self.model.dead_tracks)
|
|
||||||
|
|
||||||
#---Properties
|
#---Properties
|
||||||
def setMinMatchPercentage_(self, percentage: int):
|
def setMinMatchPercentage_(self, percentage: int):
|
||||||
self.model.scanner.min_match_percentage = percentage
|
self.model.scanner.min_match_percentage = percentage
|
||||||
|
@ -74,22 +74,4 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
{
|
{
|
||||||
[model scanDeadTracks];
|
[model scanDeadTracks];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Notifications */
|
|
||||||
- (void)jobCompleted:(NSNotification *)aNotification
|
|
||||||
{
|
|
||||||
[super jobCompleted:aNotification];
|
|
||||||
id lastAction = [[ProgressController mainProgressController] jobId];
|
|
||||||
if ([lastAction isEqualTo:jobScanDeadTracks]) {
|
|
||||||
NSInteger deadTrackCount = [model deadTrackCount];
|
|
||||||
if (deadTrackCount > 0) {
|
|
||||||
NSString *msg = TR(@"Your iTunes Library contains %d dead tracks ready to be removed. Continue?");
|
|
||||||
if ([Dialogs askYesNo:[NSString stringWithFormat:msg,deadTrackCount]] == NSAlertFirstButtonReturn)
|
|
||||||
[model removeDeadTracks];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
[Dialogs showMessage:TR(@"You have no dead tracks in your iTunes Library")];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@end
|
@end
|
||||||
|
@ -80,6 +80,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
# open_path(path)
|
# open_path(path)
|
||||||
# reveal_path(path)
|
# reveal_path(path)
|
||||||
# start_job(jobid, func, args=()) ( func(j, *args) )
|
# start_job(jobid, func, args=()) ( func(j, *args) )
|
||||||
|
# ask_yes_no(prompt) --> bool
|
||||||
|
|
||||||
# in fairware prompts, we don't mention the edition, it's too long.
|
# in fairware prompts, we don't mention the edition, it's too long.
|
||||||
PROMPT_NAME = "dupeGuru"
|
PROMPT_NAME = "dupeGuru"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user