|
|
|
/***************************************************************************
|
|
|
|
tagaction.h - description
|
|
|
|
-------------------
|
|
|
|
begin : ?
|
|
|
|
copyright : (C) ? Dmitry Poplavsky
|
|
|
|
(C) 2002-2005 Andras Mantia <amantia@kde.org>
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
/***************************************************************************
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#ifndef TAGACTION_H
|
|
|
|
#define TAGACTION_H
|
|
|
|
|
|
|
|
#include <tdeversion.h>
|
|
|
|
#include <tdeaction.h>
|
|
|
|
#include <tdeactioncollection.h>
|
|
|
|
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqdom.h>
|
|
|
|
|
|
|
|
class TDEMainWindow;
|
|
|
|
class QuantaView;
|
|
|
|
class TDEProcess;
|
|
|
|
class TQDomElement;
|
|
|
|
class TQFile;
|
|
|
|
class TQTimer;
|
|
|
|
class MessageOutput;
|
|
|
|
class Node;
|
|
|
|
class NodeModifsSet;
|
|
|
|
class NodeSelection;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* An action for inserting an XML tag.
|
|
|
|
*
|
|
|
|
* @author Dmitry Poplavsky, dima@kde.org
|
|
|
|
* Andras Mantia, amantia@kde.org
|
|
|
|
* Paulo Moura Guedes, moura@tdewebdev.org
|
|
|
|
*/
|
|
|
|
|
|
|
|
class TagAction : public TDEToggleAction
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Create an insert from dom element.
|
|
|
|
* @param toggle If set to true, the class behaves like a TDEToggleAction;
|
|
|
|
* Else it behaves like a TDEAction. This avoids the multi-inheritance problem.
|
|
|
|
*/
|
|
|
|
TagAction(TQDomElement *element, TDEMainWindow *parentMainWindow, bool toggle = false);
|
|
|
|
virtual ~TagAction();
|
|
|
|
|
|
|
|
TQDomElement data() const { return tag; }
|
|
|
|
void setModified(bool modified) { m_modified = modified;}
|
|
|
|
bool isModified() const {return m_modified;}
|
|
|
|
void setOutputFile(TQFile* file);
|
|
|
|
void setInputFileName(const TQString& fileName);
|
|
|
|
void addArguments(const TQStringList& arguments);
|
|
|
|
bool toggable() const {return tag.attribute("toggable") == "true";}
|
|
|
|
bool toggled() const {return isChecked();}
|
|
|
|
|
|
|
|
/** Activates the action.
|
|
|
|
@param blocking in case of script actions, the script is run in blocking mode, if this argument is true
|
|
|
|
*/
|
|
|
|
void execute(bool blocking);
|
|
|
|
TQString type();
|
|
|
|
/**
|
|
|
|
* Remove accelerator from tag action name *
|
|
|
|
*/
|
|
|
|
TQString actionText();
|
|
|
|
|
|
|
|
TQString XMLTagName() const;
|
|
|
|
TQString openXMLTagString() const;
|
|
|
|
TQString closeXMLTagString() const;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void showMessage(const TQString& msg, bool append);
|
|
|
|
void clearMessages();
|
|
|
|
void showMessagesView();
|
|
|
|
void createNewFile();
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
virtual void slotActivated();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* We need this information in order to know if queued actions should be applied.
|
|
|
|
* It's public because it can be activated by other classes if there are any queued actions.
|
|
|
|
*/
|
|
|
|
virtual bool slotActionActivated(TDEAction::ActivationReason reason, TQt::ButtonState state);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
virtual void slotGetScriptOutput( TDEProcess *, char *buffer, int buflen );
|
|
|
|
virtual void slotGetScriptError( TDEProcess *, char *buffer, int buflen );
|
|
|
|
virtual void scriptDone();
|
|
|
|
void slotTimeout();
|
|
|
|
void slotProcessExited(TDEProcess *);
|
|
|
|
virtual bool slotActionActivated();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void applyTagInSelection(Node* start_node, int start_offset, Node* end_node, int end_offset,
|
|
|
|
NodeSelection& selection, NodeModifsSet* modifs) const;
|
|
|
|
void applyTagInMixedSelection(Node* start_node, int start_offset, Node* end_node, int end_offset,
|
|
|
|
NodeSelection& selection, NodeModifsSet* modifs) const;
|
|
|
|
void deapplyTagInSelection(Node* start_node, int start_offset, Node* end_node, int end_offset,
|
|
|
|
NodeSelection& selection, NodeModifsSet* modifs) const;
|
|
|
|
void deapplyTagInMixedSelection(Node* start_node, int start_offset, Node* end_node, int end_offset,
|
|
|
|
NodeSelection& selection, NodeModifsSet* modifs) const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
TDEProcess *proc;
|
|
|
|
bool firstError;
|
|
|
|
bool firstOutput;
|
|
|
|
bool m_modified;
|
|
|
|
bool loopStarted;
|
|
|
|
bool m_useInputFile;
|
|
|
|
bool m_useOutputFile;
|
|
|
|
TQString scriptOutputDest;
|
|
|
|
TQString scriptErrorDest;
|
|
|
|
TQTimer* timer;
|
|
|
|
TQDomElement tag;
|
|
|
|
TQFile* m_file;
|
|
|
|
TDEMainWindow *m_parentMainWindow;
|
|
|
|
TQString m_inputFileName;
|
|
|
|
TQStringList m_argsList;
|
|
|
|
uint m_killCount;
|
|
|
|
bool const m_toggle;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // TAGACTION_H
|