home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Multimedia / k3d-setup-0.7.11.0.exe / include / k3d / k3dsdk / iuser_interface.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-17  |  4.3 KB  |  108 lines

  1. #ifndef K3DSDK_IUSER_INTERFACE_H
  2. #define K3DSDK_IUSER_INTERFACE_H
  3.  
  4. // K-3D
  5. // Copyright (c) 1995-2004, Timothy M. Shead
  6. //
  7. // Contact: tshead@k-3d.com
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public
  11. // License as published by the Free Software Foundation; either
  12. // version 2 of the License, or (at your option) any later version.
  13. //
  14. // This program is distributed in the hope that it will be useful,
  15. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. // General Public License for more details.
  18. //
  19. // You should have received a copy of the GNU General Public
  20. // License along with this program; if not, write to the Free Software
  21. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  22.  
  23. /** \file
  24.     \author Tim Shead (tshead@k-3d.com)
  25. */
  26.  
  27. #include "ipath_property.h"
  28. #include "iunknown.h"
  29. #include "keyboard.h"
  30. #include "signal_system.h"
  31. #include "types.h"
  32.  
  33. #include <vector>
  34.  
  35. namespace k3d
  36. {
  37.  
  38. namespace filesystem { class path; }
  39.  
  40. /// Abstract interface to common graphical-user-interface operations for use by objects
  41. class iuser_interface :
  42.     public virtual iunknown
  43. {
  44. public:
  45.     /// Displays a URI in the user's preferred application
  46.     virtual void open_uri(const string_t& URI) = 0;
  47.     /// Displays an informational message
  48.     virtual void message(const string_t& Message) = 0;
  49.     /// Displays a warning message
  50.     virtual void warning_message(const string_t& Message) = 0;
  51.     /// Displays an error message
  52.     virtual void error_message(const string_t& Message) = 0;
  53.     /**
  54.          \brief Prompts the user to choose one of several options
  55.          \param Message text to be displayed
  56.          \param DefaultOption one-based index of the option that is selected by default.  If DefaultOption is 0, no option is selected by default.
  57.          \return one-based index of the option selected by the user, or "0" if a choice was not made (e.g. user clicked WM "close" button)
  58.     */
  59.     virtual unsigned int query_message(const string_t& Message, const unsigned int DefaultOption, const std::vector<string_t>& Options) = 0;
  60.  
  61.     /**
  62.         \brief Displays a message (for tutorial purposes) in a dialog box
  63.         \param Message the text to display in the dialog box
  64.         \return true iff the user wants to continue the tutorial, false to quit
  65.     */
  66.     virtual bool tutorial_message(const string_t& Message) = 0;
  67.  
  68.     /**
  69.         \brief Prompts the user for a filepath, checking for old choices, and storing the current choice for reuse
  70.         \param Prompt message to display in the file selection dialog
  71.         \param OldPath initial file path to display in the file selection dialog
  72.         \param Result returns the chosen file path
  73.         \return true iff the user confirms the file path choice, false if they wish to cancel the pending operation
  74.     */
  75.     virtual bool get_file_path(const ipath_property::mode_t Mode, const string_t& Type, const string_t& Prompt, const filesystem::path& OldPath, filesystem::path& Result) = 0;
  76.  
  77.     /// Displays the given object using a graphical user interface
  78.     virtual bool show(iunknown& Object) = 0;
  79.  
  80.     /// Runs the user interface loop (if any) until it is synchronized with the current document state
  81.     virtual void synchronize() = 0;
  82.  
  83.     /// Returns a connection to a signal that will be emitted at the requested frame rate (could return an empty connection, if the UI doesn't support timers)
  84.     virtual sigc::connection get_timer(const double FrameRate, sigc::slot<void> Slot) = 0;
  85.     
  86.     /// Call a slot whenever given filesystem path is modified.  Note that we are watching the
  87.     /// path, not an inode, so it isn't an error to specify a path for a nonexistent file.
  88.     /// The slot will be called when a file is created / modified / renamed / deleted at that
  89.     /// location.  Returns a nonzero watch identifier that is used to cancel the watch later-on,
  90.     /// or 0 if there is an error or the implementation does not support path-watching.
  91.     virtual uint_t watch_path(const filesystem::path& Path, const sigc::slot<void>& Slot) = 0;
  92.  
  93.     /// Stop watching the given path.
  94.     virtual void unwatch_path(const uint_t WatchID) = 0;
  95.  
  96.  
  97. protected:
  98.     iuser_interface() {}
  99.     iuser_interface(const iuser_interface&) {}
  100.     iuser_interface& operator = (const iuser_interface&) { return *this; }
  101.     virtual ~iuser_interface() {}
  102. };
  103.  
  104. } // namespace k3d
  105.  
  106. #endif // !K3DSDK_IUSER_INTERFACE_H
  107.  
  108.