From 8da67341bd97a4cc837c30732d05518cba58c8f9 Mon Sep 17 00:00:00 2001 From: leyghisbb Date: Fri, 30 Apr 2021 11:59:52 +0200 Subject: [PATCH] no message --- .../fablabchemnitz/output_pro/outputpro.py | 1959 ++++++++--------- 1 file changed, 974 insertions(+), 985 deletions(-) diff --git a/extensions/fablabchemnitz/output_pro/outputpro.py b/extensions/fablabchemnitz/output_pro/outputpro.py index c09421b1..6c2f13af 100644 --- a/extensions/fablabchemnitz/output_pro/outputpro.py +++ b/extensions/fablabchemnitz/output_pro/outputpro.py @@ -38,1000 +38,989 @@ def unittouu(string): class OutputProBitmap(inkex.EffectExtension): - #def add_arguments(self, pars): - #pars.add_argument("--title") - #pars.add_argument("-n", "--noffset",type=float, default=0.0, help="normal offset") - #pars.add_argument("-t", "--toffset", type=float, default=0.0, help="tangential offset") - #pars.add_argument("-k", "--kind", default=True, help="choose between wave or snake effect") - #pars.add_argument("-c", "--copymode", default=True, help="repeat the path to fit deformer's length") - #pars.add_argument("-p", "--space", type=float, default=0.0) - #pars.add_argument("-v", "--vertical", type=inkex.Boolean, default=False, help="reference path is vertical") - #pars.add_argument("-d", "--duplicate", type=inkex.Boolean, default=False, help="duplicate pattern before deformation") - def effect(self): - with open(os.path.join(os.path.abspath(inkex.utils.get_user_directory() + "/../"), "preferences.xml"), 'r') as f: - inkscape_config = f.read() - - list_of_export_formats = ['JPEG'] - list_of_format_tips = {'JPEG':'The JPEG format always has some loss of quality. Although it supports CMYK, it is not recommended for use in printed graphics.'} - list_of_color_modes_jpeg = ['CMYK','RGB','Gray','CMY','HSB','HSL','HWB','Lab','Log', 'OHTA','Rec601Luma','Rec601YCbCr','Rec709Luma','Rec709YCbCr','sRGB','XYZ','YCbCr','YCC','YIQ','YPbPr','YUV'] - list_of_interlacing_jpeg = {u'None':'none', u'Line':'line', u'Plane':'plane', u'Partition':'partition'} - list_of_noise_jpeg = {u'Gaussian':'Gaussian-noise', u'Impulse':'Impulse-noise', u'Laplacian':'Laplacian-noise', u'Multiplicative':'Multiplicative-noise', u'Poisson':'Poisson-noise', u'Uniform':'Uniform-noise'} - list_of_subsampling_jpeg = ['1x1, 1x1, 1x1', '2x1, 1x1, 1x1', '1x2, 1x1, 1x1', '2x2, 1x1, 1x1'] - list_of_dct_jpeg = {u'Integer':'int', u'Integer (fast)':'fast', u'Floating point':'float'} - list_of_area_to_export = [_(u"Page"), _(u"Drawing"), _(u"Object")]#, _(u"Área definida")] - - #On Windows 7+ -> C:\Windows\System32\spool\drivers\color - #On Linux: /usr/share/color/icc/ - - if "nt" in os.name: - icc_dir = 'C:\\Windows\\System32\\spool\\drivers\\color' - else: - icc_dir = '/usr/share/color/icc/' - list_of_profiles = os.listdir(icc_dir) - - selected_screen_profile = inkscape_config.split('id="displayprofile"')[1].split('uri="')[1].split('" />')[0].split('/')[-1] - selected_print_profile = inkscape_config.split('id="softproof"')[1].split('uri="')[1].split('" />')[0].split('/')[-1] - - rgb_profile = '"' + inkscape_config.split('id="displayprofile"')[1].split('uri="')[1].split('" />')[0] + '"' - #cmyk_profile = '"' + inkscape_config.split('id="softproof"')[1].split('uri="')[1].split('" />')[0] + '"' + try: + with open(os.path.join(os.path.abspath(inkex.utils.get_user_directory() + "/../"), "preferences.xml"), 'r') as f: + inkscape_config = f.read() + + list_of_export_formats = ['JPEG'] + list_of_format_tips = {'JPEG':'The JPEG format always has some loss of quality. Although it supports CMYK, it is not recommended for use in printed graphics.'} + list_of_color_modes_jpeg = ['CMYK','RGB','Gray','CMY','HSB','HSL','HWB','Lab','Log', 'OHTA','Rec601Luma','Rec601YCbCr','Rec709Luma','Rec709YCbCr','sRGB','XYZ','YCbCr','YCC','YIQ','YPbPr','YUV'] + list_of_interlacing_jpeg = {u'None':'none', u'Line':'line', u'Plane':'plane', u'Partition':'partition'} + list_of_noise_jpeg = {u'Gaussian':'Gaussian-noise', u'Impulse':'Impulse-noise', u'Laplacian':'Laplacian-noise', u'Multiplicative':'Multiplicative-noise', u'Poisson':'Poisson-noise', u'Uniform':'Uniform-noise'} + list_of_subsampling_jpeg = ['1x1, 1x1, 1x1', '2x1, 1x1, 1x1', '1x2, 1x1, 1x1', '2x2, 1x1, 1x1'] + list_of_dct_jpeg = {u'Integer':'int', u'Integer (fast)':'fast', u'Floating point':'float'} + list_of_area_to_export = [_(u"Page"), _(u"Drawing"), _(u"Object")]#, _(u"Área definida")] + + if "nt" in os.name: + icc_dir = 'C:\\Windows\\System32\\spool\\drivers\\color' + else: + icc_dir = '/usr/share/color/icc/' + list_of_profiles = os.listdir(icc_dir) + selected_screen_profile = inkscape_config.split('id="displayprofile"')[1].split('uri="')[1].split('" />')[0].split('/')[-1] + selected_print_profile = inkscape_config.split('id="softproof"')[1].split('uri="')[1].split('" />')[0].split('/')[-1] + + rgb_profile = '"' + inkscape_config.split('id="displayprofile"')[1].split('uri="')[1].split('" />')[0] + '"' + #cmyk_profile = '"' + inkscape_config.split('id="softproof"')[1].split('uri="')[1].split('" />')[0] + '"' - list_of_selected_objects = [] - for id, node in self.svg.selected.items(): - list_of_selected_objects.append(node.get('id')) - if len(list_of_selected_objects) >= 1: - selected_object = list_of_selected_objects[0] - else: - selected_object = 'layer1' - - resolution = '90' - - shutil.copy2(self.options.input_file, os.path.join(dirpathTempFolder.name, "original.svg")) # complete target filename given - - svg = self.document.getroot() - page_width = unittouu(svg.get('width')) - page_height = unittouu(svg.attrib['height']) - - class mainWindow(QtWidgets.QWidget): - def __init__(self, parent=None): - QtWidgets.QWidget.__init__(self, parent) - self.resize(950, 600) - self.setMaximumSize(QtCore.QSize(950, 600)) - self.setMinimumSize(QtCore.QSize(950, 600)) - self.setWindowTitle(_(u'Inkscape Output Pro Bitmap')) - self.setWindowIcon(QtGui.QIcon('/usr/share/pixmaps/inkscape-outputpro.png')) - self.move(int((QtWidgets.QDesktopWidget().screenGeometry().width()-self.geometry().width())/2), int((QtWidgets.QDesktopWidget().screenGeometry().height()-self.geometry().height())/2)) - - self.preview_zoom = 1.0 - - self.top_title_bitmap = QtWidgets.QLabel(parent=self) - self.top_title_bitmap.setGeometry(0, 0, 950, 60) - self.top_title_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathSoftware, 'top.png'))) - - self.preview_panel = QtWidgets.QWidget(parent=self) - self.preview_panel.setGeometry(0, 0, 320, 600) - - self.preview_bitmap = QtWidgets.QLabel(parent=self.preview_panel) - self.preview_bitmap.setGeometry(10, 70, 300, 300) - self.preview_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathTempFolder.name, 'preview.png'))) - #self.preview_bitmap.setStyleSheet("QWidget { background: url(alpha.png)}") - #self.preview_bitmap.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignCenter) - - self.preview_original_title = QtWidgets.QLabel(parent=self.preview_panel) - self.preview_original_title.setText(_(u"Original").upper()) - self.preview_original_title.setGeometry(255, 355, 50, 10) - self.preview_original_title.setAlignment(QtCore.Qt.AlignCenter) - self.preview_original_title.setStyleSheet('QFrame{font:6pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') - - self.preview_result_title = QtWidgets.QLabel(parent=self.preview_panel) - self.preview_result_title.setText(_(u"Result").upper()) - self.preview_result_title.setGeometry(15, 75, 50, 10) - self.preview_result_title.setAlignment(QtCore.Qt.AlignCenter) - self.preview_result_title.setStyleSheet('QFrame{font:6pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') - - self.zoom_out_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("zoom-out"), '', parent=self.preview_panel) - self.zoom_out_button.setGeometry(10, 371, 16, 16) - self.zoom_out_button.setIconSize(QtCore.QSize(12,12)) - self.zoom_out_button.setFlat(True) - self.zoom_out_button.clicked.connect(self.zoom_out) - - self.zoom_in_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("zoom-in"), '', parent=self.preview_panel) - self.zoom_in_button.setGeometry(26, 371, 16, 16) - self.zoom_in_button.setIconSize(QtCore.QSize(12,12)) - self.zoom_in_button.setFlat(True) - self.zoom_in_button.clicked.connect(self.zoom_in) - - self.preview_zoom_title = QtWidgets.QLabel(parent=self.preview_panel) - self.preview_zoom_title.setGeometry(44, 371, 256, 16) - self.preview_zoom_title.setText('100%') - self.preview_zoom_title.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignLeft) - self.preview_zoom_title.setFont(QtGui.QFont('Ubuntu', 8)) - #self.preview_result_title.setStyleSheet('QFrame{font:7pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') - - self.view_c_button = QtWidgets.QPushButton('C', parent=self.preview_panel) - self.view_c_button.setGeometry(246, 371, 16, 16) - self.view_c_button.setIconSize(QtCore.QSize(12,12)) - self.view_c_button.setFlat(True) - self.view_c_button.setCheckable(True) - self.view_c_button.setChecked(True) - self.view_c_button.setVisible(False) - self.view_c_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) - - self.view_m_button = QtWidgets.QPushButton('M', parent=self.preview_panel) - self.view_m_button.setGeometry(262, 371, 16, 16) - self.view_m_button.setIconSize(QtCore.QSize(12,12)) - self.view_m_button.setFlat(True) - self.view_m_button.setCheckable(True) - self.view_m_button.setChecked(True) - self.view_m_button.setVisible(False) - self.view_m_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) - - self.view_y_button = QtWidgets.QPushButton('Y', parent=self.preview_panel) - self.view_y_button.setGeometry(278, 371, 16, 16) - self.view_y_button.setIconSize(QtCore.QSize(12,12)) - self.view_y_button.setFlat(True) - self.view_y_button.setCheckable(True) - self.view_y_button.setChecked(True) - self.view_y_button.setVisible(False) - self.view_y_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) - - self.view_k_button = QtWidgets.QPushButton('K', parent=self.preview_panel) - self.view_k_button.setGeometry(294, 371, 16, 16) - self.view_k_button.setIconSize(QtCore.QSize(12,12)) - self.view_k_button.setFlat(True) - self.view_k_button.setCheckable(True) - self.view_k_button.setChecked(True) - self.view_k_button.setVisible(False) - self.view_k_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) - - self.view_image_info = QtWidgets.QLabel(parent=self.preview_panel) - self.view_image_info.setGeometry(10, 400, 300, 190) - self.view_image_info.setFont(QtGui.QFont('Ubuntu', 8)) - self.view_image_info.setWordWrap(True) - self.view_image_info.setAlignment(QtCore.Qt.AlignTop) - - #self.main_title = QtWidgets.QLabel(parent=self) - #self.main_title.setText(_(u"BITMAPS").upper()) - #self.main_title.setGeometry(640, 30, 150, 30) - #self.main_title.setFont(QtWidgets.QFont('Ubuntu', 16, 75)) - #self.main_title.setAlignment(QtCore.Qt.AlignRight) - #self.main_title.setForegroundRole(QtWidgets.QPalette.ColorRole(2)) - - self.format_title = QtWidgets.QLabel(parent=self) - self.format_title.setText(_(u"Format").upper()) - self.format_title.setGeometry(320, 70, 200, 15) - self.format_title.setFont(QtGui.QFont('Ubuntu', 8, 75)) - - self.format_choice = QtWidgets.QComboBox(parent=self) - self.format_choice.setGeometry(320, 85, 200, 25) - self.format_choice.addItems(list_of_export_formats) - self.format_choice.activated.connect(self.change_format) - - self.format_preview_check = QtWidgets.QCheckBox(parent=self) - self.format_preview_check.setGeometry(540, 85, 200, 25) - self.format_preview_check.setText(_(u"Preview")) - self.format_preview_check.setChecked(True) - self.format_preview_check.clicked.connect(self.format_preview_change) - - self.option_box = QtWidgets.QTabWidget(parent=self) - self.option_box.setGeometry(320, 120, 620, 435) - - self.general_options_panel = QtWidgets.QWidget(parent=self) - self.general_geometry_panel = QtWidgets.QWidget(parent=self) - self.general_prepress_panel = QtWidgets.QWidget(parent=self) - self.general_imposition_panel = QtWidgets.QWidget(parent=self) - self.option_box.addTab(self.general_options_panel, _(u"Options")) - self.option_box.addTab(self.general_geometry_panel, _(u"Size")) - self.option_box.addTab(self.general_prepress_panel, _(u"Prepress")) - self.option_box.addTab(self.general_imposition_panel, _(u"Imposition")) - - self.option_box.currentChanged.connect(self.generate_preview) - - self.general_options_panel_jpeg = QtWidgets.QWidget(parent=self.general_options_panel) - self.general_options_panel_jpeg.setVisible(False) - - self.color_mode_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.color_mode_title_jpeg.setText(_(u"Color mode").upper()) - self.color_mode_title_jpeg.setGeometry(10, 10, 260, 15) - self.color_mode_title_jpeg.setFont(QtGui.QFont('Ubuntu', 8)) - - self.color_mode_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) - self.color_mode_choice_jpeg.setGeometry(10, 25, 260, 25) - self.color_mode_choice_jpeg.addItems(list_of_color_modes_jpeg) - self.color_mode_choice_jpeg.activated.connect(self.change_color_mode_jpeg) - - self.color_mode_title_tip_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.color_mode_title_tip_jpeg.setGeometry(10, 50, 260, 15) - self.color_mode_title_tip_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) - #self.color_mode_title_tip.setAlignment(QtCore.Qt.AlignLeft) - - self.quality_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.quality_title_jpeg.setText(_(u"Quality").upper()) - self.quality_title_jpeg.setGeometry(285, 10, 100, 15) - self.quality_title_jpeg.setFont(QtGui.QFont('Ubuntu', 8)) - - self.quality_percent_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.quality_percent_title_jpeg.setText('50%') - self.quality_percent_title_jpeg.setGeometry(505, 10, 100, 40) - self.quality_percent_title_jpeg.setFont(QtGui.QFont('Ubuntu', 12, 75)) - self.quality_percent_title_jpeg.setAlignment(QtCore.Qt.AlignRight) - - self.quality_percent_title_left_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.quality_percent_title_left_jpeg.setText('Lower quality\nSmaller file') - self.quality_percent_title_left_jpeg.setGeometry(285, 40, 160, 25) - self.quality_percent_title_left_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) - self.quality_percent_title_left_jpeg.setAlignment(QtCore.Qt.AlignLeft) - - self.quality_percent_title_right_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.quality_percent_title_right_jpeg.setText('Higher quality
Larger file') - self.quality_percent_title_right_jpeg.setGeometry(445, 40, 160, 25) - self.quality_percent_title_right_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) - self.quality_percent_title_right_jpeg.setAlignment(QtCore.Qt.AlignRight) - - self.quality_choice_dial_jpeg = QtWidgets.QDial(parent=self.general_options_panel_jpeg) - self.quality_choice_dial_jpeg.setRange(1,100) - self.quality_choice_dial_jpeg.setGeometry(415, 10, 60, 60) - self.quality_choice_dial_jpeg.setNotchesVisible(True) - self.quality_choice_dial_jpeg.setValue(50) - self.quality_choice_dial_jpeg.sliderReleased.connect(self.generate_preview) - self.quality_choice_dial_jpeg.valueChanged.connect(self.change_quality_live_jpeg) - - self.color_profile_choice_jpeg = QtWidgets.QCheckBox(_(u"Use Inkscape color profile"), parent=self.general_options_panel_jpeg) - self.color_profile_choice_jpeg.setChecked(False) - self.color_profile_choice_jpeg.setGeometry(283, 150, 325, 25) - self.color_profile_choice_jpeg.clicked.connect(self.generate_preview) - - self.document_color_profile_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.document_color_profile_title_jpeg.setGeometry(290, 175, 320, 30) - self.document_color_profile_title_jpeg.setWordWrap(True) - self.document_color_profile_title_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) - self.document_color_profile_title_jpeg.setAlignment(QtCore.Qt.AlignLeft) - - if selected_print_profile == '': - self.document_color_profile_title_jpeg.setEnabled(False) - self.color_profile_choice_jpeg.setEnabled(False) - self.document_color_profile_title_jpeg.setText(_(u"This document is not using a color profile.")) - else: - self.document_color_profile_title_jpeg.setText(_(u"The profile used by Inkscape is") + ' ' + selected_print_profile[:-4]) - - self.jpeg_interlace_option_jpeg = QtWidgets.QCheckBox(_(u"Interlace"), parent=self.general_options_panel_jpeg) - self.jpeg_interlace_option_jpeg.setGeometry(10, 80, 120, 25) - self.jpeg_interlace_option_jpeg.toggled.connect(self.jpeg_interlace_click_jpeg) - - self.jpeg_interlace_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) - self.jpeg_interlace_choice_jpeg.setGeometry(130, 80, 140, 25) - self.jpeg_interlace_choice_jpeg.addItems(list_of_interlacing_jpeg.keys()) - self.jpeg_interlace_choice_jpeg.setCurrentIndex(1) - self.jpeg_interlace_choice_jpeg.setEnabled(False) - self.jpeg_interlace_choice_jpeg.activated.connect(self.generate_preview) - - self.jpeg_optimize_option_jpeg = QtWidgets.QCheckBox(_(u"Optimize"), parent=self.general_options_panel_jpeg) - self.jpeg_optimize_option_jpeg.setGeometry(10, 115, 260, 25) - self.jpeg_optimize_option_jpeg.setChecked(True) - - self.jpeg_noise_option_jpeg = QtWidgets.QCheckBox(_(u"Noise"), parent=self.general_options_panel_jpeg) - self.jpeg_noise_option_jpeg.setGeometry(10, 150, 120, 25) - self.jpeg_noise_option_jpeg.toggled.connect(self.jpeg_noise_click_jpeg) - - self.jpeg_noise_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) - self.jpeg_noise_choice_jpeg.setGeometry(130, 150, 140, 25) - self.jpeg_noise_choice_jpeg.addItems(list_of_noise_jpeg.keys()) - self.jpeg_noise_choice_jpeg.setCurrentIndex(1) - self.jpeg_noise_choice_jpeg.setEnabled(False) - self.jpeg_noise_choice_jpeg.activated.connect(self.generate_preview) - - self.jpeg_noise_ammount_jpeg = QtWidgets.QSlider(QtCore.Qt.Horizontal, parent=self.general_options_panel_jpeg) - self.jpeg_noise_ammount_jpeg.setGeometry(15, 175, 260, 25) - self.jpeg_noise_ammount_jpeg.setRange(0,100) - self.jpeg_noise_ammount_jpeg.setEnabled(False) - self.jpeg_noise_ammount_jpeg.setValue(0) - self.jpeg_noise_ammount_jpeg.sliderReleased.connect(self.generate_preview) - - self.jpeg_subsampling_option_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.jpeg_subsampling_option_jpeg.setText(_(u"Sub-sampling")) - self.jpeg_subsampling_option_jpeg.setGeometry(10, 210, 140, 25) - - self.jpeg_subsampling_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) - self.jpeg_subsampling_choice_jpeg.setGeometry(150, 210, 120, 25) - self.jpeg_subsampling_choice_jpeg.addItems(list_of_subsampling_jpeg) - self.jpeg_subsampling_choice_jpeg.setCurrentIndex(0) - self.jpeg_subsampling_choice_jpeg.activated.connect(self.generate_preview) - - self.jpeg_dct_option_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) - self.jpeg_dct_option_jpeg.setText(_(u"DCT Method")) - self.jpeg_dct_option_jpeg.setGeometry(10, 245, 120, 25) - - self.jpeg_dct_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) - self.jpeg_dct_choice_jpeg.setGeometry(130, 245, 140, 25) - self.jpeg_dct_choice_jpeg.addItems(list_of_dct_jpeg.keys()) - self.jpeg_dct_choice_jpeg.activated.connect(self.generate_preview) - - self.cmyk_advanced_manipulation_option_jpeg = QtWidgets.QCheckBox(_(u"Accurate color handling"), parent=self.general_options_panel_jpeg) - self.cmyk_advanced_manipulation_option_jpeg.setGeometry(283, 80, 325, 25) - self.cmyk_advanced_manipulation_option_jpeg.clicked.connect(self.cmyk_advanced_manipulation_click_jpeg) - - self.cmyk_overblack_jpeg = QtWidgets.QCheckBox(_(u"Black overlay"), parent=self.general_options_panel_jpeg) - self.cmyk_overblack_jpeg.setGeometry(283, 115, 325, 25) - self.cmyk_overblack_jpeg.setEnabled(False) - self.cmyk_overblack_jpeg.clicked.connect(self.cmyk_advanced_manipulation_click_jpeg) - - self.area_to_export_title = QtWidgets.QLabel(parent=self.general_geometry_panel) - self.area_to_export_title.setText(_(u"Area to export").upper()) - self.area_to_export_title.setGeometry(10, 20, 250, 15) - self.area_to_export_title.setFont(QtGui.QFont('Ubuntu', 8)) - - self.area_to_export_choice = QtWidgets.QComboBox(parent=self.general_geometry_panel) - self.area_to_export_choice.setGeometry(10, 35, 250, 25) - self.area_to_export_choice.addItems(list_of_area_to_export) - self.area_to_export_choice.activated.connect(self.change_area_to_export) - - self.dpi_title = QtWidgets.QLabel(parent=self.general_geometry_panel) - self.dpi_title.setText(_(u"Dots per inch").upper()) - self.dpi_title.setGeometry(270, 20, 200, 15) - self.dpi_title.setFont(QtGui.QFont('Ubuntu', 8)) - - self.dpi_choice = QtWidgets.QSpinBox(parent=self.general_geometry_panel) - self.dpi_choice.setValue(90) - self.dpi_choice.setGeometry(270, 35, 100, 25) - self.dpi_choice.setRange(1, 99999) - self.dpi_choice.editingFinished.connect(self.change_area_to_export) - - self.dpi_text_title = QtWidgets.QLabel(parent=self.general_geometry_panel) - self.dpi_text_title.setText('dpi') - self.dpi_text_title.setGeometry(380, 35, 80, 25) - self.dpi_text_title.setFont(QtGui.QFont('Ubuntu', 8)) - - self.x0_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) - self.x0_value.setGeometry(10, 100, 80, 25) - self.x0_value.setRange(1, 2147483647) - self.x0_value.editingFinished.connect(self.change_area_to_export) - - self.y0_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) - self.y0_value.setGeometry(100, 130, 80, 25) - self.y0_value.setRange(1, 2147483647) - self.y0_value.editingFinished.connect(self.change_area_to_export) - - self.x1_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) - self.x1_value.setGeometry(100, 70, 80, 25) - self.x1_value.setRange(1, 2147483647) - self.x1_value.editingFinished.connect(self.change_area_to_export) - - self.y1_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) - self.y1_value.setGeometry(190, 100, 80, 25) - self.y1_value.setRange(1, 2147483647) - self.y1_value.editingFinished.connect(self.change_area_to_export) - - self.area_to_export_id_title = QtWidgets.QLabel(parent=self.general_geometry_panel) - self.area_to_export_id_title.setText(_(u"Object to be exported").upper()) - self.area_to_export_id_title.setGeometry(10, 70, 300, 15) - self.area_to_export_id_title.setFont(QtGui.QFont('Ubuntu', 8)) - - self.area_to_export_id_name = QtWidgets.QLineEdit(parent=self.general_geometry_panel) - self.area_to_export_id_name.setGeometry(10, 85, 300, 25) - - self.area_to_export_idonly_check = QtWidgets.QCheckBox(parent=self.general_geometry_panel) - self.area_to_export_idonly_check.setGeometry(10, 120, 400, 25) - self.area_to_export_idonly_check.setText(_(u"Export only object")) - - self.prepress_paper_settings_label = QtWidgets.QLabel(parent=self.general_prepress_panel) - self.prepress_paper_settings_label.setGeometry(10, 10, 300, 15) - self.prepress_paper_settings_label.setText(_(u"Paper or film setting").upper()) - self.prepress_paper_settings_label.setFont(QtGui.QFont('Ubuntu', 8)) - - self.prepress_paper_settings_invert = QtWidgets.QCheckBox(parent=self.general_prepress_panel) - self.prepress_paper_settings_invert.setGeometry(10, 25, 300, 25) - self.prepress_paper_settings_invert.setText(_(u"Invert")) - self.prepress_paper_settings_invert.setChecked(False) - self.prepress_paper_settings_invert.clicked.connect(self.generate_preview) - - self.prepress_paper_settings_mirror = QtWidgets.QCheckBox(parent=self.general_prepress_panel) - self.prepress_paper_settings_mirror.setGeometry(10, 50, 300, 25) - self.prepress_paper_settings_mirror.setText(_(u"Mirror")) - self.prepress_paper_settings_mirror.setChecked(False) - self.prepress_paper_settings_mirror.clicked.connect(self.generate_preview) - - self.prepress_paper_cutmarks_label = QtWidgets.QLabel(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_label.setGeometry(10, 85, 300, 15) - self.prepress_paper_cutmarks_label.setText(_(u"Crop marks").upper()) - self.prepress_paper_cutmarks_label.setFont(QtGui.QFont('Ubuntu', 8)) - - self.prepress_paper_cutmarks_check = QtWidgets.QCheckBox(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_check.setGeometry(10, 100, 300, 25) - self.prepress_paper_cutmarks_check.setText(_(u"Insert crop marks")) - self.prepress_paper_cutmarks_check.setChecked(False) - self.prepress_paper_cutmarks_check.clicked.connect(self.cut_marks_insert_change) - - self.prepress_paper_cutmarks_strokewidth_label = QtWidgets.QLabel(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_strokewidth_label.setGeometry(10, 125, 200, 25) - self.prepress_paper_cutmarks_strokewidth_label.setText(_(u"Mark thickness:")) - self.prepress_paper_cutmarks_strokewidth_label.setEnabled(False) - - self.prepress_paper_cutmarks_strokewidth_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_strokewidth_value.setGeometry(210, 125, 50, 25) - self.prepress_paper_cutmarks_strokewidth_value.setText('1') - self.prepress_paper_cutmarks_strokewidth_value.setEnabled(False) - self.prepress_paper_cutmarks_strokewidth_value.editingFinished.connect(self.generate_preview) - - self.prepress_paper_cutmarks_strokewidth_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_strokewidth_choice.setGeometry(260,125,50,25) - self.prepress_paper_cutmarks_strokewidth_choice.addItems(uuconv.keys()) - self.prepress_paper_cutmarks_strokewidth_choice.setCurrentIndex(5) - self.prepress_paper_cutmarks_strokewidth_choice.activated.connect(self.generate_preview) - self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(False) - - self.prepress_paper_cutmarks_bleedsize_label = QtWidgets.QLabel(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_bleedsize_label.setGeometry(10, 150, 200, 25) - self.prepress_paper_cutmarks_bleedsize_label.setText(_(u"Bleed:")) - self.prepress_paper_cutmarks_bleedsize_label.setEnabled(False) - - self.prepress_paper_cutmarks_bleedsize_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_bleedsize_value.setGeometry(210, 150, 50, 25) - self.prepress_paper_cutmarks_bleedsize_value.setText('5') - self.prepress_paper_cutmarks_bleedsize_value.setEnabled(False) - self.prepress_paper_cutmarks_bleedsize_value.editingFinished.connect(self.generate_preview) - - self.prepress_paper_cutmarks_bleedsize_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_bleedsize_choice.setGeometry(260,150,50,25) - self.prepress_paper_cutmarks_bleedsize_choice.addItems(uuconv.keys()) - self.prepress_paper_cutmarks_bleedsize_choice.setCurrentIndex(5) - self.prepress_paper_cutmarks_bleedsize_choice.activated.connect(self.generate_preview) - self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(False) - - self.prepress_paper_cutmarks_marksize_label = QtWidgets.QLabel(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_marksize_label.setGeometry(10, 175, 200, 25) - self.prepress_paper_cutmarks_marksize_label.setText(_(u"Mark size:")) - self.prepress_paper_cutmarks_marksize_label.setEnabled(False) - - self.prepress_paper_cutmarks_marksize_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_marksize_value.setGeometry(210, 175, 50, 25) - self.prepress_paper_cutmarks_marksize_value.setText('5') - self.prepress_paper_cutmarks_marksize_value.setEnabled(False) - self.prepress_paper_cutmarks_marksize_value.editingFinished.connect(self.generate_preview) - - self.prepress_paper_cutmarks_marksize_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_marksize_choice.setGeometry(260,175,50,25) - self.prepress_paper_cutmarks_marksize_choice.addItems(uuconv.keys()) - self.prepress_paper_cutmarks_marksize_choice.setCurrentIndex(5) - self.prepress_paper_cutmarks_marksize_choice.activated.connect(self.generate_preview) - self.prepress_paper_cutmarks_marksize_choice.setEnabled(False) - - self.prepress_paper_cutmarks_inside_check = QtWidgets.QCheckBox(parent=self.general_prepress_panel) - self.prepress_paper_cutmarks_inside_check.setGeometry(10, 200, 300, 25) - self.prepress_paper_cutmarks_inside_check.setText(_(u"No internal marks")) - self.prepress_paper_cutmarks_inside_check.setChecked(False) - self.prepress_paper_cutmarks_inside_check.setEnabled(False) - self.prepress_paper_cutmarks_inside_check.clicked.connect(self.generate_preview) - - self.imposition_label = QtWidgets.QLabel(parent=self.general_imposition_panel) - self.imposition_label.setGeometry(10, 10, 300, 15) - self.imposition_label.setText(_(u"Amount of impositions").upper()) - self.imposition_label.setFont(QtGui.QFont('Ubuntu', 8)) - - self.imposition_vertical_number_label = QtWidgets.QLabel(parent=self.general_imposition_panel) - self.imposition_vertical_number_label.setGeometry(10, 25, 200, 25) - self.imposition_vertical_number_label.setText(_(u"Lines:")) - - self.imposition_vertical_number_value = QtWidgets.QSpinBox(parent=self.general_imposition_panel) - self.imposition_vertical_number_value.setGeometry(210, 25, 50, 25) - self.imposition_vertical_number_value.setValue(1) - self.imposition_vertical_number_value.setRange(1, 999) - self.imposition_vertical_number_value.editingFinished.connect(self.generate_preview) - - self.imposition_horizontal_number_label = QtWidgets.QLabel(parent=self.general_imposition_panel) - self.imposition_horizontal_number_label.setGeometry(10, 60, 200, 25) - self.imposition_horizontal_number_label.setText(_(u"Columns:")) - - self.imposition_horizontal_number_value = QtWidgets.QSpinBox(parent=self.general_imposition_panel) - self.imposition_horizontal_number_value.setGeometry(210, 60, 50, 25) - self.imposition_horizontal_number_value.setValue(1) - self.imposition_horizontal_number_value.setRange(1, 999) - self.imposition_horizontal_number_value.editingFinished.connect(self.generate_preview) - - self.imposition_space_label = QtWidgets.QLabel(parent=self.general_imposition_panel) - self.imposition_space_label.setGeometry(10, 90, 200, 25) - self.imposition_space_label.setText(_(u"Space between marks:")) - - self.imposition_space_value = QtWidgets.QLineEdit(parent=self.general_imposition_panel) - self.imposition_space_value.setGeometry(210, 90, 50, 25) - self.imposition_space_value.setText('5') - self.imposition_space_value.editingFinished.connect(self.generate_preview) - - self.imposition_space_choice = QtWidgets.QComboBox(parent=self.general_imposition_panel) - self.imposition_space_choice.setGeometry(260,90,50,25) - self.imposition_space_choice.addItems(uuconv.keys()) - self.imposition_space_choice.setCurrentIndex(5) - self.imposition_space_choice.activated.connect(self.generate_preview) - - self.export_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("document-export"), _("Export"), parent=self) - self.export_button.setGeometry(740, 560, 200, 30) - self.export_button.setIconSize(QtCore.QSize(20,20)) - self.export_button.clicked.connect(self.export) - - self.change_area_to_export() - self.change_format() - - def generate_preview(self): - if self.format_preview_check.isChecked(): - self.generate_final_file() - - if self.option_box.currentIndex() == 0: - self.preview_original_title.setVisible(True) - self.preview_result_title.setVisible(True) - - final_command = ['convert'] - final_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower()) - - if self.color_profile_choice_jpeg.isChecked(): - final_command.append('-profile') - final_command.append(os.path.join(icc_dir, selected_screen_profile)) - - final_command.append(os.path.join(dirpathTempFolder.name, 'result.png')) - - subprocess.Popen(final_command).wait() - - file_info = subprocess.Popen(['identify', os.path.join(dirpathTempFolder.name, 'source.png')], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') - image_width = int(file_info.split(' ')[2].split('x')[0]) - image_height = int(file_info.split(' ')[2].split('x')[1]) - - marksize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_marksize_value.text()) + str(self.prepress_paper_cutmarks_marksize_choice.currentText())) - imposition_space = (self.dpi_choice.value() / 90) * unittouu(str(self.imposition_space_value.text()) + str(self.imposition_space_choice.currentText())) - - file_info = subprocess.Popen(['identify', '-verbose', os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower()], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') - - file_info_final = '' - for line in file_info.split('\n'): - if ' Format: ' in line: - file_info_final += 'Image Format: ' + line.replace(' Format: ', '') + '
' - if ' Geometry: ' in line: - file_info_final += 'Width and height: ' + line.replace(' Geometry: ', '').split('+')[0] + '
' - if ' Resolution: ' in line: - file_info_final += 'Resolution: ' + line.replace(' Resolution: ', '') - if ' Units: ' in line: - file_info_final += ' ' + line.replace(' Units: ', '').replace('Per', ' per ').replace('Pixels', 'pixels').replace('Centimeter', 'centimeter').replace('Inch', 'inch') + '
' - if ' Colorspace: ' in line: - file_info_final += 'Colorspace: ' + line.replace(' Colorspace: ', '') + '
' - if ' Depth: ' in line: - file_info_final += 'Depth: ' + line.replace(' Depth: ', '') + '
' - if ' Quality: ' in line: - file_info_final += 'Quality: ' + line.replace(' Quality: ', '') + '%
' - if ' Filesize: ' in line: - file_info_final += 'Filesize: ' + line.replace(' Filesize: ', '') + '
' - if ' jpeg:sampling-factor: ' in line: - file_info_final += 'Sampling: ' + line.replace(' jpeg:sampling-factor: ', '') + '
' - - if self.prepress_paper_cutmarks_check.isChecked(): - margin = marksize - else: - margin = imposition_space - - if image_width < 300 or image_height < 300: - what_show = '-extent ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '-' + str(int(150 * self.preview_zoom) - int(image_width / 2)) + '-' + str(int(150 * self.preview_zoom) - int(image_height / 2)) - else: - what_show = '-crop ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '+' + str(int(image_width / 2) - int(150 * self.preview_zoom)) + '+' + str(int(image_height / 2) - int(150 * self.preview_zoom)) - os.system('convert "' + os.path.join(dirpathTempFolder.name, 'source.png') + '" ' + what_show + ' "' + os.path.join(dirpathTempFolder.name, 'original.png') + '"' ) - - if image_width < 300 or image_height < 300: - what_show = '-extent ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '-' + str(int(150 * self.preview_zoom) - int(image_width / 2) - margin) + '-' + str(int(150 * self.preview_zoom) - int(image_height / 2) - margin) - else: - what_show = '-crop ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '+' + str(int(image_width / 2) - int(150 * self.preview_zoom) + margin) + '+' + str(int(image_height / 2) - int(150 * self.preview_zoom) + margin) - - os.system('convert "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" ' + what_show + ' "' + os.path.join(dirpathTempFolder.name, 'result.png') + '"' ) - - if not self.preview_zoom == 1: - os.system('convert "' + os.path.join(dirpathTempFolder.name, 'original.png') + '" -filter box -resize 300x300 "' + os.path.join(dirpathTempFolder.name, 'original.png') + '"' ) - os.system('convert "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" -filter box -resize 300x300 "' + os.path.join(dirpathTempFolder.name, 'result.png') + '"' ) - - os.system('convert "' + os.path.join(dirpathTempFolder.name, 'original.png') + '" "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" "' + os.path.join(dirpathTempFolder.name, 'preview_mask.png') + '" -composite "' + os.path.join(dirpathTempFolder.name, 'preview.png') + '"' ) - - self.view_image_info.setText(file_info_final + '
' + list_of_format_tips[list_of_export_formats[self.format_choice.currentIndex()]] + '') - - elif self.option_box.currentIndex() == 1: - self.preview_original_title.setVisible(False) - self.preview_result_title.setVisible(False) - - subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower(), '-resize', '300x300', os.path.join(dirpathTempFolder.name, 'preview.png')]).wait() - - elif self.option_box.currentIndex() == 2: - None - - elif self.option_box.currentIndex() == 3: - None - - self.preview_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathTempFolder.name, 'preview.png'))) - - def generate_final_file(self): - if list_of_export_formats[self.format_choice.currentIndex()] == 'JPEG': - jpeg_command = ['convert'] - - if not self.cmyk_advanced_manipulation_option_jpeg.isChecked(): - pre_command = ['convert'] - pre_command.append(os.path.join(dirpathTempFolder.name, 'source.tiff')) - - if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMYK' or list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': - if self.color_profile_choice_jpeg.isChecked(): - pre_command.append('-profile') - pre_command.append(os.path.join(icc_dir, selected_screen_profile)) - pre_command.append('-profile') - pre_command.append(os.path.join(icc_dir, selected_screen_profile)) - - if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': - pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - subprocess.Popen(pre_command).wait() - del pre_command[:] - pre_command.append('convert') - pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - pre_command.append('-profile') - pre_command.append(os.path.join(icc_dir, selected_screen_profile)) - - pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - subprocess.Popen(pre_command).wait() - - else: - if self.color_profile_choice_jpeg.isChecked(): - pre_command = ['convert'] - pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - pre_command.append('-profile') - pre_command.append(os.path.join(icc_dir, selected_screen_profile)) - pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - subprocess.Popen(pre_command).wait() - - file_info = subprocess.Popen(['identify', os.path.join(dirpathTempFolder.name, 'source.png')], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') - if self.prepress_paper_cutmarks_check.isChecked(): - bleedsize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_bleedsize_value.text()) + str(self.prepress_paper_cutmarks_bleedsize_choice.currentText())) - marksize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_marksize_value.text()) + str(self.prepress_paper_cutmarks_marksize_choice.currentText())) - else: - bleedsize = 0 - marksize = 0 - - imposition_space = (self.dpi_choice.value() / 90) *unittouu(str(self.imposition_space_value.text()) + str(self.imposition_space_choice.currentText())) - - image_width = [] - for i in range(self.imposition_vertical_number_value.value()): - image_width.append(int(file_info.split(' ')[2].split('x')[0])) - - image_height = [] - for i in range(self.imposition_horizontal_number_value.value()): - image_height.append(int(file_info.split(' ')[2].split('x')[1])) - - imposition_command = ['convert'] - imposition_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - imposition_command.append('-extent') - imposition_command.append(str(sum(image_width) + (marksize*2) + (imposition_space * (len(image_width) -1))) + 'x' + str(sum(image_height) + (marksize*2) + (imposition_space * (len(image_height) -1))) + '-' + str(marksize) + '-' + str(marksize)) - imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - subprocess.Popen(imposition_command).wait() - - last_width = 0 - last_height = 0 - last_marksize = marksize - for width in image_width: - for height in image_height: - if not (last_width == 0 and last_height == 0): - imposition_command = ['composite'] - imposition_command.append('-geometry') - imposition_command.append('+' + str(last_width + marksize) + '+' + str(last_height + marksize)) - imposition_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) - imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - subprocess.Popen(imposition_command).wait() - - last_height += height + imposition_space - last_marksize = 0 - last_width += width + imposition_space - last_height = 0 - - if self.prepress_paper_cutmarks_check.isChecked(): - cutmarks.generate_final_file(False, self.prepress_paper_cutmarks_inside_check.isChecked(),list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()], image_width, image_height, imposition_space,unittouu(str(self.prepress_paper_cutmarks_strokewidth_value.text()) + str(self.prepress_paper_cutmarks_strokewidth_choice.currentText())), bleedsize, marksize, dirpathTempFolder) - - cut_marks_command = ['composite'] - cut_marks_command.append('-compose') - cut_marks_command.append('Multiply') - cut_marks_command.append('-gravity') - cut_marks_command.append('center') - cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'cut_mark.tiff')) - cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - subprocess.Popen(cut_marks_command).wait() - - jpeg_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) - - if self.prepress_paper_settings_invert.isChecked(): - jpeg_command.append('-negate') - - if self.prepress_paper_settings_mirror.isChecked(): - jpeg_command.append('-flop') - - jpeg_command.append('-quality') - jpeg_command.append(str(self.quality_choice_dial_jpeg.value())) - - jpeg_command.append('-colorspace') - jpeg_command.append(list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()]) - - if self.jpeg_interlace_option_jpeg.isChecked(): - jpeg_command.append('-interlace') - jpeg_command.append(list_of_interlacing_jpeg[self.jpeg_interlace_choice_jpeg.currentText()]) - - if self.jpeg_optimize_option_jpeg.isChecked(): - jpeg_command.append('-type') - jpeg_command.append('optimize') - - if self.jpeg_noise_option_jpeg.isChecked(): - jpeg_command.append('-evaluate') - jpeg_command.append(list_of_noise_jpeg[self.jpeg_noise_choice_jpeg.currentText()]) - jpeg_command.append(str(self.jpeg_noise_ammount_jpeg.value())) - - jpeg_command.append('-sampling-factor') - jpeg_command.append(self.jpeg_subsampling_choice_jpeg.currentText()) - - jpeg_command.append('-define') - jpeg_command.append('jpeg:dct-method=' + list_of_dct_jpeg[self.jpeg_dct_choice_jpeg.currentText()]) - - jpeg_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.jpeg')) - - subprocess.Popen(jpeg_command).wait() - - def change_format(self): - self.general_options_panel_jpeg.setVisible(False) - - if list_of_export_formats[self.format_choice.currentIndex()] == 'JPEG': - self.general_options_panel_jpeg.setVisible(True) - - self.generate_preview() - - def change_color_mode_jpeg(self): - if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMYK': - self.color_mode_title_tip_jpeg.setText(u'Recommended for graphic printing') - self.cmyk_advanced_manipulation_option_jpeg.setChecked(False) - self.cmyk_advanced_manipulation_option_jpeg.setEnabled(True) - self.cmyk_overblack_jpeg.setEnabled(False) - self.cmyk_overblack_jpeg.setChecked(False) - self.color_profile_choice_jpeg.setEnabled(True) - self.color_profile_choice_jpeg.setChecked(False) - self.document_color_profile_title_jpeg.setEnabled(True) - self.general_prepress_panel.setEnabled(True) - else: - self.cmyk_advanced_manipulation_option_jpeg.setEnabled(False) - self.cmyk_overblack_jpeg.setEnabled(False) - self.cmyk_overblack_jpeg.setChecked(False) - #self.color_profile_choice_jpeg.setEnabled(False) - self.color_profile_choice_jpeg.setChecked(False) - self.document_color_profile_title_jpeg.setEnabled(False) - self.general_prepress_panel.setEnabled(False) - if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMY': - self.color_mode_title_tip_jpeg.setText(u'Recommended for specific print cases') - elif list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': - self.color_mode_title_tip_jpeg.setText(u'Recommended for use on screens') - elif list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'Gray': - self.color_mode_title_tip_jpeg.setText(u'Grayscale image') - - self.generate_preview() - - def change_quality_live_jpeg(self): - self.quality_percent_title_jpeg.setText(str(self.quality_choice_dial_jpeg.value()) + '%') - - def jpeg_interlace_click_jpeg(self): - if self.jpeg_interlace_option_jpeg.isChecked(): - self.jpeg_interlace_choice_jpeg.setEnabled(True) - else: - self.jpeg_interlace_choice_jpeg.setEnabled(False) - self.generate_preview() - - def jpeg_noise_click_jpeg(self): - if self.jpeg_noise_option_jpeg.isChecked(): - self.jpeg_noise_choice_jpeg.setEnabled(True) - self.jpeg_noise_ammount_jpeg.setEnabled(True) - else: - self.jpeg_noise_choice_jpeg.setEnabled(False) - self.jpeg_noise_ammount_jpeg.setEnabled(False) - self.generate_preview() - - def cmyk_advanced_manipulation_click_jpeg(self): - if self.cmyk_advanced_manipulation_option_jpeg.isChecked(): - self.cmyk_overblack_jpeg.setEnabled(True) - self.view_c_button.setVisible(True) - self.view_m_button.setVisible(True) - self.view_y_button.setVisible(True) - self.view_k_button.setVisible(True) - self.cmyk_overprint_black() - self.cmyk_advanced_manipulation() - - else: - self.cmyk_overblack_jpeg.setEnabled(False) - self.cmyk_overblack_jpeg.setChecked(False) - self.view_c_button.setVisible(False) - self.view_m_button.setVisible(False) - self.view_y_button.setVisible(False) - self.view_k_button.setVisible(False) - self.generate_preview() - - def cmyk_overprint_black(self): - if self.cmyk_overblack_jpeg.isChecked(): - cmyk.generate_svg_separations(dirpathTempFolder + '/', open(os.path.join(dirpathTempFolder.name, 'original.svg')).read(), True) - else: - cmyk.generate_svg_separations(dirpathTempFolder + '/', open(os.path.join(dirpathTempFolder.name, 'original.svg')).read(), False) - - def cmyk_advanced_manipulation(self): - area_to_export = self.area_to_export() - cmyk.generate_png_separations(dirpathTempFolder + '/', self.area_to_export(), self.dpi_choice.value(), False) - - for color in ['C', 'M', 'Y', 'K']: - subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + color + ".png", '-colorspace', 'CMYK', '-channel', color, '-separate', dirpathTempFolder + '/' + "separated" + area_to_export.replace(' ', '') + color + ".png"]).wait() - - self.cmyk_advanced_manipulation_view_separations() - - def cmyk_advanced_manipulation_view_separations(self): - area_to_export = self.area_to_export() - - file_info = subprocess.Popen(['identify', dirpathTempFolder + '/source.png'], stdout=subprocess.PIPE).communicate()[0] - - image_size = file_info.split(' ')[2] - - subprocess.Popen(['convert', '-size', image_size, 'xc:black', os.path.join(dirpathTempFolder.name, 'empty.png')]).wait() - - final_command = ['convert'] - - if self.view_c_button.isChecked(): - final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'C' + ".png") - else: - final_command.append( os.path.join(dirpathTempFolder.name, 'empty.pn')) - - if self.view_m_button.isChecked(): - final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'M' + ".png") - else: - final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) - - if self.view_y_button.isChecked(): - final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'Y' + ".png") - else: - final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) - - if self.view_k_button.isChecked(): - final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'K' + ".png") - else: - final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) - - final_command.extend(['-set', 'colorspace', 'cmyk']) - final_command.extend(['-combine', os.path.join(dirpathTempFolder.name, 'result.tiff')]) - subprocess.Popen(final_command).wait() - - self.generate_preview() - - def area_to_export(self): - if self.area_to_export_choice.currentIndex() == 1: - return 'export-area-drawing' - - elif self.area_to_export_choice.currentIndex() == 2: - if self.area_to_export_idonly_check.isChecked(): - return 'export-id:' + str(self.area_to_export_id_name.text()) + 'export-id-only' - else: - return 'export-id:' + str(self.area_to_export_id_name.text()) - - elif self.area_to_export_choice.currentIndex() == 3: - return 'export-area:' + str(self.x0_value.value()) + ':' + str(self.y0_value.value()) + ':' + str(self.x1_value.value()) + ':' + str(self.y1_value.value()) - - else: - return 'export-area-page' - - def change_area_to_export(self): - self.x0_value.setVisible(False) - self.y0_value.setVisible(False) - self.x1_value.setVisible(False) - self.y1_value.setVisible(False) - self.area_to_export_id_title.setVisible(False) - self.area_to_export_id_name.setVisible(False) - self.area_to_export_idonly_check.setVisible(False) - - if self.area_to_export_choice.currentIndex() == 2: - self.area_to_export_id_name.setText(selected_object) - self.area_to_export_id_title.setVisible(True) - self.area_to_export_id_name.setVisible(True) - self.area_to_export_idonly_check.setVisible(True) - - elif self.area_to_export_choice.currentIndex() == 3: - self.x0_value.setVisible(True) - self.y0_value.setVisible(True) - self.x1_value.setVisible(True) - self.y1_value.setVisible(True) - - cmd = self.area_to_export() + ';export-dpi:' + str(self.dpi_choice.value()) + ';export-background-opacity:1;export-filename:' + os.path.join(dirpathTempFolder.name, 'source.png') + ';export-do' - cli_output = inkscape(os.path.join(dirpathTempFolder.name, 'original.svg'), actions=cmd) - if len(cli_output) > 0: - self.debug(_("Inkscape returned the following output when trying to run the file export; the file export may still have worked:")) - self.debug(cli_output) - - #ImageMagick - subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'source.png'), os.path.join(dirpathTempFolder.name, 'source.tiff')]).wait() - - self.generate_preview() - - def zoom_out(self): - self.preview_zoom += 0.1 - self.generate_preview() - - if int(self.preview_zoom * 100) == 200: - self.zoom_out_button.setEnabled(False) - self.zoom_in_button.setEnabled(True) - - self.preview_zoom_title.setText(str(int(self.preview_zoom * 100)) + '%') - - def zoom_in(self): - self.preview_zoom -= 0.1 - self.generate_preview() - - if int(self.preview_zoom * 100) == 10: - self.zoom_in_button.setEnabled(False) - self.zoom_out_button.setEnabled(True) - - self.preview_zoom_title.setText(str(int(self.preview_zoom * 100)) + '%') - - def cut_marks_insert_change(self): - if self.prepress_paper_cutmarks_check.isChecked(): - self.prepress_paper_cutmarks_strokewidth_label.setEnabled(True) - self.prepress_paper_cutmarks_strokewidth_value.setEnabled(True) - self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(True) - self.prepress_paper_cutmarks_bleedsize_label.setEnabled(True) - self.prepress_paper_cutmarks_bleedsize_value.setEnabled(True) - self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(True) - self.prepress_paper_cutmarks_marksize_label.setEnabled(True) - self.prepress_paper_cutmarks_marksize_value.setEnabled(True) - self.prepress_paper_cutmarks_marksize_choice.setEnabled(True) - self.prepress_paper_cutmarks_inside_check.setEnabled(True) - - else: - self.prepress_paper_cutmarks_strokewidth_label.setEnabled(False) - self.prepress_paper_cutmarks_strokewidth_value.setEnabled(False) - self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(False) - self.prepress_paper_cutmarks_bleedsize_label.setEnabled(False) - self.prepress_paper_cutmarks_bleedsize_value.setEnabled(False) - self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(False) - self.prepress_paper_cutmarks_marksize_label.setEnabled(False) - self.prepress_paper_cutmarks_marksize_value.setEnabled(False) - self.prepress_paper_cutmarks_marksize_choice.setEnabled(False) - self.prepress_paper_cutmarks_inside_check.setEnabled(False) - - self.generate_preview() - - def format_preview_change(self): - if self.format_preview_check.isChecked(): + list_of_selected_objects = [] + for id, node in self.svg.selected.items(): + list_of_selected_objects.append(node.get('id')) + if len(list_of_selected_objects) >= 1: + selected_object = list_of_selected_objects[0] + else: + selected_object = 'layer1' + + resolution = '90' + + shutil.copy2(self.options.input_file, os.path.join(dirpathTempFolder.name, "original.svg")) # complete target filename given + + svg = self.document.getroot() + page_width = unittouu(svg.get('width')) + page_height = unittouu(svg.attrib['height']) + + class mainWindow(QtWidgets.QWidget): + def __init__(self, parent=None): + QtWidgets.QWidget.__init__(self, parent) self.resize(950, 600) self.setMaximumSize(QtCore.QSize(950, 600)) self.setMinimumSize(QtCore.QSize(950, 600)) - self.preview_panel.setVisible(True) - self.option_box.setGeometry(320, 120, 620, 435) + self.setWindowTitle(_(u'Inkscape Output Pro Bitmap')) + self.setWindowIcon(QtGui.QIcon('/usr/share/pixmaps/inkscape-outputpro.png')) + self.move(int((QtWidgets.QDesktopWidget().screenGeometry().width()-self.geometry().width())/2), int((QtWidgets.QDesktopWidget().screenGeometry().height()-self.geometry().height())/2)) + + self.preview_zoom = 1.0 + + self.top_title_bitmap = QtWidgets.QLabel(parent=self) + self.top_title_bitmap.setGeometry(0, 0, 950, 60) + self.top_title_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathSoftware, 'top.png'))) + + self.preview_panel = QtWidgets.QWidget(parent=self) + self.preview_panel.setGeometry(0, 0, 320, 600) + + self.preview_bitmap = QtWidgets.QLabel(parent=self.preview_panel) + self.preview_bitmap.setGeometry(10, 70, 300, 300) + self.preview_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathTempFolder.name, 'preview.png'))) + #self.preview_bitmap.setStyleSheet("QWidget { background: url(alpha.png)}") + #self.preview_bitmap.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignCenter) + + self.preview_original_title = QtWidgets.QLabel(parent=self.preview_panel) + self.preview_original_title.setText(_(u"Original").upper()) + self.preview_original_title.setGeometry(255, 355, 50, 10) + self.preview_original_title.setAlignment(QtCore.Qt.AlignCenter) + self.preview_original_title.setStyleSheet('QFrame{font:6pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') + + self.preview_result_title = QtWidgets.QLabel(parent=self.preview_panel) + self.preview_result_title.setText(_(u"Result").upper()) + self.preview_result_title.setGeometry(15, 75, 50, 10) + self.preview_result_title.setAlignment(QtCore.Qt.AlignCenter) + self.preview_result_title.setStyleSheet('QFrame{font:6pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') + + self.zoom_out_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("zoom-out"), '', parent=self.preview_panel) + self.zoom_out_button.setGeometry(10, 371, 16, 16) + self.zoom_out_button.setIconSize(QtCore.QSize(12,12)) + self.zoom_out_button.setFlat(True) + self.zoom_out_button.clicked.connect(self.zoom_out) + + self.zoom_in_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("zoom-in"), '', parent=self.preview_panel) + self.zoom_in_button.setGeometry(26, 371, 16, 16) + self.zoom_in_button.setIconSize(QtCore.QSize(12,12)) + self.zoom_in_button.setFlat(True) + self.zoom_in_button.clicked.connect(self.zoom_in) + + self.preview_zoom_title = QtWidgets.QLabel(parent=self.preview_panel) + self.preview_zoom_title.setGeometry(44, 371, 256, 16) + self.preview_zoom_title.setText('100%') + self.preview_zoom_title.setAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignLeft) + self.preview_zoom_title.setFont(QtGui.QFont('Ubuntu', 8)) + #self.preview_result_title.setStyleSheet('QFrame{font:7pt;border-radius: 2px;padding: 2px;background-color:rgba(0,0,0,128);color:white}') + + self.view_c_button = QtWidgets.QPushButton('C', parent=self.preview_panel) + self.view_c_button.setGeometry(246, 371, 16, 16) + self.view_c_button.setIconSize(QtCore.QSize(12,12)) + self.view_c_button.setFlat(True) + self.view_c_button.setCheckable(True) + self.view_c_button.setChecked(True) + self.view_c_button.setVisible(False) + self.view_c_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) + + self.view_m_button = QtWidgets.QPushButton('M', parent=self.preview_panel) + self.view_m_button.setGeometry(262, 371, 16, 16) + self.view_m_button.setIconSize(QtCore.QSize(12,12)) + self.view_m_button.setFlat(True) + self.view_m_button.setCheckable(True) + self.view_m_button.setChecked(True) + self.view_m_button.setVisible(False) + self.view_m_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) + + self.view_y_button = QtWidgets.QPushButton('Y', parent=self.preview_panel) + self.view_y_button.setGeometry(278, 371, 16, 16) + self.view_y_button.setIconSize(QtCore.QSize(12,12)) + self.view_y_button.setFlat(True) + self.view_y_button.setCheckable(True) + self.view_y_button.setChecked(True) + self.view_y_button.setVisible(False) + self.view_y_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) + + self.view_k_button = QtWidgets.QPushButton('K', parent=self.preview_panel) + self.view_k_button.setGeometry(294, 371, 16, 16) + self.view_k_button.setIconSize(QtCore.QSize(12,12)) + self.view_k_button.setFlat(True) + self.view_k_button.setCheckable(True) + self.view_k_button.setChecked(True) + self.view_k_button.setVisible(False) + self.view_k_button.clicked.connect(self.cmyk_advanced_manipulation_view_separations) + + self.view_image_info = QtWidgets.QLabel(parent=self.preview_panel) + self.view_image_info.setGeometry(10, 400, 300, 190) + self.view_image_info.setFont(QtGui.QFont('Ubuntu', 8)) + self.view_image_info.setWordWrap(True) + self.view_image_info.setAlignment(QtCore.Qt.AlignTop) + + #self.main_title = QtWidgets.QLabel(parent=self) + #self.main_title.setText(_(u"BITMAPS").upper()) + #self.main_title.setGeometry(640, 30, 150, 30) + #self.main_title.setFont(QtWidgets.QFont('Ubuntu', 16, 75)) + #self.main_title.setAlignment(QtCore.Qt.AlignRight) + #self.main_title.setForegroundRole(QtWidgets.QPalette.ColorRole(2)) + + self.format_title = QtWidgets.QLabel(parent=self) + self.format_title.setText(_(u"Format").upper()) self.format_title.setGeometry(320, 70, 200, 15) + self.format_title.setFont(QtGui.QFont('Ubuntu', 8, 75)) + + self.format_choice = QtWidgets.QComboBox(parent=self) self.format_choice.setGeometry(320, 85, 200, 25) - self.export_button.setGeometry(740, 560, 200, 30) + self.format_choice.addItems(list_of_export_formats) + self.format_choice.activated.connect(self.change_format) + + self.format_preview_check = QtWidgets.QCheckBox(parent=self) self.format_preview_check.setGeometry(540, 85, 200, 25) - else: - self.resize(640, 600) - self.setMaximumSize(QtCore.QSize(640, 600)) - self.setMinimumSize(QtCore.QSize(640, 600)) - self.preview_panel.setVisible(False) - self.option_box.setGeometry(10, 120, 620, 435) - self.format_title.setGeometry(10, 70, 200, 15) - self.format_choice.setGeometry(10, 85, 200, 25) - self.export_button.setGeometry(430, 560, 200, 30) - self.format_preview_check.setGeometry(230, 85, 200, 25) - - self.move((QtGui.QDesktopWidget().screenGeometry().width()-self.geometry().width())/2, (QtGui.QDesktopWidget().screenGeometry().height()-self.geometry().height())/2) - - def export(self): - self.location_path = QtGui.QFileDialog.getSaveFileName(self, _(u"Save image"), os.environ.get('HOME', None), list_of_export_formats[self.format_choice.currentIndex()]).toUtf8() - - if not self.format_preview_check.isChecked(): - self.generate_final_file() - - if not str(self.location_path) == '': - shutil.copy2(os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower(), self.location_path) - - - - app = QtWidgets.QApplication(sys.argv) - app.main = mainWindow() - app.main.show() - dirpathTempFolder.cleanup() #close temp dir - sys.exit(app.exec_()) - + self.format_preview_check.setText(_(u"Preview")) + self.format_preview_check.setChecked(True) + self.format_preview_check.clicked.connect(self.format_preview_change) + + self.option_box = QtWidgets.QTabWidget(parent=self) + self.option_box.setGeometry(320, 120, 620, 435) + + self.general_options_panel = QtWidgets.QWidget(parent=self) + self.general_geometry_panel = QtWidgets.QWidget(parent=self) + self.general_prepress_panel = QtWidgets.QWidget(parent=self) + self.general_imposition_panel = QtWidgets.QWidget(parent=self) + self.option_box.addTab(self.general_options_panel, _(u"Options")) + self.option_box.addTab(self.general_geometry_panel, _(u"Size")) + self.option_box.addTab(self.general_prepress_panel, _(u"Prepress")) + self.option_box.addTab(self.general_imposition_panel, _(u"Imposition")) + + self.option_box.currentChanged.connect(self.generate_preview) + + self.general_options_panel_jpeg = QtWidgets.QWidget(parent=self.general_options_panel) + self.general_options_panel_jpeg.setVisible(False) + + self.color_mode_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.color_mode_title_jpeg.setText(_(u"Color mode").upper()) + self.color_mode_title_jpeg.setGeometry(10, 10, 260, 15) + self.color_mode_title_jpeg.setFont(QtGui.QFont('Ubuntu', 8)) + + self.color_mode_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) + self.color_mode_choice_jpeg.setGeometry(10, 25, 260, 25) + self.color_mode_choice_jpeg.addItems(list_of_color_modes_jpeg) + self.color_mode_choice_jpeg.activated.connect(self.change_color_mode_jpeg) + + self.color_mode_title_tip_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.color_mode_title_tip_jpeg.setGeometry(10, 50, 260, 15) + self.color_mode_title_tip_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) + #self.color_mode_title_tip.setAlignment(QtCore.Qt.AlignLeft) + + self.quality_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.quality_title_jpeg.setText(_(u"Quality").upper()) + self.quality_title_jpeg.setGeometry(285, 10, 100, 15) + self.quality_title_jpeg.setFont(QtGui.QFont('Ubuntu', 8)) + + self.quality_percent_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.quality_percent_title_jpeg.setText('50%') + self.quality_percent_title_jpeg.setGeometry(505, 10, 100, 40) + self.quality_percent_title_jpeg.setFont(QtGui.QFont('Ubuntu', 12, 75)) + self.quality_percent_title_jpeg.setAlignment(QtCore.Qt.AlignRight) + + self.quality_percent_title_left_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.quality_percent_title_left_jpeg.setText('Lower quality\nSmaller file') + self.quality_percent_title_left_jpeg.setGeometry(285, 40, 160, 25) + self.quality_percent_title_left_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) + self.quality_percent_title_left_jpeg.setAlignment(QtCore.Qt.AlignLeft) + + self.quality_percent_title_right_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.quality_percent_title_right_jpeg.setText('Higher quality
Larger file') + self.quality_percent_title_right_jpeg.setGeometry(445, 40, 160, 25) + self.quality_percent_title_right_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) + self.quality_percent_title_right_jpeg.setAlignment(QtCore.Qt.AlignRight) + + self.quality_choice_dial_jpeg = QtWidgets.QDial(parent=self.general_options_panel_jpeg) + self.quality_choice_dial_jpeg.setRange(1,100) + self.quality_choice_dial_jpeg.setGeometry(415, 10, 60, 60) + self.quality_choice_dial_jpeg.setNotchesVisible(True) + self.quality_choice_dial_jpeg.setValue(50) + self.quality_choice_dial_jpeg.sliderReleased.connect(self.generate_preview) + self.quality_choice_dial_jpeg.valueChanged.connect(self.change_quality_live_jpeg) + + self.color_profile_choice_jpeg = QtWidgets.QCheckBox(_(u"Use Inkscape color profile"), parent=self.general_options_panel_jpeg) + self.color_profile_choice_jpeg.setChecked(False) + self.color_profile_choice_jpeg.setGeometry(283, 150, 325, 25) + self.color_profile_choice_jpeg.clicked.connect(self.generate_preview) + + self.document_color_profile_title_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.document_color_profile_title_jpeg.setGeometry(290, 175, 320, 30) + self.document_color_profile_title_jpeg.setWordWrap(True) + self.document_color_profile_title_jpeg.setFont(QtGui.QFont('Ubuntu', 7)) + self.document_color_profile_title_jpeg.setAlignment(QtCore.Qt.AlignLeft) + + if selected_print_profile == '': + self.document_color_profile_title_jpeg.setEnabled(False) + self.color_profile_choice_jpeg.setEnabled(False) + self.document_color_profile_title_jpeg.setText(_(u"This document is not using a color profile.")) + else: + self.document_color_profile_title_jpeg.setText(_(u"The profile used by Inkscape is") + ' ' + selected_print_profile[:-4]) + + self.jpeg_interlace_option_jpeg = QtWidgets.QCheckBox(_(u"Interlace"), parent=self.general_options_panel_jpeg) + self.jpeg_interlace_option_jpeg.setGeometry(10, 80, 120, 25) + self.jpeg_interlace_option_jpeg.toggled.connect(self.jpeg_interlace_click_jpeg) + + self.jpeg_interlace_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) + self.jpeg_interlace_choice_jpeg.setGeometry(130, 80, 140, 25) + self.jpeg_interlace_choice_jpeg.addItems(list_of_interlacing_jpeg.keys()) + self.jpeg_interlace_choice_jpeg.setCurrentIndex(1) + self.jpeg_interlace_choice_jpeg.setEnabled(False) + self.jpeg_interlace_choice_jpeg.activated.connect(self.generate_preview) + + self.jpeg_optimize_option_jpeg = QtWidgets.QCheckBox(_(u"Optimize"), parent=self.general_options_panel_jpeg) + self.jpeg_optimize_option_jpeg.setGeometry(10, 115, 260, 25) + self.jpeg_optimize_option_jpeg.setChecked(True) + + self.jpeg_noise_option_jpeg = QtWidgets.QCheckBox(_(u"Noise"), parent=self.general_options_panel_jpeg) + self.jpeg_noise_option_jpeg.setGeometry(10, 150, 120, 25) + self.jpeg_noise_option_jpeg.toggled.connect(self.jpeg_noise_click_jpeg) + + self.jpeg_noise_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) + self.jpeg_noise_choice_jpeg.setGeometry(130, 150, 140, 25) + self.jpeg_noise_choice_jpeg.addItems(list_of_noise_jpeg.keys()) + self.jpeg_noise_choice_jpeg.setCurrentIndex(1) + self.jpeg_noise_choice_jpeg.setEnabled(False) + self.jpeg_noise_choice_jpeg.activated.connect(self.generate_preview) + + self.jpeg_noise_ammount_jpeg = QtWidgets.QSlider(QtCore.Qt.Horizontal, parent=self.general_options_panel_jpeg) + self.jpeg_noise_ammount_jpeg.setGeometry(15, 175, 260, 25) + self.jpeg_noise_ammount_jpeg.setRange(0,100) + self.jpeg_noise_ammount_jpeg.setEnabled(False) + self.jpeg_noise_ammount_jpeg.setValue(0) + self.jpeg_noise_ammount_jpeg.sliderReleased.connect(self.generate_preview) + + self.jpeg_subsampling_option_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.jpeg_subsampling_option_jpeg.setText(_(u"Sub-sampling")) + self.jpeg_subsampling_option_jpeg.setGeometry(10, 210, 140, 25) + + self.jpeg_subsampling_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) + self.jpeg_subsampling_choice_jpeg.setGeometry(150, 210, 120, 25) + self.jpeg_subsampling_choice_jpeg.addItems(list_of_subsampling_jpeg) + self.jpeg_subsampling_choice_jpeg.setCurrentIndex(0) + self.jpeg_subsampling_choice_jpeg.activated.connect(self.generate_preview) + + self.jpeg_dct_option_jpeg = QtWidgets.QLabel(parent=self.general_options_panel_jpeg) + self.jpeg_dct_option_jpeg.setText(_(u"DCT Method")) + self.jpeg_dct_option_jpeg.setGeometry(10, 245, 120, 25) + + self.jpeg_dct_choice_jpeg = QtWidgets.QComboBox(parent=self.general_options_panel_jpeg) + self.jpeg_dct_choice_jpeg.setGeometry(130, 245, 140, 25) + self.jpeg_dct_choice_jpeg.addItems(list_of_dct_jpeg.keys()) + self.jpeg_dct_choice_jpeg.activated.connect(self.generate_preview) + + self.cmyk_advanced_manipulation_option_jpeg = QtWidgets.QCheckBox(_(u"Accurate color handling"), parent=self.general_options_panel_jpeg) + self.cmyk_advanced_manipulation_option_jpeg.setGeometry(283, 80, 325, 25) + self.cmyk_advanced_manipulation_option_jpeg.clicked.connect(self.cmyk_advanced_manipulation_click_jpeg) + + self.cmyk_overblack_jpeg = QtWidgets.QCheckBox(_(u"Black overlay"), parent=self.general_options_panel_jpeg) + self.cmyk_overblack_jpeg.setGeometry(283, 115, 325, 25) + self.cmyk_overblack_jpeg.setEnabled(False) + self.cmyk_overblack_jpeg.clicked.connect(self.cmyk_advanced_manipulation_click_jpeg) + + self.area_to_export_title = QtWidgets.QLabel(parent=self.general_geometry_panel) + self.area_to_export_title.setText(_(u"Area to export").upper()) + self.area_to_export_title.setGeometry(10, 20, 250, 15) + self.area_to_export_title.setFont(QtGui.QFont('Ubuntu', 8)) + + self.area_to_export_choice = QtWidgets.QComboBox(parent=self.general_geometry_panel) + self.area_to_export_choice.setGeometry(10, 35, 250, 25) + self.area_to_export_choice.addItems(list_of_area_to_export) + self.area_to_export_choice.activated.connect(self.change_area_to_export) + + self.dpi_title = QtWidgets.QLabel(parent=self.general_geometry_panel) + self.dpi_title.setText(_(u"Dots per inch").upper()) + self.dpi_title.setGeometry(270, 20, 200, 15) + self.dpi_title.setFont(QtGui.QFont('Ubuntu', 8)) + + self.dpi_choice = QtWidgets.QSpinBox(parent=self.general_geometry_panel) + self.dpi_choice.setValue(90) + self.dpi_choice.setGeometry(270, 35, 100, 25) + self.dpi_choice.setRange(1, 99999) + self.dpi_choice.editingFinished.connect(self.change_area_to_export) + + self.dpi_text_title = QtWidgets.QLabel(parent=self.general_geometry_panel) + self.dpi_text_title.setText('dpi') + self.dpi_text_title.setGeometry(380, 35, 80, 25) + self.dpi_text_title.setFont(QtGui.QFont('Ubuntu', 8)) + + self.x0_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) + self.x0_value.setGeometry(10, 100, 80, 25) + self.x0_value.setRange(1, 2147483647) + self.x0_value.editingFinished.connect(self.change_area_to_export) + + self.y0_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) + self.y0_value.setGeometry(100, 130, 80, 25) + self.y0_value.setRange(1, 2147483647) + self.y0_value.editingFinished.connect(self.change_area_to_export) + + self.x1_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) + self.x1_value.setGeometry(100, 70, 80, 25) + self.x1_value.setRange(1, 2147483647) + self.x1_value.editingFinished.connect(self.change_area_to_export) + + self.y1_value = QtWidgets.QSpinBox(parent=self.general_geometry_panel) + self.y1_value.setGeometry(190, 100, 80, 25) + self.y1_value.setRange(1, 2147483647) + self.y1_value.editingFinished.connect(self.change_area_to_export) + + self.area_to_export_id_title = QtWidgets.QLabel(parent=self.general_geometry_panel) + self.area_to_export_id_title.setText(_(u"Object to be exported").upper()) + self.area_to_export_id_title.setGeometry(10, 70, 300, 15) + self.area_to_export_id_title.setFont(QtGui.QFont('Ubuntu', 8)) + + self.area_to_export_id_name = QtWidgets.QLineEdit(parent=self.general_geometry_panel) + self.area_to_export_id_name.setGeometry(10, 85, 300, 25) + + self.area_to_export_idonly_check = QtWidgets.QCheckBox(parent=self.general_geometry_panel) + self.area_to_export_idonly_check.setGeometry(10, 120, 400, 25) + self.area_to_export_idonly_check.setText(_(u"Export only object")) + + self.prepress_paper_settings_label = QtWidgets.QLabel(parent=self.general_prepress_panel) + self.prepress_paper_settings_label.setGeometry(10, 10, 300, 15) + self.prepress_paper_settings_label.setText(_(u"Paper or film setting").upper()) + self.prepress_paper_settings_label.setFont(QtGui.QFont('Ubuntu', 8)) + + self.prepress_paper_settings_invert = QtWidgets.QCheckBox(parent=self.general_prepress_panel) + self.prepress_paper_settings_invert.setGeometry(10, 25, 300, 25) + self.prepress_paper_settings_invert.setText(_(u"Invert")) + self.prepress_paper_settings_invert.setChecked(False) + self.prepress_paper_settings_invert.clicked.connect(self.generate_preview) + + self.prepress_paper_settings_mirror = QtWidgets.QCheckBox(parent=self.general_prepress_panel) + self.prepress_paper_settings_mirror.setGeometry(10, 50, 300, 25) + self.prepress_paper_settings_mirror.setText(_(u"Mirror")) + self.prepress_paper_settings_mirror.setChecked(False) + self.prepress_paper_settings_mirror.clicked.connect(self.generate_preview) + + self.prepress_paper_cutmarks_label = QtWidgets.QLabel(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_label.setGeometry(10, 85, 300, 15) + self.prepress_paper_cutmarks_label.setText(_(u"Crop marks").upper()) + self.prepress_paper_cutmarks_label.setFont(QtGui.QFont('Ubuntu', 8)) + + self.prepress_paper_cutmarks_check = QtWidgets.QCheckBox(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_check.setGeometry(10, 100, 300, 25) + self.prepress_paper_cutmarks_check.setText(_(u"Insert crop marks")) + self.prepress_paper_cutmarks_check.setChecked(False) + self.prepress_paper_cutmarks_check.clicked.connect(self.cut_marks_insert_change) + + self.prepress_paper_cutmarks_strokewidth_label = QtWidgets.QLabel(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_strokewidth_label.setGeometry(10, 125, 200, 25) + self.prepress_paper_cutmarks_strokewidth_label.setText(_(u"Mark thickness:")) + self.prepress_paper_cutmarks_strokewidth_label.setEnabled(False) + + self.prepress_paper_cutmarks_strokewidth_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_strokewidth_value.setGeometry(210, 125, 50, 25) + self.prepress_paper_cutmarks_strokewidth_value.setText('1') + self.prepress_paper_cutmarks_strokewidth_value.setEnabled(False) + self.prepress_paper_cutmarks_strokewidth_value.editingFinished.connect(self.generate_preview) + + self.prepress_paper_cutmarks_strokewidth_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_strokewidth_choice.setGeometry(260,125,50,25) + self.prepress_paper_cutmarks_strokewidth_choice.addItems(uuconv.keys()) + self.prepress_paper_cutmarks_strokewidth_choice.setCurrentIndex(5) + self.prepress_paper_cutmarks_strokewidth_choice.activated.connect(self.generate_preview) + self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(False) + + self.prepress_paper_cutmarks_bleedsize_label = QtWidgets.QLabel(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_bleedsize_label.setGeometry(10, 150, 200, 25) + self.prepress_paper_cutmarks_bleedsize_label.setText(_(u"Bleed:")) + self.prepress_paper_cutmarks_bleedsize_label.setEnabled(False) + + self.prepress_paper_cutmarks_bleedsize_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_bleedsize_value.setGeometry(210, 150, 50, 25) + self.prepress_paper_cutmarks_bleedsize_value.setText('5') + self.prepress_paper_cutmarks_bleedsize_value.setEnabled(False) + self.prepress_paper_cutmarks_bleedsize_value.editingFinished.connect(self.generate_preview) + + self.prepress_paper_cutmarks_bleedsize_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_bleedsize_choice.setGeometry(260,150,50,25) + self.prepress_paper_cutmarks_bleedsize_choice.addItems(uuconv.keys()) + self.prepress_paper_cutmarks_bleedsize_choice.setCurrentIndex(5) + self.prepress_paper_cutmarks_bleedsize_choice.activated.connect(self.generate_preview) + self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(False) + + self.prepress_paper_cutmarks_marksize_label = QtWidgets.QLabel(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_marksize_label.setGeometry(10, 175, 200, 25) + self.prepress_paper_cutmarks_marksize_label.setText(_(u"Mark size:")) + self.prepress_paper_cutmarks_marksize_label.setEnabled(False) + + self.prepress_paper_cutmarks_marksize_value = QtWidgets.QLineEdit(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_marksize_value.setGeometry(210, 175, 50, 25) + self.prepress_paper_cutmarks_marksize_value.setText('5') + self.prepress_paper_cutmarks_marksize_value.setEnabled(False) + self.prepress_paper_cutmarks_marksize_value.editingFinished.connect(self.generate_preview) + + self.prepress_paper_cutmarks_marksize_choice = QtWidgets.QComboBox(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_marksize_choice.setGeometry(260,175,50,25) + self.prepress_paper_cutmarks_marksize_choice.addItems(uuconv.keys()) + self.prepress_paper_cutmarks_marksize_choice.setCurrentIndex(5) + self.prepress_paper_cutmarks_marksize_choice.activated.connect(self.generate_preview) + self.prepress_paper_cutmarks_marksize_choice.setEnabled(False) + + self.prepress_paper_cutmarks_inside_check = QtWidgets.QCheckBox(parent=self.general_prepress_panel) + self.prepress_paper_cutmarks_inside_check.setGeometry(10, 200, 300, 25) + self.prepress_paper_cutmarks_inside_check.setText(_(u"No internal marks")) + self.prepress_paper_cutmarks_inside_check.setChecked(False) + self.prepress_paper_cutmarks_inside_check.setEnabled(False) + self.prepress_paper_cutmarks_inside_check.clicked.connect(self.generate_preview) + + self.imposition_label = QtWidgets.QLabel(parent=self.general_imposition_panel) + self.imposition_label.setGeometry(10, 10, 300, 15) + self.imposition_label.setText(_(u"Amount of impositions").upper()) + self.imposition_label.setFont(QtGui.QFont('Ubuntu', 8)) + + self.imposition_vertical_number_label = QtWidgets.QLabel(parent=self.general_imposition_panel) + self.imposition_vertical_number_label.setGeometry(10, 25, 200, 25) + self.imposition_vertical_number_label.setText(_(u"Lines:")) + + self.imposition_vertical_number_value = QtWidgets.QSpinBox(parent=self.general_imposition_panel) + self.imposition_vertical_number_value.setGeometry(210, 25, 50, 25) + self.imposition_vertical_number_value.setValue(1) + self.imposition_vertical_number_value.setRange(1, 999) + self.imposition_vertical_number_value.editingFinished.connect(self.generate_preview) + + self.imposition_horizontal_number_label = QtWidgets.QLabel(parent=self.general_imposition_panel) + self.imposition_horizontal_number_label.setGeometry(10, 60, 200, 25) + self.imposition_horizontal_number_label.setText(_(u"Columns:")) + + self.imposition_horizontal_number_value = QtWidgets.QSpinBox(parent=self.general_imposition_panel) + self.imposition_horizontal_number_value.setGeometry(210, 60, 50, 25) + self.imposition_horizontal_number_value.setValue(1) + self.imposition_horizontal_number_value.setRange(1, 999) + self.imposition_horizontal_number_value.editingFinished.connect(self.generate_preview) + + self.imposition_space_label = QtWidgets.QLabel(parent=self.general_imposition_panel) + self.imposition_space_label.setGeometry(10, 90, 200, 25) + self.imposition_space_label.setText(_(u"Space between marks:")) + + self.imposition_space_value = QtWidgets.QLineEdit(parent=self.general_imposition_panel) + self.imposition_space_value.setGeometry(210, 90, 50, 25) + self.imposition_space_value.setText('5') + self.imposition_space_value.editingFinished.connect(self.generate_preview) + + self.imposition_space_choice = QtWidgets.QComboBox(parent=self.general_imposition_panel) + self.imposition_space_choice.setGeometry(260,90,50,25) + self.imposition_space_choice.addItems(uuconv.keys()) + self.imposition_space_choice.setCurrentIndex(5) + self.imposition_space_choice.activated.connect(self.generate_preview) + + self.export_button = QtWidgets.QPushButton(QtGui.QIcon.fromTheme("document-export"), _("Export"), parent=self) + self.export_button.setGeometry(740, 560, 200, 30) + self.export_button.setIconSize(QtCore.QSize(20,20)) + self.export_button.clicked.connect(self.export) + + self.change_area_to_export() + self.change_format() + + def generate_preview(self): + if self.format_preview_check.isChecked(): + self.generate_final_file() + + if self.option_box.currentIndex() == 0: + self.preview_original_title.setVisible(True) + self.preview_result_title.setVisible(True) + + final_command = ['convert'] + final_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower()) + + if self.color_profile_choice_jpeg.isChecked(): + final_command.append('-profile') + final_command.append(os.path.join(icc_dir, selected_screen_profile)) + + final_command.append(os.path.join(dirpathTempFolder.name, 'result.png')) + + subprocess.Popen(final_command).wait() + + file_info = subprocess.Popen(['identify', os.path.join(dirpathTempFolder.name, 'source.png')], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') + image_width = int(file_info.split(' ')[2].split('x')[0]) + image_height = int(file_info.split(' ')[2].split('x')[1]) + + marksize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_marksize_value.text()) + str(self.prepress_paper_cutmarks_marksize_choice.currentText())) + imposition_space = (self.dpi_choice.value() / 90) * unittouu(str(self.imposition_space_value.text()) + str(self.imposition_space_choice.currentText())) + + file_info = subprocess.Popen(['identify', '-verbose', os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower()], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') + + file_info_final = '' + for line in file_info.split('\n'): + if ' Format: ' in line: + file_info_final += 'Image Format: ' + line.replace(' Format: ', '') + '
' + if ' Geometry: ' in line: + file_info_final += 'Width and height: ' + line.replace(' Geometry: ', '').split('+')[0] + '
' + if ' Resolution: ' in line: + file_info_final += 'Resolution: ' + line.replace(' Resolution: ', '') + if ' Units: ' in line: + file_info_final += ' ' + line.replace(' Units: ', '').replace('Per', ' per ').replace('Pixels', 'pixels').replace('Centimeter', 'centimeter').replace('Inch', 'inch') + '
' + if ' Colorspace: ' in line: + file_info_final += 'Colorspace: ' + line.replace(' Colorspace: ', '') + '
' + if ' Depth: ' in line: + file_info_final += 'Depth: ' + line.replace(' Depth: ', '') + '
' + if ' Quality: ' in line: + file_info_final += 'Quality: ' + line.replace(' Quality: ', '') + '%
' + if ' Filesize: ' in line: + file_info_final += 'Filesize: ' + line.replace(' Filesize: ', '') + '
' + if ' jpeg:sampling-factor: ' in line: + file_info_final += 'Sampling: ' + line.replace(' jpeg:sampling-factor: ', '') + '
' + + if self.prepress_paper_cutmarks_check.isChecked(): + margin = marksize + else: + margin = imposition_space + + if image_width < 300 or image_height < 300: + what_show = '-extent ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '-' + str(int(150 * self.preview_zoom) - int(image_width / 2)) + '-' + str(int(150 * self.preview_zoom) - int(image_height / 2)) + else: + what_show = '-crop ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '+' + str(int(image_width / 2) - int(150 * self.preview_zoom)) + '+' + str(int(image_height / 2) - int(150 * self.preview_zoom)) + os.system('convert "' + os.path.join(dirpathTempFolder.name, 'source.png') + '" ' + what_show + ' "' + os.path.join(dirpathTempFolder.name, 'original.png') + '"' ) + + if image_width < 300 or image_height < 300: + what_show = '-extent ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '-' + str(int(150 * self.preview_zoom) - int(image_width / 2) - margin) + '-' + str(int(150 * self.preview_zoom) - int(image_height / 2) - margin) + else: + what_show = '-crop ' + str(int(300 * self.preview_zoom)) + 'x' + str(int(300 * self.preview_zoom)) + '+' + str(int(image_width / 2) - int(150 * self.preview_zoom) + margin) + '+' + str(int(image_height / 2) - int(150 * self.preview_zoom) + margin) + + os.system('convert "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" ' + what_show + ' "' + os.path.join(dirpathTempFolder.name, 'result.png') + '"' ) + + if not self.preview_zoom == 1: + os.system('convert "' + os.path.join(dirpathTempFolder.name, 'original.png') + '" -filter box -resize 300x300 "' + os.path.join(dirpathTempFolder.name, 'original.png') + '"' ) + os.system('convert "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" -filter box -resize 300x300 "' + os.path.join(dirpathTempFolder.name, 'result.png') + '"' ) + + os.system('convert "' + os.path.join(dirpathTempFolder.name, 'original.png') + '" "' + os.path.join(dirpathTempFolder.name, 'result.png') + '" "' + os.path.join(dirpathTempFolder.name, 'preview_mask.png') + '" -composite "' + os.path.join(dirpathTempFolder.name, 'preview.png') + '"' ) + + self.view_image_info.setText(file_info_final + '
' + list_of_format_tips[list_of_export_formats[self.format_choice.currentIndex()]] + '') + + elif self.option_box.currentIndex() == 1: + self.preview_original_title.setVisible(False) + self.preview_result_title.setVisible(False) + + subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower(), '-resize', '300x300', os.path.join(dirpathTempFolder.name, 'preview.png')]).wait() + + elif self.option_box.currentIndex() == 2: + None + + elif self.option_box.currentIndex() == 3: + None + + self.preview_bitmap.setPixmap(QtGui.QPixmap(os.path.join(dirpathTempFolder.name, 'preview.png'))) + + def generate_final_file(self): + if list_of_export_formats[self.format_choice.currentIndex()] == 'JPEG': + jpeg_command = ['convert'] + + if not self.cmyk_advanced_manipulation_option_jpeg.isChecked(): + pre_command = ['convert'] + pre_command.append(os.path.join(dirpathTempFolder.name, 'source.tiff')) + + if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMYK' or list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': + if self.color_profile_choice_jpeg.isChecked(): + pre_command.append('-profile') + pre_command.append(os.path.join(icc_dir, selected_screen_profile)) + pre_command.append('-profile') + pre_command.append(os.path.join(icc_dir, selected_screen_profile)) + + if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': + pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + subprocess.Popen(pre_command).wait() + del pre_command[:] + pre_command.append('convert') + pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + pre_command.append('-profile') + pre_command.append(os.path.join(icc_dir, selected_screen_profile)) + + pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + subprocess.Popen(pre_command).wait() + + else: + if self.color_profile_choice_jpeg.isChecked(): + pre_command = ['convert'] + pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + pre_command.append('-profile') + pre_command.append(os.path.join(icc_dir, selected_screen_profile)) + pre_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + subprocess.Popen(pre_command).wait() + + file_info = subprocess.Popen(['identify', os.path.join(dirpathTempFolder.name, 'source.png')], stdout=subprocess.PIPE).communicate()[0].decode('UTF-8') + if self.prepress_paper_cutmarks_check.isChecked(): + bleedsize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_bleedsize_value.text()) + str(self.prepress_paper_cutmarks_bleedsize_choice.currentText())) + marksize = (self.dpi_choice.value() / 90) * unittouu(str(self.prepress_paper_cutmarks_marksize_value.text()) + str(self.prepress_paper_cutmarks_marksize_choice.currentText())) + else: + bleedsize = 0 + marksize = 0 + + imposition_space = (self.dpi_choice.value() / 90) *unittouu(str(self.imposition_space_value.text()) + str(self.imposition_space_choice.currentText())) + + image_width = [] + for i in range(self.imposition_vertical_number_value.value()): + image_width.append(int(file_info.split(' ')[2].split('x')[0])) + + image_height = [] + for i in range(self.imposition_horizontal_number_value.value()): + image_height.append(int(file_info.split(' ')[2].split('x')[1])) + + imposition_command = ['convert'] + imposition_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + imposition_command.append('-extent') + imposition_command.append(str(sum(image_width) + (marksize*2) + (imposition_space * (len(image_width) -1))) + 'x' + str(sum(image_height) + (marksize*2) + (imposition_space * (len(image_height) -1))) + '-' + str(marksize) + '-' + str(marksize)) + imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + subprocess.Popen(imposition_command).wait() + + last_width = 0 + last_height = 0 + last_marksize = marksize + for width in image_width: + for height in image_height: + if not (last_width == 0 and last_height == 0): + imposition_command = ['composite'] + imposition_command.append('-geometry') + imposition_command.append('+' + str(last_width + marksize) + '+' + str(last_height + marksize)) + imposition_command.append(os.path.join(dirpathTempFolder.name, 'result.tiff')) + imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + imposition_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + subprocess.Popen(imposition_command).wait() + + last_height += height + imposition_space + last_marksize = 0 + last_width += width + imposition_space + last_height = 0 + + if self.prepress_paper_cutmarks_check.isChecked(): + cutmarks.generate_final_file(False, self.prepress_paper_cutmarks_inside_check.isChecked(),list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()], image_width, image_height, imposition_space,unittouu(str(self.prepress_paper_cutmarks_strokewidth_value.text()) + str(self.prepress_paper_cutmarks_strokewidth_choice.currentText())), bleedsize, marksize, dirpathTempFolder) + + cut_marks_command = ['composite'] + cut_marks_command.append('-compose') + cut_marks_command.append('Multiply') + cut_marks_command.append('-gravity') + cut_marks_command.append('center') + cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'cut_mark.tiff')) + cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + cut_marks_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + subprocess.Popen(cut_marks_command).wait() + + jpeg_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.tiff')) + + if self.prepress_paper_settings_invert.isChecked(): + jpeg_command.append('-negate') + + if self.prepress_paper_settings_mirror.isChecked(): + jpeg_command.append('-flop') + + jpeg_command.append('-quality') + jpeg_command.append(str(self.quality_choice_dial_jpeg.value())) + + jpeg_command.append('-colorspace') + jpeg_command.append(list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()]) + + if self.jpeg_interlace_option_jpeg.isChecked(): + jpeg_command.append('-interlace') + jpeg_command.append(list_of_interlacing_jpeg[self.jpeg_interlace_choice_jpeg.currentText()]) + + if self.jpeg_optimize_option_jpeg.isChecked(): + jpeg_command.append('-type') + jpeg_command.append('optimize') + + if self.jpeg_noise_option_jpeg.isChecked(): + jpeg_command.append('-evaluate') + jpeg_command.append(list_of_noise_jpeg[self.jpeg_noise_choice_jpeg.currentText()]) + jpeg_command.append(str(self.jpeg_noise_ammount_jpeg.value())) + + jpeg_command.append('-sampling-factor') + jpeg_command.append(self.jpeg_subsampling_choice_jpeg.currentText()) + + jpeg_command.append('-define') + jpeg_command.append('jpeg:dct-method=' + list_of_dct_jpeg[self.jpeg_dct_choice_jpeg.currentText()]) + + jpeg_command.append(os.path.join(dirpathTempFolder.name, 'result-imp.jpeg')) + + subprocess.Popen(jpeg_command).wait() + + def change_format(self): + self.general_options_panel_jpeg.setVisible(False) + + if list_of_export_formats[self.format_choice.currentIndex()] == 'JPEG': + self.general_options_panel_jpeg.setVisible(True) + + self.generate_preview() + + def change_color_mode_jpeg(self): + if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMYK': + self.color_mode_title_tip_jpeg.setText(u'Recommended for graphic printing') + self.cmyk_advanced_manipulation_option_jpeg.setChecked(False) + self.cmyk_advanced_manipulation_option_jpeg.setEnabled(True) + self.cmyk_overblack_jpeg.setEnabled(False) + self.cmyk_overblack_jpeg.setChecked(False) + self.color_profile_choice_jpeg.setEnabled(True) + self.color_profile_choice_jpeg.setChecked(False) + self.document_color_profile_title_jpeg.setEnabled(True) + self.general_prepress_panel.setEnabled(True) + else: + self.cmyk_advanced_manipulation_option_jpeg.setEnabled(False) + self.cmyk_overblack_jpeg.setEnabled(False) + self.cmyk_overblack_jpeg.setChecked(False) + #self.color_profile_choice_jpeg.setEnabled(False) + self.color_profile_choice_jpeg.setChecked(False) + self.document_color_profile_title_jpeg.setEnabled(False) + self.general_prepress_panel.setEnabled(False) + if list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'CMY': + self.color_mode_title_tip_jpeg.setText(u'Recommended for specific print cases') + elif list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'RGB': + self.color_mode_title_tip_jpeg.setText(u'Recommended for use on screens') + elif list_of_color_modes_jpeg[self.color_mode_choice_jpeg.currentIndex()] == 'Gray': + self.color_mode_title_tip_jpeg.setText(u'Grayscale image') + + self.generate_preview() + + def change_quality_live_jpeg(self): + self.quality_percent_title_jpeg.setText(str(self.quality_choice_dial_jpeg.value()) + '%') + + def jpeg_interlace_click_jpeg(self): + if self.jpeg_interlace_option_jpeg.isChecked(): + self.jpeg_interlace_choice_jpeg.setEnabled(True) + else: + self.jpeg_interlace_choice_jpeg.setEnabled(False) + self.generate_preview() + + def jpeg_noise_click_jpeg(self): + if self.jpeg_noise_option_jpeg.isChecked(): + self.jpeg_noise_choice_jpeg.setEnabled(True) + self.jpeg_noise_ammount_jpeg.setEnabled(True) + else: + self.jpeg_noise_choice_jpeg.setEnabled(False) + self.jpeg_noise_ammount_jpeg.setEnabled(False) + self.generate_preview() + + def cmyk_advanced_manipulation_click_jpeg(self): + if self.cmyk_advanced_manipulation_option_jpeg.isChecked(): + self.cmyk_overblack_jpeg.setEnabled(True) + self.view_c_button.setVisible(True) + self.view_m_button.setVisible(True) + self.view_y_button.setVisible(True) + self.view_k_button.setVisible(True) + self.cmyk_overprint_black() + self.cmyk_advanced_manipulation() + + else: + self.cmyk_overblack_jpeg.setEnabled(False) + self.cmyk_overblack_jpeg.setChecked(False) + self.view_c_button.setVisible(False) + self.view_m_button.setVisible(False) + self.view_y_button.setVisible(False) + self.view_k_button.setVisible(False) + self.generate_preview() + + def cmyk_overprint_black(self): + if self.cmyk_overblack_jpeg.isChecked(): + cmyk.generate_svg_separations(dirpathTempFolder + '/', open(os.path.join(dirpathTempFolder.name, 'original.svg')).read(), True) + else: + cmyk.generate_svg_separations(dirpathTempFolder + '/', open(os.path.join(dirpathTempFolder.name, 'original.svg')).read(), False) + + def cmyk_advanced_manipulation(self): + area_to_export = self.area_to_export() + cmyk.generate_png_separations(dirpathTempFolder + '/', self.area_to_export(), self.dpi_choice.value(), False) + + for color in ['C', 'M', 'Y', 'K']: + subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + color + ".png", '-colorspace', 'CMYK', '-channel', color, '-separate', dirpathTempFolder + '/' + "separated" + area_to_export.replace(' ', '') + color + ".png"]).wait() + + self.cmyk_advanced_manipulation_view_separations() + + def cmyk_advanced_manipulation_view_separations(self): + area_to_export = self.area_to_export() + + file_info = subprocess.Popen(['identify', dirpathTempFolder + '/source.png'], stdout=subprocess.PIPE).communicate()[0] + + image_size = file_info.split(' ')[2] + + subprocess.Popen(['convert', '-size', image_size, 'xc:black', os.path.join(dirpathTempFolder.name, 'empty.png')]).wait() + + final_command = ['convert'] + + if self.view_c_button.isChecked(): + final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'C' + ".png") + else: + final_command.append( os.path.join(dirpathTempFolder.name, 'empty.pn')) + + if self.view_m_button.isChecked(): + final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'M' + ".png") + else: + final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) + + if self.view_y_button.isChecked(): + final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'Y' + ".png") + else: + final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) + + if self.view_k_button.isChecked(): + final_command.append( os.path.join(dirpathTempFolder.name, 'separated') + area_to_export.replace(' ', '') + 'K' + ".png") + else: + final_command.append( os.path.join(dirpathTempFolder.name, 'empty.png')) + + final_command.extend(['-set', 'colorspace', 'cmyk']) + final_command.extend(['-combine', os.path.join(dirpathTempFolder.name, 'result.tiff')]) + subprocess.Popen(final_command).wait() + + self.generate_preview() + + def area_to_export(self): + if self.area_to_export_choice.currentIndex() == 1: + return 'export-area-drawing' + + elif self.area_to_export_choice.currentIndex() == 2: + if self.area_to_export_idonly_check.isChecked(): + return 'export-id:' + str(self.area_to_export_id_name.text()) + 'export-id-only' + else: + return 'export-id:' + str(self.area_to_export_id_name.text()) + + elif self.area_to_export_choice.currentIndex() == 3: + return 'export-area:' + str(self.x0_value.value()) + ':' + str(self.y0_value.value()) + ':' + str(self.x1_value.value()) + ':' + str(self.y1_value.value()) + + else: + return 'export-area-page' + + def change_area_to_export(self): + self.x0_value.setVisible(False) + self.y0_value.setVisible(False) + self.x1_value.setVisible(False) + self.y1_value.setVisible(False) + self.area_to_export_id_title.setVisible(False) + self.area_to_export_id_name.setVisible(False) + self.area_to_export_idonly_check.setVisible(False) + + if self.area_to_export_choice.currentIndex() == 2: + self.area_to_export_id_name.setText(selected_object) + self.area_to_export_id_title.setVisible(True) + self.area_to_export_id_name.setVisible(True) + self.area_to_export_idonly_check.setVisible(True) + + elif self.area_to_export_choice.currentIndex() == 3: + self.x0_value.setVisible(True) + self.y0_value.setVisible(True) + self.x1_value.setVisible(True) + self.y1_value.setVisible(True) + + cmd = self.area_to_export() + ';export-dpi:' + str(self.dpi_choice.value()) + ';export-background-opacity:1;export-filename:' + os.path.join(dirpathTempFolder.name, 'source.png') + ';export-do' + cli_output = inkscape(os.path.join(dirpathTempFolder.name, 'original.svg'), actions=cmd) + if len(cli_output) > 0: + self.debug(_("Inkscape returned the following output when trying to run the file export; the file export may still have worked:")) + self.debug(cli_output) + + #ImageMagick + subprocess.Popen(['convert', os.path.join(dirpathTempFolder.name, 'source.png'), os.path.join(dirpathTempFolder.name, 'source.tiff')]).wait() + + self.generate_preview() + + def zoom_out(self): + self.preview_zoom += 0.1 + self.generate_preview() + + if int(self.preview_zoom * 100) == 200: + self.zoom_out_button.setEnabled(False) + self.zoom_in_button.setEnabled(True) + + self.preview_zoom_title.setText(str(int(self.preview_zoom * 100)) + '%') + + def zoom_in(self): + self.preview_zoom -= 0.1 + self.generate_preview() + + if int(self.preview_zoom * 100) == 10: + self.zoom_in_button.setEnabled(False) + self.zoom_out_button.setEnabled(True) + + self.preview_zoom_title.setText(str(int(self.preview_zoom * 100)) + '%') + + def cut_marks_insert_change(self): + if self.prepress_paper_cutmarks_check.isChecked(): + self.prepress_paper_cutmarks_strokewidth_label.setEnabled(True) + self.prepress_paper_cutmarks_strokewidth_value.setEnabled(True) + self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(True) + self.prepress_paper_cutmarks_bleedsize_label.setEnabled(True) + self.prepress_paper_cutmarks_bleedsize_value.setEnabled(True) + self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(True) + self.prepress_paper_cutmarks_marksize_label.setEnabled(True) + self.prepress_paper_cutmarks_marksize_value.setEnabled(True) + self.prepress_paper_cutmarks_marksize_choice.setEnabled(True) + self.prepress_paper_cutmarks_inside_check.setEnabled(True) + + else: + self.prepress_paper_cutmarks_strokewidth_label.setEnabled(False) + self.prepress_paper_cutmarks_strokewidth_value.setEnabled(False) + self.prepress_paper_cutmarks_strokewidth_choice.setEnabled(False) + self.prepress_paper_cutmarks_bleedsize_label.setEnabled(False) + self.prepress_paper_cutmarks_bleedsize_value.setEnabled(False) + self.prepress_paper_cutmarks_bleedsize_choice.setEnabled(False) + self.prepress_paper_cutmarks_marksize_label.setEnabled(False) + self.prepress_paper_cutmarks_marksize_value.setEnabled(False) + self.prepress_paper_cutmarks_marksize_choice.setEnabled(False) + self.prepress_paper_cutmarks_inside_check.setEnabled(False) + + self.generate_preview() + + def format_preview_change(self): + if self.format_preview_check.isChecked(): + self.resize(950, 600) + self.setMaximumSize(QtCore.QSize(950, 600)) + self.setMinimumSize(QtCore.QSize(950, 600)) + self.preview_panel.setVisible(True) + self.option_box.setGeometry(320, 120, 620, 435) + self.format_title.setGeometry(320, 70, 200, 15) + self.format_choice.setGeometry(320, 85, 200, 25) + self.export_button.setGeometry(740, 560, 200, 30) + self.format_preview_check.setGeometry(540, 85, 200, 25) + else: + self.resize(640, 600) + self.setMaximumSize(QtCore.QSize(640, 600)) + self.setMinimumSize(QtCore.QSize(640, 600)) + self.preview_panel.setVisible(False) + self.option_box.setGeometry(10, 120, 620, 435) + self.format_title.setGeometry(10, 70, 200, 15) + self.format_choice.setGeometry(10, 85, 200, 25) + self.export_button.setGeometry(430, 560, 200, 30) + self.format_preview_check.setGeometry(230, 85, 200, 25) + + self.move((QtGui.QDesktopWidget().screenGeometry().width()-self.geometry().width())/2, (QtGui.QDesktopWidget().screenGeometry().height()-self.geometry().height())/2) + + def export(self): + self.location_path = QtGui.QFileDialog.getSaveFileName(self, _(u"Save image"), os.environ.get('HOME', None), list_of_export_formats[self.format_choice.currentIndex()]).toUtf8() + + if not self.format_preview_check.isChecked(): + self.generate_final_file() + + if not str(self.location_path) == '': + shutil.copy2(os.path.join(dirpathTempFolder.name, 'result-imp.') + list_of_export_formats[self.format_choice.currentIndex()].lower(), self.location_path) + + + + app = QtWidgets.QApplication(sys.argv) + app.main = mainWindow() + app.main.show() + sys.exit(app.exec_()) + except Exception as e: + self.msg(e) + finally: + dirpathTempFolder.cleanup() #close temp dir if __name__ == '__main__': OutputProBitmap().run() \ No newline at end of file