/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2009 Blender Foundation. * All rights reserved. */ /** \file * \ingroup spuserpref */ #include #include "DNA_screen_types.h" #include "BLI_listbase.h" #include "BKE_context.h" #include "BKE_global.h" #include "BKE_main.h" #include "BKE_report.h" #include "RNA_access.h" #include "RNA_define.h" #include "RNA_types.h" #include "UI_interface.h" #include "../interface/interface_intern.h" #include "WM_api.h" #include "WM_types.h" #include "ED_userpref.h" #include "MEM_guardedalloc.h" /* -------------------------------------------------------------------- */ /** \name Reset Default Theme Operator * \{ */ static int preferences_reset_default_theme_exec(bContext *C, wmOperator *UNUSED(op)) { Main *bmain = CTX_data_main(C); UI_theme_init_default(); UI_style_init_default(); WM_reinit_gizmomap_all(bmain); WM_event_add_notifier(C, NC_WINDOW, NULL); U.runtime.is_dirty = true; return OPERATOR_FINISHED; } static void PREFERENCES_OT_reset_default_theme(wmOperatorType *ot) { /* identifiers */ ot->name = "Reset to Default Theme"; ot->idname = "PREFERENCES_OT_reset_default_theme"; ot->description = "Reset to the default theme colors"; /* callbacks */ ot->exec = preferences_reset_default_theme_exec; /* flags */ ot->flag = OPTYPE_REGISTER; } /** \} */ /* -------------------------------------------------------------------- */ /** \name Add Auto-Execution Path Operator * \{ */ static int preferences_autoexec_add_exec(bContext *UNUSED(C), wmOperator *UNUSED(op)) { bPathCompare *path_cmp = MEM_callocN(sizeof(bPathCompare), "bPathCompare"); BLI_addtail(&U.autoexec_paths, path_cmp); U.runtime.is_dirty = true; return OPERATOR_FINISHED; } static void PREFERENCES_OT_autoexec_path_add(wmOperatorType *ot) { ot->name = "Add Autoexec Path"; ot->idname = "PREFERENCES_OT_autoexec_path_add"; ot->description = "Add path to exclude from auto-execution"; ot->exec = preferences_autoexec_add_exec; ot->flag = OPTYPE_INTERNAL; } /** \} */ /* -------------------------------------------------------------------- */ /** \name Remove Auto-Execution Path Operator * \{ */ static int preferences_autoexec_remove_exec(bContext *UNUSED(C), wmOperator *op) { const int index = RNA_int_get(op->ptr, "index"); bPathCompare *path_cmp = BLI_findlink(&U.autoexec_paths, index); if (path_cmp) { BLI_freelinkN(&U.autoexec_paths, path_cmp); U.runtime.is_dirty = true; } return OPERATOR_FINISHED; } static void PREFERENCES_OT_autoexec_path_remove(wmOperatorType *ot) { ot->name = "Remove Autoexec Path"; ot->idname = "PREFERENCES_OT_autoexec_path_remove"; ot->description = "Remove path to exclude from auto-execution"; ot->exec = preferences_autoexec_remove_exec; ot->flag = OPTYPE_INTERNAL; RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "", 0, 1000); } /** \} */ void ED_operatortypes_userpref(void) { WM_operatortype_append(PREFERENCES_OT_reset_default_theme); WM_operatortype_append(PREFERENCES_OT_autoexec_path_add); WM_operatortype_append(PREFERENCES_OT_autoexec_path_remove); }