Files
test/source/blender/windowmanager/wm_files.hh
Jonas Holzman a1bcba0598 UI: Implement a Clear Recent Files List Operator
Add a "Clear Recent Files List" item to the bottom of the File / Open
Recent List.

Pull Request: https://projects.blender.org/blender/blender/pulls/116494
2024-01-03 21:26:15 +01:00

128 lines
4.3 KiB
C++

/* SPDX-FileCopyrightText: 2007 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup wm
*/
#pragma once
#include "WM_types.hh"
struct bContext;
struct Main;
struct ReportList;
struct wmFileReadPost_Params;
struct wmGenericCallback;
struct wmOperator;
struct wmOperatorType;
struct wmWindow;
struct wmWindowManager;
/* wm_files.cc */
void wm_history_file_read();
struct wmHomeFileRead_Params {
/** Load data, disable when only loading user preferences. */
unsigned int use_data : 1;
/** Load factory settings as well as startup file (disabled for "File New"). */
unsigned int use_userdef : 1;
/**
* Ignore on-disk startup file, use bundled `datatoc_startup_blend` instead.
* Used for "Restore Factory Settings".
*/
unsigned int use_factory_settings : 1;
/** Read factory settings from the app-templates only (keep other defaults). */
unsigned int use_factory_settings_app_template_only : 1;
/**
* Load the startup file without any data-blocks.
* Useful for automated content generation, so the file starts without data.
*/
unsigned int use_empty_data : 1;
/**
* Optional path pointing to an alternative blend file (may be NULL).
*/
const char *filepath_startup_override;
/**
* Template to use instead of the template defined in user-preferences.
* When not-null, this is written into the user preferences.
*/
const char *app_template_override;
};
/**
* Called on startup, (context entirely filled with NULLs)
* or called for 'New File' both `startup.blend` and `userpref.blend` are checked.
*
* \param r_params_file_read_post: Support postponed initialization,
* needed for initial startup when only some sub-systems have been initialized.
* When non-null, #wm_file_read_post doesn't run, instead it's arguments are stored
* in this return argument.
* The caller is responsible for calling #wm_homefile_read_post with this return argument.
*/
void wm_homefile_read_ex(bContext *C,
const wmHomeFileRead_Params *params_homefile,
ReportList *reports,
wmFileReadPost_Params **r_params_file_read_post);
void wm_homefile_read(bContext *C,
const wmHomeFileRead_Params *params_homefile,
ReportList *reports);
/**
* Special case, support deferred execution of #wm_file_read_post,
* Needed when loading for the first time to workaround order of initialization bug, see #89046.
*/
void wm_homefile_read_post(bContext *C, const wmFileReadPost_Params *params_file_read_post);
void wm_file_read_report(Main *bmain, wmWindow *win);
void wm_close_file_dialog(bContext *C, wmGenericCallback *post_action);
/**
* \return True if the dialog was created, the calling operator should return #OPERATOR_INTERFACE
* then.
*/
bool wm_operator_close_file_dialog_if_needed(bContext *C,
wmOperator *op,
wmGenericCallbackFn post_action_fn);
/**
* Check if there is data that would be lost when closing the current file without saving.
*/
bool wm_file_or_session_data_has_unsaved_changes(const Main *bmain, const wmWindowManager *wm);
/**
* Confirmation dialog when user is about to save the current blend file, and it was previously
* created by a newer version of Blender.
*
* Important to ask confirmation, as this is a very common scenario of data loss.
*/
void wm_save_file_forwardcompat_dialog(bContext *C, wmOperator *op);
void WM_OT_save_homefile(wmOperatorType *ot);
void WM_OT_save_userpref(wmOperatorType *ot);
void WM_OT_read_userpref(wmOperatorType *ot);
void WM_OT_read_factory_userpref(wmOperatorType *ot);
void WM_OT_read_history(wmOperatorType *ot);
void WM_OT_read_homefile(wmOperatorType *ot);
void WM_OT_read_factory_settings(wmOperatorType *ot);
void WM_OT_open_mainfile(wmOperatorType *ot);
void WM_OT_revert_mainfile(wmOperatorType *ot);
void WM_OT_recover_last_session(wmOperatorType *ot);
void WM_OT_recover_auto_save(wmOperatorType *ot);
void WM_OT_save_as_mainfile(wmOperatorType *ot);
void WM_OT_save_mainfile(wmOperatorType *ot);
void WM_OT_clear_recent_files(wmOperatorType *ot);
/* `wm_files_link.cc` */
void WM_OT_link(wmOperatorType *ot);
void WM_OT_append(wmOperatorType *ot);
void WM_OT_lib_relocate(wmOperatorType *ot);
void WM_OT_lib_reload(wmOperatorType *ot);