comparison src/gui_kde_widget.h @ 11:4424b47a0797

updated for version 7.0003
author vimboss
date Wed, 30 Jun 2004 16:16:41 +0000
parents
children 3ba373b54370
comparison
equal deleted inserted replaced
10:4e2284e71352 11:4424b47a0797
1 /* vi:set ts=8 sts=0 sw=8:
2 *
3 * VIM - Vi IMproved by Bram Moolenaar
4 *
5 * Do ":help uganda" in Vim to read copying and usage conditions.
6 * Do ":help credits" in Vim to see a list of people who contributed.
7 */
8
9 /*
10 * Porting to KDE(2) was done by
11 *
12 * (C) 2000 by Thomas Capricelli <orzel@freehackers.org>
13 *
14 * Please visit http://freehackers.org/kvim for other vim- or
15 * kde-related coding.
16 *
17 * $Id$
18 *
19 */
20
21 #ifndef GUI_KDE_WIDGET
22 #define GUI_KDE_WIDGET
23
24 #if 1
25 #define dbf( format, args... ) { printf( "%s" " : " format "\n" , __FUNCTION__ , ## args ); fflush(stdout); }
26 #define db() { printf( "%s\n", __FUNCTION__ );fflush(stdout); }
27 #else
28 #define dbf(format, args... )
29 #define db()
30 #endif
31
32 #define UNIX // prevent a warning : a symbol is defined twice in X and Qt
33
34 #include <qdialog.h>
35 #include <qlabel.h>
36 #include <qsignalmapper.h>
37 #include <qtimer.h>
38 #include <qmainwindow.h>
39 #include <qapplication.h>
40 #include <qevent.h>
41 #include <qlineedit.h>
42 #include <qpainter.h>
43 #include <qwidget.h>
44 #include <qpopupmenu.h>
45 #include <klocale.h>
46 #include <kapp.h>
47 #include <kcmdlineargs.h>
48 #include <kaboutdata.h>
49 #include <keditcl.h>
50 #include <kaboutdata.h>
51 #if (KDE_VERSION>=290)
52 #include <kmainwindow.h>
53 #else
54 #include <ktmainwindow.h>
55 #endif
56 #include <kparts/part.h>
57 #include <kurl.h>
58 #include "kvim_iface.h"
59
60 #undef UNIX // prevent a warning
61 extern "C" {
62 #include "vim.h"
63 }
64
65 class QPushButton;
66 class QDialog;
67 class QLineEdit;
68 class QSignalMapper;
69 class QPaintEvent;
70
71 enum BlinkState {
72 BLINK_NONE,
73 BLINK_ON,
74 BLINK_OFF
75 };
76
77 class VimWidget : public QWidget, virtual public KVim
78 {
79 Q_OBJECT
80
81 public:
82 VimWidget( QWidget *parent=0, const char *name=0, WFlags f=0 );
83 virtual void paintEvent( QPaintEvent *);
84 void draw_string(int x, int y, QString s, int len, int flags);
85
86 /** Init the blinking time */
87 void set_blink_time( long, long, long );
88 void start_cursor_blinking();
89 void stop_cursor_blinking();
90 void wait(long);
91 #ifdef FEAT_CLIENTSERVER
92 void serverActivate(WId id);
93 #endif
94 void flash();
95
96 /** DCOP */
97 void execNormal(QString command);
98 void execInsert(QString command);
99 void execRaw(QString command);
100 void execCmd(QString command);
101 QString eval(QString expr);
102
103 bool wait_done;
104 BlinkState blink_state;
105 QPainter *painter;
106 QPopupMenu *menu;
107
108 protected:
109 virtual void keyPressEvent( QKeyEvent * );
110 virtual void mousePressEvent( QMouseEvent *);
111 virtual void mouseDoubleClickEvent( QMouseEvent *);
112 virtual void mouseReleaseEvent( QMouseEvent *);
113 virtual void mouseMoveEvent( QMouseEvent *);
114 virtual void focusInEvent( QFocusEvent * );
115 virtual void focusOutEvent( QFocusEvent * );
116 virtual void dragEnterEvent (QDragEnterEvent *);
117 virtual void dropEvent (QDropEvent *);
118 #ifdef FEAT_XIM
119 virtual void imStartEvent ( QIMEvent * );
120 virtual void imEndEvent ( QIMEvent * );
121 virtual void imComposeEvent ( QIMEvent * );
122 #endif
123
124 /* cursor blinking stuff */
125 QTimer blink_timer;
126 long blink_wait_time, blink_on_time, blink_off_time;
127
128 /* wait for input */
129 QTimer wait_timer;
130
131 public slots:
132 void blink_cursor();
133 void wait_timeout();
134 };
135
136 class VimMainWindow : public KMainWindow
137 {
138 Q_OBJECT
139
140 public:
141 VimMainWindow ( const char *name = 0L, WFlags f = WDestructiveClose );
142
143 /** called when the widget closes */
144 // bool close(bool alsoDelete);
145 VimWidget *w;
146 KEdFind *finddlg;
147 KEdReplace *repldlg;
148 int have_tearoff;
149 QTextCodec *codec;
150
151 public slots:
152 void menu_activated(int dx);
153 void clipboard_selection_update();
154 void clipboard_data_update();
155 void slotSearch();
156 void slotFind();
157 void slotReplace();
158 void slotReplaceAll();
159 void showAboutApplication();
160 void showAboutKDE();
161 void showBugReport();
162 void showTipOfTheDay();
163 void buffersToolbar();
164 bool isLocked();
165 void lock();
166 void unlock();
167
168 protected:
169 virtual void wheelEvent (QWheelEvent *);
170 virtual void resizeEvent ( QResizeEvent *e );
171
172 #if defined(FEAT_SESSION)
173 void saveGlobalProperties (KConfig *conf);
174 void readGlobalProperties (KConfig *conf);
175 #endif
176 bool queryClose();
177 bool queryExit();
178 bool locked;
179 };
180
181
182 class VimDialog : public QDialog
183 {
184 Q_OBJECT
185 public:
186 VimDialog (int type, /* type of dialog */
187 unsigned char * title, /* title of dialog */
188 unsigned char * message, /* message text */
189 unsigned char * buttons, /* names of buttons */
190 int def_but, /* default button */
191 char_u *textfield); /* input text */
192 private:
193 QSignalMapper mapper;
194 QLineEdit *entry;
195 char_u *ret;
196 int butNb;
197
198 protected slots:
199 void done(int);
200 };
201
202
203 /*
204 * QScrollBar pool
205 */
206 struct GuiScrollbar;
207
208 class SBPool : public QObject
209 {
210 Q_OBJECT
211 public:
212 SBPool(void);
213 void create(GuiScrollbar * sb, int orient);
214 void destroy(GuiScrollbar * sb);
215 public slots:
216 void sbUsed(int who);
217 private:
218 QSignalMapper mapper;
219 };
220
221 class KVimUtils {
222 public:
223 static QString convertEncodingName(QString);
224 #if QT_VERSION<300
225 static bool fromString(QFont*,QString);
226 static QString toString(QFont*);
227 #endif
228 };
229
230 extern VimMainWindow *vmw;
231 extern SBPool *sbpool;
232 extern QString *argServerName;
233
234 #endif // GUI_KDE_WIDGET