From 2b934bb6aee4cdd891e5b727e0c0e66897816229 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Mon, 14 Jan 2013 23:31:18 -0500 Subject: [PATCH] Add BFilePanel and BRefFilter documentation --- docs/user/Doxyfile | 3 +- docs/user/storage/BFilePanel_example.png | Bin 0 -> 23698 bytes docs/user/storage/FilePanel.dox | 356 +++++++++++++++++++++++ 3 files changed, 358 insertions(+), 1 deletion(-) create mode 100644 docs/user/storage/BFilePanel_example.png create mode 100644 docs/user/storage/FilePanel.dox diff --git a/docs/user/Doxyfile b/docs/user/Doxyfile index 47149625b88..b7791ede72a 100644 --- a/docs/user/Doxyfile +++ b/docs/user/Doxyfile @@ -738,7 +738,8 @@ EXAMPLE_RECURSIVE = NO IMAGE_PATH = . \ interface \ keyboard \ - midi2 + midi2 \ + storage # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program diff --git a/docs/user/storage/BFilePanel_example.png b/docs/user/storage/BFilePanel_example.png new file mode 100644 index 0000000000000000000000000000000000000000..0c417e2acd4dc1d019a6769791b8f8ff9b324ad1 GIT binary patch literal 23698 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 literal 0 HcmV?d00001 diff --git a/docs/user/storage/FilePanel.dox b/docs/user/storage/FilePanel.dox new file mode 100644 index 00000000000..bcfa4edba82 --- /dev/null +++ b/docs/user/storage/FilePanel.dox @@ -0,0 +1,356 @@ +/* + * Copyright 2009-2012 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * John Scipione, jscipione@gmail.com + * + * Corresponds to: + * headers/os/storage/FilePanel.h hrev45162 + * src/kits/tracker/FilePanel.cpp hrev45162 + */ + + +/*! + \file FilePanel.h + \brief Provides the BFilePanel and BRefFilter classes and support enums. +*/ + + +/*! + \enum file_panel_mode + Whether the file panel is a save or open panel. +*/ + + +/*! + \var file_panel_mode B_OPEN_PANEL + Open panel +*/ + + +/*! + \var file_panel_mode B_SAVE_PANEL + Save panel +*/ + + +/*! + \enum file_panel_button + List of buttons used by the file panel +*/ + + +/*! + \var file_panel_button B_CANCEL_BUTTON + Cancel button +*/ + + +/*! + \var file_panel_button B_DEFAULT_BUTTON + Default button +*/ + + +/*! + \class BRefFilter + \ingroup storage + \ingroup libbe + \brief Allows you to filter the items displayed in a file panel. +*/ + + +/*! + \fn virtual bool Filter(const entry_ref* ref, BNode* node, + struct stat_beos* stat, const char* mimeType) + \brief Hook method that's called on each file in the target directory + displayed by a file panel. + + \param ref The file currently under consideration. + \param node The node currently under consideration. + \param stat The stat information of the file. + \param mimeType The MIME type of the file. + + \returns Whether or not the entry is a valid candidate for an open/save + dialog. + + \see BFilePanel::SetRefFilter() +*/ + + +/*! + \class BFilePanel + \ingroup storage + \ingroup libbe + \brief Displays a standard Open/Save dialog. + + A save panel looks like this: + + \image html BFilePanel_example.png + + An open dialog looks similar but doesn't have a text box for the file name. + + Creating a basic open or save panel is easy: + +\code + BFilePanel* openPanel = new BFilePanel(B_OPEN_PANEL); + BFilePanel* savePanel = new BFilePanel(B_SAVE_PANEL); +\endcode + + There are many options but they can generally be set after the object has + been constructed. +*/ + + +/*! + \fn BFilePanel::BFilePanel(file_panel_mode mode, BMessenger* target, + const entry_ref* ref, uint32 nodeFlavors, bool multipleSelection, + BMessage* message, BRefFilter* filter, bool modal, bool hideWhenDone) + \brief Creates and initializes a BFilePanel object. + + The panel is not displayed until call the Show() method. + + \param mode Either \c B_OPEN_PANEL or \c B_SAVE_PANEL. + \param target The BMessenger object that sends messages to the BLooper + or BHandler controlled by the file panel. + \param ref The directory to display, by default the current working + directory. + \param nodeFlavors Option flags, this applies to open panels only. + \param multipleSelection Determines whether or not the user is allowed + to select more than one item. + \param message Override the default message sent by the file panel. + \param filter Filter Hook function to call. + \param modal Whether or not the panel is modal, defaults to \c false. + \param hideWhenDone Set to \c false to keep the panel even after the user + confirms or cancels. The close button will hide the panel regardless. +*/ + + +/*! + \fn BFilePanel::~BFilePanel() + \brief Destroys the file panel object. + + If file panel is currently being displayed it is closed. The BRefFilter + object references by this panel is not destroyed by this method. +*/ + + +/*! + \fn void BFilePanel::Show() + \brief Displays the file panel on screen. +*/ + + +/*! + \fn void BFilePanel::Hide() + \brief Hides the file panel. +*/ + + +/*! + \fn bool BFilePanel::IsShowing() const + \brief Determines whether or not the file panel is shown. + + \returns \c true if visible, \c false if hidden. +*/ + + +/*! + \fn void BFilePanel::SendMessage(const BMessenger* messenger, + BMessage* message) + \brief Sends the \a message to the target BHandler \a messenger. + + \param messenger The target BHandler to send the message to. + \param message The message to send. + + \see BMessenger::SendMessage() +*/ + + +/*! + \fn file_panel_mode BFilePanel::PanelMode() const + \brief Gets the panel mode, either \c B_OPEN_PANEL or \c B_SAVE_PANEL. + + \returns \c B_OPEN_PANEL if the panel is an open panel or \c B_SAVE_PANEL + if the panel is a save panel. +*/ + + +/*! + \fn BMessenger BFilePanel::Messenger() const + \brief Gets the panel's target messenger object. + + \returns The BMessenger object that sends messages for this panel. +*/ + + +/*! + \fn void BFilePanel::SetTarget(BMessenger target) + \brief Sets the target messenger. + + \param target the target BMessenger object to set. +*/ + + +/*! + \fn void BFilePanel::SetMessage(BMessage* message) + \brief Sets the target messenge. + + \param message The BMessage object to send on confirm. +*/ + + +/*! + \fn void BFilePanel::Refresh() + \brief Refresh the directory or the panel causing the entries to be re-run + through the BRefFilter::Filter() method. +*/ + + +/*! + \fn BRefFilter* BFilePanel::RefFilter() const + \brief Gets the BRefFilter object associated with the panel. + + \returns The BRefFilter set to the panel. + + \see BRefFilter::Filter() +*/ + + +/*! + \fn void BFilePanel::SetRefFilter(BRefFilter* filter) + \brief Sets the BRefFilter used by the panel to filter entries. + + \param filter The BRefFilter object to set. + + \see BRefFilter::Filter() +*/ + + +/*! + \fn void BFilePanel::SetButtonLabel(file_panel_button button, + const char* text) + \brief Set the button label specified by \a button to \a text. + + \param button The button to set the label of. + \param text The text to set the button label to. +*/ + + +/*! + \fn void BFilePanel::GetPanelDirectory(entry_ref* ref) const + \brief Gets the entry ref of the panel and sets \a ref to point to it. + + \param ref The \c entry_ref pointer you want set. +*/ + + +/*! + \fn void BFilePanel::SetSaveText(const char* text) + \brief Set some save text to display in the save dialog. + + \param text The text to display. +*/ + + +/*! + \fn void BFilePanel::SetPanelDirectory(const entry_ref* ref) + \brief Sets the entry ref of the panel to the directory contained + by \a ref. + + \param ref The entry contained by the desired panel directory. +*/ + + +/*! + \fn void BFilePanel::SetPanelDirectory(const char* path) + \brief Sets the entry ref of the panel to the directory referenced + by \a path. + + \param path The path of the desired directory. +*/ + + +/*! + \fn void BFilePanel::SetPanelDirectory(const BEntry* entry) + \brief Sets the entry ref of the panel to the directory referenced + by \a entry. + + \param entry The BEntry object pointing to the desired directory. +*/ + + +/*! + \fn void BFilePanel::SetPanelDirectory(const BDirectory* dir) + \brief Sets the entry ref of the panel to the directory referenced + by \a dir. + + \param dir The BDirectory object pointing to the desired directory. +*/ + + +/*! + \fn BWindow* BFilePanel::Window() const + \brief Gets a pointer to the BWindow object used by the file panel. + + \returns A pointer to the BWindow object used by the file panel. +*/ + + +/*! + \fn void BFilePanel::Rewind() + \brief Sets the entry ref back to the top of the list. + + \see SelectionChanged() +*/ + + +/*! + \fn status_t BFilePanel::GetNextSelectedRef(entry_ref* ref) + \brief Sets the \a ref pointer to the next entry in the directory. + + \returns a status message. + \retval B_OK Everything went fine. + \retval B_ERROR Couldn't attain a lock on the window. + \retval B_ENTRY_NOT_FOUND End of the entry list. + + \see SelectionChanged() +*/ + + +/*! + \fn void BFilePanel::SetHideWhenDone(bool on) + \brief Sets whether or not the panel should hide on confirm or cancel. + + \param on \c true to hide, \c false to not hide when done. +*/ + + +/*! + \fn bool BFilePanel::HidesWhenDone(void) const + \brief Gets whether or not the panel should hide on confirm or cancel. + + Panel always hides if the user clicks the window's close button. + + \returns \c true if panel will hide, \c false if panel will not hide. +*/ + + +/*! + \fn void BFilePanel::WasHidden() + \brief Hook method that gets called when the file panel is hidden due to + a user action. + + WasHidden() is not called if you call Hide() manually. +*/ + + +/*! + \fn void BFilePanel::SelectionChanged() + \brief Hook method that gets called when the entry ref references by the + file panel changes. + + \see GetNextSelectedRef() + \see Rewind() +*/