def _create_rotomask_editor(filt, editable_properties): property_editor_widgets_create_func = lambda: _create_rotomask_property_editor_widgets(editable_properties) kf_json_prop = filter(lambda ep: ep.name == "spline", editable_properties)[0] kf_editor = keyframeeditor.RotoMaskKeyFrameEditor(kf_json_prop, propertyparse.rotomask_json_value_string_to_kf_array) kfs_value_label = Gtk.Label(str(len(kf_editor.clip_editor.keyframes))) kf_row = guiutils.get_left_justified_box([guiutils.pad_label(12, 12), guiutils.bold_label(_("Keyframes") + ": "), kfs_value_label]) kf, curve_points = kf_editor.clip_editor.keyframes[0] curve_points_value_label = Gtk.Label(str(len(curve_points))) cps_row = guiutils.get_left_justified_box([guiutils.pad_label(12, 12), guiutils.bold_label(_("Curve Points") + ": "), curve_points_value_label]) value_labels = [kfs_value_label, curve_points_value_label] lauch_button = Gtk.Button(_("Lauch RotoMask editor")) lauch_button.connect("clicked", lambda b:_roto_lauch_pressed(filt, editable_properties, property_editor_widgets_create_func, value_labels)) vbox = Gtk.VBox(False, 4) vbox.pack_start(guiutils.bold_label(_("RotoMask info")), False, False, 0) vbox.pack_start(kf_row, False, False, 0) vbox.pack_start(cps_row, False, False, 0) vbox.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox.pack_start(lauch_button, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.no_separator = True return vbox
def _create_rotomask_editor(filt, editable_properties): property_editor_widgets_create_func = lambda: _create_rotomask_property_editor_widgets(editable_properties) kf_json_prop = filter(lambda ep: ep.name == "spline", editable_properties)[0] kf_editor = keyframeeditor.RotoMaskKeyFrameEditor(kf_json_prop, propertyparse.rotomask_json_value_string_to_kf_array) kfs_value_label = Gtk.Label(str(len(kf_editor.clip_editor.keyframes))) kf_row = guiutils.get_left_justified_box([guiutils.pad_label(12, 12), guiutils.bold_label(_("Keyframes") + ": "), kfs_value_label]) kf, curve_points = kf_editor.clip_editor.keyframes[0] curve_points_value_label = Gtk.Label(str(len(curve_points))) cps_row = guiutils.get_left_justified_box([guiutils.pad_label(12, 12), guiutils.bold_label(_("Curve Points") + ": "), curve_points_value_label]) value_labels = [kfs_value_label, curve_points_value_label] lauch_button = Gtk.Button(_("Lauch RotoMask editor")) lauch_button.connect("clicked", lambda b:_roto_lauch_pressed(filt, editable_properties, property_editor_widgets_create_func, value_labels)) vbox = Gtk.VBox(False, 4) vbox.pack_start(guiutils.bold_label(_("RotoMask info")), False, False, 0) vbox.pack_start(kf_row, False, False, 0) vbox.pack_start(cps_row, False, False, 0) vbox.pack_start(guiutils.pad_label(12, 12), False, False, 0) vbox.pack_start(lauch_button, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) vbox.no_separator = True return vbox
def get_info_row(self): folder, project_file = os.path.split(self.container_data.program) project_name_label = Gtk.Label(label=project_file) self.targets_select = Gtk.ComboBoxText() self.targets_select.append_text(_("Objects")) self.targets_select.append_text(_("Materials")) self.targets_select.append_text(_("Curves")) self.targets_select.set_active(0) self.targets_select.connect("changed", self.edit_targets_changed) project_box = Gtk.HBox(False, 2) project_box.pack_start(guiutils.set_margins(guiutils.bold_label("Blender Project:"), 0, 0, 0, 4), False, False, 0) project_box.pack_start(project_name_label, False, False, 0) project_box.pack_start(Gtk.Label(), True, True, 0) self.editors_count_label = Gtk.Label("0") editors_box = Gtk.HBox(False, 2) editors_box.pack_start(guiutils.set_margins(guiutils.bold_label("Blender Project:"), 0, 0, 0, 4), False, False, 0) editors_box.pack_start(self.editors_count_label, False, False, 0) editors_box.pack_start(Gtk.Label(), True, True, 0) info_row = Gtk.HBox(True, 2) info_row.pack_start(project_box, True, True, 0) info_row.pack_start(editors_box, False, False, 0) info_row_full = Gtk.HBox(False, 2) info_row_full.pack_start(self.targets_select, True, True, 0) info_row_full.pack_start(guiutils.pad_label(24,4), False, False, 0) info_row_full.pack_start(info_row, False, False, 0) return info_row_full
def __init__(self): self.dialog = gtk.Dialog( _("Creating Proxy Files"), gui.editor_window.window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (_("Stop").encode('utf-8'), gtk.RESPONSE_REJECT)) self.render_progress_bar = gtk.ProgressBar() self.render_progress_bar.set_text("0 %") prog_align = gtk.Alignment(0.5, 0.5, 1.0, 0.0) prog_align.set_padding(0, 0, 0, 0) prog_align.add(self.render_progress_bar) 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 = gtk.Alignment(0.5, 0.5, 1.0, 1.0) alignment.set_padding(12, 12, 12, 12) alignment.add(progress_vbox) alignment.show_all() self.dialog.vbox.pack_start(alignment, True, True, 0) self.dialog.set_has_separator(False) self.dialog.connect('response', self.stop_pressed) self.dialog.show()
def __init__(self): # Window self.window = Gtk.Window(Gtk.WindowType.TOPLEVEL) self.window.connect("delete-event", lambda w, e:_start_single_render_shutdown()) app_icon = GdkPixbuf.Pixbuf.new_from_file(respaths.IMAGE_PATH + "flowbladesinglerendericon.png") self.window.set_icon(app_icon) self.est_time_left = Gtk.Label() self.current_render = Gtk.Label() self.current_render_time = Gtk.Label() est_r = guiutils.get_right_justified_box([guiutils.bold_label(_("Estimated Left:"))]) current_r = guiutils.get_right_justified_box([guiutils.bold_label(_("File:"))]) current_r_t = guiutils.get_right_justified_box([guiutils.bold_label(_("Elapsed:"))]) est_r.set_size_request(250, 20) current_r.set_size_request(250, 20) current_r_t.set_size_request(250, 20) info_vbox = Gtk.VBox(False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([current_r, self.current_render]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([current_r_t, self.current_render_time]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([est_r, self.est_time_left]), False, False, 0) self.stop_render_button = Gtk.Button(_("Stop Render")) self.stop_render_button.connect("clicked", lambda w, e: _start_single_render_shutdown(), None) self.render_progress_bar = Gtk.ProgressBar() self.progress_label = Gtk.Label("0 %") button_row = Gtk.HBox(False, 0) button_row.pack_start(self.progress_label, False, False, 0) button_row.pack_start(Gtk.Label(), True, True, 0) button_row.pack_start(self.stop_render_button, False, False, 0) top_vbox = Gtk.VBox(False, 0) top_vbox.pack_start(info_vbox, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(self.render_progress_bar, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(button_row, False, False, 0) top_align = guiutils.set_margins(top_vbox, 12, 12, 12, 12) top_align.set_size_request(SINGLE_WINDOW_WIDTH, 20) # Set pane and show window self.window.add(top_align) self.window.set_title(_("Flowblade Timeline Render")) self.window.set_position(Gtk.WindowPosition.CENTER) self.window.show_all()
def get_named_frame(name, widget, left_padding=12, right_padding=6, right_out_padding=4): """ Gnome style named panel """ if name != None: label = guiutils.bold_label(name) label.set_justify(gtk.JUSTIFY_LEFT) label_box = gtk.HBox() label_box.pack_start(label, False, False, 0) label_box.pack_start(gtk.Label(), True, True, 0) alignment = gtk.Alignment(0.5, 0.5, 1.0, 1.0) alignment.set_padding(right_padding, 0, left_padding, 0) alignment.add(widget) frame = gtk.VBox() if name != None: frame.pack_start(label_box, False, False, 0) frame.pack_start(alignment, True, True, 0) out_align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) out_align.set_padding(4, 4, 0, right_out_padding) out_align.add(frame) return out_align
def get_named_frame(name, widget, left_padding=12, right_padding=6, right_out_padding=4): """ Gnome style named panel """ if name != None: label = guiutils.bold_label(name) label.set_justify(gtk.JUSTIFY_LEFT) label_box = gtk.HBox() label_box.pack_start(label, False, False, 0) label_box.pack_start(gtk.Label(), True, True, 0) alignment = gtk.Alignment(0.5, 0.5, 1.0, 1.0) alignment.set_padding(right_padding, 0, left_padding, 0) alignment.add(widget) frame = gtk.VBox() if name != None: frame.pack_start(label_box, False, False, 0) frame.pack_start(alignment, True, True, 0) out_align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) out_align.set_padding(4, 4, 0, right_out_padding) out_align.add(frame) return out_align
def get_two_text_panel(primary_txt, secondary_txt): p_label = guiutils.bold_label(primary_txt) s_label = gtk.Label(secondary_txt) texts_pad = gtk.Label() texts_pad.set_size_request(12,12) pbox = gtk.HBox(False, 1) pbox.pack_start(p_label, False, False, 0) pbox.pack_start(gtk.Label(), True, True, 0) sbox = gtk.HBox(False, 1) sbox.pack_start(s_label, False, False, 0) sbox.pack_start(gtk.Label(), True, True, 0) text_box = gtk.VBox(False, 0) text_box.pack_start(pbox, False, False, 0) text_box.pack_start(texts_pad, False, False, 0) text_box.pack_start(sbox, False, False, 0) text_box.pack_start(gtk.Label(), True, True, 0) align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) align.set_padding(12, 0, 12, 12) align.add(text_box) return align
def get_two_text_panel(primary_txt, secondary_txt): p_label = guiutils.bold_label(primary_txt) s_label = gtk.Label(secondary_txt) texts_pad = gtk.Label() texts_pad.set_size_request(12, 12) pbox = gtk.HBox(False, 1) pbox.pack_start(p_label, False, False, 0) pbox.pack_start(gtk.Label(), True, True, 0) sbox = gtk.HBox(False, 1) sbox.pack_start(s_label, False, False, 0) sbox.pack_start(gtk.Label(), True, True, 0) text_box = gtk.VBox(False, 0) text_box.pack_start(pbox, False, False, 0) text_box.pack_start(texts_pad, False, False, 0) text_box.pack_start(sbox, False, False, 0) text_box.pack_start(gtk.Label(), True, True, 0) align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) align.set_padding(12, 0, 12, 12) align.add(text_box) return align
def get_clip_effects_editor_panel(group_combo_box, effects_list_view): create_widgets() stack_label = guiutils.bold_label(_("Clip Filters Stack")) label_row = guiutils.get_left_justified_box([stack_label]) guiutils.set_margins(label_row, 0, 4, 0, 0) ad_buttons_box = Gtk.HBox(True,1) ad_buttons_box.pack_start(widgets.add_effect_b, True, True, 0) ad_buttons_box.pack_start(widgets.del_effect_b, True, True, 0) stack_buttons_box = Gtk.HBox(False,1) stack_buttons_box.pack_start(ad_buttons_box, True, True, 0) stack_buttons_box.pack_start(widgets.toggle_all, False, False, 0) effect_stack = widgets.effect_stack_view for group in mltfilters.groups: group_name, filters_array = group group_combo_box.append_text(group_name) group_combo_box.set_active(0) # Same callback function works for filter select window too group_combo_box.connect("changed", lambda w,e: _group_selection_changed(w,effects_list_view), None) widgets.group_combo = group_combo_box widgets.effect_list_view = effects_list_view set_enabled(False) exit_button_vbox = Gtk.VBox(False, 2) exit_button_vbox.pack_start(widgets.exit_button, False, False, 0) info_row = Gtk.HBox(False, 2) info_row.pack_start(widgets.hamburger_launcher.widget, False, False, 0) info_row.pack_start(Gtk.Label(), True, True, 0) info_row.pack_start(widgets.clip_info, False, False, 0) info_row.pack_start(Gtk.Label(), True, True, 0) combo_row = Gtk.HBox(False, 2) combo_row.pack_start(group_combo_box, True, True, 0) group_name, filters_array = mltfilters.groups[0] effects_list_view.fill_data_model(filters_array) effects_list_view.treeview.get_selection().select_path("0") effects_vbox = Gtk.VBox(False, 2) effects_vbox.pack_start(label_row, False, False, 0) effects_vbox.pack_start(stack_buttons_box, False, False, 0) effects_vbox.pack_start(effect_stack, True, True, 0) effects_vbox.pack_start(combo_row, False, False, 0) effects_vbox.pack_start(effects_list_view, True, True, 0) widgets.group_combo.set_tooltip_text(_("Select Filter Group")) widgets.effect_list_view.set_tooltip_text(_("Current group Filters")) return effects_vbox, info_row
def __init__(self, name, seq, producer, is_master=False): GObject.GObject.__init__(self) self.seq = seq self.producer = producer self.is_master = is_master if is_master: gain_value = seq.master_audio_gain # tractor master else: gain_value = producer.audio_gain # track gain_value = gain_value * 100 self.adjustment = Gtk.Adjustment(value=gain_value, lower=0, upper=100, step_incr=1) self.slider = Gtk.VScale() self.slider.set_adjustment(self.adjustment) self.slider.set_size_request(SLOT_W - 10, CONTROL_SLOT_H - 105) self.slider.set_inverted(True) self.slider.connect("value-changed", self.gain_changed) if is_master: pan_value = seq.master_audio_pan else: pan_value = producer.audio_pan if pan_value == appconsts.NO_PAN: pan_value = 0.5 # center pan_value = (pan_value - 0.5) * 200 # from range 0 - 1 to range -100 - 100 self.pan_adjustment = Gtk.Adjustment(value=pan_value, lower=-100, upper=100, step_incr=1) self.pan_slider = Gtk.HScale() self.pan_slider.set_adjustment(self.pan_adjustment) self.pan_slider.connect("value-changed", self.pan_changed) self.pan_button = Gtk.ToggleButton(_("Pan")) self.pan_button.connect("toggled", self.pan_active_toggled) if pan_value == 0.0: self.pan_slider.set_sensitive(False) else: self.pan_button.set_active(True) self.pan_adjustment.set_value(pan_value) # setting button active sets value = 0, set correct value again label = guiutils.bold_label(name) vbox = Gtk.VBox(False, 0) vbox.pack_start(guiutils.get_pad_label(5,5), False, False, 0) vbox.pack_start(label, False, False, 0) vbox.pack_start(guiutils.get_pad_label(5,5), False, False, 0) vbox.pack_start(self.slider, False, False, 0) vbox.pack_start(self.pan_button, False, False, 0) vbox.pack_start(self.pan_slider, False, False, 0) vbox.pack_start(guiutils.get_pad_label(5,5), False, False, 0) self.add(vbox) self.set_size_request(SLOT_W, CONTROL_SLOT_H)
def __init__(self): self.dialog = gtk.Dialog(_("Creating Proxy Files"), gui.editor_window.window, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (_("Stop").encode('utf-8'), gtk.RESPONSE_REJECT)) self.render_progress_bar = gtk.ProgressBar() self.render_progress_bar.set_text("0 %") prog_align = gtk.Alignment(0.5, 0.5, 1.0, 0.0) prog_align.set_padding(0, 0, 0, 0) prog_align.add(self.render_progress_bar) 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 = gtk.Alignment(0.5, 0.5, 1.0, 1.0) alignment.set_padding(12, 12, 12, 12) alignment.add(progress_vbox) alignment.show_all() self.dialog.vbox.pack_start(alignment, True, True, 0) self.dialog.set_has_separator(False) self.dialog.connect('response', self.stop_pressed) self.dialog.show()
def get_editors_panel(self): self.editors_list = guicomponents.MultiTextColumnListView(5) guiutils.set_margins(self.editors_list, 0, 12, 0, 6) self.editors_list.set_size_request(900, 360) titles = [_("Property Path"), _("Label"), _("Info"), _("Type"), _("Value")] self.editors_list.set_column_titles(titles) # --- widgets add_button = Gtk.Button(label=_("Add Editor")) add_button.connect("clicked", lambda w: self.add_clicked()) self.delete_button = Gtk.Button(label=_("Delete Editor")) self.delete_button.set_sensitive(False) self.delete_button.connect("clicked", lambda w: self.delete_clicked()) self.obj_path_entry = Gtk.Entry() self.editor_label_entry = Gtk.Entry() self.tooltip_info_entry = Gtk.Entry() self.default_value_entry = Gtk.Entry() self.default_value_entry.set_text(simpleeditors.DEFAULT_VALUES[simpleeditors.SIMPLE_EDITOR_STRING]) self.editor_select = simpleeditors.get_simple_editor_selector(0, self.editor_selection_changed) # --- object path row right. self.obj_path_label = Gtk.Label() self.obj_path_label.set_use_markup(True) obj_path_row_right = Gtk.HBox(False, 2) obj_path_row_right.pack_start(guiutils.pad_label(4, 4), False, False, 0) obj_path_row_right.pack_start(self.obj_path_label, False, False, 0) obj_path_row_right.pack_start(self.obj_path_entry, False, False, 0) # --- panels editor_add_right = Gtk.VBox(False, 2) editor_add_right.pack_start(add_button, False, False, 0) editor_add_right.pack_start(Gtk.Label(), True, True, 0) editor_add_left = Gtk.VBox(True, 2) editor_add_left.pack_start(guiutils.bold_label(_("New Editor Properties")), False, False, 0) editor_add_left.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Blender Object Property Path:")), obj_path_row_right, EDITOR_PANEL_LEFT_LABEL_WIDTH), False, False, 0) editor_add_left.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Editor Label:")), self.editor_label_entry, EDITOR_PANEL_LEFT_LABEL_WIDTH), False, False, 0) editor_add_left.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Tooltip Info:")), self.tooltip_info_entry, EDITOR_PANEL_LEFT_LABEL_WIDTH), False, False, 0) editor_add_left.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Editor Type:")), self.editor_select, EDITOR_PANEL_LEFT_LABEL_WIDTH), False, False, 0) editor_add_left.pack_start(guiutils.get_two_column_box(Gtk.Label(label=_("Default Value:")), self.default_value_entry, EDITOR_PANEL_LEFT_LABEL_WIDTH), False, False, 0) add_row = guiutils.get_two_column_box(editor_add_right, editor_add_left, EDITOR_PANEL_BUTTON_WIDTH) delete_row = guiutils.get_two_column_box(self.delete_button , Gtk.Label(), EDITOR_PANEL_BUTTON_WIDTH) vbox = Gtk.VBox(False, 2) vbox.pack_start(self.editors_list, True, True, 0) vbox.pack_start(add_row, False, False, 0) vbox.pack_start(delete_row, False, False, 0) panel = Gtk.VBox(True, 2) self.object_editors_frame = guiutils.get_named_frame("to be replaced", vbox) panel.pack_start(self.object_editors_frame, True, True, 0) return panel
def show_render_properties_panel(render_item): if render_item.render_data.user_args == False: enc_opt = renderconsumer.encoding_options[render_item.render_data.enc_index] enc_desc = enc_opt.name audio_desc = enc_opt.audio_desc quality_opt = enc_opt.quality_options[render_item.render_data.quality_index] quality_desc = quality_opt.name else: enc_desc = " -" quality_desc = " -" audio_desc = " -" user_args = str(render_item.render_data.user_args) start_frame, end_frame, wait_for_stop_render = get_render_range(render_item) start_str = utils.get_tc_string_with_fps(start_frame, render_item.render_data.fps) end_str = utils.get_tc_string_with_fps(end_frame, render_item.render_data.fps) LEFT_WIDTH = 200 render_item.get_display_name() row0 = guiutils.get_two_column_box(guiutils.bold_label(_("Encoding:")), Gtk.Label(label=enc_desc), LEFT_WIDTH) row1 = guiutils.get_two_column_box(guiutils.bold_label(_("Quality:")), Gtk.Label(label=quality_desc), LEFT_WIDTH) row2 = guiutils.get_two_column_box(guiutils.bold_label(_("Audio Encoding:")), Gtk.Label(label=audio_desc), LEFT_WIDTH) row3 = guiutils.get_two_column_box(guiutils.bold_label(_("Use User Args:")), Gtk.Label(label=user_args), LEFT_WIDTH) row4 = guiutils.get_two_column_box(guiutils.bold_label(_("Start:")), Gtk.Label(label=start_str), LEFT_WIDTH) row5 = guiutils.get_two_column_box(guiutils.bold_label(_("End:")), Gtk.Label(label=end_str), LEFT_WIDTH) row6 = guiutils.get_two_column_box(guiutils.bold_label(_("Frames Per Second:")), Gtk.Label(label=str(render_item.render_data.fps)), LEFT_WIDTH) row7 = guiutils.get_two_column_box(guiutils.bold_label(_("Render Profile Name:")), Gtk.Label(label=str(render_item.render_data.profile_name)), LEFT_WIDTH) row8 = guiutils.get_two_column_box(guiutils.bold_label(_("Render Profile:")), Gtk.Label(label=render_item.render_data.profile_desc), LEFT_WIDTH) vbox = Gtk.VBox(False, 2) vbox.pack_start(Gtk.Label(label=render_item.get_display_name()), False, False, 0) vbox.pack_start(guiutils.get_pad_label(12, 16), False, False, 0) vbox.pack_start(row0, False, False, 0) 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(row7, False, False, 0) vbox.pack_start(row8, False, False, 0) vbox.pack_start(Gtk.Label(), True, True, 0) title = _("Render Properties") dialogutils.panel_ok_dialog(title, vbox)
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 __init__(self, xdg_folder, folder, info_text, warning_level): self.xdg_folder = xdg_folder self.folder = folder self.warning_level = warning_level self.destroy_button = Gtk.Button(_("Destroy data")) self.destroy_button.connect("clicked", self.destroy_pressed) self.destroy_guard_check = Gtk.CheckButton() self.destroy_guard_check.set_active(False) self.destroy_guard_check.connect("toggled", self.destroy_guard_toggled) self.size_info = Gtk.Label() self.size_info.set_text(self.get_folder_size_str()) folder_label = Gtk.Label("/<i>" + folder + "</i>") folder_label.set_use_markup(True) info = Gtk.HBox(True, 2) info.pack_start( guiutils.get_left_justified_box([guiutils.bold_label(info_text)]), True, True, 0) info.pack_start( guiutils.get_left_justified_box( [guiutils.pad_label(40, 12), folder_label]), True, True, 0) info.pack_start( guiutils.get_left_justified_box( [guiutils.pad_label(12, 12), self.size_info]), True, True, 0) button_area = Gtk.HBox(False, 2) if self.warning_level == PROJECT_DATA_WARNING: button_area.pack_start(self.destroy_guard_check, True, True, 0) self.destroy_button.set_sensitive(False) button_area.pack_start(self.destroy_button, True, True, 0) if self.warning_level == PROJECT_DATA_WARNING: warning_icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.SMALL_TOOLBAR) warning_icon.set_tooltip_text( _("Destroying this data may change contents of existing\nprojects and make some projects unopenable." )) button_area.pack_start(warning_icon, False, False, 0) else: button_area.pack_start(guiutils.pad_label(16, 16), False, False, 0) button_area.set_size_request(150, 24) row = Gtk.HBox(False, 2) row.pack_start(info, True, True, 0) row.pack_start(button_area, False, False, 0) self.vbox = Gtk.VBox(False, 2) self.vbox.pack_start(row, False, False, 0)
def get_warning_message_dialog_panel(primary_txt, secondary_txt, is_info=False, alternative_icon=None): if is_info == True: icon = gtk.STOCK_DIALOG_INFO else: icon = gtk.STOCK_DIALOG_WARNING if alternative_icon != None: icon = alternative_icon warning_icon = gtk.image_new_from_stock(icon, gtk.ICON_SIZE_DIALOG) icon_box = gtk.VBox(False, 2) icon_box.pack_start(warning_icon, False, False, 0) icon_box.pack_start(gtk.Label(), True, True, 0) p_label = guiutils.bold_label(primary_txt) s_label = gtk.Label(secondary_txt) s_label.set_use_markup(True) texts_pad = gtk.Label() texts_pad.set_size_request(12, 12) pbox = gtk.HBox(False, 1) pbox.pack_start(p_label, False, False, 0) pbox.pack_start(gtk.Label(), True, True, 0) sbox = gtk.HBox(False, 1) sbox.pack_start(s_label, False, False, 0) sbox.pack_start(gtk.Label(), True, True, 0) text_box = gtk.VBox(False, 0) text_box.pack_start(pbox, False, False, 0) text_box.pack_start(texts_pad, False, False, 0) text_box.pack_start(sbox, False, False, 0) text_box.pack_start(gtk.Label(), True, True, 0) hbox = gtk.HBox(False, 12) hbox.pack_start(icon_box, False, False, 0) hbox.pack_start(text_box, True, True, 0) align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) align.set_padding(12, 0, 12, 12) align.add(hbox) return align
def get_warning_message_dialog_panel(primary_txt, secondary_txt, is_info=False, alternative_icon=None): if is_info == True: icon = Gtk.STOCK_DIALOG_INFO else: icon = Gtk.STOCK_DIALOG_WARNING if alternative_icon != None: icon = alternative_icon warning_icon = Gtk.Image.new_from_stock(icon, Gtk.IconSize.DIALOG) icon_box = Gtk.VBox(False, 2) icon_box.pack_start(warning_icon, False, False, 0) icon_box.pack_start(Gtk.Label(), True, True, 0) p_label = guiutils.bold_label(primary_txt) s_label = Gtk.Label(label=secondary_txt) s_label.set_use_markup(True) texts_pad = Gtk.Label() texts_pad.set_size_request(12,12) pbox = Gtk.HBox(False, 1) pbox.pack_start(p_label, False, False, 0) pbox.pack_start(Gtk.Label(), True, True, 0) sbox = Gtk.HBox(False, 1) sbox.pack_start(s_label, False, False, 0) sbox.pack_start(Gtk.Label(), True, True, 0) text_box = Gtk.VBox(False, 0) text_box.pack_start(pbox, False, False, 0) text_box.pack_start(texts_pad, False, False, 0) text_box.pack_start(sbox, False, False, 0) text_box.pack_start(Gtk.Label(), True, True, 0) hbox = Gtk.HBox(False, 12) hbox.pack_start(icon_box, False, False, 0) hbox.pack_start(text_box, True, True, 0) align = Gtk.Alignment.new(0.5, 0.5, 1.0, 1.0) align.set_padding(12, 0, 12, 12) align.add(hbox) return align
def __init__(self, folder, info_text, warning_level): self.folder = folder self.warning_level = warning_level self.destroy_button = Gtk.Button(_("Destroy data")) self.destroy_button.connect("clicked", self.destroy_pressed) self.destroy_guard_check = Gtk.CheckButton() self.destroy_guard_check.set_active(False) self.destroy_guard_check.connect("toggled", self.destroy_guard_toggled) self.size_info = Gtk.Label() self.size_info.set_text(self.get_folder_size_str()) folder_label = Gtk.Label("/<i>" + folder + "</i>") folder_label.set_use_markup(True) info = Gtk.HBox(True, 2) info.pack_start(guiutils.get_left_justified_box([guiutils.bold_label(info_text)]), True, True, 0) info.pack_start(guiutils.get_left_justified_box([guiutils.pad_label(40, 12), folder_label]), True, True, 0) info.pack_start(guiutils.get_left_justified_box([guiutils.pad_label(12, 12), self.size_info]), True, True, 0) button_area = Gtk.HBox(False, 2) if self.warning_level == PROJECT_DATA_WARNING: button_area.pack_start(self.destroy_guard_check, True, True, 0) self.destroy_button.set_sensitive(False) button_area.pack_start(self.destroy_button, True, True, 0) if self.warning_level == PROJECT_DATA_WARNING: warning_icon = Gtk.Image.new_from_stock(Gtk.STOCK_DIALOG_WARNING, Gtk.IconSize.SMALL_TOOLBAR) warning_icon.set_tooltip_text( _("Destroying this data may change contents of existing\nprojects and make some projects unopenable.")) button_area.pack_start(warning_icon, False, False, 0) else: button_area.pack_start(guiutils.pad_label(16, 16), False, False, 0) button_area.set_size_request(150, 24) row = Gtk.HBox(False, 2) row.pack_start(info, True, True, 0) row.pack_start(button_area, False, False, 0) self.vbox = Gtk.VBox(False, 2) self.vbox.pack_start(row, False, False, 0)
def get_named_frame(name, widget, left_padding=12, right_padding=6, right_out_padding=4): """ Gnome style named panel """ if name != None: label = guiutils.bold_label(name) label.set_justify(Gtk.Justification.LEFT) label_box = Gtk.HBox() label_box.pack_start(label, False, False, 0) label_box.pack_start(Gtk.Label(), True, True, 0) guiutils.set_margins(widget, right_padding, 0, left_padding, 0) frame = Gtk.VBox() if name != None: frame.pack_start(label_box, False, False, 0) frame.pack_start(widget, True, True, 0) guiutils.set_margins(frame, 4, 4, 0, right_out_padding) return frame
def get_two_text_panel(primary_txt, secondary_txt): p_label = guiutils.bold_label(primary_txt) s_label = Gtk.Label(label=secondary_txt) texts_pad = Gtk.Label() texts_pad.set_size_request(12,12) pbox = Gtk.HBox(False, 1) pbox.pack_start(p_label, False, False, 0) pbox.pack_start(Gtk.Label(), True, True, 0) sbox = Gtk.HBox(False, 1) sbox.pack_start(s_label, False, False, 0) sbox.pack_start(Gtk.Label(), True, True, 0) text_box = Gtk.VBox(False, 0) text_box.pack_start(pbox, False, False, 0) text_box.pack_start(texts_pad, False, False, 0) text_box.pack_start(sbox, False, False, 0) text_box.pack_start(Gtk.Label(), True, True, 0) align = guiutils.set_margins(text_box, 12, 0, 12, 12) return align
def __init__(self): # Window self.window = Gtk.Window(Gtk.WindowType.TOPLEVEL) self.window.connect("delete-event", lambda w, e:shutdown()) app_icon = GdkPixbuf.Pixbuf.new_from_file(respaths.IMAGE_PATH + "flowbladebatchappicon.png") self.window.set_icon(app_icon) self.est_time_left = Gtk.Label() self.current_render = Gtk.Label() self.current_render_time = Gtk.Label() est_r = guiutils.get_right_justified_box([guiutils.bold_label(_("Estimated Left:"))]) current_r = guiutils.get_right_justified_box([guiutils.bold_label(_("Current Render:"))]) current_r_t = guiutils.get_right_justified_box([guiutils.bold_label(_("Elapsed:"))]) est_r.set_size_request(250, 20) current_r.set_size_request(250, 20) current_r_t.set_size_request(250, 20) info_vbox = Gtk.VBox(False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([current_r, self.current_render]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([current_r_t, self.current_render_time]), False, False, 0) info_vbox.pack_start(guiutils.get_left_justified_box([est_r, self.est_time_left]), False, False, 0) self.items_rendered = Gtk.Label() items_r = Gtk.Label(label=_("Items Rendered:")) self.render_started_label = Gtk.Label() started_r = Gtk.Label(label=_("Render Started:")) bottom_info_vbox = Gtk.HBox(True, 0) bottom_info_vbox.pack_start(guiutils.get_left_justified_box([items_r, self.items_rendered]), True, True, 0) bottom_info_vbox.pack_start(guiutils.get_left_justified_box([started_r, self.render_started_label]), True, True, 0) self.not_rendering_txt = _("Not Rendering") self.render_progress_bar = Gtk.ProgressBar() self.render_progress_bar.set_text(self.not_rendering_txt) self.remove_selected = Gtk.Button(_("Delete Selected")) self.remove_selected.connect("clicked", lambda w, e: self.remove_selected_clicked(), None) self.remove_finished = Gtk.Button(_("Delete Finished")) self.remove_finished.connect("clicked", lambda w, e: self.remove_finished_clicked(), None) self.reload_button = Gtk.Button(_("Reload Queue")) self.reload_button.connect("clicked", lambda w, e: self.reload_queue(), None) self.render_button = guiutils.get_render_button() self.render_button.connect("clicked", lambda w, e: self.launch_render(), None) self.stop_render_button = Gtk.Button(_("Stop Render")) self.stop_render_button.set_sensitive(False) self.stop_render_button.connect("clicked", lambda w, e: self.abort_render(), None) button_row = Gtk.HBox(False, 0) button_row.pack_start(self.remove_selected, False, False, 0) button_row.pack_start(self.remove_finished, False, False, 0) button_row.pack_start(Gtk.Label(), True, True, 0) button_row.pack_start(self.stop_render_button, False, False, 0) button_row.pack_start(self.render_button, False, False, 0) top_vbox = Gtk.VBox(False, 0) top_vbox.pack_start(info_vbox, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(self.render_progress_bar, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(button_row, False, False, 0) top_align = guiutils.set_margins(top_vbox, 12, 12, 12, 12) self.queue_view = RenderQueueView() self.queue_view.fill_data_model(render_queue) self.queue_view.set_size_request(WINDOW_WIDTH, QUEUE_HEIGHT) bottom_align = guiutils.set_margins(bottom_info_vbox, 0, 2, 8, 8) # Content pane pane = Gtk.VBox(False, 1) pane.pack_start(top_align, False, False, 0) pane.pack_start(self.queue_view, True, True, 0) pane.pack_start(bottom_align, False, False, 0) # Set pane and show window self.window.add(pane) self.window.set_title(_("Flowblade Batch Render")) self.window.set_position(Gtk.WindowPosition.CENTER) self.window.show_all()
def get_bold_label(text): return guiutils.bold_label(text)
def __init__(self): GObject.GObject.__init__(self) self.connect("delete-event", lambda w, e:_shutdown()) app_icon = GdkPixbuf.Pixbuf.new_from_file(respaths.IMAGE_PATH + "flowblademedialinker.png") self.set_icon(app_icon) # Load media row load_button = Gtk.Button(_("Load Clip")) load_button.connect("clicked", lambda w: self.load_button_clicked()) self.media_info = Gtk.Label() self.media_info.set_markup("<small>no clip loaded</small>")#"<small>" + "video_clip.mpg, 1920x1080, 25.0fps" + "</small>" ) load_row = Gtk.HBox(False, 2) load_row.pack_start(load_button, False, False, 0) load_row.pack_start(guiutils.get_pad_label(6, 2), False, False, 0) load_row.pack_start(self.media_info, False, False, 0) load_row.pack_start(Gtk.Label(), True, True, 0) load_row.set_margin_bottom(4) # Clip monitor black_box = Gtk.EventBox() black_box.add(Gtk.Label()) bg_color = Gdk.Color(red=0.0, green=0.0, blue=0.0) black_box.modify_bg(Gtk.StateType.NORMAL, bg_color) self.monitor = black_box # This could be any GTK+ widget (that is not "windowless"), only its XWindow draw rect # is used to position and scale SDL overlay that actually displays video. self.monitor.set_size_request(MONITOR_WIDTH, MONITOR_HEIGHT) left_vbox = Gtk.VBox(False, 0) left_vbox.pack_start(load_row, False, False, 0) left_vbox.pack_start(self.monitor, True, True, 0) self.preview_info = Gtk.Label() self.preview_info.set_markup("<small>" + _("no preview") + "</small>" ) preview_info_row = Gtk.HBox() preview_info_row.pack_start(self.preview_info, False, False, 0) preview_info_row.pack_start(Gtk.Label(), True, True, 0) preview_info_row.set_margin_top(6) preview_info_row.set_margin_bottom(8) self.preview_monitor = cairoarea.CairoDrawableArea2(MONITOR_WIDTH, MONITOR_HEIGHT, self._draw_preview) right_vbox = Gtk.VBox(False, 2) right_vbox.pack_start(preview_info_row, False, False, 0) right_vbox.pack_start(self.preview_monitor, True, True, 0) # Monitors panel monitors_panel = Gtk.HBox(False, 2) monitors_panel.pack_start(left_vbox, False, False, 0) monitors_panel.pack_start(Gtk.Label(), True, True, 0) monitors_panel.pack_start(right_vbox, False, False, 0) # Control row self.tc_display = guicomponents.MonitorTCDisplay() self.tc_display.use_internal_frame = True self.tc_display.widget.set_valign(Gtk.Align.CENTER) self.tc_display.use_internal_fps = True self.pos_bar = positionbar.PositionBar(False) self.pos_bar.set_listener(self.position_listener) pos_bar_frame = Gtk.Frame() pos_bar_frame.add(self.pos_bar.widget) pos_bar_frame.set_shadow_type(Gtk.ShadowType.ETCHED_IN) pos_bar_frame.set_margin_top(5) pos_bar_frame.set_margin_bottom(4) pos_bar_frame.set_margin_left(6) pos_bar_frame.set_margin_right(2) self.control_buttons = glassbuttons.GmicButtons() pressed_callback_funcs = [prev_pressed, next_pressed, mark_in_pressed, mark_out_pressed, marks_clear_pressed, to_mark_in_pressed, to_mark_out_pressed] self.control_buttons.set_callbacks(pressed_callback_funcs) self.preview_button = Gtk.Button(_("Preview")) self.preview_button.connect("clicked", lambda w: render_preview_frame()) control_panel = Gtk.HBox(False, 2) control_panel.pack_start(self.tc_display.widget, False, False, 0) control_panel.pack_start(pos_bar_frame, True, True, 0) control_panel.pack_start(self.control_buttons.widget, False, False, 0) control_panel.pack_start(guiutils.pad_label(2, 2), False, False, 0) control_panel.pack_start(self.preview_button, False, False, 0) preview_panel = Gtk.VBox(False, 2) preview_panel.pack_start(monitors_panel, False, False, 0) preview_panel.pack_start(control_panel, False, False, 0) preview_panel.set_margin_bottom(8) # Script area self.preset_label = Gtk.Label("Preset Script:") self.preset_select = Gtk.ComboBoxText() self.preset_select.set_tooltip_text(_("Select Preset G'Mic script")) for gmic_script in _scripts: self.preset_select.append_text(gmic_script.name) print gmic_script.script self.preset_select.set_active(0) self.preset_select.connect('changed', lambda w: self.update_script_view()) preset_row = Gtk.HBox(False, 2) preset_row.pack_start(self.preset_label, False, False, 0) preset_row.pack_start(guiutils.pad_label(6, 12), False, False, 0) preset_row.pack_start(self.preset_select, False, False, 0) preset_row.pack_start(Gtk.Label(), True, True, 0) self.script_view = Gtk.TextView() self.script_view.set_sensitive(False) self.script_view.set_pixels_above_lines(2) self.script_view.set_left_margin(2) script_sw = Gtk.ScrolledWindow() script_sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) script_sw.add(self.script_view) script_sw.set_size_request(MONITOR_WIDTH - 100, 125) self.out_view = Gtk.TextView() self.out_view.set_sensitive(False) self.out_view.set_pixels_above_lines(2) self.out_view.set_left_margin(2) fd = Pango.FontDescription.from_string("Sans 8") self.out_view.override_font(fd) out_sw = Gtk.ScrolledWindow() out_sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) out_sw.add(self.out_view) out_sw.set_size_request(MONITOR_WIDTH - 150, 100) script_vbox = Gtk.VBox(False, 2) script_vbox.pack_start(preset_row, False, False, 0) script_vbox.pack_start(script_sw, True, True, 0) script_vbox.pack_start(out_sw, True, True, 0) # Render panel self.mark_in_label = guiutils.bold_label("Mark In:") self.mark_out_label = guiutils.bold_label("Mark Out:") self.length_label = guiutils.bold_label("Length:") self.mark_in_info = Gtk.Label("-") self.mark_out_info = Gtk.Label("-") self.length_info = Gtk.Label("-") in_row = guiutils.get_two_column_box(self.mark_in_label, self.mark_in_info, 150) out_row = guiutils.get_two_column_box(self.mark_out_label, self.mark_out_info, 150) length_row = guiutils.get_two_column_box(self.length_label, self.length_info, 150) marks_row = Gtk.VBox(False, 2) marks_row.pack_start(in_row, True, True, 0) marks_row.pack_start(out_row, True, True, 0) marks_row.pack_start(length_row, True, True, 0) self.out_folder = Gtk.FileChooserButton(_("Select Folder")) self.out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) self.out_folder.set_current_folder(os.path.expanduser("~") + "/") self.out_label = Gtk.Label(label=_("Frames Folder:")) self.frame_name = Gtk.Entry() self.frame_name.set_text("frame") self.extension_label = Gtk.Label() self.extension_label.set_markup("<small>XXXX.png</small>") out_folder_row = guiutils.get_left_justified_box([self.out_label, guiutils.pad_label(12, 2), \ self.out_folder, guiutils.pad_label(24, 2), self.frame_name, \ guiutils.pad_label(2, 2), self.extension_label]) self.encode_check_label = Gtk.Label("Encode Video") self.encode_check = Gtk.CheckButton() self.encode_check.set_active(False) self.encode_settings_button = Gtk.Button(_("Encoding settings")) self.encode_desc = Gtk.Label() self.encode_desc.set_markup("<small>"+ "MPEG-2, 3000kbps" + "</small>") encode_row = Gtk.HBox(False, 2) encode_row.pack_start(self.encode_check, False, False, 0) encode_row.pack_start(self.encode_check_label, False, False, 0) encode_row.pack_start(guiutils.pad_label(48, 12), False, False, 0) encode_row.pack_start(self.encode_settings_button, False, False, 0) encode_row.pack_start(guiutils.pad_label(6, 12), False, False, 0) encode_row.pack_start(self.encode_desc, False, False, 0) encode_row.pack_start(Gtk.Label(), True, True, 0) encode_row.set_margin_bottom(6) self.render_percentage = Gtk.Label("0%") self.render_status_info = Gtk.Label() self.render_status_info.set_markup("<small>"+ "52 frames, requiring 768MB dis space, video file: ../movie.mpg" + "</small>") render_status_row = Gtk.HBox(False, 2) render_status_row.pack_start(self.render_percentage, False, False, 0) render_status_row.pack_start(Gtk.Label(), True, True, 0) render_status_row.pack_start(self.render_status_info, False, False, 0) render_status_row.set_margin_bottom(6) self.render_progress_bar = Gtk.ProgressBar() self.render_progress_bar.set_valign(Gtk.Align.CENTER) self.stop_button = guiutils.get_sized_button(_("Stop"), 100, 32) self.render_button = guiutils.get_sized_button(_("Render"), 100, 32) self.render_button.connect("clicked", lambda w:render()) render_row = Gtk.HBox(False, 2) render_row.pack_start(self.render_progress_bar, True, True, 0) render_row.pack_start(guiutils.pad_label(12, 2), False, False, 0) render_row.pack_start(self.stop_button, False, False, 0) render_row.pack_start(self.render_button, False, False, 0) render_vbox = Gtk.VBox(False, 2) render_vbox.pack_start(marks_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(encode_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(out_folder_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(render_status_row, False, False, 0) render_vbox.pack_start(render_row, False, False, 0) render_vbox.pack_start(guiutils.pad_label(24, 24), False, False, 0) # Script work panel script_work_panel = Gtk.HBox(False, 2) script_work_panel.pack_start(script_vbox, False, False, 0) script_work_panel.pack_start(guiutils.pad_label(12, 2), False, False, 0) script_work_panel.pack_start(render_vbox, True, True, 0) self.load_script = Gtk.Button(_("Load Script")) #load_layers.connect("clicked", lambda w:self._load_layers_pressed()) self.save_script = Gtk.Button(_("Save Script")) #save_layers.connect("clicked", lambda w:self._save_layers_pressed()) info_b = guiutils.get_sized_button(_("Info"), 150, 32) exit_b = guiutils.get_sized_button(_("Close"), 150, 32) editor_buttons_row = Gtk.HBox() editor_buttons_row.pack_start(self.load_script, False, False, 0) editor_buttons_row.pack_start(self.save_script, False, False, 0) editor_buttons_row.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row.pack_start(info_b, False, False, 0) editor_buttons_row.pack_start(guiutils.pad_label(96, 2), False, False, 0) editor_buttons_row.pack_start(exit_b, False, False, 0) # Build window pane = Gtk.VBox(False, 2) pane.pack_start(preview_panel, False, False, 0) pane.pack_start(script_work_panel, False, False, 0) pane.pack_start(editor_buttons_row, False, False, 0) align = guiutils.set_margins(pane, 12, 12, 12, 12) # Set pane and show window self.add(align) self.set_title(_("G'MIC Effects")) self.set_position(Gtk.WindowPosition.CENTER) self.set_widgets_sensitive(False) self.show_all() self.set_resizable(False) self.set_active_state(False)
def __init__(self): # Window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete-event", lambda w, e: shutdown()) app_icon = gtk.gdk.pixbuf_new_from_file(respaths.IMAGE_PATH + "flowbladebatchappicon.png") self.window.set_icon_list(app_icon) self.est_time_left = gtk.Label() self.current_render = gtk.Label() self.current_render_time = gtk.Label() est_r = guiutils.get_right_justified_box( [guiutils.bold_label(_("Estimated Left:"))]) current_r = guiutils.get_right_justified_box( [guiutils.bold_label(_("Current Render:"))]) current_r_t = guiutils.get_right_justified_box( [guiutils.bold_label(_("Elapsed:"))]) est_r.set_size_request(250, 20) current_r.set_size_request(250, 20) current_r_t.set_size_request(250, 20) info_vbox = gtk.VBox(False, 0) info_vbox.pack_start( guiutils.get_left_justified_box([current_r, self.current_render]), False, False, 0) info_vbox.pack_start( guiutils.get_left_justified_box( [current_r_t, self.current_render_time]), False, False, 0) info_vbox.pack_start( guiutils.get_left_justified_box([est_r, self.est_time_left]), False, False, 0) self.items_rendered = gtk.Label() items_r = gtk.Label(_("Items Rendered:")) self.render_started_label = gtk.Label() started_r = gtk.Label(_("Render Started:")) bottom_info_vbox = gtk.HBox(True, 0) bottom_info_vbox.pack_start( guiutils.get_left_justified_box([items_r, self.items_rendered]), True, True, 0) bottom_info_vbox.pack_start( guiutils.get_left_justified_box( [started_r, self.render_started_label]), True, True, 0) self.not_rendering_txt = _("Not Rendering") self.render_progress_bar = gtk.ProgressBar() self.render_progress_bar.set_text(self.not_rendering_txt) self.remove_selected = gtk.Button(_("Delete Selected")) self.remove_selected.connect( "clicked", lambda w, e: self.remove_selected_clicked(), None) self.remove_finished = gtk.Button(_("Delete Finished")) self.remove_finished.connect( "clicked", lambda w, e: self.remove_finished_clicked(), None) self.reload_button = gtk.Button(_("Reload Queue")) self.reload_button.connect("clicked", lambda w, e: self.reload_queue(), None) self.render_button = guiutils.get_render_button() self.render_button.connect("clicked", lambda w, e: self.launch_render(), None) self.stop_render_button = gtk.Button(_("Stop Render")) self.stop_render_button.set_sensitive(False) self.stop_render_button.connect("clicked", lambda w, e: self.abort_render(), None) button_row = gtk.HBox(False, 0) button_row.pack_start(self.remove_selected, False, False, 0) button_row.pack_start(self.remove_finished, False, False, 0) button_row.pack_start(gtk.Label(), True, True, 0) #button_row.pack_start(self.reload_button, True, True, 0) #button_row.pack_start(gtk.Label(), True, True, 0) button_row.pack_start(self.stop_render_button, False, False, 0) button_row.pack_start(self.render_button, False, False, 0) top_vbox = gtk.VBox(False, 0) top_vbox.pack_start(info_vbox, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(self.render_progress_bar, False, False, 0) top_vbox.pack_start(guiutils.get_pad_label(12, 12), False, False, 0) top_vbox.pack_start(button_row, False, False, 0) top_align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) top_align.set_padding(12, 12, 12, 12) top_align.add(top_vbox) self.queue_view = RenderQueueView() self.queue_view.fill_data_model(render_queue) self.queue_view.set_size_request(WINDOW_WIDTH, QUEUE_HEIGHT) bottom_align = gtk.Alignment(0.5, 0.5, 1.0, 1.0) bottom_align.set_padding(0, 2, 8, 8) bottom_align.add(bottom_info_vbox) # Content pane pane = gtk.VBox(False, 1) pane.pack_start(top_align, False, False, 0) pane.pack_start(self.queue_view, True, True, 0) pane.pack_start(bottom_align, False, False, 0) # Set pane and show window self.window.add(pane) self.window.set_title(_("Flowblade Batch Render")) self.window.set_position(gtk.WIN_POS_CENTER) self.window.show_all()
def show_render_properties_panel(render_item): if render_item.render_data.user_args == False: enc_opt = renderconsumer.encoding_options[ render_item.render_data.enc_index] enc_desc = enc_opt.name audio_desc = enc_opt.audio_desc quality_opt = enc_opt.quality_options[ render_item.render_data.quality_index] quality_desc = quality_opt.name else: enc_desc = " -" quality_desc = " -" audio_desc = " -" user_args = str(render_item.render_data.user_args) start_frame, end_frame, wait_for_stop_render = get_render_range( render_item) start_str = utils.get_tc_string_with_fps(start_frame, render_item.render_data.fps) end_str = utils.get_tc_string_with_fps(end_frame, render_item.render_data.fps) LEFT_WIDTH = 200 render_item.get_display_name() row0 = guiutils.get_two_column_box(guiutils.bold_label(_("Encoding:")), gtk.Label(enc_desc), LEFT_WIDTH) row1 = guiutils.get_two_column_box(guiutils.bold_label(_("Quality:")), gtk.Label(quality_desc), LEFT_WIDTH) row2 = guiutils.get_two_column_box( guiutils.bold_label(_("Audio Encoding:")), gtk.Label(audio_desc), LEFT_WIDTH) row3 = guiutils.get_two_column_box( guiutils.bold_label(_("Use User Args:")), gtk.Label(user_args), LEFT_WIDTH) row4 = guiutils.get_two_column_box(guiutils.bold_label(_("Start:")), gtk.Label(start_str), LEFT_WIDTH) row5 = guiutils.get_two_column_box(guiutils.bold_label(_("End:")), gtk.Label(end_str), LEFT_WIDTH) row6 = guiutils.get_two_column_box( guiutils.bold_label(_("Frames Per Second:")), gtk.Label(str(render_item.render_data.fps)), LEFT_WIDTH) row7 = guiutils.get_two_column_box( guiutils.bold_label(_("Render Profile Name:")), gtk.Label(str(render_item.render_data.profile_name)), LEFT_WIDTH) row8 = guiutils.get_two_column_box( guiutils.bold_label(_("Render Profile:")), gtk.Label(render_item.render_data.profile_desc), LEFT_WIDTH) vbox = gtk.VBox(False, 2) vbox.pack_start(gtk.Label(render_item.get_display_name()), False, False, 0) vbox.pack_start(guiutils.get_pad_label(12, 16), False, False, 0) vbox.pack_start(row0, False, False, 0) 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(row7, False, False, 0) vbox.pack_start(row8, False, False, 0) vbox.pack_start(gtk.Label(), True, True, 0) title = _("Render Properties") dialogutils.panel_ok_dialog(title, vbox)
def __init__(self): GObject.GObject.__init__(self) self.connect("delete-event", lambda w, e:_shutdown()) app_icon = GdkPixbuf.Pixbuf.new_from_file(respaths.IMAGE_PATH + "flowblademedialinker.png") self.set_icon(app_icon) load_button = Gtk.Button(_("Load Project For Relinking")) load_button.connect("clicked", lambda w: self.load_button_clicked()) project_row = Gtk.HBox(False, 2) project_row.pack_start(load_button, False, False, 0) project_row.pack_start(Gtk.Label(), True, True, 0) self.missing_label = guiutils.bold_label("<b>" + _("Original Media Missing:") + "</b> ") self.found_label = guiutils.bold_label("<b>" + _("Original Media Found:") + "</b> ") self.missing_count = Gtk.Label() self.found_count = Gtk.Label() self.proj = guiutils.bold_label("<b>" + _("Project:") + "</b> ") self.project_label = Gtk.Label(label=_("<not loaded>")) missing_info = guiutils.get_left_justified_box([self.missing_label, guiutils.pad_label(2, 2), self.missing_count]) missing_info.set_size_request(250, 2) found_info = guiutils.get_left_justified_box([self.found_label, guiutils.pad_label(2, 2), self.found_count]) status_row = Gtk.HBox(False, 2) status_row.pack_start(missing_info, False, False, 0) status_row.pack_start(found_info, False, False, 0) status_row.pack_start(Gtk.Label(), True, True, 0) status_row.pack_start(guiutils.pad_label(30, 12), False, False, 0) status_row.pack_start(self.proj, False, False, 0) status_row.pack_start(guiutils.pad_label(4, 12), False, False, 0) status_row.pack_start(self.project_label, False, False, 0) self.relink_list = MediaRelinkListView() self.find_button = Gtk.Button(_("Set File Relink Path")) self.find_button.connect("clicked", lambda w: _set_button_pressed()) self.delete_button = Gtk.Button(_("Delete File Relink Path")) self.delete_button.connect("clicked", lambda w: _delete_button_pressed()) self.display_combo = Gtk.ComboBoxText() self.display_combo.append_text(_("Display Missing Media Files")) self.display_combo.append_text(_("Display Found Media Files")) self.display_combo.set_active(0) self.display_combo.connect("changed", self.display_list_changed) buttons_row = Gtk.HBox(False, 2) buttons_row.pack_start(self.display_combo, False, False, 0) buttons_row.pack_start(Gtk.Label(), True, True, 0) buttons_row.pack_start(self.delete_button, False, False, 0) buttons_row.pack_start(guiutils.pad_label(4, 4), False, False, 0) buttons_row.pack_start(self.find_button, False, False, 0) self.save_button = Gtk.Button(_("Save Relinked Project As...")) self.save_button.connect("clicked", lambda w:_save_project_pressed()) cancel_button = Gtk.Button(_("Close")) cancel_button.connect("clicked", lambda w:_shutdown()) dialog_buttons_box = Gtk.HBox(True, 2) dialog_buttons_box.pack_start(cancel_button, True, True, 0) dialog_buttons_box.pack_start(self.save_button, False, False, 0) dialog_buttons_row = Gtk.HBox(False, 2) dialog_buttons_row.pack_start(Gtk.Label(), True, True, 0) dialog_buttons_row.pack_start(dialog_buttons_box, False, False, 0) pane = Gtk.VBox(False, 2) pane.pack_start(project_row, False, False, 0) pane.pack_start(guiutils.pad_label(24, 24), False, False, 0) pane.pack_start(status_row, False, False, 0) pane.pack_start(guiutils.pad_label(24, 2), False, False, 0) pane.pack_start(self.relink_list, False, False, 0) pane.pack_start(buttons_row, False, False, 0) pane.pack_start(guiutils.pad_label(24, 24), False, False, 0) pane.pack_start(dialog_buttons_row, False, False, 0) align = guiutils.set_margins(pane, 12, 12, 12, 12) # Set pane and show window self.add(align) self.set_title(_("Media Relinker")) self.set_position(Gtk.WindowPosition.CENTER) self.show_all() self.set_resizable(False) self.set_active_state()
def __init__(self): GObject.GObject.__init__(self) self.connect("delete-event", lambda w, e:_shutdown()) app_icon = GdkPixbuf.Pixbuf.new_from_file(respaths.IMAGE_PATH + "flowbladetoolicon.png") self.set_icon(app_icon) hamburger_launcher_surface = cairo.ImageSurface.create_from_png(respaths.IMAGE_PATH + "hamburger.png") self.hamburger_launcher = guicomponents.PressLaunch(self.hamburger_launch_pressed, hamburger_launcher_surface) # Load media row self.load_button = Gtk.Button(_("Load Clip")) self.load_button.connect("clicked", lambda w: open_clip_dialog()) self.media_info = Gtk.Label() self.media_info.set_markup("<small>" + _("no clip loaded") + "</small>") load_row = Gtk.HBox(False, 2) load_row.pack_start(self.hamburger_launcher.widget, False, False, 0) load_row.pack_start(guiutils.get_pad_label(6, 2), False, False, 0) load_row.pack_start(self.load_button, False, False, 0) load_row.pack_start(guiutils.get_pad_label(6, 2), False, False, 0) load_row.pack_start(self.media_info, False, False, 0) load_row.pack_start(Gtk.Label(), True, True, 0) load_row.set_margin_bottom(4) # Clip monitor black_box = Gtk.EventBox() black_box.add(Gtk.Label()) bg_color = Gdk.Color(red=0.0, green=0.0, blue=0.0) black_box.modify_bg(Gtk.StateType.NORMAL, bg_color) self.monitor = black_box # This could be any GTK+ widget (that is not "windowless"), only its XWindow draw rect # is used to position and scale SDL overlay that actually displays video. self.monitor.set_size_request(MONITOR_WIDTH, MONITOR_HEIGHT) left_vbox = Gtk.VBox(False, 0) left_vbox.pack_start(load_row, False, False, 0) left_vbox.pack_start(self.monitor, True, True, 0) self.preview_info = Gtk.Label() self.preview_info.set_markup("<small>" + _("no preview") + "</small>" ) preview_info_row = Gtk.HBox() preview_info_row.pack_start(self.preview_info, False, False, 0) preview_info_row.pack_start(Gtk.Label(), True, True, 0) preview_info_row.set_margin_top(6) preview_info_row.set_margin_bottom(8) self.preview_monitor = cairoarea.CairoDrawableArea2(MONITOR_WIDTH, MONITOR_HEIGHT, self._draw_preview) self.no_preview_icon = cairo.ImageSurface.create_from_png(respaths.IMAGE_PATH + NO_PREVIEW_FILE) right_vbox = Gtk.VBox(False, 2) right_vbox.pack_start(preview_info_row, False, False, 0) right_vbox.pack_start(self.preview_monitor, True, True, 0) # Monitors panel monitors_panel = Gtk.HBox(False, 2) monitors_panel.pack_start(left_vbox, False, False, 0) monitors_panel.pack_start(Gtk.Label(), True, True, 0) monitors_panel.pack_start(right_vbox, False, False, 0) # Control row self.tc_display = guicomponents.MonitorTCDisplay() self.tc_display.use_internal_frame = True self.tc_display.widget.set_valign(Gtk.Align.CENTER) self.tc_display.use_internal_fps = True self.pos_bar = positionbar.PositionBar(False) self.pos_bar.set_listener(self.position_listener) pos_bar_frame = Gtk.Frame() pos_bar_frame.add(self.pos_bar.widget) pos_bar_frame.set_shadow_type(Gtk.ShadowType.ETCHED_IN) pos_bar_frame.set_margin_top(5) pos_bar_frame.set_margin_bottom(4) pos_bar_frame.set_margin_left(6) pos_bar_frame.set_margin_right(2) self.control_buttons = glassbuttons.GmicButtons() pressed_callback_funcs = [prev_pressed, next_pressed, mark_in_pressed, mark_out_pressed, marks_clear_pressed, to_mark_in_pressed, to_mark_out_pressed] self.control_buttons.set_callbacks(pressed_callback_funcs) self.preview_button = Gtk.Button(_("Preview")) self.preview_button.connect("clicked", lambda w: render_preview_frame()) control_panel = Gtk.HBox(False, 2) control_panel.pack_start(self.tc_display.widget, False, False, 0) control_panel.pack_start(pos_bar_frame, True, True, 0) control_panel.pack_start(self.control_buttons.widget, False, False, 0) control_panel.pack_start(guiutils.pad_label(2, 2), False, False, 0) control_panel.pack_start(self.preview_button, False, False, 0) preview_panel = Gtk.VBox(False, 2) preview_panel.pack_start(monitors_panel, False, False, 0) preview_panel.pack_start(control_panel, False, False, 0) preview_panel.set_margin_bottom(8) # Script area self.preset_label = Gtk.Label() self.present_event_box = Gtk.EventBox() self.present_event_box.add(self.preset_label) self.present_event_box.connect("button-press-event", script_menu_lauched) self.script_menu = toolguicomponents.PressLaunch(script_menu_lauched) self.action_select = Gtk.CheckButton() self.action_select.set_active(False) self.action_label = Gtk.Label(_("Add to Script")) preset_row = Gtk.HBox(False, 2) preset_row.pack_start(self.present_event_box, False, False, 0) preset_row.pack_start(self.script_menu.widget, False, False, 0) preset_row.pack_start(guiutils.pad_label(2, 30), False, False, 0) preset_row.pack_start(Gtk.Label(), True, True, 0) preset_row.pack_start(self.action_select, False, False, 0) preset_row.pack_start(self.action_label, False, False, 0) self.script_view = Gtk.TextView() self.script_view.set_sensitive(False) self.script_view.set_pixels_above_lines(2) self.script_view.set_left_margin(2) self.script_view.set_wrap_mode(Gtk.WrapMode.CHAR) script_sw = Gtk.ScrolledWindow() script_sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) script_sw.add(self.script_view) script_sw.set_size_request(MONITOR_WIDTH - 100, 125) self.out_view = Gtk.TextView() self.out_view.set_sensitive(False) self.out_view.set_pixels_above_lines(2) self.out_view.set_left_margin(2) self.out_view.set_wrap_mode(Gtk.WrapMode.WORD) fd = Pango.FontDescription.from_string("Sans 8") self.out_view.override_font(fd) out_sw = Gtk.ScrolledWindow() out_sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) out_sw.add(self.out_view) out_sw.set_size_request(MONITOR_WIDTH - 150, 100) script_vbox = Gtk.VBox(False, 2) script_vbox.pack_start(preset_row, False, False, 0) script_vbox.pack_start(script_sw, True, True, 0) script_vbox.pack_start(out_sw, True, True, 0) # Render panel self.mark_in_label = guiutils.bold_label(_("Mark In:")) self.mark_out_label = guiutils.bold_label(_("Mark Out:")) self.length_label = guiutils.bold_label(_("Length:")) self.mark_in_info = Gtk.Label("-") self.mark_out_info = Gtk.Label("-") self.length_info = Gtk.Label("-") in_row = guiutils.get_two_column_box(self.mark_in_label, self.mark_in_info, 150) out_row = guiutils.get_two_column_box(self.mark_out_label, self.mark_out_info, 150) length_row = guiutils.get_two_column_box(self.length_label, self.length_info, 150) marks_row = Gtk.VBox(False, 2) marks_row.pack_start(in_row, True, True, 0) marks_row.pack_start(out_row, True, True, 0) marks_row.pack_start(length_row, True, True, 0) self.out_folder = Gtk.FileChooserButton(_("Select Folder")) self.out_folder.set_action(Gtk.FileChooserAction.SELECT_FOLDER) self.out_folder.connect("selection-changed", self.folder_selection_changed) self.out_label = Gtk.Label(label=_("Frames Folder:")) self.frame_name = Gtk.Entry() self.frame_name.set_text("frame") self.extension_label = Gtk.Label() self.extension_label.set_markup("<small>XXXX.png</small>") out_folder_row = guiutils.get_left_justified_box([self.out_label, guiutils.pad_label(12, 2), \ self.out_folder, guiutils.pad_label(24, 2), self.frame_name, \ guiutils.pad_label(2, 2), self.extension_label]) self.encode_check_label = Gtk.Label(_("Encode Video")) self.encode_check = Gtk.CheckButton() self.encode_check.set_active(False) self.encode_check.connect("toggled", lambda w:self.update_encode_sensitive()) self.encode_settings_button = Gtk.Button(_("Encoding settings")) self.encode_settings_button.connect("clicked", lambda w:_encode_settings_clicked()) self.encode_desc = Gtk.Label() self.encode_desc.set_markup("<small>" + _("not set") + "</small>") self.encode_desc.set_ellipsize(Pango.EllipsizeMode.END) self.encode_desc.set_max_width_chars(32) encode_row = Gtk.HBox(False, 2) encode_row.pack_start(self.encode_check, False, False, 0) encode_row.pack_start(self.encode_check_label, False, False, 0) encode_row.pack_start(guiutils.pad_label(48, 12), False, False, 0) encode_row.pack_start(self.encode_settings_button, False, False, 0) encode_row.pack_start(guiutils.pad_label(6, 12), False, False, 0) encode_row.pack_start(self.encode_desc, False, False, 0) encode_row.pack_start(Gtk.Label(), True, True, 0) encode_row.set_margin_bottom(6) self.render_percentage = Gtk.Label("") self.status_no_render = _("Set Mark In, Mark Out and Frames Folder for valid render") self.render_status_info = Gtk.Label() self.render_status_info.set_markup("<small>" + self.status_no_render + "</small>") render_status_row = Gtk.HBox(False, 2) render_status_row.pack_start(self.render_percentage, False, False, 0) render_status_row.pack_start(Gtk.Label(), True, True, 0) render_status_row.pack_start(self.render_status_info, False, False, 0) render_status_row.set_margin_bottom(6) self.render_progress_bar = Gtk.ProgressBar() self.render_progress_bar.set_valign(Gtk.Align.CENTER) self.stop_button = guiutils.get_sized_button(_("Stop"), 100, 32) self.stop_button.connect("clicked", lambda w:abort_render()) self.render_button = guiutils.get_sized_button(_("Render"), 100, 32) self.render_button.connect("clicked", lambda w:render_output()) render_row = Gtk.HBox(False, 2) render_row.pack_start(self.render_progress_bar, True, True, 0) render_row.pack_start(guiutils.pad_label(12, 2), False, False, 0) render_row.pack_start(self.stop_button, False, False, 0) render_row.pack_start(self.render_button, False, False, 0) render_vbox = Gtk.VBox(False, 2) render_vbox.pack_start(marks_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(encode_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(out_folder_row, False, False, 0) render_vbox.pack_start(Gtk.Label(), True, True, 0) render_vbox.pack_start(render_status_row, False, False, 0) render_vbox.pack_start(render_row, False, False, 0) render_vbox.pack_start(guiutils.pad_label(24, 24), False, False, 0) # Script work panel script_work_panel = Gtk.HBox(False, 2) script_work_panel.pack_start(script_vbox, False, False, 0) script_work_panel.pack_start(guiutils.pad_label(12, 2), False, False, 0) script_work_panel.pack_start(render_vbox, True, True, 0) self.load_script = Gtk.Button(_("Load Script")) self.load_script.connect("clicked", lambda w:load_script_dialog(_load_script_dialog_callback)) self.save_script = Gtk.Button(_("Save Script")) self.save_script.connect("clicked", lambda w:save_script_dialog(_save_script_dialog_callback)) exit_b = guiutils.get_sized_button(_("Close"), 150, 32) exit_b.connect("clicked", lambda w:_shutdown()) self.close_button = exit_b editor_buttons_row = Gtk.HBox() editor_buttons_row.pack_start(self.load_script, False, False, 0) editor_buttons_row.pack_start(self.save_script, False, False, 0) editor_buttons_row.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row.pack_start(exit_b, False, False, 0) # Build window pane = Gtk.VBox(False, 2) pane.pack_start(preview_panel, False, False, 0) pane.pack_start(script_work_panel, False, False, 0) pane.pack_start(editor_buttons_row, False, False, 0) align = guiutils.set_margins(pane, 12, 12, 12, 12) script = gmicscript.get_default_script() self.script_view.get_buffer().set_text(script.script) self.preset_label.set_text(script.name) self.update_encode_sensitive() # Connect global key listener self.connect("key-press-event", _global_key_down_listener) # Set pane and show window self.add(align) self.set_title(_("G'MIC Effects")) self.set_position(Gtk.WindowPosition.CENTER) self.set_widgets_sensitive(False) self.show_all() self.set_resizable(False) self.set_active_state(False)