]> Shamusworld >> Repos - architektonas/blob - src/widgets/qg_commandedit.cpp
b3459678b6a25580f03ccaecc8b9b7d8932de4ec
[architektonas] / src / widgets / qg_commandedit.cpp
1 /****************************************************************************
2 ** $Id: qg_commandedit.cpp 1614 2004-12-09 23:10:15Z andrew $
3 **
4 ** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
5 **
6 ** This file is part of the qcadlib Library project.
7 **
8 ** This file may be distributed and/or modified under the terms of the
9 ** GNU General Public License version 2 as published by the Free Software
10 ** Foundation and appearing in the file LICENSE.GPL included in the
11 ** packaging of this file.
12 **
13 ** Licensees holding valid qcadlib Professional Edition licenses may use
14 ** this file in accordance with the qcadlib Commercial License
15 ** Agreement provided with the Software.
16 **
17 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
18 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 **
20 ** See http://www.ribbonsoft.com for further details.
21 **
22 ** Contact info@ribbonsoft.com if any conditions of this licensing are
23 ** not clear to you.
24 **
25 **********************************************************************/
26
27 #include "qg_commandedit.h"
28
29 #include "rs_debug.h"
30
31 /**
32  * Default Constructor. You must call init manually if you choose
33  * to use this constructor.
34  */
35 QG_CommandEdit::QG_CommandEdit(QWidget * parent, const char */*name*/):
36 //      QLineEdit(parent, name)
37         QLineEdit(parent)
38 {
39 }
40
41 /**
42  * Destructor
43  */
44 QG_CommandEdit::~QG_CommandEdit()
45 {
46         it = 0;
47 }
48
49 /**
50  * Bypass for key press events from the tab key.
51  */
52 bool QG_CommandEdit::event(QEvent * e)
53 {
54         if (e->type() == QEvent::KeyPress)
55         {
56                 QKeyEvent * k = (QKeyEvent *)e;
57
58                 if (k->key() == Qt::Key_Tab)
59                 {
60                         emit tabPressed();
61                         return true;
62                 }
63         }
64
65         return QLineEdit::event(e);
66 }
67
68 /**
69  * History (arrow key up/down) support, tab.
70  */
71 void QG_CommandEdit::keyPressEvent(QKeyEvent * e)
72 {
73         switch (e->key())
74         {
75         case Qt::Key_Up:
76 #warning "!!! URG !!!"
77 //              if (it != historyList.begin() && it != 0)
78                 if (it != historyList.begin())// && it != 0)
79                 {
80                         it--;
81                         setText(*it);
82                 }
83                 break;
84
85         case Qt::Key_Down:
86 #warning "!!! URG !!!"
87 //              if (it != historyList.end() && it != 0)
88                 if (it != historyList.end())// && it != 0)
89                 {
90                         it++;
91
92                         if (it != historyList.end())
93                                 setText(*it);
94                         else
95                                 setText("");
96                 }
97                 break;
98
99         case Qt::Key_Return:
100                 historyList.append(text());
101                 it = historyList.end();
102                 QLineEdit::keyPressEvent(e);
103                 break;
104
105         case Qt::Key_Escape:
106                 if (text().isEmpty())
107                         emit escape();
108                 else
109                         setText("");
110                 break;
111
112         default:
113                 QLineEdit::keyPressEvent(e);
114                 break;
115         }
116 }
117
118 void QG_CommandEdit::focusInEvent(QFocusEvent * e)
119 {
120         emit focusIn();
121         QLineEdit::focusInEvent(e);
122 }
123
124
125 void QG_CommandEdit::focusOutEvent(QFocusEvent * e)
126 {
127         emit focusOut();
128         QLineEdit::focusOutEvent(e);
129 }
130