5
5
from PyQt4.QtCore import QVariant, QFileInfo, QObject, SIGNAL, QBuffer, Qt, QSize, \
6
QByteArray, QUrl, QTranslator, QCoreApplication, QThread
6
QByteArray, QTranslator, QCoreApplication, QThread
7
7
from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \
8
8
QIcon, QTableView, QApplication, QDialog, QPushButton
10
10
ORG_NAME = 'KovidsBrain'
11
11
APP_UID = 'libprs500'
12
12
from calibre import islinux, iswindows, isosx
13
from calibre.startup import get_lang
14
13
from calibre.utils.config import Config, ConfigProxy, dynamic
15
import calibre.resources as resources
14
from calibre.utils.localization import set_qt_translator
16
15
from calibre.ebooks.metadata.meta import get_metadata, metadata_from_formats
17
16
from calibre.ebooks.metadata import MetaInformation
187
186
def question_dialog(parent, title, msg, det_msg=''):
188
187
d = MessageBox(QMessageBox.Question, title, msg, QMessageBox.Yes|QMessageBox.No,
190
d.setIconPixmap(QPixmap(':/images/dialog_information.svg'))
189
d.setIconPixmap(QPixmap(I('dialog_information.svg')))
191
190
d.setEscapeButton(QMessageBox.No)
192
191
return d.exec_() == QMessageBox.Yes
194
193
def info_dialog(parent, title, msg, det_msg='', show=False):
195
194
d = MessageBox(QMessageBox.Information, title, msg, QMessageBox.Ok,
197
d.setIconPixmap(QPixmap(':/images/dialog_information.svg'))
196
d.setIconPixmap(QPixmap(I('dialog_information.svg')))
411
402
self.selected_files = None
415
self.fd = QFileDialog(parent)
416
self.fd.setFileMode(mode)
417
self.fd.setIconProvider(_file_icon_provider)
418
self.fd.setModal(modal)
419
self.fd.setNameFilter(ftext)
420
self.fd.setWindowTitle(title)
421
state = dynamic[self.dialog_name]
422
if not state or not self.fd.restoreState(state):
423
self.fd.setDirectory(os.path.expanduser('~'))
424
osu = [i for i in self.fd.sidebarUrls()]
425
self.fd.setSidebarUrls(osu + _sidebar_directories)
426
QObject.connect(self.fd, SIGNAL('accepted()'), self.save_dir)
427
self.accepted = self.fd.exec_() == QFileDialog.Accepted
405
initial_dir = dynamic.get(self.dialog_name, os.path.expanduser('~'))
406
if not isinstance(initial_dir, basestring):
407
initial_dir = os.path.expanduser('~')
408
self.selected_files = []
409
if mode == QFileDialog.AnyFile:
410
f = unicode(QFileDialog.getSaveFileName(parent, title, initial_dir, ftext, ""))
411
if f and os.path.exists(f):
412
self.selected_files.append(f)
413
elif mode == QFileDialog.ExistingFile:
414
f = unicode(QFileDialog.getOpenFileName(parent, title, initial_dir, ftext, ""))
415
if f and os.path.exists(f):
416
self.selected_files.append(f)
417
elif mode == QFileDialog.ExistingFiles:
418
fs = QFileDialog.getOpenFileNames(parent, title, initial_dir, ftext, "")
421
if f and os.path.exists(f):
422
self.selected_files.append(f)
429
dir = dynamic.get(self.dialog_name, os.path.expanduser('~'))
430
self.selected_files = []
431
if mode == QFileDialog.AnyFile:
432
f = qstring_to_unicode(
433
QFileDialog.getSaveFileName(parent, title, dir, ftext, ""))
434
if os.path.exists(f):
435
self.selected_files.append(f)
436
elif mode == QFileDialog.ExistingFile:
437
f = qstring_to_unicode(
438
QFileDialog.getOpenFileName(parent, title, dir, ftext, ""))
439
if os.path.exists(f):
440
self.selected_files.append(f)
441
elif mode == QFileDialog.ExistingFiles:
442
fs = QFileDialog.getOpenFileNames(parent, title, dir, ftext, "")
444
if os.path.exists(qstring_to_unicode(f)):
445
self.selected_files.append(f)
447
opts = QFileDialog.ShowDirsOnly if mode == QFileDialog.DirectoryOnly else QFileDialog.Option()
448
f = qstring_to_unicode(
449
QFileDialog.getExistingDirectory(parent, title, dir, opts))
450
if os.path.exists(f):
451
self.selected_files.append(f)
452
if self.selected_files:
453
self.selected_files = [unicode(q) for q in self.selected_files]
454
saved_loc = self.selected_files[0]
455
if os.path.isfile(saved_loc):
456
saved_loc = os.path.dirname(saved_loc)
457
dynamic[self.dialog_name] = saved_loc
458
self.accepted = bool(self.selected_files)
424
opts = QFileDialog.ShowDirsOnly if mode == QFileDialog.DirectoryOnly else QFileDialog.Option()
425
f = unicode(QFileDialog.getExistingDirectory(parent, title, initial_dir, opts))
426
if os.path.exists(f):
427
self.selected_files.append(f)
428
if self.selected_files:
429
self.selected_files = [unicode(q) for q in self.selected_files]
430
saved_loc = self.selected_files[0]
431
if os.path.isfile(saved_loc):
432
saved_loc = os.path.dirname(saved_loc)
433
dynamic[self.dialog_name] = saved_loc
434
self.accepted = bool(self.selected_files)
460
436
def get_files(self):
461
if islinux and self.fd.result() != self.fd.Accepted:
463
437
if self.selected_files is None:
464
438
return tuple(os.path.abspath(qstring_to_unicode(i)) for i in self.fd.selectedFiles())
465
439
return tuple(self.selected_files)
469
dynamic[self.dialog_name] = self.fd.saveState()
472
442
def choose_dir(window, name, title):
473
443
fd = FileDialog(title, [], False, window, name=name,