/*************************************************************************** assoctexteditorimpl.h - Associated text editor implementation ------------------- copyright : (C) 2003 Marc Britton (C) 2004 Michal Rudolf (C) 2006 Andras Mantia ***************************************************************************/ /*************************************************************************** * * * 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 _HAVE_ASSOCTEXTEDITORIMPL_H_ #define _HAVE_ASSOCTEXTEDITORIMPL_H_ #include #include #include #include #include #include #include #include #include "assoctexteditor.h" #include class FormWindow; class PropertyEditor; namespace KTextEditor { class EditInterface; class Document; class View; } namespace KParts{ class PartManager; } class KAction; class KPopupMenu; class AssocTextEditor : public AssocTextEditorBase { Q_OBJECT public: AssocTextEditor(QWidget*, FormWindow*, PropertyEditor*, KParts::PartManager *partManager, QWidget*, const char* = 0, bool = true); ~AssocTextEditor(); // Set interface for given widget. void setWidget(QWidget *); // Save changes for current widget void save() const; // Return population text for current widget QString populationText() const; // Return associated text for current widget QStringList associatedText() const; public slots: // Current script text has changed - save it in m_atdict void textEditChanged(); // Current widget has changed - store script and update interface void widgetChanged(int); // Current script has changed - store script and show new script void stateChanged(int); // Select widget via widget tree dialog void selectWidget(); // Functions for script editing: // Insert given text at cursor position for current widget and state void insertAssociatedText(const QString&); // Select file and insert its content at cursor position void insertFile(); // Open function browser and insert chosen function at cursor position void insertFunction(); // Insert selected function at cursor position void insertWidgetName(int); protected: virtual void closeEvent(QCloseEvent * e); protected slots: void slotHighlightingChanged(int mode); private: bool useInternalParser(); // Current widget QWidget *m_widget; KommanderWidget* m_kommanderWidget; //FIXME: could it be done more cleanly? // Current form and property editor FormWindow* m_formWindow; PropertyEditor* m_propertyEditor; // Current state QString m_currentState; // List of states for current widget QStringList m_states; // Current widget list QDict m_widgetList; // Dictionary for current widget; contains pairs (state, script associated with current state) QMap m_atdict; // Current population text QString m_populationText; // Non-enmpty script pixmap QPixmap scriptPixmap; // Create list of all widgets on the same dialog as current widget // Set store to true, to update m_widgetList; QStringList buildWidgetList(); // Convert widget to string displayed in combos // If formatted, return formatted string, else just widget's name QString widgetToString(QWidget* widget, bool formatted = true); // Conver combo string to widget QWidget* widgetFromString(const QString& name); KTextEditor::EditInterface *associatedTextEdit; KTextEditor::Document *doc; KTextEditor::View *view; KPopupMenu *highlightPopup; int oldHlMode; bool readOnly; KAction *readOnlyAction; }; #endif