API Documentation
Loading...
Searching...
No Matches
WindowManager Class Referenceabstract

#include <WindowManager.h>

Inheritance diagram for WindowManager:
[legend]
Collaboration diagram for WindowManager:
[legend]

Signals

void onNewProjectSignal ()
 
void userDataAdded (Buffer< UUID > object)
 

Public Member Functions

virtual DockWidget< AboutDialog > * aboutDialog ()
 
virtual void addCustomDockWidget (DockInit *widget)
 
virtual void addInitialSetupSettingsMenu (WidgetInit *menu, bool always_show=false)
 
virtual void addSettingsMenu (WidgetInit *menu, std::function< void()> reset_to_defaults)
 
virtual DockWidget< AsciiModelFileDialog > * asciiExporterWindow (Buffer< UUID > model, const Buffer< FileRequest > &file)
 
virtual DockWidget< AsciiModelFileDialog > * asciiImporterWindow ()
 
virtual DockWidget< AsciiModelFileDialog > * asciiImporterWindow (const Buffer< FileRequest > &requests)
 
virtual void clearAll ()=0
 
virtual void closeAll (const PopupInfo &popup_origin=PopupInfo())
 
void createNewProject (bool show_settings, const PopupInfo &popup_origin=PopupInfo())
 
virtual void createNewProjectNow (bool show_settings, const PopupInfo &popup_origin)
 
virtual void exit (bool relaunch=false, const String &relaunch_options="--relaunch")
 
virtual DockWidget< AutoModelFileDialog > * exporterWindow (Buffer< UUID > model, const Buffer< FileRequest > &file)
 
virtual void exportFile (ExportRequest request)
 
virtual void exportFiles (Buffer< UUID > model, const Buffer< FileRequest > &files, const PopupInfo &popup_origin)
 
virtual FileChooserDialogfileChooser ()
 
virtual DockWidget< AutoModelFileDialog > * importerWindow ()
 
virtual DockWidget< AutoModelFileDialog > * importerWindow (const Buffer< FileRequest > &requests)
 
virtual void importUserFiles (const Buffer< FileRequest > &files, PopupInfo popup_origin=PopupInfo())
 
void initKeypad ()
 
virtual DockWidget< LogManagerDialog > * logView ()
 
virtual QWidget * mainWindow () const =0
 
virtual void onNewProjectSelected (bool show_settings, const PopupInfo &popup_origin=PopupInfo())
 
virtual void onNewProjectSelected (const PopupInfo &popup_origin=PopupInfo())
 
virtual void openUserFiles (const Buffer< FileRequest > &files, PopupInfo popup_origin=PopupInfo())
 
virtual void recoverLastData ()
 
virtual void removeCustomDockWidget (DockInit *widget)
 
virtual void removeInitialSetupSettingsMenu (WidgetInit *menu)
 
virtual void removeSettingsMenu (WidgetInit *menu)
 
virtual void requestExit (const PopupInfo &popup_origin=PopupInfo())
 
virtual void requestExit (QCloseEvent *event, const PopupInfo &popup_origin=PopupInfo())
 
virtual void requestExitWithFunction (std::function< void()> exit_function, const PopupInfo &popup_origin=PopupInfo())
 
virtual void saveImage (const String &image_id, const File &default_file, PopupInfo info)
 
virtual void saveProjectAs (const PopupInfo &popup_origin=PopupInfo())
 
virtual void setMainWindowCallback (const std::function< void(QWidget *)> &main_window_callback)
 
virtual DockWidget< SettingsDialog > * settingsDialog ()
 
virtual void showImportDialogIfNeeded (const Buffer< FileRequest > &file, PopupInfo popup_origin)
 
virtual void showMainScreen ()
 
virtual void showModelProperties (const ShowPropertiesSettings &settings)
 
void simulateKeyPress (int key)
 
virtual void updateModified ()=0
 
virtual void userDeleteObjects (const Buffer< UUID > &ids)
 
virtual void userImportFile (PopupInfo popup_origin, const Buffer< FileFormat > &formats)
 
virtual void userImportFile (PopupInfo popup_origin=PopupInfo())
 
virtual void userOpenProject (PopupInfo popup_origin=PopupInfo())
 
 WindowManager (QTModelManager *manager)
 
virtual ~WindowManager ()
 
- Public Member Functions inherited from PopupManager
virtual ContainerWidgetBasecontainer () const
 Returns the primary container widget for adding new docks.
 
virtual RibbonArea defaultRibbonArea (const QCustomDockWidget *)
 
virtual void hideWidget (QWidget *widget, const PopupInfo &popup_origin)
 
 PopupManager ()
 
void setupAsPopupHandler ()
 
virtual bool showWidget (QWidget *widget, PopupInfo popup_origin, PopupInfo popup_end)
 

Protected Slots

void initialSetupFinishedSlot ()
 

Protected Member Functions

virtual void addProjectFolderToRecents ()
 
Buffer< FactoryParameters, uint04, ObjectAllocator< false > > convertRequest (const Buffer< FileRequest, uint04, ObjectAllocator< false > > &requests)
 
virtual AboutDialogcreateAboutDialog ()
 
virtual AsciiModelFileDialogcreateAsciiModelFileDialog (bool is_import)
 
virtual AutoModelFileDialogcreateAutoModelFileDialog (bool is_import)
 
virtual DesignObjectDialogcreateDesignObjectDialog (const DynamicPointer< QTDesignObject > &object, const ShowPropertiesSettings &settings)
 
virtual FileChooserDialogcreateFileChooserDialog ()
 
virtual LogManagerDialogcreateLogView ()
 
virtual SettingsDialogcreateSettingsDialog ()
 
virtual DropArea defaultDropArea (const QCustomDockWidget *dock_widget) const
 
virtual SectionWidgetdefaultDropReference (const QCustomDockWidget *dock_widget=nullptr) const
 
virtual void hideSplashScreen (const TimeSpan &delay_time, const TimeSpan &fade_time)
 
virtual InitialSetupDialoginitialSetupDialog ()
 
virtual void layoutAll ()
 
void lockScreenToWindowSize ()
 
virtual DockWidget< DesignObjectDialog > * setupDesignDock (const ShowPropertiesSettings &settings)
 
virtual void setupExporterWindow (AutoModelFileDialog *window, Buffer< UUID > model, const Buffer< FileRequest, uint04, ObjectAllocator< false > > &file)
 
void updateFileDialog (const Buffer< UUID > &model, const Buffer< FileFormat > &formats, String extension, bool show_recents, bool save_dialog)
 
void updateFileDialogToProject ()
 
virtual void updateFromWindowOptions ()
 

Protected Attributes

DockWidget< AboutDialog > * m_about_dock = nullptr
 
DockWidget< AsciiModelFileDialog > * m_ascii_export_dock = nullptr
 
DockWidget< AsciiModelFileDialog > * m_ascii_import_dock = nullptr
 
Buffer< DockInit * > m_custom_dock_widgets
 
Dictionary< UUID, QPointer< DockWidget< DesignObjectDialog > > > m_editor_docks
 
DockWidget< AutoModelFileDialog > * m_export_dock = nullptr
 
String m_export_image_id
 
FileChooserDialogm_file_chooser = nullptr
 
FileChooserDialogm_image_export = nullptr
 
DockWidget< AutoModelFileDialog > * m_import_dock = nullptr
 
Buffer< std::tuple< WidgetInit *, bool > > m_initial_settings_dialogs
 
InitialSetupDialogm_initial_setup_dialog = nullptr
 
bool m_is_exiting
 
QPointer< DockWidget< Keypad > > m_key_pad_dock = nullptr
 
DockWidget< LogManagerDialog > * m_log_dock = nullptr
 
std::function< void(QWidget *)> m_main_window_callback
 
QTModelManagerm_model_manager = nullptr
 
Buffer< std::tuple< WidgetInit *, std::function< void()> > > m_settings_dialogs
 
DockWidget< SettingsDialog > * m_settings_dock = nullptr
 
- Protected Attributes inherited from PopupManager
Dictionary< QObject *, QPointer< QCustomDockWidget > > m_docks
 
PopupWidget * m_popup_widget = nullptr
 

Detailed Description


class: WindowManager

Manages all windows and logic surrounding dialogs and views for displaying and managing any environment within the application

Author: Tyler Parke

Date: 2023-01-16

Constructor & Destructor Documentation

◆ WindowManager()

◆ ~WindowManager()

virtual ~WindowManager ( )
virtual

Member Function Documentation

◆ aboutDialog()

virtual DockWidget< AboutDialog > * aboutDialog ( )
virtual

Returns the about dialog, which details information about the application, and instruction manuals, if available

Author: Tyler Parke

Date: 2023-01-16

Returns: A dialog detailing information about the application, and instruction manuals, if available

◆ addCustomDockWidget()

virtual void addCustomDockWidget ( DockInit * widget)
virtual

Adds a widget to be docked in the default location when a project has been loaded. If a project is loaded, dialog will be added and docked immidiately

Author: Tyler Parke

Date: 2023-01-16

Parameters:

widget - The widget to be docked

◆ addInitialSetupSettingsMenu()

virtual void addInitialSetupSettingsMenu ( WidgetInit * menu,
bool always_show = false )
virtual

◆ addProjectFolderToRecents()

virtual void addProjectFolderToRecents ( )
protectedvirtual

◆ addSettingsMenu()

virtual void addSettingsMenu ( WidgetInit * menu,
std::function< void()> reset_to_defaults )
virtual

Adds a dialog to the logic such that, should a settings dialog be created, the dialog will be added to the menu. Provided function will be called if the user decides to reset the settings to default

Author: Tyler Parke

Date: 2023-01-16

Parameters: menu - The menu to be added to the settings dialog

reset_to_defaults - The function to be called if the user decides to reset the settings to default

◆ asciiExporterWindow()

virtual DockWidget< AsciiModelFileDialog > * asciiExporterWindow ( Buffer< UUID > model,
const Buffer< FileRequest > & file )
virtual

◆ asciiImporterWindow() [1/2]

virtual DockWidget< AsciiModelFileDialog > * asciiImporterWindow ( )
virtual

Returns the dialog adjusting used for adjust the import settings of a given ascii file request.

Author: Tyler Parke

Date: 2023-01-16 Paramters:

Returns: A dialog for managing import options

◆ asciiImporterWindow() [2/2]

virtual DockWidget< AsciiModelFileDialog > * asciiImporterWindow ( const Buffer< FileRequest > & requests)
virtual

◆ clearAll()

virtual void clearAll ( )
pure virtual

Resets the entire display to original initial state, before a project was loaded

Author: Tyler Parke

Date: 2023-01-16

◆ closeAll()

virtual void closeAll ( const PopupInfo & popup_origin = PopupInfo())
virtual

Prompts the user to save changes, if required, then closes everything returning to application initial state with no project loaded

Author: Tyler Parke

Date: 2023-01-16

Parameters:

popup_origin - The origin where any animations should occur

◆ convertRequest()

Buffer< FactoryParameters, uint04, ObjectAllocator< false > > convertRequest ( const Buffer< FileRequest, uint04, ObjectAllocator< false > > & requests)
protected

◆ createAboutDialog()

virtual AboutDialog * createAboutDialog ( )
protectedvirtual

◆ createAsciiModelFileDialog()

virtual AsciiModelFileDialog * createAsciiModelFileDialog ( bool is_import)
protectedvirtual

◆ createAutoModelFileDialog()

virtual AutoModelFileDialog * createAutoModelFileDialog ( bool is_import)
protectedvirtual

◆ createDesignObjectDialog()

virtual DesignObjectDialog * createDesignObjectDialog ( const DynamicPointer< QTDesignObject > & object,
const ShowPropertiesSettings & settings )
protectedvirtual

◆ createFileChooserDialog()

virtual FileChooserDialog * createFileChooserDialog ( )
protectedvirtual

◆ createLogView()

virtual LogManagerDialog * createLogView ( )
protectedvirtual

◆ createNewProject()

void createNewProject ( bool show_settings,
const PopupInfo & popup_origin = PopupInfo() )

Creates a new project and shows any relevant information based on show_settings parameter

Author: Tyler Parke

Date: 2023-01-17 Paramters: show_settings - if true, properties dialog for the project will be shown to user after creation

popup_origin - The origin where any animations should occur

◆ createNewProjectNow()

virtual void createNewProjectNow ( bool show_settings,
const PopupInfo & popup_origin )
virtual

◆ createSettingsDialog()

virtual SettingsDialog * createSettingsDialog ( )
protectedvirtual

◆ defaultDropArea()

virtual DropArea defaultDropArea ( const QCustomDockWidget * dock_widget) const
protectedvirtual

Reimplemented from PopupManager.

◆ defaultDropReference()

virtual SectionWidget * defaultDropReference ( const QCustomDockWidget * dock_widget = nullptr) const
protectedvirtual

Reimplemented from PopupManager.

◆ exit()

virtual void exit ( bool relaunch = false,
const String & relaunch_options = "--relaunch" )
virtual

Saves user settings and exits the application, relaunching if requested

Author: Tyler Parke

Date: 2023-01-16

Parameters:

relaunch - Whether or not to re-open the application after closing it

◆ exporterWindow()

virtual DockWidget< AutoModelFileDialog > * exporterWindow ( Buffer< UUID > model,
const Buffer< FileRequest > & file )
virtual

Returns the dialog adjusting the export settings of a given file request. File requests will be completed once dialog is accepted or cancelled

Author: Tyler Parke

Date: 2023-01-16 Paramters: requests - The objects to be exported

Returns: A dialog for managing export options

◆ exportFile()

virtual void exportFile ( ExportRequest request)
virtual

Called when the user exports. Will prompt user to select a location and format to save the file, then prompt the user for any additional export settings, if required

Author: Tyler Parke

Date: 2023-01-16

Parameters: request - The settings for deletion

show_recents - Whether or not export should show recent settings

◆ exportFiles()

virtual void exportFiles ( Buffer< UUID > model,
const Buffer< FileRequest > & files,
const PopupInfo & popup_origin )
virtual

Called when the user has selected a file format and default data to export. Will prompt the user for any additional export settings, if required, then export data

Author: Tyler Parke

Date: 2023-01-16

Parameters: model - The ids of the default model objects to export files - The requested exports

popup_origin - The origin where any animations should occur

◆ fileChooser()

virtual FileChooserDialog * fileChooser ( )
virtual

Returns the default file chooser dialog used for user selection of files for import or export

Author: Tyler Parke

Date: 2023-01-16

Returns: The default fileChooser used for selecting a file within the application

◆ hideSplashScreen()

virtual void hideSplashScreen ( const TimeSpan & delay_time,
const TimeSpan & fade_time )
protectedvirtual

◆ importerWindow() [1/2]

virtual DockWidget< AutoModelFileDialog > * importerWindow ( )
virtual

Returns the dialog adjusting used for adjust the import settings of a given file request.

Author: Tyler Parke

Date: 2023-01-16 Paramters:

Returns: A dialog for managing import options

◆ importerWindow() [2/2]

virtual DockWidget< AutoModelFileDialog > * importerWindow ( const Buffer< FileRequest > & requests)
virtual

Returns the dialog adjusting the import settings of a given file request. File requests will be completed once dialog is accepted or cancelled

Author: Tyler Parke

Date: 2023-01-16 Paramters: requests - The objects to be imported

Returns: A dialog for managing import options

◆ importUserFiles()

virtual void importUserFiles ( const Buffer< FileRequest > & files,
PopupInfo popup_origin = PopupInfo() )
virtual

Called when the user has requested to import and has selected a file. Will prompt the user for any additional import settings, if required, then import data

Author: Tyler Parke

Date: 2023-01-16

Parameters: files - The file requests used to define what data to import

popup_origin - The origin where any animations should occur

◆ initialSetupDialog()

virtual InitialSetupDialog * initialSetupDialog ( )
protectedvirtual

◆ initialSetupFinishedSlot

void initialSetupFinishedSlot ( )
protectedslot

◆ initKeypad()

void initKeypad ( )

◆ layoutAll()

virtual void layoutAll ( )
protectedvirtual

◆ lockScreenToWindowSize()

void lockScreenToWindowSize ( )
protected

◆ logView()

virtual DockWidget< LogManagerDialog > * logView ( )
virtual

Returns the dialog for viewing all application logs related to the session and project

Author: Tyler Parke

Date: 2023-01-16

Returns: A dialog allowing the user to view logs

◆ mainWindow()

virtual QWidget * mainWindow ( ) const
pure virtual

Returns the primary window for the application

Author: Tyler Parke

Date: 2023-01-16

Returns: The primary window, as defined by the application

◆ onNewProjectSelected() [1/2]

virtual void onNewProjectSelected ( bool show_settings,
const PopupInfo & popup_origin = PopupInfo() )
virtual

Creates a new project and shows any relevant information based on show_settings parameter

Author: Tyler Parke

Date: 2023-01-17 Paramters: show_settings - if true, properties dialog for the project will be shown to user after creation

popup_origin - The origin where any animations should occur

◆ onNewProjectSelected() [2/2]

virtual void onNewProjectSelected ( const PopupInfo & popup_origin = PopupInfo())
virtual

Creates a new project and shows any relevant information based on WindowOptions

Author: Tyler Parke

Date: 2023-01-17 Paramters:

popup_origin - The origin where any animations should occur

◆ onNewProjectSignal

void onNewProjectSignal ( )
signal

◆ openUserFiles()

virtual void openUserFiles ( const Buffer< FileRequest > & files,
PopupInfo popup_origin = PopupInfo() )
virtual

◆ recoverLastData()

virtual void recoverLastData ( )
inlinevirtual

◆ removeCustomDockWidget()

virtual void removeCustomDockWidget ( DockInit * widget)
virtual

Removes a widget that was added with addCustomDockWidget. If widget is not present, function does nothing

Author: Tyler Parke

Date: 2023-01-16

Parameters:

widget - The widget to be removed

◆ removeInitialSetupSettingsMenu()

virtual void removeInitialSetupSettingsMenu ( WidgetInit * menu)
virtual

◆ removeSettingsMenu()

virtual void removeSettingsMenu ( WidgetInit * menu)
virtual

◆ requestExit() [1/2]

virtual void requestExit ( const PopupInfo & popup_origin = PopupInfo())
virtual

Prompts the user to confirm an exit and save changes if required. If confirmed, exit() will be called

Author: Tyler Parke

Date: 2023-01-16

Parameters: exit_function - The function to be called should the user elect to exit

popup_origin - The origin where any animations should occur

◆ requestExit() [2/2]

virtual void requestExit ( QCloseEvent * event,
const PopupInfo & popup_origin = PopupInfo() )
virtual

Prompts the user to confirm an exit and save changes if required. If confirmed, exit() will be called

Author: Tyler Parke

Date: 2023-01-16

Parameters: event - The exit event

popup_origin - The origin where any animations should occur

◆ requestExitWithFunction()

virtual void requestExitWithFunction ( std::function< void()> exit_function,
const PopupInfo & popup_origin = PopupInfo() )
virtual

Prompts the user to confirm an exit and save changes if required. If confirmed, exit_function will be called and should contain the actual exit routine, typically including the call to exit()

Author: Tyler Parke

Date: 2023-01-16

Parameters: exit_function - The function to be called should the user elect to exit

popup_origin - The origin where any animations should occur

◆ saveImage()

virtual void saveImage ( const String & image_id,
const File & default_file,
PopupInfo info )
virtual

◆ saveProjectAs()

virtual void saveProjectAs ( const PopupInfo & popup_origin = PopupInfo())
virtual

Called when the user has selected the project to save and we want to allow them to rename the file Will prompt the user for any additional export settings, if required, then export data

Author: Tyler Parke

Date: 2023-01-16

Parameters:

popup_origin - The origin where any animations should occur

◆ setMainWindowCallback()

virtual void setMainWindowCallback ( const std::function< void(QWidget *)> & main_window_callback)
virtual

◆ settingsDialog()

virtual DockWidget< SettingsDialog > * settingsDialog ( )
virtual

Returns the settings dialog for allowing the user to adjust application specific objects

Author: Tyler Parke

Date: 2023-01-16

Returns: A dialog allowing the user to modify settings

◆ setupDesignDock()

virtual DockWidget< DesignObjectDialog > * setupDesignDock ( const ShowPropertiesSettings & settings)
protectedvirtual

◆ setupExporterWindow()

virtual void setupExporterWindow ( AutoModelFileDialog * window,
Buffer< UUID > model,
const Buffer< FileRequest, uint04, ObjectAllocator< false > > & file )
protectedvirtual

◆ showImportDialogIfNeeded()

virtual void showImportDialogIfNeeded ( const Buffer< FileRequest > & file,
PopupInfo popup_origin )
virtual

◆ showMainScreen()

virtual void showMainScreen ( )
virtual

Shows the main screen and puts it in front of any windows

Author: Tyler Parke

Date: 2023-01-16

◆ showModelProperties()

virtual void showModelProperties ( const ShowPropertiesSettings & settings)
virtual

Called when we want to show the dialog for editing a specific object using application default editing dialogs. This can be called for creating new objects, editing existing objects, etc based on the provided settings

Author: Tyler Parke

Date: 2023-01-16

Parameters:

settings - The information used to generate the editing dialog

◆ simulateKeyPress()

void simulateKeyPress ( int key)

◆ updateFileDialog()

void updateFileDialog ( const Buffer< UUID > & model,
const Buffer< FileFormat > & formats,
String extension,
bool show_recents,
bool save_dialog )
protected

◆ updateFileDialogToProject()

void updateFileDialogToProject ( )
protected

◆ updateFromWindowOptions()

virtual void updateFromWindowOptions ( )
protectedvirtual

◆ updateModified()

virtual void updateModified ( )
pure virtual

Called when application should check to see if the project has been modified since last save

Author: Tyler Parke

Date: 2023-01-16

◆ userDataAdded

void userDataAdded ( Buffer< UUID > object)
signal

◆ userDeleteObjects()

virtual void userDeleteObjects ( const Buffer< UUID > & ids)
virtual

Called when the user deletes objects. If specified, will prompt if user is sure, and then deletes all objects

Author: Tyler Parke

Date: 2023-01-16

Parameters:

ids - The ids of objects the user is deleting

◆ userImportFile() [1/2]

virtual void userImportFile ( PopupInfo popup_origin,
const Buffer< FileFormat > & formats )
virtual

◆ userImportFile() [2/2]

virtual void userImportFile ( PopupInfo popup_origin = PopupInfo())
virtual

Called when the user has requested to import a file. Will prompt user to select import a file, then prompt the user for any additional import settings, if required, then import data

Author: Tyler Parke

Date: 2023-01-16

Parameters: popup_origin - The origin where any animations should occur

formats - The available import formats. If empty, all supported formats will be used

◆ userOpenProject()

virtual void userOpenProject ( PopupInfo popup_origin = PopupInfo())
virtual

Called when the user has requested to choose a project file to open. Will prompt user to select project file, then open it

Author: Tyler Parke

Date: 2023-01-16

Parameters:

popup_origin - The origin where any animations should occur

Member Data Documentation

◆ m_about_dock

DockWidget<AboutDialog>* m_about_dock = nullptr
protected

◆ m_ascii_export_dock

DockWidget<AsciiModelFileDialog>* m_ascii_export_dock = nullptr
protected

◆ m_ascii_import_dock

DockWidget<AsciiModelFileDialog>* m_ascii_import_dock = nullptr
protected

◆ m_custom_dock_widgets

Buffer<DockInit*> m_custom_dock_widgets
protected

◆ m_editor_docks

Dictionary<UUID, QPointer<DockWidget<DesignObjectDialog> > > m_editor_docks
protected

◆ m_export_dock

DockWidget<AutoModelFileDialog>* m_export_dock = nullptr
protected

◆ m_export_image_id

String m_export_image_id
protected

◆ m_file_chooser

FileChooserDialog* m_file_chooser = nullptr
protected

◆ m_image_export

FileChooserDialog* m_image_export = nullptr
protected

◆ m_import_dock

DockWidget<AutoModelFileDialog>* m_import_dock = nullptr
protected

◆ m_initial_settings_dialogs

Buffer<std::tuple<WidgetInit*, bool> > m_initial_settings_dialogs
protected

◆ m_initial_setup_dialog

InitialSetupDialog* m_initial_setup_dialog = nullptr
protected

◆ m_is_exiting

bool m_is_exiting
protected

◆ m_key_pad_dock

QPointer<DockWidget<Keypad> > m_key_pad_dock = nullptr
protected

◆ m_log_dock

DockWidget<LogManagerDialog>* m_log_dock = nullptr
protected

◆ m_main_window_callback

std::function<void(QWidget*)> m_main_window_callback
protected

◆ m_model_manager

QTModelManager* m_model_manager = nullptr
protected

◆ m_settings_dialogs

Buffer<std::tuple<WidgetInit*, std::function<void()> > > m_settings_dialogs
protected

◆ m_settings_dock

DockWidget<SettingsDialog>* m_settings_dock = nullptr
protected

The documentation for this class was generated from the following file: