def preferences_dialog(): dialog = Gtk.Dialog( _("Editor Preferences"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("OK"), Gtk.ResponseType.ACCEPT)) gen_opts_panel, gen_opts_widgets = _general_options_panel() edit_prefs_panel, edit_prefs_widgets = _edit_prefs_panel() playback_prefs_panel, playback_prefs_widgets = _playback_prefs_panel() view_pres_panel, view_pref_widgets = _view_prefs_panel() # Jan-2017 - SvdB performance_panel, performance_widgets = _performance_panel() # Apr-2017 - SvdB #shortcuts_panel, shortcuts_widgets = _shortcuts_panel() notebook = Gtk.Notebook() notebook.set_size_request(PREFERENCES_WIDTH, PREFERENCES_HEIGHT) notebook.append_page(gen_opts_panel, Gtk.Label(label=_("General"))) notebook.append_page(edit_prefs_panel, Gtk.Label(label=_("Editing"))) notebook.append_page(playback_prefs_panel, Gtk.Label(label=_("Playback"))) notebook.append_page(view_pres_panel, Gtk.Label(label=_("View"))) notebook.append_page(performance_panel, Gtk.Label(label=_("Performance"))) guiutils.set_margins(notebook, 4, 24, 6, 0) dialog.connect('response', _preferences_dialog_callback, (gen_opts_widgets, edit_prefs_widgets, playback_prefs_widgets, view_pref_widgets, \ performance_widgets)) dialog.vbox.pack_start(notebook, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) # Jul-2016 - SvdB - The next line is to get rid of the message "GtkDialog mapped without a transient parent. This is discouraged." dialog.set_transient_for(gui.editor_window.window) dialog.show_all()
def preferences_dialog(): dialog = Gtk.Dialog( _("Editor Preferences"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("OK").encode('utf-8'), Gtk.ResponseType.ACCEPT)) gen_opts_panel, gen_opts_widgets = _general_options_panel( _thumbs_select_clicked, _renders_select_clicked) edit_prefs_panel, edit_prefs_widgets = _edit_prefs_panel() view_pres_panel, view_pref_widgets = _view_prefs_panel() notebook = Gtk.Notebook() notebook.set_size_request(PREFERENCES_WIDTH, PREFERENCES_HEIGHT) notebook.append_page(gen_opts_panel, Gtk.Label(label=_("General"))) notebook.append_page(edit_prefs_panel, Gtk.Label(label=_("Editing"))) notebook.append_page(view_pres_panel, Gtk.Label(label=_("View"))) guiutils.set_margins(notebook, 4, 24, 6, 0) dialog.connect('response', _preferences_dialog_callback, (gen_opts_widgets, edit_prefs_widgets, view_pref_widgets)) dialog.vbox.pack_start(notebook, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all()
def clip_render_progress_dialog(callback, title, text, progress_bar, parent_window): dialog = Gtk.Dialog(title, parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT)) dialog.text_label = Gtk.Label(label=text) dialog.text_label.set_use_markup(True) text_box = Gtk.HBox(False, 2) text_box.pack_start(dialog.text_label,False, False, 0) text_box.pack_start(Gtk.Label(), True, True, 0) status_box = Gtk.HBox(False, 2) status_box.pack_start(text_box, False, False, 0) status_box.pack_start(Gtk.Label(), True, True, 0) progress_vbox = Gtk.VBox(False, 2) progress_vbox.pack_start(status_box, False, False, 0) progress_vbox.pack_start(guiutils.get_pad_label(10, 10), False, False, 0) progress_vbox.pack_start(progress_bar, False, False, 0) alignment = guiutils.set_margins(progress_vbox, 12, 12, 12, 12) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_default_size(500, 125) alignment.show_all() dialog.connect('response', callback) dialog.show() return dialog
def _ising_clip_dialog(callback): dialog = Gtk.Dialog( _("Create Ising Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) n_box, n_slider = guiutils.get_non_property_slider_row(0, 100, 1) bg_box, bg_slider = guiutils.get_non_property_slider_row(0, 100, 1) sg_box, sg_slider = guiutils.get_non_property_slider_row(0, 100, 1) row1 = guiutils.get_two_column_box( Gtk.Label(label=_("Noise temperature:")), n_box, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Border growth:")), bg_box, 200) row3 = guiutils.get_two_column_box( Gtk.Label(label=_("Spontanious growth:")), sg_box, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(row3, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.set_size_request(450, 150) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (n_slider, bg_slider, sg_slider) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(align, True, True, 0) dialogutils.default_behaviour(dialog) dialogutils.set_outer_margins(dialog.vbox) dialog.show_all()
def set_video_endoding(self, clip): current_profile_index = mltprofiles.get_profile_index_for_profile( current_sequence().profile) # These need to re-initialized always when using this module. toolsencoding.create_widgets(current_profile_index, True, True) toolsencoding.widgets.file_panel.enable_file_selections(False) # Create default render data if not available, we need to know profile to do this. if self.container_data.render_data == None: self.container_data.render_data = toolsencoding.create_container_clip_default_render_data_object( current_sequence().profile) encoding_panel = toolsencoding.get_encoding_panel( self.container_data.render_data, True) #if self.container_data.render_data == None and toolsencoding.widgets.file_panel.movie_name.get_text() == "movie": # toolsencoding.widgets.file_panel.movie_name.set_text("_gmic") align = dialogutils.get_default_alignment(encoding_panel) dialog = Gtk.Dialog( _("Container Clip Render Settings"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("Set Encoding"), Gtk.ResponseType.ACCEPT)) dialog.vbox.pack_start(align, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_resizable(False) dialog.connect('response', self.encode_settings_callback) dialog.show_all()
def show_blender_container_clip_program_editor(callback, program_info_json): # Create panels for objects editors = [] blender_objects = program_info_json["objects"] materials = program_info_json["materials"] objs_panel = _get_panel_and_create_editors(blender_objects, _("Objects"), editors) materials_panel = _get_panel_and_create_editors(materials, _("Materials"), editors) pane = Gtk.VBox(False, 2) if objs_panel != None: pane.pack_start(objs_panel, False, False, 0) if materials_panel != None: pane.pack_start(materials_panel, False, False, 0) # Create and show dialog dialog = Gtk.Dialog( _("Blender Project Edit"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("Save Changes"), Gtk.ResponseType.ACCEPT)) alignment = dialogutils.get_default_alignment(pane) dialogutils.set_outer_margins(dialog.vbox) dialog.vbox.pack_start(alignment, True, True, 0) dialog.set_default_response(Gtk.ResponseType.REJECT) dialog.set_resizable(False) dialog.connect('response', callback, editors) dialog.show_all()
def preferences_dialog(): dialog = Gtk.Dialog(_("Editor Preferences"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("OK"), Gtk.ResponseType.ACCEPT)) gen_opts_panel, gen_opts_widgets = _general_options_panel() edit_prefs_panel, edit_prefs_widgets = _edit_prefs_panel() playback_prefs_panel, playback_prefs_widgets = _playback_prefs_panel() view_pres_panel, view_pref_widgets = _view_prefs_panel() performance_panel, performance_widgets = _performance_panel() notebook = Gtk.Notebook() notebook.set_size_request(PREFERENCES_WIDTH, PREFERENCES_HEIGHT) notebook.append_page(gen_opts_panel, Gtk.Label(label=_("General"))) notebook.append_page(edit_prefs_panel, Gtk.Label(label=_("Editing"))) notebook.append_page(playback_prefs_panel, Gtk.Label(label=_("Playback"))) notebook.append_page(view_pres_panel, Gtk.Label(label=_("View"))) notebook.append_page(performance_panel, Gtk.Label(label=_("Performance"))) guiutils.set_margins(notebook, 4, 24, 6, 0) dialog.connect('response', _preferences_dialog_callback, (gen_opts_widgets, edit_prefs_widgets, playback_prefs_widgets, view_pref_widgets, \ performance_widgets)) dialog.vbox.pack_start(notebook, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.set_transient_for(gui.editor_window.window) dialog.show_all() notebook.set_current_page(0) # gen_opts_widgets
def preferences_dialog(): dialog = Gtk.Dialog(_("Editor Preferences"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("OK").encode('utf-8'), Gtk.ResponseType.ACCEPT)) gen_opts_panel, gen_opts_widgets = _general_options_panel(_thumbs_select_clicked, _renders_select_clicked) edit_prefs_panel, edit_prefs_widgets = _edit_prefs_panel() playback_prefs_panel, playback_prefs_widgets = _playback_prefs_panel() view_pres_panel, view_pref_widgets = _view_prefs_panel() # Jan-2017 - SvdB performance_panel, performance_widgets = _performance_panel() # Apr-2017 - SvdB #shortcuts_panel, shortcuts_widgets = _shortcuts_panel() notebook = Gtk.Notebook() notebook.set_size_request(PREFERENCES_WIDTH, PREFERENCES_HEIGHT) notebook.append_page(gen_opts_panel, Gtk.Label(label=_("General"))) notebook.append_page(edit_prefs_panel, Gtk.Label(label=_("Editing"))) notebook.append_page(playback_prefs_panel, Gtk.Label(label=_("Playback"))) notebook.append_page(view_pres_panel, Gtk.Label(label=_("View"))) notebook.append_page(performance_panel, Gtk.Label(label=_("Performance"))) #notebook.append_page(shortcuts_panel, Gtk.Label(label=_("Shortcuts"))) guiutils.set_margins(notebook, 4, 24, 6, 0) dialog.connect('response', _preferences_dialog_callback, (gen_opts_widgets, edit_prefs_widgets, playback_prefs_widgets, view_pref_widgets, \ performance_widgets)) dialog.vbox.pack_start(notebook, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) # Jul-2016 - SvdB - The next line is to get rid of the message "GtkDialog mapped without a transient parent. This is discouraged." dialog.set_transient_for(gui.editor_window.window) dialog.show_all()
def _color_clip_dialog(callback): dialog = Gtk.Dialog(_("Create Color Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) name_entry = Gtk.Entry() name_entry.set_text(_("Color Clip")) color_button = Gtk.ColorButton.new_with_rgba(Gdk.RGBA(0,0,0,1)) cb_hbox = Gtk.HBox(False, 0) cb_hbox.pack_start(color_button, False, False, 4) cb_hbox.pack_start(Gtk.Label(), True, True, 0) row1 = guiutils.get_two_column_box(Gtk.Label(label=_("Clip Name:")), name_entry, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Select Color:")), cb_hbox, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (name_entry, color_button) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(vbox, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all()
def _ising_clip_dialog(callback): dialog = Gtk.Dialog(_("Create Ising Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) n_box, n_slider = guiutils.get_non_property_slider_row(0, 100, 1) bg_box, bg_slider = guiutils.get_non_property_slider_row(0, 100, 1) sg_box, sg_slider = guiutils.get_non_property_slider_row(0, 100, 1) row1 = guiutils.get_two_column_box(Gtk.Label(label=_("Noise temperature:")), n_box, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Border growth:")), bg_box, 200) row3 = guiutils.get_two_column_box(Gtk.Label(label=_("Spontanious growth:")), sg_box, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(row3, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.set_size_request(450, 150) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (n_slider, bg_slider, sg_slider) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(align, True, True, 0) dialogutils.default_behaviour(dialog) dialogutils.set_outer_margins(dialog.vbox) dialog.show_all()
def __init__(self): self.dialog = Gtk.Dialog( _("Timeline Render Settings"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close"), Gtk.ResponseType.CLOSE)) # Encoding self.enc_select = Gtk.ComboBoxText() encodings = renderconsumer.proxy_encodings if len( encodings ) < 1: # no encoding options available, system does not have right codecs # display info ? pass for encoption in encodings: self.enc_select.append_text(encoption.name) current_enc = editorpersistance.prefs.tline_render_encoding if current_enc >= len( encodings): # current encoding selection not available current_enc = 0 editorpersistance.prefs.tline_render_encoding = 0 editorpersistance.save() self.enc_select.set_active(current_enc) self.enc_select.connect( "changed", lambda w, e: self.encoding_changed(w.get_active()), None) self.size_select = Gtk.ComboBoxText() self.size_select.append_text(_("Project Image Size")) self.size_select.append_text(_("Half Project Image Size")) self.size_select.append_text(_("Quarter Project Image Size")) self.size_select.set_active(editorpersistance.prefs.tline_render_size) self.size_select.connect( "changed", lambda w, e: self.size_changed(w.get_active()), None) row_enc = Gtk.HBox(False, 2) row_enc.pack_start(Gtk.Label(), True, True, 0) row_enc.pack_start(self.enc_select, False, False, 0) row_enc.pack_start(self.size_select, False, False, 0) row_enc.pack_start(Gtk.Label(), True, True, 0) vbox_enc = Gtk.VBox(False, 2) vbox_enc.pack_start(row_enc, False, False, 0) vbox_enc.pack_start(guiutils.pad_label(8, 12), False, False, 0) panel_encoding = guiutils.get_named_frame(_("Render Encoding"), vbox_enc) # Pane vbox = Gtk.VBox(False, 2) vbox.pack_start(panel_encoding, False, False, 0) guiutils.set_margins(vbox, 8, 12, 12, 12) self.dialog.vbox.pack_start(vbox, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.connect('response', dialogutils.dialog_destroy) self.dialog.show_all()
def _color_clip_dialog(callback): dialog = Gtk.Dialog( _("Create Color Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) name_entry = Gtk.Entry() name_entry.set_text(_("Color Clip")) color_button = Gtk.ColorButton.new_with_rgba(Gdk.RGBA(0, 0, 0, 1)) cb_hbox = Gtk.HBox(False, 0) cb_hbox.pack_start(color_button, False, False, 4) cb_hbox.pack_start(Gtk.Label(), True, True, 0) row1 = guiutils.get_two_column_box(Gtk.Label(label=_("Clip Name:")), name_entry, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Select Color:")), cb_hbox, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (name_entry, color_button) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(vbox, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all()
def export_screenshot_dialog(callback, frame, parent_window, project_name): cancel_str = _("Cancel").encode("utf-8") ok_str = _("Export Image").encode("utf-8") dialog = Gtk.Dialog( _("Export Frame Image"), parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (cancel_str, Gtk.ResponseType.CANCEL, ok_str, Gtk.ResponseType.YES), ) global _screenshot_img _screenshot_img = guiutils.get_gtk_image_from_file(get_displayed_image_path(), 300) frame_frame = guiutils.get_named_frame_with_vbox(None, [_screenshot_img]) INPUT_LABELS_WITDH = 320 project_name = project_name.strip(".flb") file_name = Gtk.Entry() file_name.set_text(project_name) extension_label = Gtk.Label(label=".png") extension_label.set_size_request(35, 20) name_pack = Gtk.HBox(False, 4) name_pack.pack_start(file_name, True, True, 0) name_pack.pack_start(extension_label, False, False, 0) name_row = guiutils.get_two_column_box(Gtk.Label(label=_("Export file name:")), name_pack, INPUT_LABELS_WITDH) out_folder = Gtk.FileChooserButton(_("Select target folder")) out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) out_folder.set_current_folder(os.path.expanduser("~") + "/") folder_row = guiutils.get_two_column_box(Gtk.Label(label=_("Export folder:")), out_folder, INPUT_LABELS_WITDH) file_type_combo = Gtk.ComboBoxText() for img in _img_types: file_type_combo.append_text(img) file_type_combo.set_active(0) file_type_combo.connect("changed", _file_type_changed, extension_label) file_type_row = guiutils.get_two_column_box(Gtk.Label(label=_("Image type:")), file_type_combo, INPUT_LABELS_WITDH) file_frame = guiutils.get_named_frame_with_vbox(None, [file_type_row, name_row, folder_row]) vbox = Gtk.VBox(False, 2) vbox.pack_start(frame_frame, False, False, 0) vbox.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox.pack_start(file_frame, False, False, 0) alignment = guiutils.set_margins(vbox, 12, 12, 12, 12) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect( "response", callback, (file_name, out_folder, file_type_combo, frame) ) # (file_name, out_folder, track_select_combo, cascade_check, op_combo, audio_track_select_combo)) dialog.show_all()
def render_progress_dialog(callback, parent_window, frame_rates_match=True): dialog = Gtk.Dialog( _("Render Progress"), parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT)) dialog.status_label = Gtk.Label() dialog.remaining_time_label = Gtk.Label() dialog.passed_time_label = Gtk.Label() dialog.progress_bar = Gtk.ProgressBar() status_box = Gtk.HBox(False, 2) status_box.pack_start(dialog.status_label, False, False, 0) status_box.pack_start(Gtk.Label(), True, True, 0) remaining_box = Gtk.HBox(False, 2) remaining_box.pack_start(dialog.remaining_time_label, False, False, 0) remaining_box.pack_start(Gtk.Label(), True, True, 0) passed_box = Gtk.HBox(False, 2) passed_box.pack_start(dialog.passed_time_label, False, False, 0) passed_box.pack_start(Gtk.Label(), True, True, 0) if frame_rates_match == False: # Aug-2019 - SvdB - BB if editorpersistance.prefs.double_track_hights: warning_icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.DND) else: warning_icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.MENU) warning_text = Gtk.Label(label=_( "Project and Render Profile FPS values are not same. Rendered file may have A/V sync issues." )) warning_box = Gtk.HBox(False, 2) warning_box.pack_start(warning_icon, False, False, 0) warning_box.pack_start(warning_text, False, False, 0) warning_box.pack_start(Gtk.Label(), True, True, 0) progress_vbox = Gtk.VBox(False, 2) progress_vbox.pack_start(status_box, False, False, 0) progress_vbox.pack_start(remaining_box, False, False, 0) progress_vbox.pack_start(passed_box, False, False, 0) if frame_rates_match == False: progress_vbox.pack_start(guiutils.get_pad_label(10, 10), False, False, 0) progress_vbox.pack_start(warning_box, False, False, 0) progress_vbox.pack_start(guiutils.get_pad_label(10, 10), False, False, 0) progress_vbox.pack_start(dialog.progress_bar, False, False, 0) alignment = guiutils.set_margins(progress_vbox, 12, 12, 12, 12) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_default_size(500, 125) alignment.show_all() dialog.connect('response', callback) dialog.show() return dialog
def export_screenshot_dialog(callback, frame, parent_window, project_name): cancel_str = _("Cancel").encode('utf-8') ok_str = _("Export Image").encode('utf-8') dialog = Gtk.Dialog(_("Export Frame Image"), parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (cancel_str, Gtk.ResponseType.CANCEL, ok_str, Gtk.ResponseType.YES)) global _screenshot_img _screenshot_img = guiutils.get_gtk_image_from_file(get_displayed_image_path(), 300) frame_frame = guiutils.get_named_frame_with_vbox(None, [_screenshot_img]) INPUT_LABELS_WITDH = 320 project_name = project_name.strip(".flb") file_name = Gtk.Entry() file_name.set_text(project_name) extension_label = Gtk.Label(label=".png") extension_label.set_size_request(35, 20) name_pack = Gtk.HBox(False, 4) name_pack.pack_start(file_name, True, True, 0) name_pack.pack_start(extension_label, False, False, 0) name_row = guiutils.get_two_column_box(Gtk.Label(label=_("Export file name:")), name_pack, INPUT_LABELS_WITDH) out_folder = Gtk.FileChooserButton(_("Select target folder")) out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) out_folder.set_current_folder(os.path.expanduser("~") + "/") folder_row = guiutils.get_two_column_box(Gtk.Label(label=_("Export folder:")), out_folder, INPUT_LABELS_WITDH) file_type_combo = Gtk.ComboBoxText() for img in _img_types: file_type_combo.append_text(img) file_type_combo.set_active(0) file_type_combo.connect("changed", _file_type_changed, extension_label) file_type_row = guiutils.get_two_column_box(Gtk.Label(label=_("Image type:")), file_type_combo, INPUT_LABELS_WITDH) file_frame = guiutils.get_named_frame_with_vbox(None, [file_type_row, name_row, folder_row]) vbox = Gtk.VBox(False, 2) vbox.pack_start(frame_frame, False, False, 0) vbox.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox.pack_start(file_frame, False, False, 0) alignment = guiutils.set_margins(vbox, 12, 12, 12, 12) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect('response', callback, (file_name, out_folder, file_type_combo, frame)) #(file_name, out_folder, track_select_combo, cascade_check, op_combo, audio_track_select_combo)) dialog.show_all()
def __init__(self): self.dialog = Gtk.Dialog( _("Creating Proxy Files"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Stop").encode('utf-8'), Gtk.ResponseType.REJECT)) self.render_progress_bar = Gtk.ProgressBar() self.render_progress_bar.set_text("0 %") prog_align = guiutils.set_margins(self.render_progress_bar, 0, 0, 6, 0) prog_align.set_size_request(550, 30) self.elapsed_value = Gtk.Label() self.current_render_value = Gtk.Label() self.items_value = Gtk.Label() est_label = guiutils.get_right_justified_box( [guiutils.bold_label(_("Elapsed:"))]) current_label = guiutils.get_right_justified_box( [guiutils.bold_label(_("Current Media File:"))]) items_label = guiutils.get_right_justified_box( [guiutils.bold_label(_("Rendering Item:"))]) est_label.set_size_request(250, 20) current_label.set_size_request(250, 20) items_label.set_size_request(250, 20) info_vbox = Gtk.VBox(False, 0) info_vbox.pack_start( guiutils.get_left_justified_box([est_label, self.elapsed_value]), False, False, 0) info_vbox.pack_start( guiutils.get_left_justified_box( [current_label, self.current_render_value]), False, False, 0) info_vbox.pack_start( guiutils.get_left_justified_box([items_label, self.items_value]), False, False, 0) progress_vbox = Gtk.VBox(False, 2) progress_vbox.pack_start(info_vbox, False, False, 0) progress_vbox.pack_start(guiutils.get_pad_label(10, 8), False, False, 0) progress_vbox.pack_start(prog_align, False, False, 0) alignment = guiutils.set_margins(progress_vbox, 12, 12, 12, 12) alignment.show_all() self.dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.connect('response', self.stop_pressed) self.dialog.show()
def render_progress_dialog(callback, parent_window, frame_rates_match=True): dialog = Gtk.Dialog(_("Render Progress"), parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT)) dialog.status_label = Gtk.Label() dialog.remaining_time_label = Gtk.Label() dialog.passed_time_label = Gtk.Label() dialog.progress_bar = Gtk.ProgressBar() status_box = Gtk.HBox(False, 2) status_box.pack_start(dialog.status_label,False, False, 0) status_box.pack_start(Gtk.Label(), True, True, 0) remaining_box = Gtk.HBox(False, 2) remaining_box.pack_start(dialog.remaining_time_label,False, False, 0) remaining_box.pack_start(Gtk.Label(), True, True, 0) passed_box = Gtk.HBox(False, 2) passed_box.pack_start(dialog.passed_time_label,False, False, 0) passed_box.pack_start(Gtk.Label(), True, True, 0) if frame_rates_match == False: warning_icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.MENU) warning_text = Gtk.Label(label=_("Project and Render Profile FPS values are not same. Rendered file may have A/V sync issues.")) warning_box = Gtk.HBox(False, 2) warning_box.pack_start(warning_icon,False, False, 0) warning_box.pack_start(warning_text,False, False, 0) warning_box.pack_start(Gtk.Label(), True, True, 0) progress_vbox = Gtk.VBox(False, 2) progress_vbox.pack_start(status_box, False, False, 0) progress_vbox.pack_start(remaining_box, False, False, 0) progress_vbox.pack_start(passed_box, False, False, 0) if frame_rates_match == False: progress_vbox.pack_start(guiutils.get_pad_label(10, 10), False, False, 0) progress_vbox.pack_start(warning_box, False, False, 0) progress_vbox.pack_start(guiutils.get_pad_label(10, 10), False, False, 0) progress_vbox.pack_start(dialog.progress_bar, False, False, 0) alignment = guiutils.set_margins(progress_vbox, 12, 12, 12, 12) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_default_size(500, 125) alignment.show_all() dialog.connect('response', callback) dialog.show() return dialog
def show_freebar_conf_dialog(): dialog = Gtk.Dialog(_("Free Bar Configuration"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("OK"), Gtk.ResponseType.ACCEPT)) panel = _get_freebar_conf_panel() guiutils.set_margins(panel, 4, 24, 6, 0) dialog.connect('response', _freebar_dialog_callback, (None, None)) dialog.vbox.pack_start(panel, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.set_transient_for(gui.editor_window.window) dialog.show_all()
def __init__(self): Gtk.Dialog.__init__( self, _("Welcome To Flowblade 2"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Select Preset Workflow and Continue").encode('utf-8'), Gtk.ResponseType.ACCEPT)) self.DEFAULT_SELECTION = 1 info_label_text_1 = _( "To audio sync clips you need move action origin clip by " ) # + str(data.clip_tline_media_offset - data.media_offset_frames) + _(" frames.") info_label_1 = Gtk.Label(info_label_text_1) info_label_text_2 = _( "To audio sync clips you need move action origin clip by " ) # + str(data.clip_tline_media_offset - data.media_offset_frames) + _(" frames.") info_label_2 = Gtk.Label(info_label_text_2) preset_workflow_text_1 = _( "workflow 1 " ) # + str(data.clip_tline_media_offset - data.media_offset_frames) + _(" frames.") workflow_select_item_1 = self.get_workflow_select_item( 1, preset_workflow_text_1) preset_workflow_text_2 = _( "workflow 2 " ) # + str(data.clip_tline_media_offset - data.media_offset_frames) + _(" frames.") workflow_select_item_2 = self.get_workflow_select_item( 2, preset_workflow_text_1) panel_vbox = Gtk.VBox(False, 2) panel_vbox.pack_start(guiutils.get_pad_label(24, 12), False, False, 0) panel_vbox.pack_start(guiutils.get_left_justified_box([info_label_1]), False, False, 0) panel_vbox.pack_start(workflow_select_item_1, False, False, 0) panel_vbox.pack_start(workflow_select_item_2, False, False, 0) panel_vbox.pack_start(info_label_2, False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 24), False, False, 0) alignment = dialogutils.get_alignment2(panel_vbox) self.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(self.vbox) dialogs._default_behaviour(self) self.connect('response', self.done) self.show_all()
def _color_pulse_clip_dialog(callback): dialog = Gtk.Dialog( _("Create Color Pulse Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) s1_box, s1_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s2_box, s2_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s3_box, s3_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s4_box, s4_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) m1_box, m1_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) m2_box, m2_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) row1 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 1:")), s1_box, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 2:")), s2_box, 200) row3 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 3:")), s3_box, 200) row4 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 4:")), s4_box, 200) row5 = guiutils.get_two_column_box(Gtk.Label(label=_("Move 1:")), m1_box, 200) row6 = guiutils.get_two_column_box(Gtk.Label(label=_("Move 2:")), m2_box, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(row3, False, False, 0) vbox.pack_start(row4, False, False, 0) vbox.pack_start(row5, False, False, 0) vbox.pack_start(row6, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.set_size_request(450, 220) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (s1_slider, s2_slider, s3_slider, s4_slider, m1_slider, m2_slider) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(align, True, True, 0) dialogutils.default_behaviour(dialog) dialogutils.set_outer_margins(dialog.vbox) dialog.show_all()
def _load_program_edit_info_callback(self, dialog, response_id): if response_id != Gtk.ResponseType.ACCEPT: dialog.destroy() else: load_file_path = dialog.get_filename() dialog.destroy() if load_file_path == None: return load_file = open(load_file_path, "r") loaded_project_edit_info = json.load(load_file) primary_txt = _("Container Program Edit Data is Executable!") secondary_txt = _( "Only accept Container Program Edit Data from similar trustwothy sources\nyou would accept applications!\n\nContainer Program Edit Data will be used to call Python <b>exec()</b> function and\ncan maybe used as an attack vector against your system." ) warning_panel = dialogutils.get_warning_message_dialog_panel( primary_txt, secondary_txt) sw = guicomponents.get_scroll_widget((300, 200), str(loaded_project_edit_info)) content = Gtk.VBox(False, 2) content.pack_start(warning_panel, False, False, 0) content.pack_start( guiutils.bold_label("Loaded Container Program Edit Data"), False, False, 0) content.pack_start(sw, False, False, 0) align = dialogutils.get_default_alignment(content) dialog = Gtk.Dialog( "", gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("Load Program Edit Data"), Gtk.ResponseType.ACCEPT)) dialog.vbox.pack_start(align, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_resizable(False) dialog.connect('response', self._load_warning_callback, loaded_project_edit_info) dialog.show_all()
def _display_single_instance_window(): GObject.source_remove(timeout_id) primary_txt = _("Batch Render Queue already running!") msg = _("Batch Render Queue application was detected in session dbus.") content = dialogutils.get_warning_message_dialog_panel(primary_txt, msg, True) align = dialogutils.get_default_alignment(content) dialog = Gtk.Dialog("", None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("OK").encode('utf-8'), Gtk.ResponseType.OK)) dialog.vbox.pack_start(align, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect('response', _early_exit) dialog.show_all()
def show_disk_management_dialog(): dialog = Gtk.Dialog(_("Disk Cache Manager"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close").encode('utf-8'), Gtk.ResponseType.CLOSE)) panels = _get_disk_dir_panels() pane = Gtk.VBox(True, 2) for panel in panels: pane.pack_start(panel.vbox, True, True, 0) guiutils.set_margins(pane, 12, 24, 12, 12) dialog.connect('response', dialogutils.dialog_destroy) dialog.vbox.pack_start(pane, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all() return dialog
def _open_image_sequence_dialog(callback, title, rows, data): parent_window = gui.editor_window.window cancel_str = _("Cancel") ok_str = _("Ok") dialog = Gtk.Dialog( title, parent_window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (cancel_str, Gtk.ResponseType.CANCEL, ok_str, Gtk.ResponseType.ACCEPT)) vbox = Gtk.VBox(False, 2) for row in rows: vbox.pack_start(row, False, False, 0) alignment = dialogutils.get_alignment2(vbox) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect('response', callback, data) dialog.show_all()
def show_disk_management_dialog(): dialog = Gtk.Dialog(_("Disk Cache Manager"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close").encode('utf-8'), Gtk.ResponseType.CLOSE)) global _panels _panels = _get_disk_dir_panels() pane = Gtk.VBox(True, 2) for panel in _panels: pane.pack_start(panel.vbox, True, True, 0) guiutils.set_margins(pane, 12, 24, 12, 12) dialog.connect('response', dialogutils.dialog_destroy) dialog.vbox.pack_start(pane, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all() return dialog
def __init__(self): self.dialog = Gtk.Dialog(_("Creating Proxy Files"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Stop").encode('utf-8'), Gtk.ResponseType.REJECT)) self.render_progress_bar = Gtk.ProgressBar() self.render_progress_bar.set_text("0 %") prog_align = guiutils.set_margins(self.render_progress_bar, 0, 0, 6, 0) prog_align.set_size_request(550, 30) self.elapsed_value = Gtk.Label() self.current_render_value = Gtk.Label() self.items_value = Gtk.Label() est_label = guiutils.get_right_justified_box([guiutils.bold_label(_("Elapsed:"))]) current_label = guiutils.get_right_justified_box([guiutils.bold_label(_("Current Media File:"))]) items_label = guiutils.get_right_justified_box([guiutils.bold_label(_("Rendering Item:"))]) est_label.set_size_request(250, 20) current_label.set_size_request(250, 20) items_label.set_size_request(250, 20) info_vbox = Gtk.VBox(False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([est_label, self.elapsed_value]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([current_label, self.current_render_value]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([items_label, self.items_value]), False, False, 0) progress_vbox = Gtk.VBox(False, 2) progress_vbox.pack_start(info_vbox, False, False, 0) progress_vbox.pack_start(guiutils.get_pad_label(10, 8), False, False, 0) progress_vbox.pack_start(prog_align, False, False, 0) alignment = guiutils.set_margins(progress_vbox, 12, 12, 12, 12) alignment.show_all() self.dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.connect('response', self.stop_pressed) self.dialog.show()
def show_blender_container_clip_program_editor(callback, blender_objects): # Create panels for objects panels = [] editors = [] for obj in blender_objects: # object is [name, type, editors_list] see blenderprojectinit.py editors_data_list = obj[2] editors_panel = Gtk.VBox(True, 2) for editor_data in editors_data_list: prop_path, label_text, tooltip, editor_type, value = editor_data editor_type = int(editor_type) editor = get_editor(editor_type, (obj[0], prop_path), label_text, value, tooltip) editor.blender_editor_data = editor_data # We need this the later to apply the changes. editors.append(editor) editors_panel.pack_start(editor, False, False, 0) if len(editors_data_list) > 0: panel = guiutils.get_named_frame(obj[0] + " - " + obj[1], editors_panel) panels.append(panel) # Create and show dialog dialog = Gtk.Dialog(_("Blender Project Edit"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("Save Changes"), Gtk.ResponseType.ACCEPT)) pane = Gtk.VBox(False, 2) for panel in panels: pane.pack_start(panel, False, False, 0) alignment = dialogutils.get_default_alignment(pane) dialogutils.set_outer_margins(dialog.vbox) dialog.vbox.pack_start(alignment, True, True, 0) dialog.set_default_response(Gtk.ResponseType.REJECT) dialog.set_resizable(False) dialog.connect('response', callback, editors) dialog.show_all()
def _color_pulse_clip_dialog(callback): dialog = Gtk.Dialog(_("Create Color Pulse Clip"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Create").encode('utf-8'), Gtk.ResponseType.ACCEPT)) s1_box, s1_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s2_box, s2_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s3_box, s3_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) s4_box, s4_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) m1_box, m1_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) m2_box, m2_slider = guiutils.get_non_property_slider_row(0, 100, 1, 100) row1 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 1:")), s1_box, 200) row2 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 2:")), s2_box, 200) row3 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 3:")), s3_box, 200) row4 = guiutils.get_two_column_box(Gtk.Label(label=_("Speed 4:")), s4_box, 200) row5 = guiutils.get_two_column_box(Gtk.Label(label=_("Move 1:")), m1_box, 200) row6 = guiutils.get_two_column_box(Gtk.Label(label=_("Move 2:")), m2_box, 200) vbox = Gtk.VBox(False, 2) vbox.pack_start(row1, False, False, 0) vbox.pack_start(row2, False, False, 0) vbox.pack_start(row3, False, False, 0) vbox.pack_start(row4, False, False, 0) vbox.pack_start(row5, False, False, 0) vbox.pack_start(row6, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.set_size_request(450, 220) align = guiutils.set_margins(vbox, 12, 0, 12, 12) selection_widgets = (s1_slider, s2_slider, s3_slider, s4_slider, m1_slider, m2_slider) dialog.connect('response', callback, selection_widgets) dialog.vbox.pack_start(align, True, True, 0) dialogutils.default_behaviour(dialog) dialogutils.set_outer_margins(dialog.vbox) dialog.show_all()
def _encode_settings_clicked(): toolsencoding.create_widgets(_current_profile_index, True) global _encoding_panel _encoding_panel = toolsencoding.get_enconding_panel(_render_data) if _render_data == None and toolsencoding.widgets.file_panel.movie_name.get_text() == "movie": toolsencoding.widgets.file_panel.movie_name.set_text(os.path.basename(_current_path).split(".")[0] + "_gmic") align = dialogutils.get_default_alignment(_encoding_panel) dialog = Gtk.Dialog(_("Video Encoding Settings"), _window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("Set Encoding").encode('utf-8'), Gtk.ResponseType.ACCEPT)) dialog.vbox.pack_start(align, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialog.set_resizable(False) dialog.connect('response', _encode_settings_callback) dialog.show_all()
def profiles_manager_dialog(): dialog = Gtk.Dialog(_("Profiles Manager"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close Manager").encode('utf-8'), Gtk.ResponseType.CLOSE)) panel2, user_profiles_view = _get_user_profiles_panel() guiutils.set_margins(panel2, 12, 14, 12, 6) panel1 = _get_factory_profiles_panel(user_profiles_view) guiutils.set_margins(panel1, 12, 12, 12, 12) pane = Gtk.HBox(True, 2) pane.pack_start(panel1, True, True, 0) pane.pack_start(panel2, True, True, 0) pane.set_size_request(PROFILES_WIDTH * 2, PROFILES_HEIGHT) pane.show_all() dialog.connect('response', dialogutils.dialog_destroy) dialog.vbox.pack_start(pane, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all() return dialog
def profiles_manager_dialog(): dialog = Gtk.Dialog(_("Profiles Manager"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close Manager"), Gtk.ResponseType.CLOSE)) panel2, user_profiles_view = _get_user_profiles_panel() guiutils.set_margins(panel2, 12, 14, 12, 6) panel1 = _get_factory_profiles_panel(user_profiles_view) guiutils.set_margins(panel1, 12, 12, 12, 12) pane = Gtk.HBox(True, 2) pane.pack_start(panel1, True, True, 0) pane.pack_start(panel2, True, True, 0) pane.set_size_request(PROFILES_WIDTH * 2, PROFILES_HEIGHT) pane.show_all() dialog.connect('response', dialogutils.dialog_destroy) dialog.vbox.pack_start(pane, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all() return dialog
def preferences_dialog(): dialog = Gtk.Dialog(_("Editor Preferences"), None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.REJECT, _("OK").encode('utf-8'), Gtk.ResponseType.ACCEPT)) gen_opts_panel, gen_opts_widgets = _general_options_panel(_thumbs_select_clicked, _renders_select_clicked) edit_prefs_panel, edit_prefs_widgets = _edit_prefs_panel() view_pres_panel, view_pref_widgets = _view_prefs_panel() notebook = Gtk.Notebook() notebook.set_size_request(PREFERENCES_WIDTH, PREFERENCES_HEIGHT) notebook.append_page(gen_opts_panel, Gtk.Label(label=_("General"))) notebook.append_page(edit_prefs_panel, Gtk.Label(label=_("Editing"))) notebook.append_page(view_pres_panel, Gtk.Label(label=_("View"))) guiutils.set_margins(notebook, 4, 24, 6, 0) dialog.connect('response', _preferences_dialog_callback, (gen_opts_widgets, edit_prefs_widgets, view_pref_widgets)) dialog.vbox.pack_start(notebook, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.show_all()
def __init__(self): self.dialog = Gtk.Dialog(_("Proxy Manager"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close Manager").encode('utf-8'), Gtk.ResponseType.CLOSE)) # Encoding self.enc_select = Gtk.ComboBoxText() encodings = renderconsumer.proxy_encodings if len(encodings) < 1: # no encoding options available, system does not have right codecs # display info pass for encoption in encodings: self.enc_select.append_text(encoption.name) current_enc = editorstate.PROJECT().proxy_data.encoding if current_enc >= len(encodings): # current encoding selection not available current_enc = 0 editorstate.PROJECT().proxy_data.encoding = 0 self.enc_select.set_active(current_enc) self.enc_select.connect("changed", lambda w,e: self.encoding_changed(w.get_active()), None) self.size_select = Gtk.ComboBoxText() self.size_select.append_text(_("Project Image Size")) self.size_select.append_text(_("Half Project Image Size")) self.size_select.append_text(_("Quarter Project Image Size")) self.size_select.set_active(editorstate.PROJECT().proxy_data.size) self.size_select.connect("changed", lambda w,e: self.size_changed(w.get_active()), None) row_enc = Gtk.HBox(False, 2) row_enc.pack_start(Gtk.Label(), True, True, 0) row_enc.pack_start(self.enc_select, False, False, 0) row_enc.pack_start(self.size_select, False, False, 0) row_enc.pack_start(Gtk.Label(), True, True, 0) vbox_enc = Gtk.VBox(False, 2) vbox_enc.pack_start(row_enc, False, False, 0) vbox_enc.pack_start(guiutils.pad_label(8, 12), False, False, 0) panel_encoding = guiutils.get_named_frame(_("Proxy Encoding"), vbox_enc) # Mode media_files = editorstate.PROJECT().media_files video_files = 0 proxy_files = 0 for k, media_file in media_files.iteritems(): if media_file.type == appconsts.VIDEO: video_files = video_files + 1 if media_file.has_proxy_file == True or media_file.is_proxy_file == True: proxy_files = proxy_files + 1 proxy_status_label = Gtk.Label(label=_("Proxy Stats:")) proxy_status_value = Gtk.Label(label=str(proxy_files) + _(" proxy file(s) for ") + str(video_files) + _(" video file(s)")) row_proxy_status = guiutils.get_two_column_box_right_pad(proxy_status_label, proxy_status_value, 150, 150) proxy_mode_label = Gtk.Label(label=_("Current Proxy Mode:")) self.proxy_mode_value = Gtk.Label() self.set_mode_display_value() row_proxy_mode = guiutils.get_two_column_box_right_pad(proxy_mode_label, self.proxy_mode_value, 150, 150) self.convert_progress_bar = Gtk.ProgressBar() self.convert_progress_bar.set_text(_("Press Button to Change Mode")) self.use_button = Gtk.Button(_("Use Proxy Media")) self.dont_use_button = Gtk.Button(_("Use Original Media")) self.set_convert_buttons_state() self.use_button.connect("clicked", lambda w: _convert_to_proxy_project()) self.dont_use_button.connect("clicked", lambda w: _convert_to_original_media_project()) c_box_2 = Gtk.HBox(True, 8) c_box_2.pack_start(self.use_button, True, True, 0) c_box_2.pack_start(self.dont_use_button, True, True, 0) row2_onoff = Gtk.HBox(False, 2) row2_onoff.pack_start(Gtk.Label(), True, True, 0) row2_onoff.pack_start(c_box_2, False, False, 0) row2_onoff.pack_start(Gtk.Label(), True, True, 0) vbox_onoff = Gtk.VBox(False, 2) vbox_onoff.pack_start(row_proxy_status, False, False, 0) vbox_onoff.pack_start(row_proxy_mode, False, False, 0) vbox_onoff.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox_onoff.pack_start(self.convert_progress_bar, False, False, 0) vbox_onoff.pack_start(row2_onoff, False, False, 0) panel_onoff = guiutils.get_named_frame(_("Project Proxy Mode"), vbox_onoff) # Pane vbox = Gtk.VBox(False, 2) vbox.pack_start(panel_encoding, False, False, 0) vbox.pack_start(panel_onoff, False, False, 0) guiutils.set_margins(vbox, 8, 12, 12, 12) self.dialog.vbox.pack_start(vbox, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.connect('response', dialogutils.dialog_destroy) self.dialog.show_all()
def __init__(self): Gtk.Dialog.__init__(self, _("Workflow First Run Wizard"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Select Preset Workflow and Continue").encode('utf-8'), Gtk.ResponseType.ACCEPT)) self.selection = STANDARD_PRESET info_label_text_1 = _("<b>Welcome to Flowblade 2.0</b>") info_label_1 = Gtk.Label(info_label_text_1) info_label_1.set_use_markup(True) info_label_text_2 = _("<b>Flowblade 2.0</b> comes with a configurable workflow.") info_label_2 = Gtk.Label(info_label_text_2) info_label_2.set_use_markup(True) INDENT = " " info_label_text_6 = INDENT + u"\u2022" + _(" You can select which <b>tools</b> you want to use.\n") + \ INDENT + u"\u2022" + _(" Many timeline edit <b>behaviours</b> are configurable.\n") info_label_6 = Gtk.Label(info_label_text_6) info_label_6.set_use_markup(True) info_label_text_3 = _("<b>Select Workflow Preset</b>") info_label_3 = Gtk.Label(info_label_text_3) info_label_3.set_use_markup(True) guiutils.set_margins(info_label_3, 0, 4, 0, 0) info_label_text_7 = _("You can change and configure individual tools and behaviours <b>anytime</b>") info_label_7 = Gtk.Label(info_label_text_7) info_label_7.set_use_markup(True) info_label_text_4 = _(" by pressing ") info_label_4 = Gtk.Label(info_label_text_4) info_label_4.set_use_markup(True) icon = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "workflow.png") info_label_text_5 = _(" icon.") info_label_5 = Gtk.Label(info_label_text_5) workflow_name = _("<b>Standard</b>") stadard_preset_workflow_text_1 = _("Standard workflow has the <b>Move</b> tool as default tool\nand presents a workflow\nsimilar to most video editors.") workflow_select_item_1 = self.get_workflow_select_item(STANDARD_PRESET, workflow_name, stadard_preset_workflow_text_1) workflow_name = _("<b>Film Style</b>") filmstyle_preset_workflow_text_2 = _("Film Style workflow has the <b>Insert</b> tool as default tool\nand employs insert style editing.\nThis was the workflow in previous versions of the application.") workflow_select_item_2 = self.get_workflow_select_item(FILM_STYLE_PRESET, workflow_name, filmstyle_preset_workflow_text_2) self.workflow_items = [workflow_select_item_1, workflow_select_item_2] panel_vbox = Gtk.VBox(False, 2) panel_vbox.pack_start(guiutils.get_pad_label(24, 12), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_1]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 12), False, False, 0) panel_vbox.pack_start(guiutils.get_left_justified_box([info_label_2]), False, False, 0) panel_vbox.pack_start(guiutils.get_left_justified_box([info_label_6]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 24), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_3]), False, False, 0) panel_vbox.pack_start(workflow_select_item_1, False, False, 0) panel_vbox.pack_start(workflow_select_item_2, False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 48), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_7]), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_4, icon, info_label_5]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 24), False, False, 0) alignment = dialogutils.get_alignment2(panel_vbox) self.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(self.vbox) dialogs._default_behaviour(self) self.connect('response', self.done) self.show_all()
def show_reverse_dialog(media_file, default_range_render, _response_callback): folder, file_name = os.path.split(media_file.path) if media_file.is_proxy_file: folder, file_name = os.path.split(media_file.second_file_path) name, ext = os.path.splitext(file_name) dialog = Gtk.Dialog(_("Render Reverse Motion Video File"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, _("Render").encode('utf-8'), Gtk.ResponseType.ACCEPT)) media_file_label = Gtk.Label(label=_("Source Media File: ")) media_name = Gtk.Label(label="<b>" + media_file.name + "</b>") media_name.set_use_markup(True) SOURCE_PAD = 8 SOURCE_HEIGHT = 20 mf_row = guiutils.get_left_justified_box([media_file_label, guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), media_name]) mark_in = Gtk.Label(label=_("<b>not set</b>")) mark_out = Gtk.Label(label=_("<b>not set</b>")) if media_file.mark_in != -1: mark_in = Gtk.Label(label="<b>" + utils.get_tc_string(media_file.mark_in) + "</b>") if media_file.mark_out != -1: mark_out = Gtk.Label(label="<b>" + utils.get_tc_string(media_file.mark_out) + "</b>") mark_in.set_use_markup(True) mark_out.set_use_markup(True) fb_widgets = utils.EmptyClass() fb_widgets.file_name = Gtk.Entry() fb_widgets.file_name.set_text(name + "_REVERSE") fb_widgets.extension_label = Gtk.Label() fb_widgets.extension_label.set_size_request(45, 20) name_row = Gtk.HBox(False, 4) name_row.pack_start(fb_widgets.file_name, True, True, 0) name_row.pack_start(fb_widgets.extension_label, False, False, 4) fb_widgets.out_folder = Gtk.FileChooserButton(_("Select Target Folder")) fb_widgets.out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) fb_widgets.out_folder.set_current_folder(folder) label = Gtk.Label(label=_("Speed %:")) adjustment = Gtk.Adjustment(float(-100), float(-600), float(-1), float(1)) fb_widgets.hslider = Gtk.HScale() fb_widgets.hslider.set_adjustment(adjustment) fb_widgets.hslider.set_draw_value(False) spin = Gtk.SpinButton() spin.set_numeric(True) spin.set_adjustment(adjustment) fb_widgets.hslider.set_digits(0) spin.set_digits(0) slider_hbox = Gtk.HBox(False, 4) slider_hbox.pack_start(fb_widgets.hslider, True, True, 0) slider_hbox.pack_start(spin, False, False, 4) slider_hbox.set_size_request(450,35) hbox = Gtk.HBox(False, 2) hbox.pack_start(guiutils.pad_label(8, 8), False, False, 0) hbox.pack_start(slider_hbox, False, False, 0) profile_selector = ProfileSelector() profile_selector.fill_options() profile_selector.widget.set_sensitive(True) fb_widgets.out_profile_combo = profile_selector.widget quality_selector = RenderQualitySelector() fb_widgets.quality_cb = quality_selector.widget # Encoding encoding_selector = RenderEncodingSelector(quality_selector, fb_widgets.extension_label, None) encoding_selector.encoding_selection_changed() fb_widgets.encodings_cb = encoding_selector.widget objects_list = Gtk.TreeStore(str, bool) objects_list.append(None, [_("Full Source Length"), True]) if media_file.mark_in != -1 and media_file.mark_out != -1: range_available = True else: range_available = False objects_list.append(None, [_("Source Mark In to Mark Out"), range_available]) fb_widgets.render_range = Gtk.ComboBox.new_with_model(objects_list) renderer_text = Gtk.CellRendererText() fb_widgets.render_range.pack_start(renderer_text, True) fb_widgets.render_range.add_attribute(renderer_text, "text", 0) fb_widgets.render_range.add_attribute(renderer_text, 'sensitive', 1) if default_range_render == False: fb_widgets.render_range.set_active(0) else: fb_widgets.render_range.set_active(1) fb_widgets.render_range.show() # To update rendered length display clip_length = _get_rendered_slomo_clip_length(media_file, fb_widgets.render_range, 100) clip_length_label = Gtk.Label(label=utils.get_tc_string(clip_length)) fb_widgets.hslider.connect("value-changed", _reverse_speed_changed, media_file, fb_widgets.render_range, clip_length_label) fb_widgets.render_range.connect("changed", _reverse_range_changed, media_file, fb_widgets.hslider, clip_length_label) # Build gui vbox = Gtk.VBox(False, 2) vbox.pack_start(mf_row, False, False, 0) vbox.pack_start(guiutils.get_left_justified_box([Gtk.Label(label=_("Source Mark In: ")), guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), mark_in]), False, False, 0) vbox.pack_start(guiutils.get_left_justified_box([Gtk.Label(label=_("Source Mark Out: ")), guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), mark_out]), False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(label, False, False, 0) vbox.pack_start(hbox, False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target File:")), name_row, 120), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Folder:")), fb_widgets.out_folder, 120), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Profile:")), fb_widgets.out_profile_combo, 200), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Encoding:")), fb_widgets.encodings_cb, 200), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Quality:")), fb_widgets.quality_cb, 200), False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Render Range:")), fb_widgets.render_range, 180), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Rendered Clip Length:")), clip_length_label, 180), False, False, 0) alignment = guiutils.set_margins(vbox, 6, 24, 24, 24) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect('response', _response_callback, fb_widgets, media_file) dialog.show_all()
def __init__(self, files_to_render, already_have_proxies, not_video_files, is_proxy_file, other_project_proxies, proxy_w, proxy_h, proxy_file_extension): dialog_title = _("Proxy Render Info") self.files_to_render = files_to_render self.other_project_proxies = other_project_proxies self.already_have_proxies = already_have_proxies self.proxy_w = proxy_w self.proxy_h = proxy_h self.proxy_file_extension = proxy_file_extension self.issues = 1 if (len(files_to_render) + len(already_have_proxies) + len(other_project_proxies)) == 0 and not_video_files > 0: self.dialog = Gtk.Dialog( dialog_title, gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close").encode('utf-8'), Gtk.ResponseType.CLOSE)) info_box = dialogutils.get_warning_message_dialog_panel( _("Nothing will be rendered"), _("No video files were selected.\nOnly video files can have proxy files." ), True) self.dialog.connect('response', dialogutils.dialog_destroy) else: self.dialog = Gtk.Dialog( dialog_title, gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.CANCEL, _("Do Render Action").encode('utf-8'), Gtk.ResponseType.OK)) self.dialog.connect('response', self.response) rows = "" if len(already_have_proxies) > 0 and len( other_project_proxies) > 0: text = _( "Proxies exist that were created by this and other projects for " ) + str( len(already_have_proxies) + len(other_project_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text elif len(already_have_proxies) > 0 and len( other_project_proxies) == 0: text = _("Proxies have already been created for ") + str( len(already_have_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text elif len(other_project_proxies) > 0: text = _( "Proxies exist that were created by other projects for " ) + str(len(other_project_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text if not_video_files > 0: text = _("You are trying to create proxies for ") + str( not_video_files) + _(" non-video file(s).\n") rows = rows + self.issues_str() + text if is_proxy_file > 0: text = _("You are trying to create proxies for ") + str( not_video_files) + _(" proxy file(s).\n") rows = rows + self.issues_str() + text issues_box = dialogutils.get_warning_message_dialog_panel( "There are some issues with proxy render request", rows, True) proxy_mode = editorstate.PROJECT().proxy_data.proxy_mode if proxy_mode == appconsts.USE_PROXY_MEDIA: info_label = Gtk.Label( _("<b>Rerendering proxies currently not possible!</b>\nChange to 'Use Original Media' mode to rerender proxies." )) info_label.set_use_markup(True) info_row = guiutils.get_left_justified_box( [guiutils.get_pad_label(24, 10), info_label]) self.action_select = Gtk.ComboBoxText() self.action_select.append_text( _("Render Unrendered Possible & Use existing")) if proxy_mode != appconsts.USE_PROXY_MEDIA: self.action_select.append_text(_("Rerender All Possible")) self.action_select.set_active(0) action_row = guiutils.get_left_justified_box([ guiutils.get_pad_label(24, 10), Gtk.Label(label=_("Select Render Action: ")), self.action_select ]) info_box = Gtk.VBox() info_box.pack_start(issues_box, False, False, 0) if proxy_mode == appconsts.USE_PROXY_MEDIA: info_box.pack_start(info_row, False, False, 0) info_box.pack_start(guiutils.get_pad_label(12, 24), False, False, 0) info_box.pack_start(action_row, False, False, 0) guiutils.set_margins(info_box, 12, 48, 12, 0) self.dialog.vbox.pack_start(info_box, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.show_all()
def __init__(self): self.dialog = Gtk.Dialog( _("Proxy Manager"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close Manager").encode('utf-8'), Gtk.ResponseType.CLOSE)) # Encoding self.enc_select = Gtk.ComboBoxText() encodings = renderconsumer.proxy_encodings if len( encodings ) < 1: # no encoding options available, system does not have right codecs # display info pass for encoption in encodings: self.enc_select.append_text(encoption.name) current_enc = editorstate.PROJECT().proxy_data.encoding if current_enc >= len( encodings): # current encoding selection not available current_enc = 0 editorstate.PROJECT().proxy_data.encoding = 0 self.enc_select.set_active(current_enc) self.enc_select.connect( "changed", lambda w, e: self.encoding_changed(w.get_active()), None) self.size_select = Gtk.ComboBoxText() self.size_select.append_text(_("Project Image Size")) self.size_select.append_text(_("Half Project Image Size")) self.size_select.append_text(_("Quarter Project Image Size")) self.size_select.set_active(editorstate.PROJECT().proxy_data.size) self.size_select.connect( "changed", lambda w, e: self.size_changed(w.get_active()), None) row_enc = Gtk.HBox(False, 2) row_enc.pack_start(Gtk.Label(), True, True, 0) row_enc.pack_start(self.enc_select, False, False, 0) row_enc.pack_start(self.size_select, False, False, 0) row_enc.pack_start(Gtk.Label(), True, True, 0) vbox_enc = Gtk.VBox(False, 2) vbox_enc.pack_start(row_enc, False, False, 0) vbox_enc.pack_start(guiutils.pad_label(8, 12), False, False, 0) panel_encoding = guiutils.get_named_frame(_("Proxy Encoding"), vbox_enc) # Mode media_files = editorstate.PROJECT().media_files video_files = 0 proxy_files = 0 for k, media_file in media_files.iteritems(): if media_file.type == appconsts.VIDEO: video_files = video_files + 1 if media_file.has_proxy_file == True or media_file.is_proxy_file == True: proxy_files = proxy_files + 1 proxy_status_label = Gtk.Label(label=_("Proxy Stats:")) proxy_status_value = Gtk.Label(label=str(proxy_files) + _(" proxy file(s) for ") + str(video_files) + _(" video file(s)")) row_proxy_status = guiutils.get_two_column_box_right_pad( proxy_status_label, proxy_status_value, 150, 150) proxy_mode_label = Gtk.Label(label=_("Current Proxy Mode:")) self.proxy_mode_value = Gtk.Label() self.set_mode_display_value() row_proxy_mode = guiutils.get_two_column_box_right_pad( proxy_mode_label, self.proxy_mode_value, 150, 150) self.convert_progress_bar = Gtk.ProgressBar() self.convert_progress_bar.set_text(_("Press Button to Change Mode")) self.use_button = Gtk.Button(_("Use Proxy Media")) self.dont_use_button = Gtk.Button(_("Use Original Media")) self.set_convert_buttons_state() self.use_button.connect("clicked", lambda w: _convert_to_proxy_project()) self.dont_use_button.connect( "clicked", lambda w: _convert_to_original_media_project()) c_box_2 = Gtk.HBox(True, 8) c_box_2.pack_start(self.use_button, True, True, 0) c_box_2.pack_start(self.dont_use_button, True, True, 0) row2_onoff = Gtk.HBox(False, 2) row2_onoff.pack_start(Gtk.Label(), True, True, 0) row2_onoff.pack_start(c_box_2, False, False, 0) row2_onoff.pack_start(Gtk.Label(), True, True, 0) vbox_onoff = Gtk.VBox(False, 2) vbox_onoff.pack_start(row_proxy_status, False, False, 0) vbox_onoff.pack_start(row_proxy_mode, False, False, 0) vbox_onoff.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox_onoff.pack_start(self.convert_progress_bar, False, False, 0) vbox_onoff.pack_start(row2_onoff, False, False, 0) panel_onoff = guiutils.get_named_frame(_("Project Proxy Mode"), vbox_onoff) # Pane vbox = Gtk.VBox(False, 2) vbox.pack_start(panel_encoding, False, False, 0) vbox.pack_start(panel_onoff, False, False, 0) guiutils.set_margins(vbox, 8, 12, 12, 12) self.dialog.vbox.pack_start(vbox, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.connect('response', dialogutils.dialog_destroy) self.dialog.show_all()
def __init__(self): Gtk.Dialog.__init__( self, _("Workflow First Run Wizard"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Select Preset Workflow and Continue"), Gtk.ResponseType.ACCEPT)) self.selection = STANDARD_PRESET info_label_text_1 = _("<b>Welcome to Flowblade 2.4</b>") info_label_1 = Gtk.Label(info_label_text_1) info_label_1.set_use_markup(True) info_label_text_2 = _( "<b>Flowblade 2.4</b> comes with a configurable workflow.") info_label_2 = Gtk.Label(info_label_text_2) info_label_2.set_use_markup(True) INDENT = " " info_label_text_6 = INDENT + "\u2022" + _(" You can select which <b>tools</b> you want to use.\n") + \ INDENT + "\u2022" + _(" Many timeline edit <b>behaviours</b> are configurable.\n") info_label_6 = Gtk.Label(info_label_text_6) info_label_6.set_use_markup(True) info_label_text_3 = _("<b>Select Workflow Preset</b>") info_label_3 = Gtk.Label(info_label_text_3) info_label_3.set_use_markup(True) guiutils.set_margins(info_label_3, 0, 4, 0, 0) info_label_text_7 = _( "You can change and configure individual tools and behaviours <b>anytime</b>" ) info_label_7 = Gtk.Label(info_label_text_7) info_label_7.set_use_markup(True) info_label_text_4 = _(" by pressing ") info_label_4 = Gtk.Label(info_label_text_4) info_label_4.set_use_markup(True) icon = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "workflow.png") info_label_text_5 = _(" icon.") info_label_5 = Gtk.Label(info_label_text_5) workflow_name = _("<b>Standard</b>") stadard_preset_workflow_text_1 = _( "Standard workflow has the <b>Move</b> tool as default tool\nand presents a workflow\nsimilar to most video editors." ) workflow_select_item_1 = self.get_workflow_select_item( STANDARD_PRESET, workflow_name, stadard_preset_workflow_text_1) workflow_name = _("<b>Film Style</b>") filmstyle_preset_workflow_text_2 = _( "Film Style workflow has the <b>Insert</b> tool as default tool\nand employs insert style editing.\nThis was the workflow in previous versions of the application." ) workflow_select_item_2 = self.get_workflow_select_item( FILM_STYLE_PRESET, workflow_name, filmstyle_preset_workflow_text_2) workflow_name = _("<b>Keep Existing Worflow</b>") keep_workflow_text_2 = _( "Select this if you have installed new version and wish to keep your existing workflow." ) workflow_select_item_3 = self.get_workflow_select_item( KEEP_EXISTING, workflow_name, keep_workflow_text_2) self.workflow_items = [ workflow_select_item_1, workflow_select_item_2, workflow_select_item_3 ] panel_vbox = Gtk.VBox(False, 2) panel_vbox.pack_start(guiutils.get_pad_label(24, 12), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_1]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 12), False, False, 0) panel_vbox.pack_start(guiutils.get_left_justified_box([info_label_2]), False, False, 0) panel_vbox.pack_start(guiutils.get_left_justified_box([info_label_6]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 24), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_3]), False, False, 0) panel_vbox.pack_start(workflow_select_item_1, False, False, 0) panel_vbox.pack_start(workflow_select_item_2, False, False, 0) panel_vbox.pack_start(workflow_select_item_3, False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 48), False, False, 0) panel_vbox.pack_start(guiutils.get_centered_box([info_label_7]), False, False, 0) panel_vbox.pack_start( guiutils.get_centered_box([info_label_4, icon, info_label_5]), False, False, 0) panel_vbox.pack_start(guiutils.get_pad_label(24, 24), False, False, 0) alignment = dialogutils.get_alignment2(panel_vbox) self.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(self.vbox) dialogs._default_behaviour(self) self.connect('response', self.done) self.show_all()
def __init__(self, files_to_render, already_have_proxies, not_video_files, is_proxy_file, other_project_proxies, proxy_w, proxy_h, proxy_file_extension): dialog_title =_("Proxy Render Info") self.files_to_render = files_to_render self.other_project_proxies = other_project_proxies self.already_have_proxies = already_have_proxies self.proxy_w = proxy_w self.proxy_h = proxy_h self.proxy_file_extension = proxy_file_extension self.issues = 1 if (len(files_to_render) + len(already_have_proxies) + len(other_project_proxies)) == 0 and not_video_files > 0: self.dialog = Gtk.Dialog(dialog_title, gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Close").encode('utf-8'), Gtk.ResponseType.CLOSE)) info_box = dialogutils.get_warning_message_dialog_panel(_("Nothing will be rendered"), _("No video files were selected.\nOnly video files can have proxy files."), True) self.dialog.connect('response', dialogutils.dialog_destroy) else: self.dialog = Gtk.Dialog(dialog_title, gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel").encode('utf-8'), Gtk.ResponseType.CANCEL, _("Do Render Action" ).encode('utf-8'), Gtk.ResponseType.OK)) self.dialog.connect('response', self.response) rows = "" if len(already_have_proxies) > 0 and len(other_project_proxies) > 0: text = _("Proxies exist that were created by this and other projects for ") + str(len(already_have_proxies) + len(other_project_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text elif len(already_have_proxies) > 0 and len(other_project_proxies) == 0: text = _("Proxies have already been created for ") + str(len(already_have_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text elif len(other_project_proxies) > 0: text = _("Proxies exist that were created by other projects for ") + str(len(other_project_proxies)) + _(" file(s).\n") rows = rows + self.issues_str() + text if not_video_files > 0: text = _("You are trying to create proxies for ") + str(not_video_files) + _(" non-video file(s).\n") rows = rows + self.issues_str() + text if is_proxy_file > 0: text = _("You are trying to create proxies for ") + str(not_video_files) + _(" proxy file(s).\n") rows = rows + self.issues_str() + text issues_box = dialogutils.get_warning_message_dialog_panel(_("There are some issues with proxy render request"), rows, True) proxy_mode = editorstate.PROJECT().proxy_data.proxy_mode if proxy_mode == appconsts.USE_PROXY_MEDIA: info_label = Gtk.Label(_("<b>Rerendering proxies currently not possible!</b>\nChange to 'Use Original Media' mode to rerender proxies.")) info_label.set_use_markup(True) info_row = guiutils.get_left_justified_box([guiutils.get_pad_label(24, 10), info_label]) self.action_select = Gtk.ComboBoxText() self.action_select.append_text(_("Render Unrendered Possible & Use existing")) if proxy_mode != appconsts.USE_PROXY_MEDIA: self.action_select.append_text(_("Rerender All Possible" )) self.action_select.set_active(0) action_row = guiutils.get_left_justified_box([guiutils.get_pad_label(24, 10), Gtk.Label(label=_("Select Render Action: ")), self.action_select]) info_box = Gtk.VBox() info_box.pack_start(issues_box, False, False, 0) if proxy_mode == appconsts.USE_PROXY_MEDIA: info_box.pack_start(info_row, False, False, 0) info_box.pack_start(guiutils.get_pad_label(12, 24), False, False, 0) info_box.pack_start(action_row, False, False, 0) guiutils.set_margins(info_box, 12, 48, 12, 0) self.dialog.vbox.pack_start(info_box, True, True, 0) dialogutils.set_outer_margins(self.dialog.vbox) self.dialog.show_all()
def show_blender_container_clip_program_editor(callback, program_info_json): # Create panels for objects editors = [] blender_objects = program_info_json["objects"] materials = program_info_json["materials"] curves = program_info_json["curves"] objs_panel = _get_panel_and_create_editors(blender_objects, _("Objects"), editors) materials_panel = _get_panel_and_create_editors(materials, _("Materials"), editors) curves_panel = _get_panel_and_create_editors(curves, _("Curves"), editors) pane = Gtk.VBox(False, 2) if objs_panel != None: pane.pack_start(objs_panel, False, False, 0) if materials_panel != None: pane.pack_start(materials_panel, False, False, 0) if curves_panel != None: pane.pack_start(curves_panel, False, False, 0) # Put in scrollpane if too many editors for screensize. n_editors = len(blender_objects) + len(materials) + len(curves) add_scroll = False if editorstate.screen_size_small_height() == True and n_editors > 4: add_scroll = True h = 500 elif editorstate.screen_size_small_height( ) == True and editorste.screen_size_large_height( ) == False and n_editors > 5: add_scroll = True h = 600 elif editorstate.screen_size_large_height() == True and n_editors > 6: add_scroll = True h = 700 if add_scroll == True: sw = Gtk.ScrolledWindow() sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) sw.add(pane) sw.set_size_request(400, h) # Create and show dialog dialog = Gtk.Dialog( _("Blender Project Edit"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (_("Cancel"), Gtk.ResponseType.REJECT, _("Save Changes"), Gtk.ResponseType.ACCEPT)) if add_scroll == True: alignment = dialogutils.get_default_alignment(sw) else: alignment = dialogutils.get_default_alignment(pane) dialogutils.set_outer_margins(dialog.vbox) dialog.vbox.pack_start(alignment, True, True, 0) dialog.set_default_response(Gtk.ResponseType.REJECT) dialog.set_resizable(False) dialog.connect('response', callback, editors) dialog.show_all()
def show_slowmo_dialog(media_file, _response_callback): folder, file_name = os.path.split(media_file.path) name, ext = os.path.splitext(file_name) dialog = Gtk.Dialog(_("Render Slow/Fast Motion Video File"), gui.editor_window.window, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, _("Render").encode('utf-8'), Gtk.ResponseType.ACCEPT)) media_file_label = Gtk.Label(label=_("Source Media File: ")) media_name = Gtk.Label(label="<b>" + media_file.name + "</b>") media_name.set_use_markup(True) SOURCE_PAD = 8 SOURCE_HEIGHT = 20 mf_row = guiutils.get_left_justified_box([media_file_label, guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), media_name]) mark_in = Gtk.Label(label=_("<b>not set</b>")) mark_out = Gtk.Label(label=_("<b>not set</b>")) if media_file.mark_in != -1: mark_in = Gtk.Label(label="<b>" + utils.get_tc_string(media_file.mark_in) + "</b>") if media_file.mark_out != -1: mark_out = Gtk.Label(label="<b>" + utils.get_tc_string(media_file.mark_out) + "</b>") mark_in.set_use_markup(True) mark_out.set_use_markup(True) fb_widgets = utils.EmptyClass() fb_widgets.file_name = Gtk.Entry() fb_widgets.file_name.set_text(name + "_MOTION") fb_widgets.extension_label = Gtk.Label() fb_widgets.extension_label.set_size_request(45, 20) name_row = Gtk.HBox(False, 4) name_row.pack_start(fb_widgets.file_name, True, True, 0) name_row.pack_start(fb_widgets.extension_label, False, False, 4) fb_widgets.out_folder = Gtk.FileChooserButton(_("Select Target Folder")) fb_widgets.out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) fb_widgets.out_folder.set_current_folder(folder) label = Gtk.Label(label=_("Speed %:")) adjustment = Gtk.Adjustment(float(100), float(1), float(600), float(1)) fb_widgets.hslider = Gtk.HScale() fb_widgets.hslider.set_adjustment(adjustment) fb_widgets.hslider.set_draw_value(False) spin = Gtk.SpinButton() spin.set_numeric(True) spin.set_adjustment(adjustment) fb_widgets.hslider.set_digits(0) spin.set_digits(0) slider_hbox = Gtk.HBox(False, 4) slider_hbox.pack_start(fb_widgets.hslider, True, True, 0) slider_hbox.pack_start(spin, False, False, 4) slider_hbox.set_size_request(350,35) hbox = Gtk.HBox(False, 2) hbox.pack_start(guiutils.pad_label(8, 8), False, False, 0) hbox.pack_start(label, False, False, 0) hbox.pack_start(slider_hbox, False, False, 0) profile_selector = ProfileSelector() profile_selector.fill_options() profile_selector.widget.set_sensitive(True) fb_widgets.out_profile_combo = profile_selector.widget quality_selector = RenderQualitySelector() fb_widgets.quality_cb = quality_selector.widget # Encoding encoding_selector = RenderEncodingSelector(quality_selector, fb_widgets.extension_label, None) encoding_selector.encoding_selection_changed() fb_widgets.encodings_cb = encoding_selector.widget objects_list = Gtk.TreeStore(str, bool) objects_list.append(None, [_("Full Source Length"), True]) if media_file.mark_in != -1 and media_file.mark_out != -1: range_available = True else: range_available = False objects_list.append(None, [_("Source Mark In to Mark Out"), range_available]) fb_widgets.render_range = Gtk.ComboBox.new_with_model(objects_list) renderer_text = Gtk.CellRendererText() fb_widgets.render_range.pack_start(renderer_text, True) fb_widgets.render_range.add_attribute(renderer_text, "text", 0) fb_widgets.render_range.add_attribute(renderer_text, 'sensitive', 1) fb_widgets.render_range.set_active(0) fb_widgets.render_range.show() # To update rendered length display clip_length = _get_rendered_slomo_clip_length(media_file, fb_widgets.render_range, 100) clip_length_label = Gtk.Label(label=utils.get_tc_string(clip_length)) fb_widgets.hslider.connect("value-changed", _slomo_speed_changed, media_file, fb_widgets.render_range, clip_length_label) fb_widgets.render_range.connect("changed", _slomo_range_changed, media_file, fb_widgets.hslider, clip_length_label) # Build gui vbox = Gtk.VBox(False, 2) vbox.pack_start(mf_row, False, False, 0) vbox.pack_start(guiutils.get_left_justified_box([Gtk.Label(label=_("Source Mark In: ")), guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), mark_in]), False, False, 0) vbox.pack_start(guiutils.get_left_justified_box([Gtk.Label(label=_("Source_Mark Out: ")), guiutils.pad_label(SOURCE_PAD, SOURCE_HEIGHT), mark_out]), False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(hbox, False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target File:")), name_row, 120), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Folder:")), fb_widgets.out_folder, 120), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Profile:")), fb_widgets.out_profile_combo, 200), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Encoding:")), fb_widgets.encodings_cb, 200), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Target Quality:")), fb_widgets.quality_cb, 200), False, False, 0) vbox.pack_start(guiutils.pad_label(18, 12), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Render Range:")), fb_widgets.render_range, 180), False, False, 0) vbox.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Rendered Clip Length:")), clip_length_label, 180), False, False, 0) alignment = guiutils.set_margins(vbox, 6, 24, 24, 24) dialog.vbox.pack_start(alignment, True, True, 0) dialogutils.set_outer_margins(dialog.vbox) dialogutils.default_behaviour(dialog) dialog.connect('response', _response_callback, fb_widgets, media_file) dialog.show_all()