def on_pb_next_released(self): # Try to convert the given file. If it was (partly or completely) successful, proceed to the # next page. Otherwise stay on the first page to let the user investigate the error. self.setCursor(Qt.WaitCursor) try: self.converter = Converter() self.converter.quiet = True filename = str(self.le_filename.text()) self.converter.complete_check(filename) self.converter.execute() self.txt_log.document().setPlainText('\n'.join( self.converter.successfuls)) self.pb_save.setEnabled(True) self._enable_save() self.stack_steps.setCurrentIndex(1) # put together an appropriate information message total_changes = len(self.converter.successfuls) + len( self.converter.warnings) num_warnings = len(self.converter.warnings) if self.converter.warnings: info = ( '<b>Found a total of %d changes, but %d was not completed because of errors.' % (total_changes, num_warnings)) sec_info = ( 'You can still save the changes that was successful by selecting a ' 'filename and clicking %s' % self.pb_save.text()) self._display_info(info, sec_info, icon='warning', show_message_button=True) self.pb_show_warnings.setFocus() else: info = '<b>Found a total of %d changes, all completed OK.</b>' % total_changes sec_info = ( 'To save the changes, select a filename and click <i>%s</i>.' % self.pb_save.text()) self._display_info(info) self.pb_save.setFocus() # suggest a converted filename path, name_of_file = os.path.split(filename) base_name, ext = os.path.splitext(name_of_file) suggested_savename = os.path.join(path, base_name + '_opus_43' + ext) suggested_savename = os.path.normpath(suggested_savename) self.le_filename_out.setText(suggested_savename) except SyntaxError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info( '<b>This XML file seems to have an invalid syntax.</b>', ex, icon='warning')
def on_pb_next_released(self): # Try to convert the given file. If it was (partly or completely) successful, proceed to the # next page. Otherwise stay on the first page to let the user investigate the error. self.setCursor(Qt.WaitCursor) try: self.converter = Converter() self.converter.quiet = True filename = str(self.le_filename.text()) self.converter.complete_check(filename) self.converter.execute() self.txt_log.document().setPlainText('\n'.join(self.converter.successfuls)) self.pb_save.setEnabled(True) self._enable_save() self.stack_steps.setCurrentIndex(1) # put together an appropriate information message total_changes = len(self.converter.successfuls) + len(self.converter.warnings) num_warnings = len(self.converter.warnings) if self.converter.warnings: info = ('<b>Found a total of %d changes, but %d was not completed because of errors.' % (total_changes, num_warnings)) sec_info = ('You can still save the changes that was successful by selecting a ' 'filename and clicking %s' % self.pb_save.text()) self._display_info(info, sec_info, icon = 'warning', show_message_button = True) self.pb_show_warnings.setFocus() else: info = '<b>Found a total of %d changes, all completed OK.</b>' % total_changes sec_info = ('To save the changes, select a filename and click <i>%s</i>.' % self.pb_save.text()) self._display_info(info) self.pb_save.setFocus() # suggest a converted filename path, name_of_file = os.path.split(filename) base_name, ext = os.path.splitext(name_of_file) suggested_savename = os.path.join(path, base_name + '_opus_43' + ext) suggested_savename = os.path.normpath(suggested_savename) self.le_filename_out.setText(suggested_savename) except SyntaxError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info('<b>This XML file seems to have an invalid syntax.</b>', ex, icon = 'warning')
class ConverterGui(QDialog, Ui_ConverterGui): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.frame_log.setVisible(False) self.connect(self.pb_get_filename, SIGNAL('released()'), self._get_filename) self.connect(self.pb_get_filename_out, SIGNAL('released()'), self._get_filename) self.le_filename.setText('') self.converter = None self.stack_steps.setCurrentIndex(0) self.first_page_msg = ( '<b>This is a tool to convert Opus project XML files from version 4.x to 4.3</b><br/>' 'Please select the project file that you wish to upgrade.') self._display_info(self.first_page_msg, icon='info') self.resize(self.width(), 0) # compress the dialogs height self._enable_save() self.le_filename.setFocus() self.raise_() def _get_filename(self): if self.stack_steps.currentIndex() == 0: filename = QFileDialog.getOpenFileName() widget = self.le_filename else: filename = QFileDialog.getSaveFileName() widget = self.le_filename_out if not filename: return widget.setText(filename) widget.setToolTip(filename) widget.setCursorPosition(len(filename)) def _enable_save(self, state=True): self.pb_save.setEnabled(state) self.pb_save.setText('Save' if state else 'Saved') self.le_filename_out.setEnabled(state) self.pb_get_filename_out.setEnabled(state) def _display_info(self, first_msg, secondary_msg=None, icon='info', show_message_button=False): # show information in the information box for the current stack index # icon can be 'info' (default), 'warning' or 'ok' # if show_message_button is True, the show message button is shown (only on page 1) icon_widgets = (self.p0_info_icon, self.p0_warning_icon, self.p1_info_icon, self.p1_ok_icon, self.p1_warning_icon) for widget in icon_widgets: widget.setVisible(False) # select widgets based on current page if self.stack_steps.currentIndex() == 0: icon_widgets = { 'info': self.p0_info_icon, 'warning': self.p0_warning_icon, 'ok': self.p0_info_icon } text_widget = self.p0_text else: icon_widgets = { 'info': self.p1_info_icon, 'warning': self.p1_warning_icon, 'ok': self.p1_ok_icon } text_widget = self.p1_text self.pb_show_warnings.setVisible(show_message_button) icon_widgets[icon].setVisible(True) if secondary_msg: msg = '<qt>%s<br/>%s</qt>' % (first_msg, secondary_msg) else: msg = '<qt>%s</qt>' % first_msg text_widget.setText(msg) def on_pb_log_released(self): self.frame_log.setVisible(self.pb_log.isChecked()) self.frame_page2.setVisible(not self.pb_log.isChecked()) def on_pb_next_released(self): # Try to convert the given file. If it was (partly or completely) successful, proceed to the # next page. Otherwise stay on the first page to let the user investigate the error. self.setCursor(Qt.WaitCursor) try: self.converter = Converter() self.converter.quiet = True filename = str(self.le_filename.text()) self.converter.complete_check(filename) self.converter.execute() self.txt_log.document().setPlainText('\n'.join( self.converter.successfuls)) self.pb_save.setEnabled(True) self._enable_save() self.stack_steps.setCurrentIndex(1) # put together an appropriate information message total_changes = len(self.converter.successfuls) + len( self.converter.warnings) num_warnings = len(self.converter.warnings) if self.converter.warnings: info = ( '<b>Found a total of %d changes, but %d was not completed because of errors.' % (total_changes, num_warnings)) sec_info = ( 'You can still save the changes that was successful by selecting a ' 'filename and clicking %s' % self.pb_save.text()) self._display_info(info, sec_info, icon='warning', show_message_button=True) self.pb_show_warnings.setFocus() else: info = '<b>Found a total of %d changes, all completed OK.</b>' % total_changes sec_info = ( 'To save the changes, select a filename and click <i>%s</i>.' % self.pb_save.text()) self._display_info(info) self.pb_save.setFocus() # suggest a converted filename path, name_of_file = os.path.split(filename) base_name, ext = os.path.splitext(name_of_file) suggested_savename = os.path.join(path, base_name + '_opus_43' + ext) suggested_savename = os.path.normpath(suggested_savename) self.le_filename_out.setText(suggested_savename) except SyntaxError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info( '<b>This XML file seems to have an invalid syntax.</b>', ex, icon='warning') except IOError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info( '<b>An read error occurred while trying to load the file.</b>', ex, icon='warning')
class ConverterGui(QDialog, Ui_ConverterGui): def __init__(self, parent = None): QDialog.__init__(self, parent) self.setupUi(self) self.frame_log.setVisible(False) self.connect(self.pb_get_filename, SIGNAL('released()'), self._get_filename) self.connect(self.pb_get_filename_out, SIGNAL('released()'), self._get_filename) self.le_filename.setText('') self.converter = None self.stack_steps.setCurrentIndex(0) self.first_page_msg = ('<b>This is a tool to convert Opus project XML files from version 4.x to 4.3</b><br/>' 'Please select the project file that you wish to upgrade.') self._display_info(self.first_page_msg, icon = 'info') self.resize(self.width(), 0) # compress the dialogs height self._enable_save() self.le_filename.setFocus() self.raise_() def _get_filename(self): if self.stack_steps.currentIndex() == 0: filename = QFileDialog.getOpenFileName() widget = self.le_filename else: filename = QFileDialog.getSaveFileName() widget = self.le_filename_out if not filename: return widget.setText(filename) widget.setToolTip(filename) widget.setCursorPosition(len(filename)) def _enable_save(self, state = True): self.pb_save.setEnabled(state) self.pb_save.setText('Save' if state else 'Saved') self.le_filename_out.setEnabled(state) self.pb_get_filename_out.setEnabled(state) def _display_info(self, first_msg, secondary_msg = None, icon = 'info', show_message_button = False): # show information in the information box for the current stack index # icon can be 'info' (default), 'warning' or 'ok' # if show_message_button is True, the show message button is shown (only on page 1) icon_widgets = (self.p0_info_icon, self.p0_warning_icon, self.p1_info_icon, self.p1_ok_icon, self.p1_warning_icon) for widget in icon_widgets: widget.setVisible(False) # select widgets based on current page if self.stack_steps.currentIndex() == 0: icon_widgets = {'info': self.p0_info_icon, 'warning': self.p0_warning_icon, 'ok': self.p0_info_icon} text_widget = self.p0_text else: icon_widgets = {'info': self.p1_info_icon, 'warning': self.p1_warning_icon, 'ok': self.p1_ok_icon} text_widget = self.p1_text self.pb_show_warnings.setVisible(show_message_button) icon_widgets[icon].setVisible(True) if secondary_msg: msg = '<qt>%s<br/>%s</qt>' %(first_msg, secondary_msg) else: msg = '<qt>%s</qt>' %first_msg text_widget.setText(msg) def on_pb_log_released(self): self.frame_log.setVisible(self.pb_log.isChecked()) self.frame_page2.setVisible(not self.pb_log.isChecked()) def on_pb_next_released(self): # Try to convert the given file. If it was (partly or completely) successful, proceed to the # next page. Otherwise stay on the first page to let the user investigate the error. self.setCursor(Qt.WaitCursor) try: self.converter = Converter() self.converter.quiet = True filename = str(self.le_filename.text()) self.converter.complete_check(filename) self.converter.execute() self.txt_log.document().setPlainText('\n'.join(self.converter.successfuls)) self.pb_save.setEnabled(True) self._enable_save() self.stack_steps.setCurrentIndex(1) # put together an appropriate information message total_changes = len(self.converter.successfuls) + len(self.converter.warnings) num_warnings = len(self.converter.warnings) if self.converter.warnings: info = ('<b>Found a total of %d changes, but %d was not completed because of errors.' % (total_changes, num_warnings)) sec_info = ('You can still save the changes that was successful by selecting a ' 'filename and clicking %s' % self.pb_save.text()) self._display_info(info, sec_info, icon = 'warning', show_message_button = True) self.pb_show_warnings.setFocus() else: info = '<b>Found a total of %d changes, all completed OK.</b>' % total_changes sec_info = ('To save the changes, select a filename and click <i>%s</i>.' % self.pb_save.text()) self._display_info(info) self.pb_save.setFocus() # suggest a converted filename path, name_of_file = os.path.split(filename) base_name, ext = os.path.splitext(name_of_file) suggested_savename = os.path.join(path, base_name + '_opus_43' + ext) suggested_savename = os.path.normpath(suggested_savename) self.le_filename_out.setText(suggested_savename) except SyntaxError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info('<b>This XML file seems to have an invalid syntax.</b>', ex, icon = 'warning') except IOError, ex: self.le_filename.setFocus() self.le_filename.selectAll() self._display_info('<b>An read error occurred while trying to load the file.</b>', ex, icon = 'warning')