def __init__(self): # Aug-2019 - SvdB - BB - Multiple changes - size_ind, size_adj, get_cairo_image size_ind = 0 size_adj = 1 prefs = editorpersistance.prefs if prefs.double_track_hights: size_ind = 1 size_adj = 2 AbstractGlassButtons.__init__(self, MB_BUTTON_WIDTH[size_ind], MB_BUTTON_HEIGHT[size_ind], MB_BUTTON_Y, MB_BUTTONS_WIDTH[size_ind], MB_BUTTONS_HEIGHT[size_ind]) play_pause_icon = guiutils.get_cairo_image("play_pause_s") play_icon = guiutils.get_cairo_image("play_2_s") stop_icon = guiutils.get_cairo_image("stop_s") next_icon = guiutils.get_cairo_image("next_frame_s") prev_icon = guiutils.get_cairo_image("prev_frame_s") mark_in_icon = guiutils.get_cairo_image("mark_in_s") mark_out_icon = guiutils.get_cairo_image("mark_out_s") marks_clear_icon = guiutils.get_cairo_image("marks_clear_s") to_mark_in_icon = guiutils.get_cairo_image("to_mark_in_s") to_mark_out_icon = guiutils.get_cairo_image("to_mark_out_s") # Jul-2016 - SvdB - For play/pause button if (editorpersistance.prefs.play_pause == True): self.icons = [ prev_icon, next_icon, play_pause_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] self.image_x = [ 5 * size_adj, 7 * size_adj, 5 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] else: self.icons = [ prev_icon, next_icon, play_icon, stop_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] self.image_x = [ 5 * size_adj, 7 * size_adj, 10 * size_adj, 10 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] for i in range(0, len(self.icons)): self.image_y.append(MB_BUTTON_IMAGE_Y) self.pressed_callback_funcs = None # set using set_callbacks() self.set_sensitive(True) focus_groups[DEFAULT_FOCUS_GROUP].append(self.widget)
def create_widgets(): """ Widgets for editing clip effects properties. """ # Aug-2019 - SvdB - BB prefs = editorpersistance.prefs widgets.clip_info = guicomponents.ClipInfoPanel() widgets.exit_button = Gtk.Button() icon = Gtk.Image.new_from_stock(Gtk.STOCK_CLOSE, Gtk.IconSize.MENU) widgets.exit_button.set_image(icon) widgets.exit_button.connect("clicked", lambda w: _quit_editing_clip_clicked()) widgets.exit_button.set_tooltip_text(_("Quit editing Clip in editor")) widgets.effect_stack_view = guicomponents.FilterSwitchListView(lambda ts: effect_selection_changed(), toggle_filter_active, dnd_row_deleted, dnd_row_inserted) widgets.effect_stack_view.treeview.connect("button-press-event", lambda w,e, wtf: stack_view_pressed(), None) gui.effect_stack_list_view = widgets.effect_stack_view widgets.value_edit_box = Gtk.VBox() widgets.value_edit_frame = Gtk.Frame() widgets.value_edit_frame.set_shadow_type(Gtk.ShadowType.NONE) widgets.value_edit_frame.add(widgets.value_edit_box) widgets.add_effect_b = Gtk.Button() widgets.add_effect_b.set_image(guiutils.get_image("filter_add")) widgets.del_effect_b = Gtk.Button() widgets.del_effect_b.set_image(guiutils.get_image("filter_delete")) widgets.toggle_all = Gtk.Button() widgets.toggle_all.set_image(guiutils.get_image("filters_all_toggle")) filter_mask_surfaces = [guiutils.get_cairo_image("filters_mask_add"), guiutils.get_cairo_image("filters_mask_add_not_active")] widgets.add_filter_mask = guicomponents.HamburgerPressLaunch(_filter_mask_launch_pressed, filter_mask_surfaces, 26) guiutils.set_margins(widgets.add_filter_mask.widget, 10, 0, 1, 0) widgets.add_effect_b.connect("clicked", lambda w,e: add_effect_pressed(), None) widgets.del_effect_b.connect("clicked", lambda w,e: delete_effect_pressed(), None) widgets.toggle_all.connect("clicked", lambda w: toggle_all_pressed()) widgets.hamburger_launcher = guicomponents.HamburgerPressLaunch(_hamburger_launch_pressed) guiutils.set_margins(widgets.hamburger_launcher.widget, 6, 8, 1, 0) # These are created elsewhere and then monkeypatched here widgets.group_combo = None widgets.effect_list_view = None widgets.clip_info.set_tooltip_text(_("Clip being edited")) widgets.effect_stack_view.set_tooltip_text(_("Clip Filter Stack")) widgets.add_effect_b.set_tooltip_text(_("Add Filter to Clip Filter Stack")) widgets.del_effect_b.set_tooltip_text(_("Delete Filter from Clip Filter Stack")) widgets.toggle_all.set_tooltip_text(_("Toggle all Filters On/Off")) widgets.add_filter_mask.widget.set_tooltip_text(_("Add Filter Mask"))
def get_media_files_panel(media_list_view, add_cb, del_cb, col_changed_cb, hamburger_launch_pressed, filtering_cb): # Aug-2019 - SvdB - BB size_adj = 1 prefs = editorpersistance.prefs if prefs.double_track_hights: size_adj = 2 hamburger_launcher = guicomponents.HamburgerPressLaunch( hamburger_launch_pressed) guiutils.set_margins(hamburger_launcher.widget, 2, 0, 4, 12) columns_img = guiutils.get_cairo_image("columns") columns_launcher = guicomponents.PressLaunch(col_changed_cb, columns_img, w=22 * size_adj, h=22 * size_adj) columns_launcher.surface_y = 6 columns_launcher.widget.set_tooltip_text( _("Number of Media File columns.")) all_pixbuf = guiutils.get_cairo_image("show_all_files") audio_pixbuf = guiutils.get_cairo_image("show_audio_files") graphics_pixbuf = guiutils.get_cairo_image("show_graphics_files") video_pixbuf = guiutils.get_cairo_image("show_video_files") imgseq_pixbuf = guiutils.get_cairo_image("show_imgseq_files") pattern_pixbuf = guiutils.get_cairo_image("show_pattern_producers") unused_pixbuf = guiutils.get_cairo_image("show_unused_files") files_filter_launcher = guicomponents.ImageMenuLaunch( filtering_cb, [ all_pixbuf, video_pixbuf, audio_pixbuf, graphics_pixbuf, imgseq_pixbuf, pattern_pixbuf, unused_pixbuf ], 24 * size_adj, 22 * size_adj) files_filter_launcher.surface_x = 3 files_filter_launcher.surface_y = 4 files_filter_launcher.widget.set_tooltip_text( _("Visible Media File types.")) gui.media_view_filter_selector = files_filter_launcher bin_info = guicomponents.BinInfoPanel() buttons_box = Gtk.HBox(False, 1) buttons_box.pack_start(hamburger_launcher.widget, False, False, 0) buttons_box.pack_start(guiutils.get_pad_label(4, 4), False, False, 0) buttons_box.pack_start(columns_launcher.widget, False, False, 0) buttons_box.pack_start(files_filter_launcher.widget, False, False, 0) buttons_box.pack_start(Gtk.Label(), True, True, 0) buttons_box.pack_start(bin_info, False, False, 0) #buttons_box.pack_start(Gtk.Label(), True, True, 0) panel = Gtk.VBox() panel.pack_start(media_list_view, True, True, 0) panel.pack_start(buttons_box, False, True, 0) return (panel, bin_info)
def _create_buttons(editor_window): # Aug-2019 - SvdB - BB prefs = editorpersistance.prefs size_adj = 1 if prefs.double_track_hights: size_adj = 2 editor_window.big_TC = Gtk.Stack() tc_disp = guicomponents.BigTCDisplay() tc_entry = guicomponents.BigTCEntry() tc_disp.widget.show() tc_entry.widget.show() editor_window.big_TC.add_named(tc_disp.widget, "BigTCDisplay") editor_window.big_TC.add_named(tc_entry.widget, "BigTCEntry") editor_window.big_TC.set_visible_child_name("BigTCDisplay") gui.big_tc = editor_window.big_TC surface = guiutils.get_cairo_image("workflow") editor_window.worflow_launch = guicomponents.PressLaunch( workflow.workflow_menu_launched, surface, w=22 * size_adj, h=22 * size_adj) editor_window.tool_selector = guicomponents.ToolSelector( editor_window.mode_selector_pressed, m_pixbufs, 40 * size_adj, 22 * size_adj) if editorpersistance.prefs.buttons_style == 2: # NO_DECORATIONS no_decorations = True else: no_decorations = False # Colorized icons if prefs.colorized_icons is True: icon_color = "_color" else: icon_color = "" # End of Colorized icons editor_window.zoom_buttons = glassbuttons.GlassButtonsGroup( 38 * size_adj, 23 * size_adj, 2 * size_adj, 8 * size_adj, 5 * size_adj) editor_window.zoom_buttons.add_button( guiutils.get_cairo_image("zoom_in" + icon_color), updater.zoom_in) editor_window.zoom_buttons.add_button( guiutils.get_cairo_image("zoom_out" + icon_color), updater.zoom_out) editor_window.zoom_buttons.add_button( guiutils.get_cairo_image("zoom_length" + icon_color), updater.zoom_project_length) tooltips = [ _("Zoom In - Mouse Middle Scroll"), _("Zoom Out - Mouse Middle Scroll"), _("Zoom Length - Mouse Middle Click") ] tooltip_runner = glassbuttons.TooltipRunner(editor_window.zoom_buttons, tooltips) editor_window.zoom_buttons.no_decorations = no_decorations editor_window.edit_buttons = glassbuttons.GlassButtonsGroup( 32 * size_adj, 23 * size_adj, 2 * size_adj, 5 * size_adj, 5 * size_adj) editor_window.edit_buttons.add_button( guiutils.get_cairo_image("dissolve" + icon_color), tlineaction.add_transition_pressed) editor_window.edit_buttons.add_button( guiutils.get_cairo_image("cut" + icon_color), tlineaction.cut_pressed) tooltips = [ _("Add Rendered Transition - 2 clips selected\nAdd Rendered Fade - 1 clip selected" ), _("Cut Active Tracks - X\nCut All Tracks - Shift + X") ] tooltip_runner = glassbuttons.TooltipRunner(editor_window.edit_buttons, tooltips) editor_window.edit_buttons.no_decorations = no_decorations editor_window.edit_buttons_3 = glassbuttons.GlassButtonsGroup( 46 * size_adj, 23 * size_adj, 2 * size_adj, 3 * size_adj, 5 * size_adj) editor_window.edit_buttons_3.add_button( guiutils.get_cairo_image("splice_out" + icon_color), tlineaction.splice_out_button_pressed) editor_window.edit_buttons_3.add_button( guiutils.get_cairo_image("lift" + icon_color), tlineaction.lift_button_pressed) editor_window.edit_buttons_3.add_button( guiutils.get_cairo_image("ripple_delete" + icon_color), tlineaction.ripple_delete_button_pressed) editor_window.edit_buttons_3.add_button( guiutils.get_cairo_image("delete_range" + icon_color), tlineaction.delete_range_button_pressed) tooltips = [ _("Splice Out - Delete"), _("Lift - Control + Delete"), _("Ripple Delete"), _("Range Delete") ] tooltip_runner = glassbuttons.TooltipRunner(editor_window.edit_buttons_3, tooltips) editor_window.edit_buttons_3.no_decorations = no_decorations editor_window.edit_buttons_2 = glassbuttons.GlassButtonsGroup( 44 * size_adj, 23 * size_adj, 2 * size_adj, 3 * size_adj, 5 * size_adj) editor_window.edit_buttons_2.add_button( guiutils.get_cairo_image("resync" + icon_color), tlineaction.resync_button_pressed) editor_window.edit_buttons_2.add_button( guiutils.get_cairo_image("split_audio" + icon_color), tlineaction.split_audio_button_pressed) tooltips = [_("Resync Selected"), _("Split Audio")] tooltip_runner = glassbuttons.TooltipRunner(editor_window.edit_buttons_2, tooltips) editor_window.edit_buttons_2.no_decorations = no_decorations editor_window.monitor_insert_buttons = glassbuttons.GlassButtonsGroup( 44 * size_adj, 23 * size_adj, 2 * size_adj, 3 * size_adj, 5 * size_adj) editor_window.monitor_insert_buttons.add_button( guiutils.get_cairo_image("overwrite_range" + icon_color), tlineaction.range_overwrite_pressed) editor_window.monitor_insert_buttons.add_button( guiutils.get_cairo_image("overwrite_clip" + icon_color), tlineaction.three_point_overwrite_pressed) editor_window.monitor_insert_buttons.add_button( guiutils.get_cairo_image("insert_clip" + icon_color), tlineaction.insert_button_pressed) editor_window.monitor_insert_buttons.add_button( guiutils.get_cairo_image("append_clip" + icon_color), tlineaction.append_button_pressed) tooltips = [ _("Overwrite Range"), _("Overwrite Clip - T"), _("Insert Clip - Y"), _("Append Clip - U") ] tooltip_runner = glassbuttons.TooltipRunner( editor_window.monitor_insert_buttons, tooltips) editor_window.monitor_insert_buttons.no_decorations = no_decorations editor_window.undo_redo = glassbuttons.GlassButtonsGroup( 28 * size_adj, 23 * size_adj, 2 * size_adj, 2 * size_adj, 7 * size_adj) editor_window.undo_redo.add_button( guiutils.get_cairo_image("undo" + icon_color), undo.do_undo_and_repaint) editor_window.undo_redo.add_button( guiutils.get_cairo_image("redo" + icon_color), undo.do_redo_and_repaint) tooltips = [_("Undo - Ctrl + Z"), _("Redo - Ctrl + Y")] tooltip_runner = glassbuttons.TooltipRunner(editor_window.undo_redo, tooltips) editor_window.undo_redo.no_decorations = no_decorations editor_window.tools_buttons = glassbuttons.GlassButtonsGroup( 30 * size_adj, 23 * size_adj, 2 * size_adj, 14 * size_adj, 7 * size_adj) editor_window.tools_buttons.add_button( guiutils.get_cairo_image("open_mixer" + icon_color), audiomonitoring.show_audio_monitor) editor_window.tools_buttons.add_button( guiutils.get_cairo_image("open_titler" + icon_color), titler.show_titler) editor_window.tools_buttons.add_button( guiutils.get_cairo_image("open_gmic" + icon_color), gmic.launch_gmic) editor_window.tools_buttons.add_button( guiutils.get_cairo_image("open_renderqueue" + icon_color), lambda: batchrendering.launch_batch_rendering()) tooltips = [ _("Audio Mixer"), _("Titler"), _("G'Mic Effects"), _("Batch Render Queue") ] tooltip_runner = glassbuttons.TooltipRunner(editor_window.tools_buttons, tooltips) editor_window.tools_buttons.no_decorations = True if editorstate.audio_monitoring_available == False: editor_window.tools_buttons.sensitive[0] = False editor_window.tools_buttons.widget.set_tooltip_text( _("Audio Mixer(not available)\nTitler"))
def __init__(self, filter_object, filter_stack): self.filter_object = filter_object self.filter_stack = filter_stack surface = cairo.ImageSurface.create_from_png(respaths.IMAGE_PATH + "filter_save.png") save_button = guicomponents.PressLaunch(self.save_pressed, surface, w=22, h=22) save_button.widget.set_tooltip_markup(_("Save effect values")) surface = cairo.ImageSurface.create_from_png(respaths.IMAGE_PATH + "filter_load.png") load_button = guicomponents.PressLaunch(self.load_pressed, surface, w=22, h=22) load_button.widget.set_tooltip_markup(_("Load effect values")) surface = cairo.ImageSurface.create_from_png(respaths.IMAGE_PATH + "filter_reset.png") reset_button = guicomponents.PressLaunch(self.reset_pressed, surface, w=22, h=22) reset_button.widget.set_tooltip_markup(_("Reset effect values")) surface = guiutils.get_cairo_image("filters_mask_add") mask_button = guicomponents.PressLaunch(self.add_mask_pressed, surface, w=22, h=22) mask_button.widget.set_tooltip_markup(_("Add Filter Mask")) surface = guiutils.get_cairo_image("filters_move_up") move_up_button = guicomponents.PressLaunch(self.move_up_pressed, surface, w=22, h=22) move_up_button.widget.set_tooltip_markup(_("Move Filter Up")) surface = guiutils.get_cairo_image("filters_move_down") move_down_button = guicomponents.PressLaunch(self.move_down_pressed, surface, w=22, h=22) move_down_button.widget.set_tooltip_markup(_("Move Filter Down")) surface = guiutils.get_cairo_image("filters_move_top") move_top_button = guicomponents.PressLaunch(self.move_top_pressed, surface, w=22, h=22) move_top_button.widget.set_tooltip_markup(_("Move Filter To Top")) surface = guiutils.get_cairo_image("filters_move_bottom") move_bottom_button = guicomponents.PressLaunch( self.move_bottom_pressed, surface, w=22, h=22) move_bottom_button.widget.set_tooltip_markup( _("Move Filter To Bottom")) self.widget = Gtk.HBox(False, 0) self.widget.pack_start(guiutils.pad_label(4, 5), False, False, 0) self.widget.pack_start(mask_button.widget, False, False, 0) self.widget.pack_start(guiutils.pad_label(2, 5), False, False, 0) self.widget.pack_start(reset_button.widget, False, False, 0) self.widget.pack_start(guiutils.pad_label(12, 5), False, False, 0) self.widget.pack_start(move_up_button.widget, False, False, 0) self.widget.pack_start(move_down_button.widget, False, False, 0) self.widget.pack_start(move_top_button.widget, False, False, 0) self.widget.pack_start(move_bottom_button.widget, False, False, 0) self.widget.pack_start(guiutils.pad_label(12, 5), False, False, 0) self.widget.pack_start(save_button.widget, False, False, 0) self.widget.pack_start(load_button.widget, False, False, 0) self.widget.pack_start(Gtk.Label(), True, True, 0)
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() surface = guiutils.get_cairo_image("pan_track") self.pan_button.set_image(Gtk.Image.new_from_surface(surface)) 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) self.mute_changed()
def __init__(self): # Aug-2019 - SvdB - BB - Multiple changes - size_ind, size_adj, get_cairo_image size_ind = 0 size_adj = 1 prefs = editorpersistance.prefs # Colorized icons if prefs.colorized_icons is True: icon_color = "_color" else: icon_color = "" # End of Colorized icons if prefs.double_track_hights: size_ind = 1 size_adj = 2 AbstractGlassButtons.__init__(self, MB_BUTTON_WIDTH[size_ind], MB_BUTTON_HEIGHT[size_ind], MB_BUTTON_Y, MB_BUTTONS_WIDTH[size_ind], MB_BUTTONS_HEIGHT[size_ind]) play_pause_icon = guiutils.get_cairo_image("play_pause_s" + icon_color) play_icon = guiutils.get_cairo_image("play_2_s" + icon_color) stop_icon = guiutils.get_cairo_image("stop_s" + icon_color) next_icon = guiutils.get_cairo_image("next_frame_s") prev_icon = guiutils.get_cairo_image("prev_frame_s") # ------------------------------timeline_start_end_button start_icon = guiutils.get_cairo_image("to_start") # go to start end_icon = guiutils.get_cairo_image("to_end") # go to end # ------------------------------timeline_start_end_button mark_in_icon = guiutils.get_cairo_image("mark_in_s") mark_out_icon = guiutils.get_cairo_image("mark_out_s") marks_clear_icon = guiutils.get_cairo_image("marks_clear_s") to_mark_in_icon = guiutils.get_cairo_image("to_mark_in_s") to_mark_out_icon = guiutils.get_cairo_image("to_mark_out_s") timeline_start_end = editorpersistance.prefs.timeline_start_end print("timeline_start_en", timeline_start_end) # Jul-2016 - SvdB - For play/pause button if (editorpersistance.prefs.play_pause == True): # ------------------------------timeline_start_end_button if (editorpersistance.prefs.timeline_start_end == True): self.icons = [ start_icon, end_icon, prev_icon, next_icon, play_pause_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] # go to start end add 5*size_adj, 5*size_adj, self.image_x = [ 5 * size_adj, 5 * size_adj, 5 * size_adj, 7 * size_adj, 5 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] else: self.icons = [ prev_icon, next_icon, play_pause_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] self.image_x = [ 5 * size_adj, 7 * size_adj, 5 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] else: # go to start end if (editorpersistance.prefs.timeline_start_end == True): self.icons = [ start_icon, end_icon, prev_icon, next_icon, play_icon, stop_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] # go to start end add 5*size_adj, 5*size_adj, self.image_x = [ 5 * size_adj, 5 * size_adj, 5 * size_adj, 7 * size_adj, 5 * size_adj, 10 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] else: self.icons = [ prev_icon, next_icon, play_icon, stop_icon, mark_in_icon, mark_out_icon, marks_clear_icon, to_mark_in_icon, to_mark_out_icon ] self.image_x = [ 5 * size_adj, 7 * size_adj, 20 * size_adj, 10 * size_adj, 3 * size_adj, 11 * size_adj, 2 * size_adj, 7 * size_adj, 6 * size_adj ] # ------------------------------End of timeline_start_end_button for i in range(0, len(self.icons)): self.image_y.append(MB_BUTTON_IMAGE_Y) self.pressed_callback_funcs = None # set using set_callbacks() self.set_sensitive(True) focus_groups[DEFAULT_FOCUS_GROUP].append(self.widget)