summaryrefslogtreecommitdiffstats
path: root/kommander/editor/assoctexteditorimpl.h
blob: 37c582abddecc1c0497918940fd5403fc8eb882f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/***************************************************************************
                          assoctexteditorimpl.h - Associated text editor implementation
                             -------------------
    copyright            : (C) 2003    Marc Britton <[email protected]>
                           (C) 2004    Michal Rudolf <[email protected]>
                           (C) 2006    Andras Mantia <[email protected]>
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 <tqdict.h>
#include <tqstringlist.h>
#include <tqstring.h>
#include <tqwidget.h>
#include <tqobject.h>
#include <tqmap.h>
#include <tqptrvector.h>
#include <tqpixmap.h>


#include "assoctexteditor.h"
#include <kommanderwidget.h>

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(TQWidget*, FormWindow*, PropertyEditor*, KParts::PartManager *partManager, TQWidget*, const char* = 0, bool = true);
  ~AssocTextEditor();
  // Set interface for given widget.
  void setWidget(TQWidget *);
  // Save changes for current widget
  void save() const;
  // Return population text for current widget
  TQString populationText() const;
  // Return associated text for current widget
  TQStringList 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 TQString&);
  // 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(TQCloseEvent * e);

protected slots:

  void slotHighlightingChanged(int mode);

private:
  bool useInternalParser();

  // Current widget
  TQWidget *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
  TQString m_currentState;
  // List of states for current widget
  TQStringList m_states;
  // Current widget list
  TQDict<TQWidget> m_widgetList;
  // Dictionary for current widget; contains pairs (state, script associated with current state)
  TQMap<TQString, TQString> m_atdict;
  // Current population text
  TQString m_populationText;
  // Non-enmpty script pixmap
  TQPixmap scriptPixmap;

  // Create list of all widgets on the same dialog as current widget
  // Set store to true, to update m_widgetList;
  TQStringList buildWidgetList();
  // Convert widget to string displayed in combos
  // If formatted, return formatted string, else just widget's name
  TQString widgetToString(TQWidget* widget, bool formatted = true);
  // Conver combo string to widget
  TQWidget* widgetFromString(const TQString& name);

  KTextEditor::EditInterface *associatedTextEdit;
  KTextEditor::Document *doc;
  KTextEditor::View *view;
  KPopupMenu *highlightPopup;
  int oldHlMode;
  bool readOnly;
  KAction *readOnlyAction;
};

#endif