diff options
Diffstat (limited to 'krusader/UserAction/expander.h')
-rw-r--r-- | krusader/UserAction/expander.h | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/krusader/UserAction/expander.h b/krusader/UserAction/expander.h deleted file mode 100644 index 3ae7f21..0000000 --- a/krusader/UserAction/expander.h +++ /dev/null @@ -1,245 +0,0 @@ -// -// C++ Interface: expander -// -// Description: -// -// -// Author: Jonas B�r (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// -// - -#ifndef EXPANDER_H -#define EXPANDER_H - -// class TQString; -#include <tqstring.h> -#include <tqstringlist.h> -#include <tqvaluelist.h> -#include "tstring.h" -// #include <tqstringlist.h> -class ListPanel; -class Expander; -class Error; - -typedef TagString_t<TQStringList> TagString; -typedef TQValueList<TagString> TagStringList; - -/** - * This holds informations about each parameter - */ -class exp_parameter { -public: - exp_parameter() {} - inline exp_parameter( TQString desc, TQString pre, bool ness) - { _description = desc; _preset = pre; _nessesary = ness; } - inline TQString description() const ///< A description of the parameter - { return _description; } - inline TQString preset() const ///< the default of the parameter - { return _preset; } - inline bool nessesary() const ///< false if the parameter is optional - { return _nessesary; } - -private: - TQString _description; - TQString _preset; - bool _nessesary; -}; - -#define EXP_FUNC virtual TagString expFunc ( const ListPanel*, const TagStringList&, const bool&, Expander& ) const -#define SIMPLE_EXP_FUNC virtual TagString expFunc ( const ListPanel*, const TQStringList&, const bool&, Expander& ) const -/** - * Abstract baseclass for all expander-functions (which replace placeholder). - * A Placeholder is an entry containing the expression, its expanding function and Parameter. - * - * Not to be created on the heap - * - * @author Jonas B�r (http://www.jonas-baehr.de) - */ -class exp_placeholder { -public: - inline TQString expression() const ///< The placeholder (without '%' or panel-prefix) - { return _expression; } - inline TQString description() const ///< A description of the placeholder - { return _description; } - inline bool needPanel() const ///< true if the placeholder needs a panel to operate on - { return _needPanel; } - inline void addParameter( exp_parameter parameter ) ///< adds parameter to the placeholder - { _parameter.append(parameter); } - inline int parameterCount() const ///< returns the number of placeholders - { return _parameter.count(); } - inline const exp_parameter& parameter( int id ) const ///< returns a specific parameter - { return _parameter[ id ]; } - - EXP_FUNC = 0; -protected: - static void setError(Expander& exp,const Error& e) ; - static void panelMissingError(const TQString &s, Expander& exp); - static TQStringList splitEach(const TagString& s); - static TQStringList fileList(const ListPanel* const panel,const TQString& type,const TQString& mask,const bool ommitPath,const bool useUrl,Expander&,const TQString&); - exp_placeholder(); - exp_placeholder(const exp_placeholder& p); - ~exp_placeholder() { } - TQString _expression; - TQString _description; - TQValueList <exp_parameter> _parameter; - bool _needPanel; -}; - - - class Error { - public: - enum Cause { - C_USER, C_SYNTAX, C_WORLD, C_ARGUMENT - }; - enum Severity { - S_OK, S_WARNING, S_ERROR, S_FATAL - }; - Error() : s_(S_OK) {} - Error(Severity s,Cause c,TQString d) : s_(s), c_(c), desc_(d) {} - Cause cause() const { return c_; } - operator bool() const { return s_!=S_OK; } - const TQString& what() const { return desc_; } - private: - Severity s_; - Cause c_; - TQString desc_; - }; - - -/** - * The Expander expands the command of an UserAction by replacing all placeholders by thier current values.@n - * Each placeholder begins with a '%'-sign, followed by one char indicating the panel, followed by a command which may have some paramenter enclosed in brackets and also ends with a '%'-sign. - * Examples are %aPath% or %rBookmark("/home/jonas/src/krusader_trinity", "yes")%.@n - * The panel-indicator has to be either 'a' for the active, 'o' for the other, 'r' for the right, 'l' for the left or '_' for panel-independence. - * - * Currently sopported are these commands can be ordered in three groups (childs are the parameter in the right order): - * - Placeholders for Krusaders panel-data (panel-indicator has to be 'a', 'o', 'r' or 'l') - * - @em Path is replaced by the panel's path - * - @em Count is replaced by a nomber of - * -# Either "All", "Files", "Dirs", "Selected" - * . - * - @em Filter is preplaced by the panels filter-mask (ex: "*.cpp *.h") - * - @em Current is replaced by the current item or, in case of onmultiple="call_each", by each selected item. - * -# If "yes", only the filename (without path) is returned - * . - * - @em List isreplaced by a list of - * -# Either "All", "Files", "Dirs", "Selected" - * -# A seperator between the items (default: " " [one space]) - * -# If "yes", only the filename (without path) is returned - * -# (for all but "Selected") a filter-mask (default: "*") - * . - * . - * - Access to panel-dependent, krusader-internal, parameter-needed functions (panel-indicator has to be 'a', 'o', 'r' or 'l') - * - @em Select manipulates the selection of the panel - * -# A filter-mask (nessesary) - * -# Either "Add", "Remove", "Set" (default) - * . - * - @em Bookmark manipulates the selection of the panel - * -# A path or URL (nessesary) - * -# If "yes", the location is opend in a new tab - * . - * . - * - Access to panel-independent, krusader-internal, parameter-needed functions (panel-indicator doesn't matter but should be set to '_') - * - @em Ask displays a lineedit and is replaced by its return - * -# The question (nessesary) - * -# A default answer - * -# A cation for the popup - * . - * - @em Clipboard manipulates the system-wide clipboard - * -# The string copied to clip (ex: "%aCurrent%") (nessesary) - * -# A separator. If set, parameter1 is append with this to the current clipboard content - * . - * . - * . - * Since all placeholders are expanded in the order they appear in the command, little one-line-scripts are possible - * - * @author Jonas B�r (http://www.jonas-baehr.de), Shie Erlich - */ -class Expander { -public: - - inline static int placeholderCount() ///< returns the number of placeholders - { return _placeholder().count(); } - inline static const exp_placeholder* placeholder( int id ) - { return _placeholder()[ id ]; } - - /** - * This expands a whole commandline - * - * @param stringToExpand the commandline with the placeholder - * @param useUrl true iff the path's should be expanded to an URL instead of an local path - * @return a list of all commands - */ - void expand( const TQString& stringToExpand, bool useUrl ); - - /** - * Returns the list of all commands to be executed, provided that #expand was called - * before, and there was no error (see #error). Otherwise, calls #abort - * - * @return The list of commands to be executed - */ - const TQStringList& result() const { assert(!error()); return resultList; } - - /** - * Returns the error object of this Expander. You can test whether there was - * any error by - * \code - * if(exp.error()) - * error behaviour... - * else - * no error... - * \endcode - * - * @return The error object - */ - const Error& error() const { return _err; } -protected: - /** - * This expands a whole commandline by calling for each Placeholder the corresponding expander - * - * @param stringToExpand the commandline with the placeholder - * @param useUrl true if the path's should be expanded to an URL instead of an local path - * @return the expanded commanline for the current item - */ - TagString expandCurrent( const TQString& stringToExpand, bool useUrl ); - /** - * This function searches for "@EACH"-marks to splitt the string in a list for each %_Each%-item - * - * @param stringToSplit the string which should be splitted - * @return the splitted list - */ - static TQStringList splitEach( TagString stringToSplit ); - /** - * @param panelIndicator either '_' for panel-independent placeholders, 'a', 'o', 'r', or 'l' for the active, other (inactive), right or left panel - * @return a pointer to the right panel or NULL if no panel is needed. - */ - static ListPanel* getPanel( const char panelIndicator ,const exp_placeholder*,Expander&); - /** - * This splits the parameter-string into separate parameter and expands each - * @param exp the string holding all parameter - * @param useUrl true if the path's should be expanded to an URL instead of an local path - * @return a list of all parameter - */ - TagStringList separateParameter( TQString* const exp, bool useUrl ); - /** - * This finds the end of a placeholder, taking care of the parameter - * @return the position where the placeholder ends - */ - int findEnd( const TQString& str, int start ); - - void setError(const Error &e) { _err=e; } - friend class exp_placeholder; - -private: - static TQValueList <const exp_placeholder*>& _placeholder(); - Error _err; - TQStringList resultList; -}; - -inline void exp_placeholder::setError(Expander& exp,const Error& e) { exp.setError(e); } -inline TQStringList exp_placeholder::splitEach(const TagString& s) { return Expander::splitEach(s); } -inline exp_placeholder::exp_placeholder() { Expander::_placeholder().push_back(this); } - -#endif // ifndef EXPANDER_H |