def __init__(self, kf_editor, property_editor_widgets_create_func, value_labels ): # kf_editor is keyframeeditor.RotoMaskKeyFrameEditor GObject.GObject.__init__(self) self.set_modal(True) self.set_transient_for(gui.editor_window.window) self.set_title(_("RotoMaskEditor")) self.connect("delete-event", lambda w, e: close_rotomask()) if editorstate.screen_size_small_height() == True: global TEXT_LAYER_LIST_HEIGHT, TEXT_VIEW_HEIGHT, VIEW_EDITOR_HEIGHT TEXT_LAYER_LIST_HEIGHT = 150 TEXT_VIEW_HEIGHT = 180 VIEW_EDITOR_HEIGHT = 450 if editorstate.screen_size_small_height() == True: global VIEW_EDITOR_WIDTH VIEW_EDITOR_WIDTH = 680 editor_widgets = property_editor_widgets_create_func() self.block_updates = False self.mask_create_freeze = False # We are not allowing user to change acrive kf when creating mask self.kf_editor = kf_editor self.kf_editor.set_parent_editor(self) # mask type param was added later, we need handle it not existing. if self.get_mask_type() == -1: self.set_mask_type(vieweditorshape.LINE_MASK) self.set_mask_type_on_init = False # but we don't want to destroy user's curve masks. THis is not complety back wards compatible stuff can get destroyed on second load. else: self.set_mask_type_on_init = True self.value_labels = value_labels self.view_editor = vieweditor.ViewEditor(PLAYER().profile, VIEW_EDITOR_WIDTH, VIEW_EDITOR_HEIGHT) self.view_editor.draw_safe_area = False self.tc_display = guicomponents.MonitorTCDisplay() self.tc_display.use_internal_frame = True self.tc_display.widget.set_valign(Gtk.Align.CENTER) kf_mode_img = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "roto_kf_edit_mode.png") move_mode_img = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "roto_move_mode.png") self.kf_mode_button = Gtk.ToggleButton() self.kf_mode_button.set_image(kf_mode_img) self.kf_mode_button.set_active( True) # we start with vieweditorlayer.ROTO_POINT_MODE edit mode self.kf_mode_button.connect("clicked", self._kf_mode_clicked) self.move_mode_button = Gtk.ToggleButton() self.move_mode_button.set_image(move_mode_img) self.move_mode_button.connect("clicked", self._move_mode_clicked) self.scale_selector = vieweditor.ScaleSelector(self) self.view_editor.scale_select = self.scale_selector timeline_box = Gtk.HBox() timeline_box.pack_start(self.tc_display.widget, False, False, 0) timeline_box.pack_start(Gtk.Label(), True, True, 0) timeline_box.pack_start(self.kf_mode_button, False, False, 0) timeline_box.pack_start(self.move_mode_button, False, False, 0) timeline_box.pack_start(Gtk.Label(), True, True, 0) timeline_box.pack_start(self.scale_selector, False, False, 0) timeline_box.set_margin_top(6) timeline_box.set_margin_bottom(6) mask_type_label = Gtk.Label(_("Mask Type:")) mask_type_combo_box = Gtk.ComboBoxText() mask_type_combo_box.append_text(_("Curve Mask")) mask_type_combo_box.append_text(_("Line Mask")) mask_type_combo_box.set_active(0) mask_type_combo_box.connect("changed", self.mask_type_selection_changed) self.mask_type_combo_box = mask_type_combo_box allow_adding_check = Gtk.CheckButton() allow_adding_check.set_active( False ) # This shows value of self.roto_mask_layer.allow_adding_points, False is default allow_adding_check.connect("toggled", self.allow_adding_toggled) allow_adding_label = Gtk.Label( _("Allow to add / delete points in closed masks")) save_rotodata_b = guiutils.get_sized_button(_("Close Tool"), 150, 32) save_rotodata_b.connect("clicked", lambda w: self._save_rotodata_pressed()) prop_editor_row1 = Gtk.HBox() prop_editor_row1.pack_start(Gtk.Label(), True, True, 0) prop_editor_row1.pack_start(mask_type_label, False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(4, 4), False, False, 0) prop_editor_row1.pack_start(mask_type_combo_box, False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[0], False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[3], False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[4], False, False, 0) prop_editor_row1.pack_start(Gtk.Label(), True, True, 0) prop_editor_row2 = Gtk.HBox() prop_editor_row2.pack_start(Gtk.Label(), True, True, 0) prop_editor_row2.pack_start(editor_widgets[1], False, False, 0) prop_editor_row2.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row2.pack_start(editor_widgets[2], False, False, 0) prop_editor_row2.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row = Gtk.HBox() editor_buttons_row.pack_start(allow_adding_check, False, False, 0) editor_buttons_row.pack_start(guiutils.pad_label(4, 2), False, False, 0) editor_buttons_row.pack_start(allow_adding_label, False, False, 0) editor_buttons_row.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row.pack_start(save_rotodata_b, False, False, 0) editor_panel = Gtk.VBox() editor_panel.pack_start(self.view_editor, True, True, 0) editor_panel.pack_start(timeline_box, False, False, 0) editor_panel.pack_start(kf_editor, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(prop_editor_row1, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(prop_editor_row2, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(editor_buttons_row, False, False, 0) editor_row = Gtk.HBox() editor_row.pack_start(editor_panel, True, True, 0) alignment = guiutils.set_margins(editor_row, 8, 8, 8, 8) self.add(alignment) self.view_editor.clear_layers() # NOTE: we start with vieweditorlayer.ROTO_POINT_MODE edit mode, see __init()__ self.roto_mask_layer = vieweditorlayer.RotoMaskEditLayer( self.view_editor, self.kf_editor.clip_editor, kf_editor.editable_property, self) self.view_editor.add_layer(self.roto_mask_layer) self.view_editor.activate_layer(0) self.show_all() self.kf_editor.active_keyframe_changed() self.connect("size-allocate", lambda w, e: self.window_resized()) self.connect("window-state-event", lambda w, e: self.window_resized()) self.connect("key-press-event", self.key_down) self.window_resized() self.kf_editor.clip_editor.maybe_set_first_kf_in_clip_area_active() self.update_mask_create_freeze_gui()
def __init__(self, kf_editor, editor_widgets, value_labels ): # kf_editor is keyframeeditor.RotoMaskKeyFrameEditor GObject.GObject.__init__(self) self.set_title(_("RotoMaskEditor")) self.connect("delete-event", lambda w, e: close_rotomask()) if editorstate.screen_size_small_height() == True: global TEXT_LAYER_LIST_HEIGHT, TEXT_VIEW_HEIGHT, VIEW_EDITOR_HEIGHT TEXT_LAYER_LIST_HEIGHT = 150 TEXT_VIEW_HEIGHT = 180 VIEW_EDITOR_HEIGHT = 450 if editorstate.screen_size_small_height() == True: global VIEW_EDITOR_WIDTH VIEW_EDITOR_WIDTH = 680 self.block_updates = False self.kf_editor = kf_editor self.kf_editor.set_parent_editor(self) self.value_labels = value_labels self.view_editor = vieweditor.ViewEditor(PLAYER().profile, VIEW_EDITOR_WIDTH, VIEW_EDITOR_HEIGHT) self.guides_toggle = vieweditor.GuidesViewToggle(self.view_editor) """ add_b = Gtk.Button(_("Add")) del_b = Gtk.Button(_("Delete")) add_b.connect("clicked", lambda w:self._add_layer_pressed()) del_b.connect("clicked", lambda w:self._del_layer_pressed()) add_del_box = Gtk.HBox() add_del_box = Gtk.HBox(True,1) add_del_box.pack_start(add_b, True, True, 0) add_del_box.pack_start(del_b, True, True, 0) """ self.tc_display = guicomponents.MonitorTCDisplay() self.tc_display.use_internal_frame = True self.tc_display.widget.set_valign(Gtk.Align.CENTER) kf_mode_img = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "roto_kf_edit_mode.png") move_mode_img = Gtk.Image.new_from_file(respaths.IMAGE_PATH + "roto_move_mode.png") self.kf_mode_button = Gtk.ToggleButton() self.kf_mode_button.set_image(kf_mode_img) self.kf_mode_button.set_active( True) # we start with vieweditorlayer.ROTO_POINT_MODE edit mode self.kf_mode_button.connect("clicked", self._kf_mode_clicked) self.move_mode_button = Gtk.ToggleButton() self.move_mode_button.set_image(move_mode_img) self.move_mode_button.connect("clicked", self._move_mode_clicked) self.scale_selector = vieweditor.ScaleSelector(self) self.view_editor.scale_select = self.scale_selector timeline_box = Gtk.HBox() timeline_box.pack_start(self.tc_display.widget, False, False, 0) timeline_box.pack_start(Gtk.Label(), True, True, 0) timeline_box.pack_start(self.kf_mode_button, False, False, 0) timeline_box.pack_start(self.move_mode_button, False, False, 0) timeline_box.pack_start(Gtk.Label(), True, True, 0) timeline_box.pack_start(self.scale_selector, False, False, 0) timeline_box.set_margin_top(6) timeline_box.set_margin_bottom(6) mask_type_label = Gtk.Label(_("Mask Type:")) mask_type_combo_box = Gtk.ComboBoxText() mask_type_combo_box.append_text(_("Curve Mask")) mask_type_combo_box.append_text(_("Line Mask")) mask_type_combo_box.set_active(0) mask_type_combo_box.connect("changed", self.mask_type_selection_changed) #exit_b = guiutils.get_sized_button(_("Cancel Edit"), 150, 32) #exit_b.connect("clicked", lambda w:close_rotomask()) save_rotodata_b = guiutils.get_sized_button(_("Close Tool"), 150, 32) save_rotodata_b.connect("clicked", lambda w: self._save_rotodata_pressed()) prop_editor_row1 = Gtk.HBox() prop_editor_row1.pack_start(Gtk.Label(), True, True, 0) prop_editor_row1.pack_start(mask_type_label, False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(4, 4), False, False, 0) prop_editor_row1.pack_start(mask_type_combo_box, False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[0], False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[3], False, False, 0) prop_editor_row1.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row1.pack_start(editor_widgets[4], False, False, 0) prop_editor_row1.pack_start(Gtk.Label(), True, True, 0) prop_editor_row2 = Gtk.HBox() prop_editor_row2.pack_start(Gtk.Label(), True, True, 0) prop_editor_row2.pack_start(editor_widgets[1], False, False, 0) prop_editor_row2.pack_start(guiutils.pad_label(24, 20), False, False, 0) prop_editor_row2.pack_start(editor_widgets[2], False, False, 0) prop_editor_row2.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row = Gtk.HBox() editor_buttons_row.pack_start(Gtk.Label(), True, True, 0) editor_buttons_row.pack_start(guiutils.pad_label(24, 2), False, False, 0) editor_buttons_row.pack_start(guiutils.pad_label(24, 2), False, False, 0) #editor_buttons_row.pack_start(exit_b, False, False, 0) editor_buttons_row.pack_start(save_rotodata_b, False, False, 0) editor_panel = Gtk.VBox() editor_panel.pack_start(self.view_editor, True, True, 0) editor_panel.pack_start(timeline_box, False, False, 0) editor_panel.pack_start(kf_editor, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(prop_editor_row1, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(prop_editor_row2, False, False, 0) editor_panel.pack_start(guiutils.pad_label(2, 12), False, False, 0) editor_panel.pack_start(editor_buttons_row, False, False, 0) editor_row = Gtk.HBox() editor_row.pack_start(editor_panel, True, True, 0) alignment = guiutils.set_margins(editor_row, 8, 8, 8, 8) self.add(alignment) self.view_editor.clear_layers() # NOTE: we start with vieweditorlayer.ROTO_POINT_MODE edit mode, see __init()__ self.roto_mask_layer = vieweditorlayer.RotoMaskEditLayer( self.view_editor, self.kf_editor.clip_editor, kf_editor.editable_property, self) self.view_editor.add_layer(self.roto_mask_layer) self.view_editor.activate_layer(0) self.show_all() self.kf_editor.active_keyframe_changed() #self.connect("size-allocate", lambda w, e:self.window_resized()) self.connect("window-state-event", lambda w, e: self.window_resized()) self.connect("key-press-event", self.key_down) self.window_resized()