def build_report(self): file_choices = "Jinga template (*.jing)" source_name = QFileDialog.getOpenFileName(self, 'Open template', 'templates', file_choices) if not (source_name and source_name[0]): return source_name = source_name[0] report_name = ".".join(source_name.split("/")[-1].split(".")[:-1]) report_dir = source_name.split("/")[:-1] target_name = QFileDialog.getSaveFileName(self, 'Save report', "%s/%s" % (report_dir, report_name), 'Report file (%s)' % report_name) if not (target_name and target_name[0]): return target_name = target_name[0] splash_pix = QPixmap('splash_loading.png') splash = QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint) splash.setMask(splash_pix.mask()) splash.show() self.app.processEvents() Report.to_transform(self, source_name, target_name) splash.close() try: from subprocess import Popen, PIPE p = Popen(['xsel','-pi'], stdin=PIPE) p.communicate(input=target_name) copied = True except: copied = False QMessageBox.about(self, "Report generated", "Report saved into '%s'%s" % (target_name, "" if not copied else " (copied into clipboard)"))