def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "use_normalization", text="Normalize") row = layout.row() row.active = st.use_normalization row.prop(st, "use_auto_normalization", text="Auto") layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "use_normalization", text="Normalize") row = layout.row() row.active = st.use_normalization row.prop(st, "use_auto_normalization", text="Auto") layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", text="", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): layout = self.layout tool_settings = context.tool_settings st = context.space_data layout.template_header() # Now a exposed as a sub-space type # layout.prop(st, "mode", text="") GRAPH_MT_editor_menus.draw_collapsible(context, layout) row = layout.row(align=True) row.prop(st, "use_normalization", icon='NORMALIZE_FCURVES', text="Normalize", toggle=True) sub = row.row(align=True) sub.active = st.use_normalization sub.prop(st, "use_auto_normalization", icon='FILE_REFRESH', text="", toggle=True) layout.separator_spacer() dopesheet_filter(layout, context) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='X') else: row.operator("graph.ghost_curves_create", text="", icon='FCURVE_SNAPSHOT') layout.popover( panel="GRAPH_PT_filters", text="", icon='FILTER', ) layout.prop(st, "pivot_point", icon_only=True) layout.prop(st, "auto_snap", text="") row = layout.row(align=True) row.prop(tool_settings, "use_proportional_fcurve", text="", icon_only=True) sub = row.row(align=True) sub.active = tool_settings.use_proportional_fcurve sub.prop(tool_settings, "proportional_edit_falloff", text="", icon_only=True)
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() if context.area.show_menus: row.menu("GRAPH_MT_view") row.menu("GRAPH_MT_select") row.menu("GRAPH_MT_marker") row.menu("GRAPH_MT_channel") row.menu("GRAPH_MT_key") layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", text="", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): layout = self.layout st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu ########################### Switch between the editors # bfa - The tabs to switch between the four animation editors. The classes are in space_dopesheet.py row = layout.row(align=True) row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_to_graph", text="", icon='GRAPH') row.operator("wm.switch_editor_to_driver", text="", icon='DRIVER') row.operator("wm.switch_editor_in_nla", text="", icon='NLA_ACTIVE') ########################### NLA_MT_editor_menus.draw_collapsible(context, layout) layout.separator_spacer() dopesheet_filter(layout, context) layout.popover(panel="NLA_PT_filters", text="", icon='FILTER') layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() if context.area.show_menus: row.menu("GRAPH_MT_view") row.menu("GRAPH_MT_select") row.menu("GRAPH_MT_marker") row.menu("GRAPH_MT_channel") row.menu("GRAPH_MT_key") layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", text="", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): layout = self.layout st = context.space_data scene = context.scene preferences = context.preferences addon_prefs = preferences.addons["bforartists_toolbar_settings"].preferences ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu ########################### Switch between the editors # bfa - The tabs to switch between the four animation editors. The classes are in space_dopesheet.py row = layout.row(align=True) row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_to_graph", text="", icon='GRAPH') row.operator("wm.switch_editor_to_driver", text="", icon='DRIVER') row.operator("wm.switch_editor_in_nla", text="", icon='NLA_ACTIVE') ########################### tweak strip actions row = layout.row(align = True) if addon_prefs.nla_tweak_isolate_action: if scene.is_nla_tweakmode: row.active_default = True row.operator("nla.tweakmode_exit", text="Tweak", icon = "ACTION_TWEAK_SOLO").isolate_action = True row.label(icon = "CHECKBOX_HLT", text = "Isolate") else: row.operator("nla.tweakmode_enter", text="Tweak", icon = "ACTION_TWEAK_SOLO").isolate_action = True row.prop(addon_prefs, "nla_tweak_isolate_action") else: if scene.is_nla_tweakmode: row.active_default = True row.operator("nla.tweakmode_exit", text="Tweak", icon = "ACTION_TWEAK") row.label(icon = "CHECKBOX_DEHLT", text = "Isolate") else: row.operator("nla.tweakmode_enter", text="Tweak", icon = "ACTION_TWEAK") row.prop(addon_prefs, "nla_tweak_isolate_action") ########################## NLA_MT_editor_menus.draw_collapsible(context, layout) layout.separator_spacer() dopesheet_filter(layout, context) row = layout.row() row.popover(panel="NLA_PT_filters", text="", icon='FILTER') row.prop(st, "auto_snap", text="") row.popover(panel = "NLA_PT_view_view_options", text = "Options")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu # bfa - The tabs to switch between the four animation editors. The classes are in space_time.py row = layout.row(align=True) row.operator("wm.switch_editor_to_timeline", text="", icon='TIME') row.operator("wm.switch_editor_in_graph", text="", icon='GRAPH_ACTIVE') row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_to_nla", text="", icon='NLA') GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) row = layout.row(align=True) row.prop(st, "use_normalization", icon='NORMALIZE_FCURVES', text="Normalize", toggle=True) sub = row.row(align=True) sub.active = st.use_normalization sub.prop(st, "use_auto_normalization", icon='FILE_REFRESH', text="", toggle=True) row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "use_normalization", text="Normalize") row = layout.row() row.active = st.use_normalization row.prop(st, "use_auto_normalization", text="Auto") row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data row = layout.row(align=True) row.template_header() GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) row = layout.row(align=True) row.prop(st, "use_normalization", icon='NORMALIZE_FCURVES', text="Normalize", toggle=True) sub = row.row(align=True) sub.active = st.use_normalization sub.prop(st, "use_auto_normalization", icon='FILE_REFRESH', text="", toggle=True) row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row.operator("graph.paste", text="", icon='PASTEFLIPDOWN').flipped = True row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu # bfa - The tabs to switch between the four animation editors. The classes are in space_time.py row = layout.row(align=True) row.operator("wm.switch_editor_to_timeline", text="", icon='TIME') row.operator("wm.switch_editor_in_graph", text="", icon='GRAPH_ACTIVE') row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_to_nla", text="", icon='NLA') GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "use_normalization", text="Normalize") row = layout.row() row.active = st.use_normalization row.prop(st, "use_auto_normalization", text="Auto") row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() if context.area.show_menus: row.menu("NLA_MT_view") row.menu("NLA_MT_select") row.menu("NLA_MT_marker") row.menu("NLA_MT_edit") row.menu("NLA_MT_add") dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data row = layout.row(align=True) row.template_header() if context.area.show_menus: row.menu("NLA_MT_view") row.menu("NLA_MT_select") row.menu("NLA_MT_marker") row.menu("NLA_MT_edit") row.menu("NLA_MT_add") dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): layout = self.layout st = context.space_data layout.template_header() NLA_MT_editor_menus.draw_collapsible(context, layout) layout.separator_spacer() dopesheet_filter(layout, context) layout.popover( panel="NLA_PT_filters", text="", icon='FILTER', ) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu # bfa - The tabs to switch between the four animation editors. The classes are in space_time.py row = layout.row(align=True) row.operator("wm.switch_editor_to_timeline", text="", icon='TIME') row.operator("wm.switch_editor_to_graph", text="", icon='IPO') row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_in_nla", text="", icon='NLA_ACTIVE') NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu # bfa - The tabs to switch between the four animation editors. The classes are in space_time.py row = layout.row(align=True) row.operator("wm.switch_editor_to_timeline", text="", icon='TIME') row.operator("wm.switch_editor_to_graph", text="", icon='IPO') row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_in_nla", text="", icon='NLA_ACTIVE') NLA_MT_editor_menus.draw_collapsible(context, layout) dopesheet_filter(layout, context) layout.prop(st, "auto_snap", text="")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) layout.prop(st, "use_normalization", text="Normalize") row = layout.row() row.active = st.use_normalization row.prop(st, "use_auto_normalization", text="Auto") row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')
def DOPESHEET_HT_header_draw(self, context): layout = self.layout st = context.space_data toolsettings = context.tool_settings row = layout.row(align=True) row.template_header() bpy.types.DOPESHEET_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") if st.mode in {'ACTION', 'SHAPEKEY'}: row = layout.row(align=True) row.operator("action.layer_prev", text="", icon='TRIA_DOWN') row.operator("action.layer_next", text="", icon='TRIA_UP') layout.template_ID(st, "action", new="action.new", unlink="action.unlink") preferences = leader.get_preferences(context) if preferences is not None and st.mode == "ACTION" and preferences.general_enable_deletion and action_set( ): layout.operator(LLAnimHelpers_DeleteOperator.bl_idname, icon="CANCEL", text="", emboss=False) row = layout.row(align=True) row.operator("action.push_down", text="Push Down", icon='NLA_PUSHDOWN') row.operator("action.stash", text="Stash", icon='FREEZE') layout.prop(st.dopesheet, "show_summary", text="Summary") if st.mode == 'DOPESHEET': space_dopesheet.dopesheet_filter(layout, context) elif st.mode == 'ACTION': # 'genericFiltersOnly' limits the options to only the relevant 'generic' subset of # filters which will work here and are useful (especially for character animation) space_dopesheet.dopesheet_filter(layout, context, genericFiltersOnly=True) elif st.mode == 'GPENCIL': row = layout.row(align=True) row.prop(st.dopesheet, "show_gpencil_3d_only", text="Active Only") if st.dopesheet.show_gpencil_3d_only: row = layout.row(align=True) row.prop(st.dopesheet, "show_only_selected", text="") row.prop(st.dopesheet, "show_hidden", text="") row = layout.row(align=True) row.prop(st.dopesheet, "use_filter_text", text="") if st.dopesheet.use_filter_text: row.prop(st.dopesheet, "filter_text", text="") row.prop(st.dopesheet, "use_multi_word_filter", text="") row = layout.row(align=True) row.prop(toolsettings, "use_proportional_action", text="", icon_only=True) if toolsettings.use_proportional_action: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) # Grease Pencil mode doesn't need snapping, as it's frame-aligned only if st.mode != 'GPENCIL': layout.prop(st, "auto_snap", text="") row = layout.row(align=True) row.operator("action.copy", text="", icon='COPYDOWN') row.operator("action.paste", text="", icon='PASTEDOWN') if st.mode not in ('GPENCIL', 'MASK'): row.operator("action.paste", text="", icon='PASTEFLIPDOWN').flipped = True
def draw(self, context): layout = self.layout tool_settings = context.tool_settings st = context.space_data ALL_MT_editormenu.draw_hidden(context, layout) # bfa - show hide the editormenu # Now a exposed as a sub-space type # layout.prop(st, "mode", text="") ############################ Switch between the editors if context.space_data.mode == 'FCURVES': # bfa - The tabs to switch between the four animation editors. The classes are in space_dopesheet.py row = layout.row(align=True) row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_in_graph", text="", icon='GRAPH_ACTIVE') row.operator("wm.switch_editor_to_driver", text="", icon='DRIVER') row.operator("wm.switch_editor_to_nla", text="", icon='NLA') elif context.space_data.mode == 'DRIVERS': # bfa - The tabs to switch between the four animation editors. The classes are in space_dopesheet.py row = layout.row(align=True) row.operator("wm.switch_editor_to_dopesheet", text="", icon='ACTION') row.operator("wm.switch_editor_to_graph", text="", icon='GRAPH') row.operator("wm.switch_editor_in_driver", text="", icon='DRIVER_ACTIVE') row.operator("wm.switch_editor_to_nla", text="", icon='NLA') ############################# GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.separator_spacer() row = layout.row(align=True) row.prop(st, "use_normalization", icon='NORMALIZE_FCURVES', text="", toggle=True) sub = row.row(align=True) if st.use_normalization: sub.prop(st, "use_auto_normalization", icon='FILE_REFRESH', text="", toggle=True) row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='X') else: row.operator("graph.ghost_curves_create", text="", icon='FCURVE_SNAPSHOT') dopesheet_filter(layout, context) layout.popover(panel="GRAPH_PT_filters", text="", icon='FILTER') layout.prop(st, "auto_snap", text="") row = layout.row(align=True) row.prop(tool_settings, "use_proportional_fcurve", text="", icon_only=True) sub = row.row(align=True) if tool_settings.use_proportional_fcurve: sub.prop(tool_settings, "proportional_edit_falloff", text="", icon_only=True) row = layout.row(align=True) row.prop(st, "pivot_point", icon_only=True) row.operator_menu_enum("graph.easing_type", "type", text="", icon="IPO_EASE_IN_OUT") row.operator_menu_enum("graph.handle_type", "type", text="", icon="HANDLE_AUTO") row.operator_menu_enum("graph.interpolation_type", "type", text="", icon="INTERPOLATE") row = layout.row() row.popover(panel="GRAPH_PT_properties_view_options", text="Options")
def draw(self, context): from bl_ui.space_dopesheet import dopesheet_filter layout = self.layout toolsettings = context.tool_settings st = context.space_data row = layout.row(align=True) row.template_header() GRAPH_MT_editor_menus.draw_collapsible(context, layout) layout.prop(st, "mode", text="") dopesheet_filter(layout, context) row = layout.row(align=True) row.prop(st, "use_normalization", icon='NORMALIZE_FCURVES', text="Normalize", toggle=True) sub = row.row(align=True) sub.active = st.use_normalization sub.prop(st, "use_auto_normalization", icon='FILE_REFRESH', text="", toggle=True) row = layout.row(align=True) row.prop(toolsettings, "use_proportional_fcurve", text="", icon_only=True) if toolsettings.use_proportional_fcurve: row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True) layout.prop(st, "auto_snap", text="") layout.prop(st, "pivot_point", icon_only=True) row = layout.row(align=True) row.operator("graph.copy", text="", icon='COPYDOWN') row.operator("graph.paste", text="", icon='PASTEDOWN') row.operator("graph.paste", text="", icon='PASTEFLIPDOWN').flipped = True row = layout.row(align=True) if st.has_ghost_curves: row.operator("graph.ghost_curves_clear", text="", icon='GHOST_DISABLED') else: row.operator("graph.ghost_curves_create", text="", icon='GHOST_ENABLED')