-rw-r--r-- | noncore/apps/opie-console/TEWidget.cpp | 20 | ||||
-rw-r--r-- | noncore/apps/opie-console/TEWidget.h | 30 | ||||
-rw-r--r-- | noncore/apps/opie-console/emulation_handler.cpp | 5 | ||||
-rw-r--r-- | noncore/apps/opie-console/emulation_handler.h | 3 | ||||
-rw-r--r-- | noncore/apps/opie-console/io_bt.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/opie-console/mainwindow.cpp | 40 |
6 files changed, 62 insertions, 37 deletions
diff --git a/noncore/apps/opie-console/TEWidget.cpp b/noncore/apps/opie-console/TEWidget.cpp index 75c438c..f3f462f 100644 --- a/noncore/apps/opie-console/TEWidget.cpp +++ b/noncore/apps/opie-console/TEWidget.cpp | |||
@@ -15,107 +15,110 @@ | |||
15 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ | 15 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ |
16 | /* */ | 16 | /* */ |
17 | /* -------------------------------------------------------------------------- */ | 17 | /* -------------------------------------------------------------------------- */ |
18 | /*! \class TEWidget | 18 | /*! \class TEWidget |
19 | 19 | ||
20 | \brief Visible screen contents | 20 | \brief Visible screen contents |
21 | 21 | ||
22 | This class is responsible to map the `image' of a terminal emulation to the | 22 | This class is responsible to map the `image' of a terminal emulation to the |
23 | display. All the dependency of the emulation to a specific GUI or toolkit is | 23 | display. All the dependency of the emulation to a specific GUI or toolkit is |
24 | localized here. Further, this widget has no knowledge about being part of an | 24 | localized here. Further, this widget has no knowledge about being part of an |
25 | emulation, it simply work within the terminal emulation framework by exposing | 25 | emulation, it simply work within the terminal emulation framework by exposing |
26 | size and key events and by being ordered to show a new image. | 26 | size and key events and by being ordered to show a new image. |
27 | 27 | ||
28 | <ul> | 28 | <ul> |
29 | <li> The internal image has the size of the widget (evtl. rounded up) | 29 | <li> The internal image has the size of the widget (evtl. rounded up) |
30 | <li> The external image used in setImage can have any size. | 30 | <li> The external image used in setImage can have any size. |
31 | <li> (internally) the external image is simply copied to the internal | 31 | <li> (internally) the external image is simply copied to the internal |
32 | when a setImage happens. During a resizeEvent no painting is done | 32 | when a setImage happens. During a resizeEvent no painting is done |
33 | a paintEvent is expected to follow anyway. | 33 | a paintEvent is expected to follow anyway. |
34 | </ul> | 34 | </ul> |
35 | 35 | ||
36 | \sa TEScreen \sa Emulation | 36 | \sa TEScreen \sa Emulation |
37 | */ | 37 | */ |
38 | 38 | ||
39 | /* FIXME: | 39 | /* FIXME: |
40 | - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent | 40 | - 'image' may also be used uninitialized (it isn't in fact) in resizeEvent |
41 | - 'font_a' not used in mouse events | 41 | - 'font_a' not used in mouse events |
42 | - add destructor | 42 | - add destructor |
43 | */ | 43 | */ |
44 | 44 | ||
45 | /* TODO | 45 | /* TODO |
46 | - evtl. be sensitive to `paletteChange' while using default colors. | 46 | - evtl. be sensitive to `paletteChange' while using default colors. |
47 | - set different 'rounding' styles? I.e. have a mode to show clipped chars? | 47 | - set different 'rounding' styles? I.e. have a mode to show clipped chars? |
48 | */ | 48 | */ |
49 | 49 | ||
50 | // #include "config.h" | 50 | // #include "config.h" |
51 | #include "TEWidget.h" | 51 | #include "TEWidget.h" |
52 | #include "session.h" | 52 | #include "session.h" |
53 | #include <qpe/config.h> | 53 | #include <qpe/config.h> |
54 | 54 | ||
55 | #include <qapplication.h> | 55 | #include <qapplication.h> |
56 | #include <qcursor.h> | 56 | #include <qcursor.h> |
57 | #include <qregexp.h> | 57 | #include <qregexp.h> |
58 | #include <qpainter.h> | 58 | #include <qpainter.h> |
59 | #include <qclipboard.h> | 59 | #include <qclipboard.h> |
60 | #include <qstyle.h> | 60 | #include <qstyle.h> |
61 | #include <qfile.h> | 61 | #include <qfile.h> |
62 | #include <qdragobject.h> | 62 | #include <qdragobject.h> |
63 | #include <qvbox.h> | ||
63 | 64 | ||
64 | #include <stdio.h> | 65 | #include <stdio.h> |
65 | #include <stdlib.h> | 66 | #include <stdlib.h> |
66 | #include <unistd.h> | 67 | #include <unistd.h> |
67 | #include <ctype.h> | 68 | #include <ctype.h> |
68 | #include <sys/stat.h> | 69 | #include <sys/stat.h> |
69 | #include <sys/types.h> | 70 | #include <sys/types.h> |
70 | #include <signal.h> | 71 | #include <signal.h> |
71 | 72 | ||
72 | #include <assert.h> | 73 | #include <assert.h> |
73 | 74 | ||
75 | |||
76 | |||
74 | // #include "TEWidget.moc" | 77 | // #include "TEWidget.moc" |
75 | //#include <kapp.h> | 78 | //#include <kapp.h> |
76 | //#include <kcursor.h> | 79 | //#include <kcursor.h> |
77 | //#include <kurl.h> | 80 | //#include <kurl.h> |
78 | //#include <kdebug.h> | 81 | //#include <kdebug.h> |
79 | //#include <klocale.h> | 82 | //#include <klocale.h> |
80 | 83 | ||
81 | #define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__) | 84 | #define HERE printf("%s(%d): %s\n",__FILE__,__LINE__,__FUNCTION__) |
82 | #define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); } | 85 | #define HCNT(Name) // { static int cnt = 1; printf("%s(%d): %s %d\n",__FILE__,__LINE__,Name,cnt++); } |
83 | 86 | ||
84 | #define loc(X,Y) ((Y)*columns+(X)) | 87 | #define loc(X,Y) ((Y)*columns+(X)) |
85 | 88 | ||
86 | //FIXME: the rim should normally be 1, 0 only when running in full screen mode. | 89 | //FIXME: the rim should normally be 1, 0 only when running in full screen mode. |
87 | #define rimX 0 // left/right rim width | 90 | #define rimX 0 // left/right rim width |
88 | #define rimY 0 // top/bottom rim high | 91 | #define rimY 0 // top/bottom rim high |
89 | 92 | ||
90 | #define SCRWIDTH 16 // width of the scrollbar | 93 | #define SCRWIDTH 16 // width of the scrollbar |
91 | 94 | ||
92 | #define yMouseScroll 1 | 95 | #define yMouseScroll 1 |
93 | // scroll increment used when dragging selection at top/bottom of window. | 96 | // scroll increment used when dragging selection at top/bottom of window. |
94 | 97 | ||
95 | /* ------------------------------------------------------------------------- */ | 98 | /* ------------------------------------------------------------------------- */ |
96 | /* */ | 99 | /* */ |
97 | /* Colors */ | 100 | /* Colors */ |
98 | /* */ | 101 | /* */ |
99 | /* ------------------------------------------------------------------------- */ | 102 | /* ------------------------------------------------------------------------- */ |
100 | 103 | ||
101 | //FIXME: the default color table is in session.C now. | 104 | //FIXME: the default color table is in session.C now. |
102 | // We need a way to get rid of this one, here. | 105 | // We need a way to get rid of this one, here. |
103 | static const ColorEntry base_color_table[TABLE_COLORS] = | 106 | static const ColorEntry base_color_table[TABLE_COLORS] = |
104 | // The following are almost IBM standard color codes, with some slight | 107 | // The following are almost IBM standard color codes, with some slight |
105 | // gamma correction for the dim colors to compensate for bright X screens. | 108 | // gamma correction for the dim colors to compensate for bright X screens. |
106 | // It contains the 8 ansiterm/xterm colors in 2 intensities. | 109 | // It contains the 8 ansiterm/xterm colors in 2 intensities. |
107 | { | 110 | { |
108 | // Fixme: could add faint colors here, also. | 111 | // Fixme: could add faint colors here, also. |
109 | // normal | 112 | // normal |
110 | ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback | 113 | ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 1, 0 ), // Dfore, Dback |
111 | ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red | 114 | ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red |
112 | ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow | 115 | ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow |
113 | ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta | 116 | ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta |
114 | ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White | 117 | ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White |
115 | // intensiv | 118 | // intensiv |
116 | ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), | 119 | ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), |
117 | ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), | 120 | ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), |
118 | ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), | 121 | ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), |
119 | ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), | 122 | ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), |
120 | ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) | 123 | ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) |
121 | }; | 124 | }; |
@@ -229,110 +232,118 @@ static QChar vt100extended(QChar c) | |||
229 | return c; | 232 | return c; |
230 | } | 233 | } |
231 | 234 | ||
232 | static QChar identicalMap(QChar c) | 235 | static QChar identicalMap(QChar c) |
233 | { | 236 | { |
234 | return c; | 237 | return c; |
235 | } | 238 | } |
236 | 239 | ||
237 | void TEWidget::fontChange(const QFont &) | 240 | void TEWidget::fontChange(const QFont &) |
238 | { | 241 | { |
239 | QFontMetrics fm(font()); | 242 | QFontMetrics fm(font()); |
240 | font_h = fm.height(); | 243 | font_h = fm.height(); |
241 | font_w = fm.maxWidth(); | 244 | font_w = fm.maxWidth(); |
242 | font_a = fm.ascent(); | 245 | font_a = fm.ascent(); |
243 | //printf("font_h: %d\n",font_h); | 246 | //printf("font_h: %d\n",font_h); |
244 | //printf("font_w: %d\n",font_w); | 247 | //printf("font_w: %d\n",font_w); |
245 | //printf("font_a: %d\n",font_a); | 248 | //printf("font_a: %d\n",font_a); |
246 | //printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii()); | 249 | //printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii()); |
247 | //printf("rawname: %s\n",font().rawName().ascii()); | 250 | //printf("rawname: %s\n",font().rawName().ascii()); |
248 | fontMap = | 251 | fontMap = |
249 | #if QT_VERSION < 300 | 252 | #if QT_VERSION < 300 |
250 | strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646") | 253 | strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646") |
251 | ? vt100extended | 254 | ? vt100extended |
252 | : | 255 | : |
253 | #endif | 256 | #endif |
254 | identicalMap; | 257 | identicalMap; |
255 | propagateSize(); | 258 | propagateSize(); |
256 | update(); | 259 | update(); |
257 | } | 260 | } |
258 | 261 | ||
259 | void TEWidget::setVTFont(const QFont& f) | 262 | void TEWidget::setVTFont(const QFont& f) |
260 | { | 263 | { |
261 | QFrame::setFont(f); | 264 | QFrame::setFont(f); |
262 | } | 265 | } |
263 | 266 | ||
264 | QFont TEWidget::getVTFont() { | 267 | QFont TEWidget::getVTFont() { |
265 | return font(); | 268 | return font(); |
266 | } | 269 | } |
267 | 270 | ||
268 | void TEWidget::setFont(const QFont &) | 271 | void TEWidget::setFont(const QFont &) |
269 | { | 272 | { |
270 | // ignore font change request if not coming from konsole itself | 273 | // ignore font change request if not coming from konsole itself |
271 | } | 274 | } |
272 | 275 | ||
273 | /* ------------------------------------------------------------------------- */ | 276 | /* ------------------------------------------------------------------------- */ |
274 | /* */ | 277 | /* */ |
275 | /* Constructor / Destructor */ | 278 | /* Constructor / Destructor */ |
276 | /* */ | 279 | /* */ |
277 | /* ------------------------------------------------------------------------- */ | 280 | /* ----------------------------------------------------------------------- */ |
281 | |||
282 | |||
278 | 283 | ||
279 | TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name) | 284 | TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name) |
280 | { | 285 | { |
281 | #ifndef QT_NO_CLIPBOARD | 286 | #ifndef QT_NO_CLIPBOARD |
282 | cb = QApplication::clipboard(); | 287 | cb = QApplication::clipboard(); |
283 | QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), | 288 | QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), |
284 | this, SLOT(onClearSelection()) ); | 289 | this, SLOT(onClearSelection()) ); |
285 | #endif | 290 | #endif |
286 | 291 | ||
287 | scrollbar = new QScrollBar(this); | 292 | |
293 | scrollbar = new QScrollBar( this ); | ||
288 | scrollbar->setCursor( arrowCursor ); | 294 | scrollbar->setCursor( arrowCursor ); |
289 | connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int))); | 295 | connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int))); |
290 | 296 | ||
297 | m_cornerButton = new QPushButton( this ); | ||
298 | m_cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) ); | ||
299 | m_cornerButton->setMaximumSize( 14, 14 ); | ||
300 | m_cornerButton->hide(); | ||
301 | |||
291 | Config cfg("Konsole"); | 302 | Config cfg("Konsole"); |
292 | cfg.setGroup("ScrollBar"); | 303 | cfg.setGroup("ScrollBar"); |
293 | switch( cfg.readNumEntry("Position",2)){ | 304 | switch( cfg.readNumEntry("Position",2)){ |
294 | case 0: | 305 | case 0: |
295 | scrollLoc = SCRNONE; | 306 | scrollLoc = SCRNONE; |
296 | break; | 307 | break; |
297 | case 1: | 308 | case 1: |
298 | scrollLoc = SCRLEFT; | 309 | scrollLoc = SCRLEFT; |
299 | break; | 310 | break; |
300 | case 2: | 311 | case 2: |
301 | scrollLoc = SCRRIGHT; | 312 | scrollLoc = SCRRIGHT; |
302 | break; | 313 | break; |
303 | }; | 314 | }; |
304 | 315 | ||
305 | blinkT = new QTimer(this); | 316 | blinkT = new QTimer(this); |
306 | connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent())); | 317 | connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent())); |
307 | // blinking = FALSE; | 318 | // blinking = FALSE; |
308 | blinking = TRUE; | 319 | blinking = TRUE; |
309 | 320 | ||
310 | resizing = FALSE; | 321 | resizing = FALSE; |
311 | actSel = 0; | 322 | actSel = 0; |
312 | image = 0; | 323 | image = 0; |
313 | lines = 1; | 324 | lines = 1; |
314 | columns = 1; | 325 | columns = 1; |
315 | font_w = 1; | 326 | font_w = 1; |
316 | font_h = 1; | 327 | font_h = 1; |
317 | font_a = 1; | 328 | font_a = 1; |
318 | word_selection_mode = FALSE; | 329 | word_selection_mode = FALSE; |
319 | 330 | ||
320 | setMouseMarks(TRUE); | 331 | setMouseMarks(TRUE); |
321 | setVTFont( QFont("fixed") ); | 332 | setVTFont( QFont("fixed") ); |
322 | setColorTable(base_color_table); // init color table | 333 | setColorTable(base_color_table); // init color table |
323 | 334 | ||
324 | qApp->installEventFilter( this ); //FIXME: see below | 335 | qApp->installEventFilter( this ); //FIXME: see below |
325 | // KCursor::setAutoHideCursor( this, true ); | 336 | // KCursor::setAutoHideCursor( this, true ); |
326 | 337 | ||
327 | // Init DnD //////////////////////////////////////////////////////////////// | 338 | // Init DnD //////////////////////////////////////////////////////////////// |
328 | currentSession = NULL; | 339 | currentSession = NULL; |
329 | // setAcceptDrops(true); // attempt | 340 | // setAcceptDrops(true); // attempt |
330 | // m_drop = new QPopupMenu(this); | 341 | // m_drop = new QPopupMenu(this); |
331 | // m_drop->insertItem( QString("Paste"), 0); | 342 | // m_drop->insertItem( QString("Paste"), 0); |
332 | // m_drop->insertItem( QString("cd"), 1); | 343 | // m_drop->insertItem( QString("cd"), 1); |
333 | // connect(m_drop, SIGNAL(activated(int)), SLOT(drop_menu_activated(int))); | 344 | // connect(m_drop, SIGNAL(activated(int)), SLOT(drop_menu_activated(int))); |
334 | 345 | ||
335 | // we need focus so that the auto-hide cursor feature works | 346 | // we need focus so that the auto-hide cursor feature works |
336 | setFocus(); | 347 | setFocus(); |
337 | setFocusPolicy( WheelFocus ); | 348 | setFocusPolicy( WheelFocus ); |
338 | } | 349 | } |
@@ -809,97 +820,97 @@ void TEWidget::mouseDoubleClickEvent(QMouseEvent* ev) | |||
809 | QPoint tL = contentsRect().topLeft(); | 820 | QPoint tL = contentsRect().topLeft(); |
810 | int tLx = tL.x(); | 821 | int tLx = tL.x(); |
811 | int tLy = tL.y(); | 822 | int tLy = tL.y(); |
812 | QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); | 823 | QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); |
813 | 824 | ||
814 | // pass on double click as two clicks. | 825 | // pass on double click as two clicks. |
815 | if (!mouse_marks && !(ev->state() & ShiftButton)) | 826 | if (!mouse_marks && !(ev->state() & ShiftButton)) |
816 | { | 827 | { |
817 | emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button | 828 | emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button |
818 | emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release | 829 | emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release |
819 | emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button | 830 | emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button |
820 | return; | 831 | return; |
821 | } | 832 | } |
822 | 833 | ||
823 | 834 | ||
824 | emit clearSelectionSignal(); | 835 | emit clearSelectionSignal(); |
825 | QPoint bgnSel = pos; | 836 | QPoint bgnSel = pos; |
826 | QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); | 837 | QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); |
827 | int i = loc(bgnSel.x(),bgnSel.y()); | 838 | int i = loc(bgnSel.x(),bgnSel.y()); |
828 | iPntSel = bgnSel; | 839 | iPntSel = bgnSel; |
829 | 840 | ||
830 | word_selection_mode = TRUE; | 841 | word_selection_mode = TRUE; |
831 | 842 | ||
832 | // find word boundaries... | 843 | // find word boundaries... |
833 | int selClass = charClass(image[i].c); | 844 | int selClass = charClass(image[i].c); |
834 | { | 845 | { |
835 | // set the start... | 846 | // set the start... |
836 | int x = bgnSel.x(); | 847 | int x = bgnSel.x(); |
837 | while ( x > 0 && charClass(image[i-1].c) == selClass ) | 848 | while ( x > 0 && charClass(image[i-1].c) == selClass ) |
838 | { i--; x--; } | 849 | { i--; x--; } |
839 | bgnSel.setX(x); | 850 | bgnSel.setX(x); |
840 | emit beginSelectionSignal( bgnSel.x(), bgnSel.y() ); | 851 | emit beginSelectionSignal( bgnSel.x(), bgnSel.y() ); |
841 | 852 | ||
842 | // set the end... | 853 | // set the end... |
843 | i = loc( endSel.x(), endSel.y() ); | 854 | i = loc( endSel.x(), endSel.y() ); |
844 | x = endSel.x(); | 855 | x = endSel.x(); |
845 | while( x < columns-1 && charClass(image[i+1].c) == selClass ) | 856 | while( x < columns-1 && charClass(image[i+1].c) == selClass ) |
846 | { i++; x++ ; } | 857 | { i++; x++ ; } |
847 | endSel.setX(x); | 858 | endSel.setX(x); |
848 | actSel = 2; // within selection | 859 | actSel = 2; // within selection |
849 | emit extendSelectionSignal( endSel.x(), endSel.y() ); | 860 | emit extendSelectionSignal( endSel.x(), endSel.y() ); |
850 | emit endSelectionSignal(preserve_line_breaks); | 861 | emit endSelectionSignal(preserve_line_breaks); |
851 | preserve_line_breaks = TRUE; | 862 | preserve_line_breaks = TRUE; |
852 | } | 863 | } |
853 | } | 864 | } |
854 | 865 | ||
855 | void TEWidget::focusInEvent( QFocusEvent * ) | 866 | void TEWidget::focusInEvent( QFocusEvent * ) |
856 | { | 867 | { |
857 | 868 | ||
858 | // do nothing, to prevent repainting | 869 | // do nothing, to prevent repainting |
859 | } | 870 | } |
860 | 871 | ||
861 | 872 | ||
862 | void TEWidget::focusOutEvent( QFocusEvent * ) | 873 | void TEWidget::focusOutEvent( QFocusEvent * ) |
863 | { | 874 | { |
864 | // do nothing, to prevent repainting | 875 | // do nothing, to prevent repainting |
865 | } | 876 | } |
866 | 877 | ||
867 | bool TEWidget::focusNextPrevChild( bool next ) | 878 | bool TEWidget::focusNextPrevChild( bool next ) |
868 | { | 879 | { |
869 | if (next) | 880 | if (next) |
870 | return false; // This disables changing the active part in konqueror | 881 | return false; // This disables changing the active part in konqueror |
871 | // when pressing Tab | 882 | // when pressing Tab |
872 | return QFrame::focusNextPrevChild( next ); | 883 | return QFrame::focusNextPrevChild( next ); |
873 | } | 884 | } |
874 | 885 | ||
875 | 886 | ||
876 | int TEWidget::charClass(char ch) const | 887 | int TEWidget::charClass(char ch) const |
877 | { | 888 | { |
878 | // This might seem like overkill, but imagine if ch was a Unicode | 889 | // This might seem like overkill, but imagine if ch was a Unicode |
879 | // character (Qt 2.0 QChar) - it might then be sensible to separate | 890 | // character (Qt 2.0 QChar) - it might then be sensible to separate |
880 | // the different language ranges, etc. | 891 | // the different language ranges, etc. |
881 | 892 | ||
882 | if ( isspace(ch) ) return ' '; | 893 | if ( isspace(ch) ) return ' '; |
883 | 894 | ||
884 | static const char *word_characters = ":@-./_~"; | 895 | static const char *word_characters = ":@-./_~"; |
885 | if ( isalnum(ch) || strchr(word_characters, ch) ) | 896 | if ( isalnum(ch) || strchr(word_characters, ch) ) |
886 | return 'a'; | 897 | return 'a'; |
887 | 898 | ||
888 | // Everything else is weird | 899 | // Everything else is weird |
889 | return 1; | 900 | return 1; |
890 | } | 901 | } |
891 | 902 | ||
892 | void TEWidget::setMouseMarks(bool on) | 903 | void TEWidget::setMouseMarks(bool on) |
893 | { | 904 | { |
894 | mouse_marks = on; | 905 | mouse_marks = on; |
895 | setCursor( mouse_marks ? ibeamCursor : arrowCursor ); | 906 | setCursor( mouse_marks ? ibeamCursor : arrowCursor ); |
896 | } | 907 | } |
897 | 908 | ||
898 | /* ------------------------------------------------------------------------- */ | 909 | /* ------------------------------------------------------------------------- */ |
899 | /* */ | 910 | /* */ |
900 | /* Clipboard */ | 911 | /* Clipboard */ |
901 | /* */ | 912 | /* */ |
902 | /* ------------------------------------------------------------------------- */ | 913 | /* ------------------------------------------------------------------------- */ |
903 | 914 | ||
904 | #undef KeyPress | 915 | #undef KeyPress |
905 | 916 | ||
@@ -1217,48 +1228,51 @@ void TEWidget::dropEvent(QDropEvent* event) | |||
1217 | } | 1228 | } |
1218 | // kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; | 1229 | // kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; |
1219 | } | 1230 | } |
1220 | } | 1231 | } |
1221 | } | 1232 | } |
1222 | else if(QTextDrag::decode(event, dropText)) { | 1233 | else if(QTextDrag::decode(event, dropText)) { |
1223 | // kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; | 1234 | // kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; |
1224 | if (currentSession) { | 1235 | if (currentSession) { |
1225 | currentSession->getEmulation()->sendString(dropText.local8Bit()); | 1236 | currentSession->getEmulation()->sendString(dropText.local8Bit()); |
1226 | } | 1237 | } |
1227 | // Paste it | 1238 | // Paste it |
1228 | } | 1239 | } |
1229 | } | 1240 | } |
1230 | #endif | 1241 | #endif |
1231 | 1242 | ||
1232 | 1243 | ||
1233 | void TEWidget::drop_menu_activated(int item) | 1244 | void TEWidget::drop_menu_activated(int item) |
1234 | { | 1245 | { |
1235 | #ifndef QT_NO_DRAGANDDROP | 1246 | #ifndef QT_NO_DRAGANDDROP |
1236 | switch (item) | 1247 | switch (item) |
1237 | { | 1248 | { |
1238 | case 0: // paste | 1249 | case 0: // paste |
1239 | currentSession->getEmulation()->sendString(dropText.local8Bit()); | 1250 | currentSession->getEmulation()->sendString(dropText.local8Bit()); |
1240 | // KWM::activate((Window)this->winId()); | 1251 | // KWM::activate((Window)this->winId()); |
1241 | break; | 1252 | break; |
1242 | case 1: // cd ... | 1253 | case 1: // cd ... |
1243 | currentSession->getEmulation()->sendString("cd "); | 1254 | currentSession->getEmulation()->sendString("cd "); |
1244 | struct stat statbuf; | 1255 | struct stat statbuf; |
1245 | if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 ) | 1256 | if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 ) |
1246 | { | 1257 | { |
1247 | if ( !S_ISDIR(statbuf.st_mode) ) | 1258 | if ( !S_ISDIR(statbuf.st_mode) ) |
1248 | { | 1259 | { |
1249 | /* | 1260 | /* |
1250 | KURL url; | 1261 | KURL url; |
1251 | url.setPath( dropText ); | 1262 | url.setPath( dropText ); |
1252 | dropText = url.directory( true, false ); // remove filename | 1263 | dropText = url.directory( true, false ); // remove filename |
1253 | */ | 1264 | */ |
1254 | } | 1265 | } |
1255 | } | 1266 | } |
1256 | dropText.replace(QRegExp(" "), "\\ "); // escape spaces | 1267 | dropText.replace(QRegExp(" "), "\\ "); // escape spaces |
1257 | currentSession->getEmulation()->sendString(dropText.local8Bit()); | 1268 | currentSession->getEmulation()->sendString(dropText.local8Bit()); |
1258 | currentSession->getEmulation()->sendString("\n"); | 1269 | currentSession->getEmulation()->sendString("\n"); |
1259 | // KWM::activate((Window)this->winId()); | 1270 | // KWM::activate((Window)this->winId()); |
1260 | break; | 1271 | break; |
1261 | } | 1272 | } |
1262 | #endif | 1273 | #endif |
1263 | } | 1274 | } |
1264 | 1275 | ||
1276 | QPushButton* TEWidget::cornerButton() { | ||
1277 | return m_cornerButton; | ||
1278 | } | ||
diff --git a/noncore/apps/opie-console/TEWidget.h b/noncore/apps/opie-console/TEWidget.h index 40e1aea..1b5300f 100644 --- a/noncore/apps/opie-console/TEWidget.h +++ b/noncore/apps/opie-console/TEWidget.h | |||
@@ -1,202 +1,228 @@ | |||
1 | /* ----------------------------------------------------------------------- */ | 1 | /* ----------------------------------------------------------------------- */ |
2 | /* */ | 2 | /* */ |
3 | /* [te_widget.h] Terminal Emulation Widget */ | 3 | /* [te_widget.h] Terminal Emulation Widget */ |
4 | /* */ | 4 | /* */ |
5 | /* ----------------------------------------------------------------------- */ | 5 | /* ----------------------------------------------------------------------- */ |
6 | /* */ | 6 | /* */ |
7 | /* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */ | 7 | /* Copyright (c) 1997,1998 by Lars Doelle <lars.doelle@on-line.de> */ |
8 | /* */ | 8 | /* */ |
9 | /* This file is part of Konsole - an X terminal for KDE */ | 9 | /* This file is part of Konsole - an X terminal for KDE */ |
10 | /* */ | 10 | /* */ |
11 | /* ----------------------------------------------------------------------- */ | 11 | /* ----------------------------------------------------------------------- */ |
12 | /* */ | 12 | /* */ |
13 | /* Ported Konsole to Qt/Embedded */ | 13 | /* Ported Konsole to Qt/Embedded */ |
14 | /* */ | 14 | /* */ |
15 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ | 15 | /* Copyright (C) 2000 by John Ryland <jryland@trolltech.com> */ |
16 | /* */ | 16 | /* */ |
17 | /* -------------------------------------------------------------------------- */ | 17 | /* -------------------------------------------------------------------------- */ |
18 | #ifndef TE_WIDGET_H | 18 | #ifndef TE_WIDGET_H |
19 | #define TE_WIDGET_H | 19 | #define TE_WIDGET_H |
20 | 20 | ||
21 | #include <qwidget.h> | 21 | #include <qwidget.h> |
22 | #include <qlabel.h> | 22 | #include <qlabel.h> |
23 | #include <qtimer.h> | 23 | #include <qtimer.h> |
24 | #include <qcolor.h> | 24 | #include <qcolor.h> |
25 | #include <qkeycode.h> | 25 | #include <qkeycode.h> |
26 | #include <qscrollbar.h> | 26 | #include <qscrollbar.h> |
27 | 27 | ||
28 | #include <qpopupmenu.h> | 28 | #include <qpopupmenu.h> |
29 | #include <qpushbutton.h> | ||
29 | 30 | ||
30 | #include "TECommon.h" | 31 | #include "TECommon.h" |
31 | 32 | ||
32 | extern unsigned short vt100_graphics[32]; | 33 | extern unsigned short vt100_graphics[32]; |
33 | 34 | ||
35 | |||
36 | |||
37 | static char * menu_xpm[] = { | ||
38 | "12 12 5 1", | ||
39 | " c None", | ||
40 | ".c #000000", | ||
41 | "+c #FFFDAD", | ||
42 | "@c #FFFF00", | ||
43 | "#c #E5E100", | ||
44 | " ", | ||
45 | " ", | ||
46 | " ......... ", | ||
47 | " .+++++++. ", | ||
48 | " .+@@@@#. ", | ||
49 | " .+@@@#. ", | ||
50 | " .+@@#. ", | ||
51 | " .+@#. ", | ||
52 | " .+#. ", | ||
53 | " .+. ", | ||
54 | " .. ", | ||
55 | " "}; | ||
56 | |||
34 | class TESession; | 57 | class TESession; |
35 | 58 | ||
36 | // class Konsole; | 59 | // class Konsole; |
37 | 60 | ||
38 | class TEWidget : public QFrame | 61 | class TEWidget : public QFrame |
39 | // a widget representing attributed text | 62 | // a widget representing attributed text |
40 | { Q_OBJECT | 63 | { |
64 | Q_OBJECT | ||
41 | 65 | ||
42 | // friend class Konsole; | 66 | // friend class Konsole; |
43 | 67 | ||
44 | public: | 68 | public: |
45 | 69 | ||
46 | TEWidget(QWidget *parent=0, const char *name=0); | 70 | TEWidget(QWidget *parent=0, const char *name=0); |
47 | virtual ~TEWidget(); | 71 | virtual ~TEWidget(); |
48 | 72 | ||
49 | public: | 73 | public: |
50 | 74 | ||
51 | QColor getDefaultBackColor(); | 75 | QColor getDefaultBackColor(); |
76 | QPushButton *cornerButton(); | ||
52 | 77 | ||
53 | const ColorEntry* getColorTable() const; | 78 | const ColorEntry* getColorTable() const; |
54 | const ColorEntry* getdefaultColorTable() const; | 79 | const ColorEntry* getdefaultColorTable() const; |
55 | void setColorTable(const ColorEntry table[]); | 80 | void setColorTable(const ColorEntry table[]); |
56 | 81 | ||
57 | void setScrollbarLocation(int loc); | 82 | void setScrollbarLocation(int loc); |
58 | enum { SCRNONE=0, SCRLEFT=1, SCRRIGHT=2 }; | 83 | enum { SCRNONE=0, SCRLEFT=1, SCRRIGHT=2 }; |
59 | 84 | ||
60 | void setScroll(int cursor, int lines); | 85 | void setScroll(int cursor, int lines); |
61 | void doScroll(int lines); | 86 | void doScroll(int lines); |
62 | 87 | ||
63 | void emitSelection(); | 88 | void emitSelection(); |
64 | 89 | ||
65 | public: | 90 | public: |
66 | 91 | ||
67 | void setImage(const ca* const newimg, int lines, int columns); | 92 | void setImage(const ca* const newimg, int lines, int columns); |
68 | 93 | ||
69 | int Lines() { return lines; } | 94 | int Lines() { return lines; } |
70 | int Columns() { return columns; } | 95 | int Columns() { return columns; } |
71 | 96 | ||
72 | void calcGeometry(); | 97 | void calcGeometry(); |
73 | void propagateSize(); | 98 | void propagateSize(); |
74 | QSize calcSize(int cols, int lins) const; | 99 | QSize calcSize(int cols, int lins) const; |
75 | 100 | ||
76 | QSize sizeHint() const; | 101 | QSize sizeHint() const; |
77 | 102 | ||
78 | public: | 103 | public: |
79 | 104 | ||
80 | void Bell(); | 105 | void Bell(); |
81 | void emitText(QString text); | 106 | void emitText(QString text); |
82 | void pasteClipboard(); | 107 | void pasteClipboard(); |
83 | 108 | ||
84 | signals: | 109 | signals: |
85 | 110 | ||
86 | void keyPressedSignal(QKeyEvent *e); | 111 | void keyPressedSignal(QKeyEvent *e); |
87 | void mouseSignal(int cb, int cx, int cy); | 112 | void mouseSignal(int cb, int cx, int cy); |
88 | void changedImageSizeSignal(int lines, int columns); | 113 | void changedImageSizeSignal(int lines, int columns); |
89 | void changedHistoryCursor(int value); | 114 | void changedHistoryCursor(int value); |
90 | void configureRequest( TEWidget*, int state, int x, int y ); | 115 | void configureRequest( TEWidget*, int state, int x, int y ); |
91 | 116 | ||
92 | void clearSelectionSignal(); | 117 | void clearSelectionSignal(); |
93 | void beginSelectionSignal( const int x, const int y ); | 118 | void beginSelectionSignal( const int x, const int y ); |
94 | void extendSelectionSignal( const int x, const int y ); | 119 | void extendSelectionSignal( const int x, const int y ); |
95 | void endSelectionSignal(const BOOL preserve_line_breaks); | 120 | void endSelectionSignal(const BOOL preserve_line_breaks); |
96 | 121 | ||
97 | 122 | ||
98 | protected: | 123 | protected: |
99 | 124 | ||
100 | virtual void styleChange( QStyle& ); | 125 | virtual void styleChange( QStyle& ); |
101 | 126 | ||
102 | bool eventFilter( QObject *, QEvent * ); | 127 | bool eventFilter( QObject *, QEvent * ); |
103 | 128 | ||
104 | void drawAttrStr(QPainter &paint, QRect rect, | 129 | void drawAttrStr(QPainter &paint, QRect rect, |
105 | QString& str, ca attr, BOOL pm, BOOL clear); | 130 | QString& str, ca attr, BOOL pm, BOOL clear); |
106 | void paintEvent( QPaintEvent * ); | 131 | void paintEvent( QPaintEvent * ); |
107 | 132 | ||
108 | void resizeEvent(QResizeEvent*); | 133 | void resizeEvent(QResizeEvent*); |
109 | 134 | ||
110 | void fontChange(const QFont &font); | 135 | void fontChange(const QFont &font); |
111 | void frameChanged(); | 136 | void frameChanged(); |
112 | 137 | ||
113 | void mouseDoubleClickEvent(QMouseEvent* ev); | 138 | void mouseDoubleClickEvent(QMouseEvent* ev); |
114 | void mousePressEvent( QMouseEvent* ); | 139 | void mousePressEvent( QMouseEvent* ); |
115 | void mouseReleaseEvent( QMouseEvent* ); | 140 | void mouseReleaseEvent( QMouseEvent* ); |
116 | void mouseMoveEvent( QMouseEvent* ); | 141 | void mouseMoveEvent( QMouseEvent* ); |
117 | 142 | ||
118 | void focusInEvent( QFocusEvent * ); | 143 | void focusInEvent( QFocusEvent * ); |
119 | void focusOutEvent( QFocusEvent * ); | 144 | void focusOutEvent( QFocusEvent * ); |
120 | bool focusNextPrevChild( bool next ); | 145 | bool focusNextPrevChild( bool next ); |
121 | 146 | ||
122 | #ifndef QT_NO_DRAGANDDROP | 147 | #ifndef QT_NO_DRAGANDDROP |
123 | // Dnd | 148 | // Dnd |
124 | void dragEnterEvent(QDragEnterEvent* event); | 149 | void dragEnterEvent(QDragEnterEvent* event); |
125 | void dropEvent(QDropEvent* event); | 150 | void dropEvent(QDropEvent* event); |
126 | #endif | 151 | #endif |
127 | 152 | ||
128 | virtual int charClass(char) const; | 153 | virtual int charClass(char) const; |
129 | 154 | ||
130 | void clearImage(); | 155 | void clearImage(); |
131 | 156 | ||
132 | public: | 157 | public: |
133 | const QPixmap *backgroundPixmap(); | 158 | const QPixmap *backgroundPixmap(); |
134 | 159 | ||
135 | void setSelection(const QString &t); | 160 | void setSelection(const QString &t); |
136 | 161 | ||
137 | virtual void setFont(const QFont &); | 162 | virtual void setFont(const QFont &); |
138 | void setVTFont(const QFont &); | 163 | void setVTFont(const QFont &); |
139 | QFont getVTFont(); | 164 | QFont getVTFont(); |
140 | 165 | ||
141 | void setMouseMarks(bool on); | 166 | void setMouseMarks(bool on); |
142 | 167 | ||
143 | public slots: | 168 | public slots: |
144 | 169 | ||
145 | void onClearSelection(); | 170 | void onClearSelection(); |
146 | 171 | ||
147 | protected slots: | 172 | protected slots: |
148 | 173 | ||
149 | void scrollChanged(int value); | 174 | void scrollChanged(int value); |
150 | void blinkEvent(); | 175 | void blinkEvent(); |
151 | 176 | ||
152 | private: | 177 | private: |
153 | 178 | ||
154 | QChar (*fontMap)(QChar); // possible vt100 font extention | 179 | QChar (*fontMap)(QChar); // possible vt100 font extention |
155 | 180 | ||
156 | bool fixed_font; // has fixed pitch | 181 | bool fixed_font; // has fixed pitch |
157 | int font_h; // height | 182 | int font_h; // height |
158 | int font_w; // width | 183 | int font_w; // width |
159 | int font_a; // ascend | 184 | int font_a; // ascend |
160 | 185 | ||
161 | int blX; // actual offset (left) | 186 | int blX; // actual offset (left) |
162 | int brX; // actual offset (right) | 187 | int brX; // actual offset (right) |
163 | int bY; // actual offset | 188 | int bY; // actual offset |
164 | 189 | ||
165 | int lines; | 190 | int lines; |
166 | int columns; | 191 | int columns; |
167 | ca *image; // [lines][columns] | 192 | ca *image; // [lines][columns] |
168 | 193 | ||
169 | ColorEntry color_table[TABLE_COLORS]; | 194 | ColorEntry color_table[TABLE_COLORS]; |
170 | 195 | ||
171 | BOOL resizing; | 196 | BOOL resizing; |
172 | bool mouse_marks; | 197 | bool mouse_marks; |
173 | 198 | ||
174 | void makeImage(); | 199 | void makeImage(); |
175 | 200 | ||
176 | QPoint iPntSel; // initial selection point | 201 | QPoint iPntSel; // initial selection point |
177 | QPoint pntSel; // current selection point | 202 | QPoint pntSel; // current selection point |
178 | int actSel; // selection state | 203 | int actSel; // selection state |
179 | BOOL word_selection_mode; | 204 | BOOL word_selection_mode; |
180 | BOOL preserve_line_breaks; | 205 | BOOL preserve_line_breaks; |
181 | 206 | ||
207 | QPushButton *m_cornerButton; | ||
182 | QClipboard* cb; | 208 | QClipboard* cb; |
183 | QScrollBar* scrollbar; | 209 | QScrollBar* scrollbar; |
184 | int scrollLoc; | 210 | int scrollLoc; |
185 | 211 | ||
186 | //#define SCRNONE 0 | 212 | //#define SCRNONE 0 |
187 | //#define SCRLEFT 1 | 213 | //#define SCRLEFT 1 |
188 | //#define SCRRIGHT 2 | 214 | //#define SCRRIGHT 2 |
189 | 215 | ||
190 | BOOL blinking; // hide text in paintEvent | 216 | BOOL blinking; // hide text in paintEvent |
191 | BOOL hasBlinker; // has characters to blink | 217 | BOOL hasBlinker; // has characters to blink |
192 | QTimer* blinkT; // active when hasBlinker | 218 | QTimer* blinkT; // active when hasBlinker |
193 | QPopupMenu* m_drop; | 219 | QPopupMenu* m_drop; |
194 | QString dropText; | 220 | QString dropText; |
195 | public: | 221 | public: |
196 | // current session in this widget | 222 | // current session in this widget |
197 | TESession *currentSession; | 223 | TESession *currentSession; |
198 | private slots: | 224 | private slots: |
199 | void drop_menu_activated(int item); | 225 | void drop_menu_activated(int item); |
200 | }; | 226 | }; |
201 | 227 | ||
202 | #endif // TE_WIDGET_H | 228 | #endif // TE_WIDGET_H |
diff --git a/noncore/apps/opie-console/emulation_handler.cpp b/noncore/apps/opie-console/emulation_handler.cpp index b2cd348..8846959 100644 --- a/noncore/apps/opie-console/emulation_handler.cpp +++ b/noncore/apps/opie-console/emulation_handler.cpp | |||
@@ -1,49 +1,50 @@ | |||
1 | #include <qwidget.h> | 1 | #include <qwidget.h> |
2 | #include <qpushbutton.h> | ||
2 | 3 | ||
3 | #include "TEWidget.h" | 4 | #include "TEWidget.h" |
4 | #include "TEmuVt102.h" | 5 | #include "TEmuVt102.h" |
5 | 6 | ||
6 | #include "profile.h" | 7 | #include "profile.h" |
7 | #include "emulation_handler.h" | 8 | #include "emulation_handler.h" |
8 | 9 | ||
9 | 10 | ||
10 | EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const char* name ) | 11 | EmulationHandler::EmulationHandler( const Profile& prof, QWidget* parent,const char* name ) |
11 | : QObject(0, name ) | 12 | : QObject(0, name ) |
12 | { | 13 | { |
13 | m_teWid = new TEWidget( parent, "TerminalMain"); | 14 | m_teWid = new TEWidget( parent, "TerminalMain"); |
14 | m_teWid->setMinimumSize(150, 70 ); | 15 | m_teWid->setMinimumSize(150, 70 ); |
15 | parent->resize( m_teWid->calcSize(80, 24 ) ); | 16 | parent->resize( m_teWid->calcSize(80, 24 ) ); |
16 | m_teEmu = new TEmuVt102(m_teWid ); | 17 | m_teEmu = new TEmuVt102(m_teWid ); |
17 | 18 | ||
18 | connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ), | 19 | connect(m_teEmu,SIGNAL(ImageSizeChanged(int, int) ), |
19 | this, SIGNAL(changeSize(int, int) ) ); | 20 | this, SIGNAL(changeSize(int, int) ) ); |
20 | connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ), | 21 | connect(m_teEmu, SIGNAL(sndBlock(const char*, int) ), |
21 | this, SLOT(recvEmulation(const char*, int) ) ); | 22 | this, SLOT(recvEmulation(const char*, int) ) ); |
22 | m_teEmu->setConnect( true ); | 23 | m_teEmu->setConnect( true ); |
23 | m_teEmu->setHistory( TRUE ); | 24 | m_teEmu->setHistory( TRUE ); |
24 | load( prof ); | 25 | load( prof ); |
25 | 26 | ||
26 | 27 | ||
27 | 28 | ||
28 | } | 29 | } |
29 | EmulationHandler::~EmulationHandler() { | 30 | EmulationHandler::~EmulationHandler() { |
30 | delete m_teEmu; | 31 | delete m_teEmu; |
31 | delete m_teWid; | 32 | delete m_teWid; |
32 | } | 33 | } |
33 | void EmulationHandler::load( const Profile& prof) { | 34 | void EmulationHandler::load( const Profile& prof) { |
34 | m_teWid->setVTFont( font( prof.readNumEntry("Font") ) ); | 35 | m_teWid->setVTFont( font( prof.readNumEntry("Font") ) ); |
35 | int num = prof.readNumEntry("Color"); | 36 | int num = prof.readNumEntry("Color"); |
36 | setColor( foreColor(num), backColor(num) ); | 37 | setColor( foreColor(num), backColor(num) ); |
37 | m_teWid->setBackgroundColor(backColor(num) ); | 38 | m_teWid->setBackgroundColor(backColor(num) ); |
38 | } | 39 | } |
39 | void EmulationHandler::recv( const QByteArray& ar) { | 40 | void EmulationHandler::recv( const QByteArray& ar) { |
40 | m_teEmu->onRcvBlock(ar.data(), ar.count() ); | 41 | m_teEmu->onRcvBlock(ar.data(), ar.count() ); |
41 | } | 42 | } |
42 | void EmulationHandler::recvEmulation(const char* src, int len ) { | 43 | void EmulationHandler::recvEmulation(const char* src, int len ) { |
43 | QByteArray ar(len); | 44 | QByteArray ar(len); |
44 | 45 | ||
45 | memcpy(ar.data(), src, sizeof(char) * len ); | 46 | memcpy(ar.data(), src, sizeof(char) * len ); |
46 | 47 | ||
47 | emit send(ar); | 48 | emit send(ar); |
48 | } | 49 | } |
49 | QWidget* EmulationHandler::widget() { | 50 | QWidget* EmulationHandler::widget() { |
@@ -95,48 +96,52 @@ QColor EmulationHandler::foreColor(int col) { | |||
95 | QColor co; | 96 | QColor co; |
96 | /* we need to switch it */ | 97 | /* we need to switch it */ |
97 | switch( col ) { | 98 | switch( col ) { |
98 | default: | 99 | default: |
99 | case Profile::White: | 100 | case Profile::White: |
100 | /* color is black */ | 101 | /* color is black */ |
101 | co = Qt::white; | 102 | co = Qt::white; |
102 | break; | 103 | break; |
103 | case Profile::Black: | 104 | case Profile::Black: |
104 | co = Qt::black; | 105 | co = Qt::black; |
105 | break; | 106 | break; |
106 | case Profile::Green: | 107 | case Profile::Green: |
107 | qWarning("Foreground green"); | 108 | qWarning("Foreground green"); |
108 | co = Qt::green; | 109 | co = Qt::green; |
109 | break; | 110 | break; |
110 | case Profile::Orange: | 111 | case Profile::Orange: |
111 | qWarning("Foreground orange"); | 112 | qWarning("Foreground orange"); |
112 | // FIXME needs better color here | 113 | // FIXME needs better color here |
113 | co = Qt::darkYellow; | 114 | co = Qt::darkYellow; |
114 | break; | 115 | break; |
115 | } | 116 | } |
116 | 117 | ||
117 | return co; | 118 | return co; |
118 | } | 119 | } |
119 | QColor EmulationHandler::backColor(int col ) { | 120 | QColor EmulationHandler::backColor(int col ) { |
120 | QColor co; | 121 | QColor co; |
121 | /* we need to switch it */ | 122 | /* we need to switch it */ |
122 | switch( col ) { | 123 | switch( col ) { |
123 | default: | 124 | default: |
124 | case Profile::White: | 125 | case Profile::White: |
125 | /* color is white */ | 126 | /* color is white */ |
126 | co = Qt::black; | 127 | co = Qt::black; |
127 | break; | 128 | break; |
128 | case Profile::Black: | 129 | case Profile::Black: |
129 | co = Qt::white; | 130 | co = Qt::white; |
130 | break; | 131 | break; |
131 | case Profile::Green: | 132 | case Profile::Green: |
132 | qWarning("Background black"); | 133 | qWarning("Background black"); |
133 | co = Qt::black; | 134 | co = Qt::black; |
134 | break; | 135 | break; |
135 | case Profile::Orange: | 136 | case Profile::Orange: |
136 | qWarning("Background black"); | 137 | qWarning("Background black"); |
137 | co = Qt::black; | 138 | co = Qt::black; |
138 | break; | 139 | break; |
139 | } | 140 | } |
140 | 141 | ||
141 | return co; | 142 | return co; |
142 | } | 143 | } |
144 | |||
145 | QPushButton* EmulationHandler::cornerButton() { | ||
146 | return m_teWid->cornerButton(); | ||
147 | } | ||
diff --git a/noncore/apps/opie-console/emulation_handler.h b/noncore/apps/opie-console/emulation_handler.h index 9af7680..9ceafc6 100644 --- a/noncore/apps/opie-console/emulation_handler.h +++ b/noncore/apps/opie-console/emulation_handler.h | |||
@@ -1,70 +1,73 @@ | |||
1 | #ifndef OPIE_EMULATION_HANDLER_H | 1 | #ifndef OPIE_EMULATION_HANDLER_H |
2 | #define OPIE_EMULATION_HANDLER_H | 2 | #define OPIE_EMULATION_HANDLER_H |
3 | 3 | ||
4 | #include <qobject.h> | 4 | #include <qobject.h> |
5 | #include <qcolor.h> | 5 | #include <qcolor.h> |
6 | #include <qcstring.h> | 6 | #include <qcstring.h> |
7 | 7 | ||
8 | /* | 8 | /* |
9 | * Badly ibotty lacks the time to finish | 9 | * Badly ibotty lacks the time to finish |
10 | * his widget in time.. | 10 | * his widget in time.. |
11 | * Never the less we've to have an EmulationWidget | 11 | * Never the less we've to have an EmulationWidget |
12 | * This is why I'm taking the inferior not cleaned | 12 | * This is why I'm taking the inferior not cleaned |
13 | * up TE* KDE STUFF | 13 | * up TE* KDE STUFF |
14 | */ | 14 | */ |
15 | 15 | ||
16 | /** | 16 | /** |
17 | * This is the layer above the IOLayer* | 17 | * This is the layer above the IOLayer* |
18 | * This nice QObject here will get stuff from | 18 | * This nice QObject here will get stuff from |
19 | * got a slot and a signal | 19 | * got a slot and a signal |
20 | * the signal for data | 20 | * the signal for data |
21 | * the slot for receiving | 21 | * the slot for receiving |
22 | * it'll set up the widget internally | 22 | * it'll set up the widget internally |
23 | * and manage the communication between | 23 | * and manage the communication between |
24 | * the pre QByteArray world! | 24 | * the pre QByteArray world! |
25 | */ | 25 | */ |
26 | class Profile; | 26 | class Profile; |
27 | class QWidget; | 27 | class QWidget; |
28 | class QPushButton; | ||
28 | class TEWidget; | 29 | class TEWidget; |
29 | class TEmulation; | 30 | class TEmulation; |
30 | class QFont; | 31 | class QFont; |
31 | class EmulationHandler : public QObject { | 32 | class EmulationHandler : public QObject { |
32 | Q_OBJECT | 33 | Q_OBJECT |
33 | public: | 34 | public: |
34 | /** | 35 | /** |
35 | * simple c'tor the parent of the TEWdiget | 36 | * simple c'tor the parent of the TEWdiget |
36 | * and a name | 37 | * and a name |
37 | * and a Profile | 38 | * and a Profile |
38 | */ | 39 | */ |
39 | EmulationHandler( const Profile&, QWidget* parent, const char* name = 0l ); | 40 | EmulationHandler( const Profile&, QWidget* parent, const char* name = 0l ); |
40 | 41 | ||
41 | /** | 42 | /** |
42 | * delete all components | 43 | * delete all components |
43 | */ | 44 | */ |
44 | ~EmulationHandler(); | 45 | ~EmulationHandler(); |
45 | 46 | ||
46 | void load( const Profile& ); | 47 | void load( const Profile& ); |
47 | QWidget* widget(); | 48 | QWidget* widget(); |
48 | void setColor( const QColor& fore, const QColor& back ); | 49 | void setColor( const QColor& fore, const QColor& back ); |
50 | QPushButton* cornerButton(); | ||
51 | |||
49 | signals: | 52 | signals: |
50 | void send( const QByteArray& ); | 53 | void send( const QByteArray& ); |
51 | void changeSize(int rows, int cols ); | 54 | void changeSize(int rows, int cols ); |
52 | 55 | ||
53 | 56 | ||
54 | public slots: | 57 | public slots: |
55 | void recv( const QByteArray& ); | 58 | void recv( const QByteArray& ); |
56 | 59 | ||
57 | private slots: | 60 | private slots: |
58 | void recvEmulation( const char*, int len ); | 61 | void recvEmulation( const char*, int len ); |
59 | private: | 62 | private: |
60 | QFont font( int ); | 63 | QFont font( int ); |
61 | QColor foreColor(int ); | 64 | QColor foreColor(int ); |
62 | QColor backColor(int ); | 65 | QColor backColor(int ); |
63 | 66 | ||
64 | private: | 67 | private: |
65 | TEWidget* m_teWid; | 68 | TEWidget* m_teWid; |
66 | TEmulation* m_teEmu; | 69 | TEmulation* m_teEmu; |
67 | 70 | ||
68 | }; | 71 | }; |
69 | 72 | ||
70 | #endif | 73 | #endif |
diff --git a/noncore/apps/opie-console/io_bt.cpp b/noncore/apps/opie-console/io_bt.cpp index d71aacc..4486eea 100644 --- a/noncore/apps/opie-console/io_bt.cpp +++ b/noncore/apps/opie-console/io_bt.cpp | |||
@@ -1,78 +1,77 @@ | |||
1 | 1 | ||
2 | #include "io_bt.h" | 2 | #include "io_bt.h" |
3 | 3 | ||
4 | IOBt::IOBt( const Profile &config ) : IOSerial( config ) { | 4 | IOBt::IOBt( const Profile &config ) : IOSerial( config ) { |
5 | m_attach = 0; | 5 | m_attach = 0; |
6 | } | 6 | } |
7 | 7 | ||
8 | 8 | ||
9 | IOBt::~IOBt() { | 9 | IOBt::~IOBt() { |
10 | if ( m_attach ) { | 10 | if ( m_attach ) { |
11 | delete m_attach; | 11 | delete m_attach; |
12 | } | 12 | } |
13 | } | 13 | } |
14 | 14 | ||
15 | 15 | ||
16 | void IOBt::close() { | 16 | void IOBt::close() { |
17 | 17 | ||
18 | IOSerial::close(); | 18 | IOSerial::close(); |
19 | // still need error handling | 19 | // still need error handling |
20 | if ( m_attach ) { | 20 | if ( m_attach ) { |
21 | delete m_attach; | 21 | delete m_attach; |
22 | m_attach = 0; | 22 | m_attach = 0; |
23 | } | 23 | } |
24 | } | 24 | } |
25 | 25 | ||
26 | bool IOBt::open() { | 26 | bool IOBt::open() { |
27 | 27 | ||
28 | // only set up bt stuff if mac address was set, otherwise use the device set | 28 | // only set up bt stuff if mac address was set, otherwise use the device set |
29 | if ( !m_mac.isEmpty() ) { | 29 | if ( !m_mac.isEmpty() ) { |
30 | 30 | ||
31 | // now it should also be checked, if there is a connection to the device with that mac allready | 31 | // now it should also be checked, if there is a connection to the device with that mac allready |
32 | |||
33 | // hciattach here | 32 | // hciattach here |
34 | m_attach = new OProcess(); | 33 | m_attach = new OProcess(); |
35 | *m_attach << "hciattach /dev/ttyS2 any 57600"; | 34 | *m_attach << "hciattach /dev/ttyS2 any 57600"; |
36 | 35 | ||
37 | // then start hcid, then rcfomm handling (m_mac) | 36 | // then start hcid, then rcfomm handling (m_mac) |
38 | 37 | ||
39 | connect( m_attach, SIGNAL( processExited( OProcess* ) ), | 38 | connect( m_attach, SIGNAL( processExited( OProcess* ) ), |
40 | this, SLOT( slotExited( OProcess* ) ) ); | 39 | this, SLOT( slotExited( OProcess* ) ) ); |
41 | 40 | ||
42 | if ( m_attach->start() ) { | 41 | if ( m_attach->start() ) { |
43 | IOSerial::open(); | 42 | IOSerial::open(); |
44 | } else { | 43 | } else { |
45 | qWarning("could not attach to device"); | 44 | qWarning("could not attach to device"); |
46 | delete m_attach; | 45 | delete m_attach; |
47 | m_attach = 0; | 46 | m_attach = 0; |
48 | } | 47 | } |
49 | } else { | 48 | } else { |
50 | // directly to the normal serial | 49 | // directly to the normal serial |
51 | // TODO: look first if the connection really exists. ( is set up ) | 50 | // TODO: look first if the connection really exists. ( is set up ) |
52 | 51 | ||
53 | IOSerial::open(); | 52 | IOSerial::open(); |
54 | } | 53 | } |
55 | } | 54 | } |
56 | 55 | ||
57 | void IOBt::reload( const Profile &config ) { | 56 | void IOBt::reload( const Profile &config ) { |
58 | m_device = config.readEntry("Device", BT_DEFAULT_DEVICE); | 57 | m_device = config.readEntry("Device", BT_DEFAULT_DEVICE); |
59 | m_mac = config.readEntry("Mac", BT_DEFAULT_MAC); | 58 | m_mac = config.readEntry("Mac", BT_DEFAULT_MAC); |
60 | m_baud = config.readNumEntry("Baud", BT_DEFAULT_BAUD); | 59 | m_baud = config.readNumEntry("Baud", BT_DEFAULT_BAUD); |
61 | m_parity = config.readNumEntry("Parity", BT_DEFAULT_PARITY); | 60 | m_parity = config.readNumEntry("Parity", BT_DEFAULT_PARITY); |
62 | m_dbits = config.readNumEntry("DataBits", BT_DEFAULT_DBITS); | 61 | m_dbits = config.readNumEntry("DataBits", BT_DEFAULT_DBITS); |
63 | m_sbits = config.readNumEntry("StopBits", BT_DEFAULT_SBITS); | 62 | m_sbits = config.readNumEntry("StopBits", BT_DEFAULT_SBITS); |
64 | m_flow = config.readNumEntry("Flow", BT_DEFAULT_FLOW); | 63 | m_flow = config.readNumEntry("Flow", BT_DEFAULT_FLOW); |
65 | } | 64 | } |
66 | 65 | ||
67 | 66 | ||
68 | QString IOBt::identifier() const { | 67 | QString IOBt::identifier() const { |
69 | return "bluetooth"; | 68 | return "bluetooth"; |
70 | } | 69 | } |
71 | 70 | ||
72 | QString IOBt::name() const { | 71 | QString IOBt::name() const { |
73 | return "BLuetooth IO Layer"; | 72 | return "BLuetooth IO Layer"; |
74 | } | 73 | } |
75 | 74 | ||
76 | void IOBt::slotExited( OProcess* proc ){ | 75 | void IOBt::slotExited( OProcess* proc ){ |
77 | close(); | 76 | close(); |
78 | } | 77 | } |
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp index 5295600..408d3dd 100644 --- a/noncore/apps/opie-console/mainwindow.cpp +++ b/noncore/apps/opie-console/mainwindow.cpp | |||
@@ -1,101 +1,81 @@ | |||
1 | #include <assert.h> | 1 | #include <assert.h> |
2 | 2 | ||
3 | 3 | ||
4 | 4 | ||
5 | #include <qaction.h> | 5 | #include <qaction.h> |
6 | #include <qmenubar.h> | 6 | #include <qmenubar.h> |
7 | #include <qlabel.h> | 7 | #include <qlabel.h> |
8 | #include <qpopupmenu.h> | 8 | #include <qpopupmenu.h> |
9 | #include <qtoolbar.h> | 9 | #include <qtoolbar.h> |
10 | #include <qmessagebox.h> | 10 | #include <qmessagebox.h> |
11 | #include <qpushbutton.h> | 11 | #include <qpushbutton.h> |
12 | #include <qwhatsthis.h> | 12 | #include <qwhatsthis.h> |
13 | 13 | ||
14 | #include <qpe/resource.h> | 14 | #include <qpe/resource.h> |
15 | #include <opie/ofiledialog.h> | 15 | #include <opie/ofiledialog.h> |
16 | 16 | ||
17 | 17 | ||
18 | #include "keytrans.h" | 18 | #include "keytrans.h" |
19 | #include "profileeditordialog.h" | 19 | #include "profileeditordialog.h" |
20 | #include "configdialog.h" | 20 | #include "configdialog.h" |
21 | #include "default.h" | 21 | #include "default.h" |
22 | #include "metafactory.h" | 22 | #include "metafactory.h" |
23 | #include "profile.h" | 23 | #include "profile.h" |
24 | #include "profilemanager.h" | 24 | #include "profilemanager.h" |
25 | #include "mainwindow.h" | 25 | #include "mainwindow.h" |
26 | #include "tabwidget.h" | 26 | #include "tabwidget.h" |
27 | #include "transferdialog.h" | 27 | #include "transferdialog.h" |
28 | #include "function_keyboard.h" | 28 | #include "function_keyboard.h" |
29 | #include "emulation_handler.h" | ||
29 | #include "script.h" | 30 | #include "script.h" |
30 | 31 | ||
31 | 32 | ||
32 | 33 | ||
33 | static char * menu_xpm[] = { | ||
34 | "12 12 5 1", | ||
35 | " c None", | ||
36 | ".c #000000", | ||
37 | "+c #FFFDAD", | ||
38 | "@c #FFFF00", | ||
39 | "#c #E5E100", | ||
40 | " ", | ||
41 | " ", | ||
42 | " ......... ", | ||
43 | " .+++++++. ", | ||
44 | " .+@@@@#. ", | ||
45 | " .+@@@#. ", | ||
46 | " .+@@#. ", | ||
47 | " .+@#. ", | ||
48 | " .+#. ", | ||
49 | " .+. ", | ||
50 | " .. ", | ||
51 | " "}; | ||
52 | |||
53 | |||
54 | MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { | 34 | MainWindow::MainWindow(QWidget *parent, const char *name, WFlags) : QMainWindow(parent, name, WStyle_ContextHelp) { |
55 | KeyTrans::loadAll(); | 35 | KeyTrans::loadAll(); |
56 | for (int i = 0; i < KeyTrans::count(); i++ ) { | 36 | for (int i = 0; i < KeyTrans::count(); i++ ) { |
57 | KeyTrans* s = KeyTrans::find(i ); | 37 | KeyTrans* s = KeyTrans::find(i ); |
58 | assert( s ); | 38 | assert( s ); |
59 | } | 39 | } |
60 | m_factory = new MetaFactory(); | 40 | m_factory = new MetaFactory(); |
61 | Default def(m_factory); | 41 | Default def(m_factory); |
62 | m_sessions.setAutoDelete( TRUE ); | 42 | m_sessions.setAutoDelete( TRUE ); |
63 | m_curSession = 0; | 43 | m_curSession = 0; |
64 | m_manager = new ProfileManager( m_factory ); | 44 | m_manager = new ProfileManager( m_factory ); |
65 | m_manager->load(); | 45 | m_manager->load(); |
66 | 46 | ||
67 | initUI(); | 47 | initUI(); |
68 | populateProfiles(); | 48 | populateProfiles(); |
69 | } | 49 | } |
70 | void MainWindow::initUI() { | 50 | void MainWindow::initUI() { |
71 | setToolBarsMovable( FALSE ); | 51 | setToolBarsMovable( FALSE ); |
72 | 52 | ||
73 | /* tool bar for the menu */ | 53 | /* tool bar for the menu */ |
74 | m_tool = new QToolBar( this ); | 54 | m_tool = new QToolBar( this ); |
75 | m_tool->setHorizontalStretchable( TRUE ); | 55 | m_tool->setHorizontalStretchable( TRUE ); |
76 | 56 | ||
77 | m_bar = new QMenuBar( m_tool ); | 57 | m_bar = new QMenuBar( m_tool ); |
78 | m_console = new QPopupMenu( this ); | 58 | m_console = new QPopupMenu( this ); |
79 | m_scripts = new QPopupMenu( this ); | 59 | m_scripts = new QPopupMenu( this ); |
80 | m_sessionsPop= new QPopupMenu( this ); | 60 | m_sessionsPop= new QPopupMenu( this ); |
81 | m_settings = new QPopupMenu( this ); | 61 | m_settings = new QPopupMenu( this ); |
82 | 62 | ||
83 | /* add a toolbar for icons */ | 63 | /* add a toolbar for icons */ |
84 | m_icons = new QToolBar(this); | 64 | m_icons = new QToolBar(this); |
85 | 65 | ||
86 | /* | 66 | /* |
87 | * new Action for new sessions | 67 | * new Action for new sessions |
88 | */ | 68 | */ |
89 | QAction* a = new QAction(tr("New Connection"), | 69 | QAction* a = new QAction(tr("New Connection"), |
90 | Resource::loadPixmap( "new" ), | 70 | Resource::loadPixmap( "new" ), |
91 | QString::null, 0, this, 0); | 71 | QString::null, 0, this, 0); |
92 | a->addTo( m_console ); | 72 | a->addTo( m_console ); |
93 | a->addTo( m_icons ); | 73 | a->addTo( m_icons ); |
94 | connect(a, SIGNAL(activated() ), | 74 | connect(a, SIGNAL(activated() ), |
95 | this, SLOT(slotNew() ) ); | 75 | this, SLOT(slotNew() ) ); |
96 | 76 | ||
97 | /* | 77 | /* |
98 | * connect action | 78 | * connect action |
99 | */ | 79 | */ |
100 | m_connect = new QAction(); | 80 | m_connect = new QAction(); |
101 | m_connect->setText( tr("Connect") ); | 81 | m_connect->setText( tr("Connect") ); |
@@ -417,82 +397,80 @@ void MainWindow::create( const Profile& prof ) { | |||
417 | m_disconnect->setEnabled( false ); | 397 | m_disconnect->setEnabled( false ); |
418 | m_terminate->setEnabled( true ); | 398 | m_terminate->setEnabled( true ); |
419 | m_transfer->setEnabled( true ); | 399 | m_transfer->setEnabled( true ); |
420 | m_recordScript->setEnabled( true ); | 400 | m_recordScript->setEnabled( true ); |
421 | m_saveScript->setEnabled( true ); | 401 | m_saveScript->setEnabled( true ); |
422 | m_runScript->setEnabled( true ); | 402 | m_runScript->setEnabled( true ); |
423 | m_fullscreen->setEnabled( true ); | 403 | m_fullscreen->setEnabled( true ); |
424 | m_closewindow->setEnabled( true ); | 404 | m_closewindow->setEnabled( true ); |
425 | } | 405 | } |
426 | 406 | ||
427 | void MainWindow::slotTransfer() | 407 | void MainWindow::slotTransfer() |
428 | { | 408 | { |
429 | if ( currentSession() ) { | 409 | if ( currentSession() ) { |
430 | TransferDialog dlg(this); | 410 | TransferDialog dlg(this); |
431 | dlg.showMaximized(); | 411 | dlg.showMaximized(); |
432 | dlg.exec(); | 412 | dlg.exec(); |
433 | } | 413 | } |
434 | } | 414 | } |
435 | 415 | ||
436 | 416 | ||
437 | void MainWindow::slotOpenKeb(bool state) { | 417 | void MainWindow::slotOpenKeb(bool state) { |
438 | 418 | ||
439 | if (state) m_keyBar->show(); | 419 | if (state) m_keyBar->show(); |
440 | else m_keyBar->hide(); | 420 | else m_keyBar->hide(); |
441 | 421 | ||
442 | } | 422 | } |
443 | void MainWindow::slotSessionChanged( Session* ses ) { | 423 | void MainWindow::slotSessionChanged( Session* ses ) { |
444 | qWarning("changed!"); | 424 | qWarning("changed!"); |
445 | if ( ses ) { | 425 | if ( ses ) { |
446 | m_curSession = ses; | 426 | m_curSession = ses; |
447 | qDebug(QString("is connected : %1").arg( m_curSession->layer()->isConnected() ) ); | 427 | qDebug(QString("is connected : %1").arg( m_curSession->layer()->isConnected() ) ); |
448 | if ( m_curSession->layer()->isConnected() ) { | 428 | if ( m_curSession->layer()->isConnected() ) { |
449 | m_connect->setEnabled( false ); | 429 | m_connect->setEnabled( false ); |
450 | m_disconnect->setEnabled( true ); | 430 | m_disconnect->setEnabled( true ); |
451 | } else { | 431 | } else { |
452 | m_connect->setEnabled( true ); | 432 | m_connect->setEnabled( true ); |
453 | m_disconnect->setEnabled( false ); | 433 | m_disconnect->setEnabled( false ); |
454 | } | 434 | } |
455 | } | 435 | } |
456 | } | 436 | } |
457 | 437 | ||
458 | void MainWindow::slotFullscreen() { | 438 | void MainWindow::slotFullscreen() { |
459 | 439 | ||
460 | if ( m_isFullscreen ) { | 440 | if ( m_isFullscreen ) { |
461 | ( m_curSession->widgetStack() )->reparent( m_consoleWindow, 0, QPoint(0,0), false ); | 441 | ( m_curSession->widgetStack() )->reparent( m_consoleWindow, 0, QPoint(0,0), false ); |
462 | ( m_curSession->widgetStack() )->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 442 | ( m_curSession->widgetStack() )->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
463 | setCentralWidget( m_consoleWindow ); | 443 | setCentralWidget( m_consoleWindow ); |
464 | ( m_curSession->widgetStack() )->show(); | 444 | ( m_curSession->widgetStack() )->show(); |
465 | m_fullscreen->setText( tr("Full screen") ); | 445 | ( m_curSession->emulationHandler() )->cornerButton()->hide(); |
446 | disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); | ||
466 | 447 | ||
467 | } else { | 448 | } else { |
468 | ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame ); | 449 | ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame ); |
469 | ( m_curSession->widgetStack() )->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop | 450 | ( m_curSession->widgetStack() )->reparent( 0,WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop |
470 | , QPoint(0,0), false); | 451 | , QPoint(0,0), false ); |
471 | ( m_curSession->widgetStack() )->resize(qApp->desktop()->width(), qApp->desktop()->height()); | 452 | ( m_curSession->widgetStack() )->resize( qApp->desktop()->width(), qApp->desktop()->height() ); |
472 | ( m_curSession->widgetStack() )->setFocus(); | 453 | ( m_curSession->widgetStack() )->setFocus(); |
473 | ( m_curSession->widgetStack() )->show(); | 454 | ( m_curSession->widgetStack() )->show(); |
474 | 455 | ||
475 | QPushButton *cornerButton = new QPushButton( m_curSession->widgetStack() ); | 456 | ( ( m_curSession->emulationHandler() )->cornerButton() )->show(); |
476 | cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) ); | 457 | |
477 | connect( cornerButton, SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); | 458 | connect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); |
478 | // would need a scrollview | ||
479 | // ( m_curSession->widgetStack() )->setCornerWidget( cornerButton ); | ||
480 | m_fullscreen->setText( tr("Stop full screen") ); | ||
481 | } | 459 | } |
482 | m_isFullscreen = !m_isFullscreen; | ||
483 | 460 | ||
461 | m_isFullscreen = !m_isFullscreen; | ||
484 | } | 462 | } |
485 | 463 | ||
486 | 464 | ||
487 | void MainWindow::slotKeyReceived(ushort u, ushort q, bool, bool, bool) { | 465 | void MainWindow::slotKeyReceived(ushort u, ushort q, bool, bool, bool) { |
488 | 466 | ||
489 | qWarning("received key event! relay to TE widget"); | 467 | qWarning("received key event! relay to TE widget"); |
490 | 468 | ||
491 | if ( m_curSession ) { | 469 | if ( m_curSession ) { |
492 | QKeyEvent ke(QEvent::KeyPress, q, u, 0); | 470 | QKeyEvent ke(QEvent::KeyPress, q, u, 0); |
493 | 471 | ||
494 | ke.ignore(); | 472 | ke.ignore(); |
495 | // where should i send this event? doesnt work sending it here | 473 | // where should i send this event? doesnt work sending it here |
496 | QApplication::sendEvent((QObject *)m_curSession->widgetStack(), &ke); | 474 | QApplication::sendEvent((QObject *)m_curSession->widgetStack(), &ke); |
497 | } | 475 | } |
498 | } | 476 | } |