libdar::user_interaction Class Reference
[API]

This is a pure virtual class that is used by libdar when interaction with the user is required. More...

#include <user_interaction.hpp>

Inherited by libdar::user_interaction_callback.

List of all members.

Public Member Functions

 user_interaction ()
 class constructor.
virtual void pause (const std::string &message)
 method used to ask a boolean question to the user.
virtual bool pause2 (const std::string &message)
 alternative method to the pause() method
void warning (const std::string &message)
 method used to display a warning or a message to the user.
virtual std::string get_string (const std::string &message, bool echo)=0
 method used to ask a question that needs an arbitrary answer.
virtual void listing (const std::string &flag, const std::string &perm, const std::string &uid, const std::string &gid, const std::string &size, const std::string &date, const std::string &filename, bool is_dir, bool has_children)
virtual void dar_manager_show_files (const std::string &filename, bool available_data, bool available_ea)
virtual void dar_manager_contents (U_I number, const std::string &chemin, const std::string &archive_name)
virtual void dar_manager_statistics (U_I number, const infinint &data_count, const infinint &total_data, const infinint &ea_count, const infinint &total_ea)
virtual void dar_manager_show_version (U_I number, const std::string &data_date, const std::string &ea_date)
void printf (const char *format,...)
 libdar uses this call to format output before send to warning() method.
bool get_use_listing () const
 this is not a virtual method, it has not to be overwritten in inherited classes.
bool get_use_dar_manager_show_files () const
 this is not a virtual method, it has not to be overwritten in inherited classes.
bool get_use_dar_manager_contents () const
 this is not a virtual method, it has not to be overwritten in inherited classes.
bool get_use_dar_manager_statistics () const
 this is not a virtual method, it has not to be overwritten in inherited classes.
bool get_use_dar_manager_show_version () const
 this is not a virtual method, it has not to be overwritten in inherited classes.
virtual user_interactionclone () const =0
 make a newly allocated object which has the same properties as "this".
void warning_with_more (U_I num)
 make a pause each N line of output when calling the warning method

Protected Member Functions

void set_use_listing (bool val)
 method to be called with true as argument if you have defined a listing() method.
void set_use_dar_manager_show_files (bool val)
 method to be called with true as argument if you have defined a dar_manager_show_files() method.
void set_use_dar_manager_contents (bool val)
 method to be called with true as argument if you have defined a dar_manager_contents() method.
void set_use_dar_manager_statistics (bool val)
 method to be called with true as argument if you have defined a dar_manager_statistics() method.
void set_use_dar_manager_show_version (bool val)
 method to be called with true as argument if you have defined a dar_manager_show_version() method.
virtual void inherited_warning (const std::string &message)=0
 need to be overwritten in place of the warning() method since API 3.1.x


Detailed Description

This is a pure virtual class that is used by libdar when interaction with the user is required.

You can base your own class on it using C++ inheritance or use the class user_interaction_callback which implements the interaction based on callback functions. The user_interaction class is used by libdar in the following circumpstances:

the printf() method is built over the warning() methods to display a formated message it has not to be redefined in any inherited class. If you want to define you own class as inherited class of user_interaction you need to overwrite: WARNING ! if your own class has specific fields, you will probably need to redefine the copy constructor as well as operator = if you don't understand this and why, don't play trying making your own class, and/or read good C++ book about canonical form of a C++ class, as well as how to properly make an inherited class. And don't, complain if libdar segfault or core dumps. Libdar needs* to make local copies of theses objects, if the copy constructor is not properly defined in your inherited class this will crash the application.

Definition at line 91 of file user_interaction.hpp.


Member Function Documentation

virtual void libdar::user_interaction::pause ( const std::string &  message  )  [inline, virtual]

method used to ask a boolean question to the user.

Parameters:
[in] message is the message to be displayed, that is the question.
Exceptions:
Euser_abort If the user answer "false" or "no" to the question the method must throw an exception of type "Euser_abort".

Reimplemented in libdar::user_interaction_callback.

Definition at line 104 of file user_interaction.hpp.

References pause2().

virtual bool libdar::user_interaction::pause2 ( const std::string &  message  )  [inline, virtual]

alternative method to the pause() method

Parameters:
[in] message The boolean question to ask to the user
Returns:
the answer of the user (true/yes or no/false)
Note:
either pause2() or pause() *must* be overwritten, but not both. libdar always calls pause() which default implementation relies on pause2() where it converts negative return from pause2() by throwing the appropriated exception. As soon as you overwrite pause(), pause2() is no more used.

Definition at line 118 of file user_interaction.hpp.

Referenced by pause().

void libdar::user_interaction::warning ( const std::string &  message  ) 

method used to display a warning or a message to the user.

Parameters:
[in] message is the message to display.
Note:
since API 3.1.x this method must no more be ovewritten, instead the protected method inherited_warning() must be used.

virtual std::string libdar::user_interaction::get_string ( const std::string &  message,
bool  echo 
) [pure virtual]

method used to ask a question that needs an arbitrary answer.

Parameters:
[in] message is the question to display to the user.
[in] echo is set to false is the answer must not be shown while the user answers.
Returns:
the user's answer.

Implemented in libdar::user_interaction_callback.

virtual void libdar::user_interaction::listing ( const std::string &  flag,
const std::string &  perm,
const std::string &  uid,
const std::string &  gid,
const std::string &  size,
const std::string &  date,
const std::string &  filename,
bool  is_dir,
bool  has_children 
) [virtual]

optional method to use if you want file listing splitted in several fields. If want to use this feature, you have then to supply an implementation for this method, in your inherited class which will be called by libdar in place of the warning method You will also have to call the set_use_listing() method has been called with true as parameter from the constructor of your inherited class to tell libdar that the listing() method is to be used in place of the warning() method for archive listing.

Parameters:
[in] flag is the given information about the EA, compression, presence of saved data.
[in] perm is the access permission of the file.
[in] uid User ID of the file.
[in] gid Group ID of the file.
[in] size file size.
[in] date file modification date.
[in] filename file name.
[in] is_dir true if file is a directory.
[in] has_children true if file is a directory which is not empty.
Note:
This is not a pure virtual method, this is normal, so your inherited class is not obliged to overwrite it.

Reimplemented in libdar::user_interaction_callback.

virtual void libdar::user_interaction::dar_manager_show_files ( const std::string &  filename,
bool  available_data,
bool  available_ea 
) [virtual]

optional method to use if you want dar_manager database contents listing split in several fields. if you want to use this feature, you have then to supply an implementation for this method in your inherited class, method that will be called by libdar in place of the warning method. You will also have to call the set_use_dar_manager_show_files() protected method with true as argument from the constructor of your inherited class to tell libdar to use the dar_manager_show_files() method in place of the warning() method.

Parameters:
[in] filename name of the file
[in] available_data whether the backup has data associated with the file
[in] available_ea whether the backup has Extended Attributes associated with the file
Note:
this method can be set for database::show_files() method to call it

Reimplemented in libdar::user_interaction_callback.

virtual void libdar::user_interaction::dar_manager_contents ( U_I  number,
const std::string &  chemin,
const std::string &  archive_name 
) [virtual]

optional method to use if you want dar_manager database archive listing split in several fields if you want to use this feature, you have then to supply an implementation for this method in your inherited class, method that will be called by libdar in place of the warning method. You will also have to call the set_use_dar_manager_contents() protected method with true as argument from the constructor of your inherited class to tell libdar to use the dar_manager_contents() method in place of the warning() method.

Parameters:
[in] number is the number of the archive in the database
[in] chemin recorded path where to find this archive
[in] archive_name basename of this archive
Note:
this method can be set for database::show_contents() to call it

Reimplemented in libdar::user_interaction_callback.

virtual void libdar::user_interaction::dar_manager_statistics ( U_I  number,
const infinint data_count,
const infinint total_data,
const infinint ea_count,
const infinint total_ea 
) [virtual]

optional method to use if you want dar_manager statistics listing split in several fields if you want to use this feature, you have then to supply an implementation for this method in your inherited class, method that will be called by libdar in place of the warning method. You will also have to call the set_use_dar_manager_statistics() protected method with true as argument from the constructor of your inherited class to tell libdar to use the dar_manager_statistics() method in place of the warning() method.

Parameters:
[in] number archive number
[in] data_count amount of file which last version is located in this archive
[in] total_data total number of file covered in this database
[in] ea_count amount of EA which last version is located in this archive
[in] total_ea total number of file that have EA covered by this database
Note:
this method can be set for database::show_most_recent_stats() method to call it

Reimplemented in libdar::user_interaction_callback.

virtual void libdar::user_interaction::dar_manager_show_version ( U_I  number,
const std::string &  data_date,
const std::string &  ea_date 
) [virtual]

optional method to use if you want dar_manager statistics listing split in several fields if you want to use this feature, you have then to supply an implementation for this method in your inherited class, method that will be called by libdar in place of the warning method. You will also have to call the set_use_dar_manager_show_version() protected method with true as argument from the constructor of your inherited class to tell libdar to use the dar_manager_show_version() method in place of the warning() method.

Parameters:
[in] number archive number
[in] data_date is the last modification date of the requested file in thie archive whose number is "number"
[in] ea_date is the date of the EA for the requested file in the archive whose number is "number"
Note:
this method can be set for database::show_version() method to call it

Reimplemented in libdar::user_interaction_callback.

void libdar::user_interaction::printf ( const char *  format,
  ... 
)

libdar uses this call to format output before send to warning() method.

This is not a virtual method, it has not to be overwritten, it is just a sublayer over warning() Supported masks for the format string are:

  • %s %c %d %% (normal behavior)
  • %i (matches infinint *)
  • %S (matches std::string *)

bool libdar::user_interaction::get_use_listing (  )  const [inline]

this is not a virtual method, it has not to be overwritten in inherited classes.

for libdar to know if it is interesting to use listing(), dar_manager_show_files(), dar_manager_contents(), dar_manager_statistics() or to keep reporting listing thanks to the warning() method,

Definition at line 247 of file user_interaction.hpp.

virtual user_interaction* libdar::user_interaction::clone (  )  const [pure virtual]

make a newly allocated object which has the same properties as "this".

This *is* a virtual method, it *must* be overwritten in any inherited class copy constructor and = operator may have to be overwrittent too if necessary Warning ! clone() must throw exception if necessary (Ememory), but never return a NULL pointer !

Implemented in libdar::user_interaction_callback.

Referenced by libdar::generic_file::generic_file().

void libdar::user_interaction::warning_with_more ( U_I  num  )  [inline]

make a pause each N line of output when calling the warning method

Parameters:
[in] num is the number of line to display at once, zero for unlimited display
Note:
. Since API 3.1, the warning method is no more a pure virtual function you need to call the parent warning method in your method for this warning_with_more method works as expected.

Definition at line 273 of file user_interaction.hpp.

void libdar::user_interaction::set_use_listing ( bool  val  )  [inline, protected]

method to be called with true as argument if you have defined a listing() method.

in the constructor of any inherited class that define a listing() method it is advisable to call set_use_listing() with true as argument for libdar knows that the listing() call has to be used in place of the warning() call for file listing.

Definition at line 283 of file user_interaction.hpp.

Referenced by libdar::user_interaction_callback::set_listing_callback().

virtual void libdar::user_interaction::inherited_warning ( const std::string &  message  )  [protected, pure virtual]

need to be overwritten in place of the warning() method since API 3.1.x

Parameters:
[in] message message to display

Implemented in libdar::user_interaction_callback.


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

Generated on Mon Nov 3 23:49:40 2008 for Disk ARchive by  doxygen 1.5.5