':param gui: Parent gui
:param entries: List of 3-tuples  [(target calibre id, calibre metadata object, path to epub file)]
:param callback_fn: the function from action.py that will do the heavy lifting (process_epub_formats)
:param status_msg_type: string to indicate what the ProgressDialog is operating on (cosmetic only)
:param action_type: 2-tuple of strings indicating what the ProgressDialog is doing to param status_msg_type (cosmetic only)'

def __init__(self, gui, entries, callback_fn, status_msg_type=u'formats', action_type=(u'Adding', u'Added')):

    self.total_count = len(entries)
    QProgressDialog.__init__(self, u'', u'Cancel', 0, self.total_count, gui)
    self.setMinimumWidth(500)
    (self.entries, self.callback_fn) = (entries, callback_fn)
    (self.action_type, self.status_msg_type) = (action_type, status_msg_type)
    self.gui = gui
    self.setWindowTitle(u'{0}    {1}    {2}...'.format(self.action_type[0], self.total_count, self.status_msg_type))
    (self.i, self.successes, self.failures) = (0, [], [])
    QTimer.singleShot(0, self.do_book_action)
    self.exec_()
