summaryrefslogtreecommitdiffstats
path: root/krusader/UserAction/expander.h
diff options
context:
space:
mode:
Diffstat (limited to 'krusader/UserAction/expander.h')
-rw-r--r--krusader/UserAction/expander.h245
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