You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.3 KiB
146 lines
4.3 KiB
//
|
|
// C++ Interface: useraction
|
|
//
|
|
// Description: This manages all useractions
|
|
//
|
|
//
|
|
// Author: Jonas Bähr (C) 2004
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
|
|
#ifndef USERACTION_H
|
|
#define USERACTION_H
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
class TQDomDocument;
|
|
class TQDomElement;
|
|
class TQString;
|
|
class TQStringList;
|
|
class KrAction;
|
|
class KURL;
|
|
class TDEPopupMenu;
|
|
|
|
/**
|
|
* Useractions are Krusaders backend for user-defined actions on current/selected files in its panels
|
|
* and for krusader's internal actions which need some parameter. @n
|
|
* There are several komponents:
|
|
* - The UserAction class as a Manager
|
|
* - The interface to KDE's action-system (the KrAction)
|
|
* - The Expander, which parses the commandline for placeholders and calls the internal actions
|
|
* - A widget to manipulate the UserAction's Properties via GUI (ActionProperty)
|
|
* .
|
|
* The Useractions are stored in XML-files. Currently there are two main files. The first is a global example-file
|
|
* which is read only (read after the other actionfiles, doublicates are ignored) and a local file where the actions are saved.
|
|
* This class reads only the container and passes each action-tag to the new KrAction, which reads it's data itself.
|
|
*
|
|
* @author Jonas Bähr (http://www.jonas-baehr.de)
|
|
*/
|
|
|
|
class UserAction {
|
|
public:
|
|
|
|
typedef TQPtrList<KrAction> KrActionList;
|
|
|
|
enum ReadMode { renameDoublicated, ignoreDoublicated };
|
|
|
|
/**
|
|
* The constructor reads all useractions, see readAllFiles()
|
|
*/
|
|
UserAction();
|
|
~UserAction();
|
|
|
|
/**
|
|
* adds an action to the collection.
|
|
*/
|
|
void addKrAction( KrAction* action ) { _actions.append( action ); };
|
|
|
|
/**
|
|
* Use this to access the whole list of registerd KrActions.
|
|
* currently only used to fill the usermenu with all available actions. This should change...
|
|
* @return A reference to the internal KrActionList
|
|
*/
|
|
const KrActionList &actionList() { return _actions; };
|
|
|
|
/**
|
|
* @return how many useractions exist
|
|
*/
|
|
int count() const { return _actions.count(); };
|
|
|
|
/**
|
|
* removes a KrAction from the internal list but does not delete it.
|
|
* @param action the KrAction which should be removed
|
|
*/
|
|
void removeKrAction( KrAction* action ) { _actions.remove( action ); };
|
|
|
|
/**
|
|
* check for each KrAction if it is available for the currend location / file and disables it if not
|
|
*/
|
|
void setAvailability();
|
|
/**
|
|
* same as above but check for a specitic file
|
|
* @param currentURL Check for this file
|
|
*/
|
|
void setAvailability(const KURL& currentURL);
|
|
|
|
/**
|
|
* Fills a TDEPopupMenu with all available UserActions in the list
|
|
* @param popupmenu to populate
|
|
*/
|
|
void populateMenu(TDEPopupMenu* menu);
|
|
|
|
TQStringList allCategories();
|
|
TQStringList allNames();
|
|
|
|
/**
|
|
* reads all predefined useractionfiles.
|
|
*/
|
|
void readAllFiles();
|
|
/**
|
|
* writes all actions to the local actionfile
|
|
*/
|
|
bool writeActionFile();
|
|
/**
|
|
* Reads UserActions from a xml-file.
|
|
* @param list If provided, all new actions will also be added to this list
|
|
*/
|
|
void readFromFile( const TQString& filename, ReadMode mode = renameDoublicated, KrActionList* list = 0 );
|
|
/**
|
|
* Reads UserActions from a XML-Element.
|
|
* @param element a container with action-elements
|
|
* @param list If provided, all new actions will also be added to this list
|
|
*/
|
|
void readFromElement( const TQDomElement& element, ReadMode mode = renameDoublicated, KrActionList* list = 0 );
|
|
|
|
/**
|
|
* creates an empty TQDomDocument for the UserActions
|
|
*/
|
|
static TQDomDocument createEmptyDoc();
|
|
/**
|
|
* Writes a TQDomDocument to an UTF-8 encodes text-file
|
|
* @param doc the XML-Tree
|
|
* @param filename the filename where to save
|
|
* @return true on success, false otherwise
|
|
* @warning any existing file will get overwritten!
|
|
*/
|
|
static bool writeToFile( const TQDomDocument& doc, const TQString& filename );
|
|
|
|
private:
|
|
KrActionList _actions;
|
|
};
|
|
|
|
|
|
#define ACTION_XML "krusader/useractions.xml"
|
|
#define ACTION_XML_EXAMPLES "krusader/useraction_examples.xml"
|
|
|
|
#define ACTION_DOCTYPE "KrusaderUserActions"
|
|
// in well formed XML the root-element has to have the same name then the doctype:
|
|
#define ACTION_ROOT ACTION_DOCTYPE
|
|
#define ACTION_PROCESSINSTR "version=\"1.0\" encoding=\"UTF-8\" "
|
|
|
|
|
|
|
|
#endif // ifndef USERACTION_H
|