コード例 #1
0
    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)
コード例 #2
0
ファイル: clipeffectseditor.py プロジェクト: imaami/flowblade
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"))
コード例 #3
0
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)
コード例 #4
0
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"))
コード例 #5
0
    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)
コード例 #6
0
ファイル: audiomonitoring.py プロジェクト: usolmz/flowblade
    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()
コード例 #7
0
ファイル: glassbuttons.py プロジェクト: jliljebl/flowblade
    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)