summaryrefslogtreecommitdiff
path: root/scripts/kconfig/qconf.cc
Unidiff
Diffstat (limited to 'scripts/kconfig/qconf.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/kconfig/qconf.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 52419ad..0459caf 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -1,57 +1,57 @@
1/* 1/*
2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3 * Released under the terms of the GNU GPL v2.0. 3 * Released under the terms of the GNU GPL v2.0.
4 */ 4 */
5 5
6#include <qapplication.h> 6#include <qapplication.h>
7#include <qmainwindow.h> 7#include <qmainwindow.h>
8#include <qtoolbar.h> 8#include <qtoolbar.h>
9#include <qvbox.h> 9#include <qvbox.h>
10#include <qsplitter.h> 10#include <qsplitter.h>
11#include <qlistview.h> 11#include <qlistview.h>
12#include <qtextview.h> 12#include <qtextview.h>
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qmenubar.h> 14#include <qmenubar.h>
15#include <qmessagebox.h> 15#include <qmessagebox.h>
16#include <qaction.h> 16#include <qaction.h>
17#include <qheader.h> 17#include <qheader.h>
18#include <qfiledialog.h> 18#include <qfiledialog.h>
19#include <qregexp.h> 19#include <qregexp.h>
20#if QT_VERSION >= 300 20#if QT_VERSION >= 0x030000
21#include <qsettings.h> 21#include <qsettings.h>
22#endif 22#endif
23 23
24#include <stdlib.h> 24#include <stdlib.h>
25 25
26#include "lkc.h" 26#include "lkc.h"
27#include "qconf.h" 27#include "qconf.h"
28 28
29#include "qconf.moc" 29#include "qconf.moc"
30#include "images.c" 30#include "images.c"
31 31
32static QApplication *configApp; 32static QApplication *configApp;
33#if QT_VERSION >= 300 33#if QT_VERSION >= 0x030000
34static QSettings *configSettings; 34static QSettings *configSettings;
35#endif 35#endif
36 36
37/* 37/*
38 * update all the children of a menu entry 38 * update all the children of a menu entry
39 * removes/adds the entries from the parent widget as necessary 39 * removes/adds the entries from the parent widget as necessary
40 * 40 *
41 * parent: either the menu list widget or a menu entry widget 41 * parent: either the menu list widget or a menu entry widget
42 * menu: entry to be updated 42 * menu: entry to be updated
43 */ 43 */
44template <class P> 44template <class P>
45void ConfigList::updateMenuList(P* parent, struct menu* menu) 45void ConfigList::updateMenuList(P* parent, struct menu* menu)
46{ 46{
47 struct menu* child; 47 struct menu* child;
48 ConfigItem* item; 48 ConfigItem* item;
49 ConfigItem* last; 49 ConfigItem* last;
50 bool visible; 50 bool visible;
51 enum prop_type type; 51 enum prop_type type;
52 52
53 if (!menu) { 53 if (!menu) {
54 while ((item = parent->firstChild())) 54 while ((item = parent->firstChild()))
55 delete item; 55 delete item;
56 return; 56 return;
57 } 57 }
@@ -81,49 +81,49 @@ void ConfigList::updateMenuList(P* parent, struct menu* menu)
81 if (!item || item->menu != child) 81 if (!item || item->menu != child)
82 item = new ConfigItem(parent, last, child, visible); 82 item = new ConfigItem(parent, last, child, visible);
83 else 83 else
84 item->testUpdateMenu(visible); 84 item->testUpdateMenu(visible);
85 85
86 if (mode == fullMode || mode == menuMode || type != P_MENU) 86 if (mode == fullMode || mode == menuMode || type != P_MENU)
87 updateMenuList(item, child); 87 updateMenuList(item, child);
88 else 88 else
89 updateMenuList(item, 0); 89 updateMenuList(item, 0);
90 last = item; 90 last = item;
91 continue; 91 continue;
92 } 92 }
93 hide: 93 hide:
94 if (item && item->menu == child) { 94 if (item && item->menu == child) {
95 last = parent->firstChild(); 95 last = parent->firstChild();
96 if (last == item) 96 if (last == item)
97 last = 0; 97 last = 0;
98 else while (last->nextSibling() != item) 98 else while (last->nextSibling() != item)
99 last = last->nextSibling(); 99 last = last->nextSibling();
100 delete item; 100 delete item;
101 } 101 }
102 } 102 }
103} 103}
104 104
105#if QT_VERSION >= 300 105#if QT_VERSION >= 0x030000
106/* 106/*
107 * set the new data 107 * set the new data
108 * TODO check the value 108 * TODO check the value
109 */ 109 */
110void ConfigItem::okRename(int col) 110void ConfigItem::okRename(int col)
111{ 111{
112 Parent::okRename(col); 112 Parent::okRename(col);
113 sym_set_string_value(menu->sym, text(dataColIdx).latin1()); 113 sym_set_string_value(menu->sym, text(dataColIdx).latin1());
114} 114}
115#endif 115#endif
116 116
117/* 117/*
118 * update the displayed of a menu entry 118 * update the displayed of a menu entry
119 */ 119 */
120void ConfigItem::updateMenu(void) 120void ConfigItem::updateMenu(void)
121{ 121{
122 ConfigList* list; 122 ConfigList* list;
123 struct symbol* sym; 123 struct symbol* sym;
124 struct property *prop; 124 struct property *prop;
125 QString prompt; 125 QString prompt;
126 int type; 126 int type;
127 tristate expr; 127 tristate expr;
128 128
129 list = listView(); 129 list = listView();
@@ -194,49 +194,49 @@ void ConfigItem::updateMenu(void)
194 default: 194 default:
195 if (sym_is_choice_value(sym) && type == S_BOOLEAN) 195 if (sym_is_choice_value(sym) && type == S_BOOLEAN)
196 setPixmap(promptColIdx, list->choiceNoPix); 196 setPixmap(promptColIdx, list->choiceNoPix);
197 else 197 else
198 setPixmap(promptColIdx, list->symbolNoPix); 198 setPixmap(promptColIdx, list->symbolNoPix);
199 setText(noColIdx, "N"); 199 setText(noColIdx, "N");
200 ch = 'N'; 200 ch = 'N';
201 break; 201 break;
202 } 202 }
203 if (expr != no) 203 if (expr != no)
204 setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); 204 setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0);
205 if (expr != mod) 205 if (expr != mod)
206 setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); 206 setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0);
207 if (expr != yes) 207 if (expr != yes)
208 setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); 208 setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0);
209 209
210 setText(dataColIdx, QChar(ch)); 210 setText(dataColIdx, QChar(ch));
211 break; 211 break;
212 case S_INT: 212 case S_INT:
213 case S_HEX: 213 case S_HEX:
214 case S_STRING: 214 case S_STRING:
215 const char* data; 215 const char* data;
216 216
217 data = sym_get_string_value(sym); 217 data = sym_get_string_value(sym);
218#if QT_VERSION >= 300 218#if QT_VERSION >= 0x030000
219 int i = list->mapIdx(dataColIdx); 219 int i = list->mapIdx(dataColIdx);
220 if (i >= 0) 220 if (i >= 0)
221 setRenameEnabled(i, TRUE); 221 setRenameEnabled(i, TRUE);
222#endif 222#endif
223 setText(dataColIdx, data); 223 setText(dataColIdx, data);
224 if (type == S_STRING) 224 if (type == S_STRING)
225 prompt.sprintf("%s: %s", prompt.latin1(), data); 225 prompt.sprintf("%s: %s", prompt.latin1(), data);
226 else 226 else
227 prompt.sprintf("(%s) %s", data, prompt.latin1()); 227 prompt.sprintf("(%s) %s", data, prompt.latin1());
228 break; 228 break;
229 } 229 }
230 if (!sym_has_value(sym) && visible) 230 if (!sym_has_value(sym) && visible)
231 prompt += " (NEW)"; 231 prompt += " (NEW)";
232set_prompt: 232set_prompt:
233 setText(promptColIdx, prompt); 233 setText(promptColIdx, prompt);
234} 234}
235 235
236void ConfigItem::testUpdateMenu(bool v) 236void ConfigItem::testUpdateMenu(bool v)
237{ 237{
238 ConfigItem* i; 238 ConfigItem* i;
239 239
240 visible = v; 240 visible = v;
241 if (!menu) 241 if (!menu)
242 return; 242 return;
@@ -469,49 +469,49 @@ void ConfigList::changeValue(ConfigItem* item)
469 if (!sym) { 469 if (!sym) {
470 if (item->menu->list) 470 if (item->menu->list)
471 item->setOpen(!item->isOpen()); 471 item->setOpen(!item->isOpen());
472 return; 472 return;
473 } 473 }
474 474
475 type = sym_get_type(sym); 475 type = sym_get_type(sym);
476 switch (type) { 476 switch (type) {
477 case S_BOOLEAN: 477 case S_BOOLEAN:
478 case S_TRISTATE: 478 case S_TRISTATE:
479 oldexpr = sym_get_tristate_value(sym); 479 oldexpr = sym_get_tristate_value(sym);
480 newexpr = sym_toggle_tristate_value(sym); 480 newexpr = sym_toggle_tristate_value(sym);
481 if (item->menu->list) { 481 if (item->menu->list) {
482 if (oldexpr == newexpr) 482 if (oldexpr == newexpr)
483 item->setOpen(!item->isOpen()); 483 item->setOpen(!item->isOpen());
484 else if (oldexpr == no) 484 else if (oldexpr == no)
485 item->setOpen(TRUE); 485 item->setOpen(TRUE);
486 } 486 }
487 if (oldexpr != newexpr) 487 if (oldexpr != newexpr)
488 parent()->updateList(item); 488 parent()->updateList(item);
489 break; 489 break;
490 case S_INT: 490 case S_INT:
491 case S_HEX: 491 case S_HEX:
492 case S_STRING: 492 case S_STRING:
493#if QT_VERSION >= 300 493#if QT_VERSION >= 0x030000
494 if (colMap[dataColIdx] >= 0) 494 if (colMap[dataColIdx] >= 0)
495 item->startRename(colMap[dataColIdx]); 495 item->startRename(colMap[dataColIdx]);
496 else 496 else
497#endif 497#endif
498 parent()->lineEdit->show(item); 498 parent()->lineEdit->show(item);
499 break; 499 break;
500 } 500 }
501} 501}
502 502
503void ConfigList::setRootMenu(struct menu *menu) 503void ConfigList::setRootMenu(struct menu *menu)
504{ 504{
505 enum prop_type type; 505 enum prop_type type;
506 506
507 if (rootEntry == menu) 507 if (rootEntry == menu)
508 return; 508 return;
509 type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; 509 type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN;
510 if (type != P_MENU) 510 if (type != P_MENU)
511 return; 511 return;
512 updateMenuList(this, 0); 512 updateMenuList(this, 0);
513 rootEntry = menu; 513 rootEntry = menu;
514 updateListAll(); 514 updateListAll();
515 setSelected(currentItem(), hasFocus()); 515 setSelected(currentItem(), hasFocus());
516} 516}
517 517
@@ -730,49 +730,49 @@ void ConfigView::updateList(ConfigItem* item)
730 v->list->updateList(item); 730 v->list->updateList(item);
731} 731}
732 732
733void ConfigView::updateListAll(void) 733void ConfigView::updateListAll(void)
734{ 734{
735 ConfigView* v; 735 ConfigView* v;
736 736
737 for (v = viewList; v; v = v->nextView) 737 for (v = viewList; v; v = v->nextView)
738 v->list->updateListAll(); 738 v->list->updateListAll();
739} 739}
740 740
741/* 741/*
742 * Construct the complete config widget 742 * Construct the complete config widget
743 */ 743 */
744ConfigMainWindow::ConfigMainWindow(void) 744ConfigMainWindow::ConfigMainWindow(void)
745{ 745{
746 QMenuBar* menu; 746 QMenuBar* menu;
747 QSplitter* split1; 747 QSplitter* split1;
748 QSplitter* split2; 748 QSplitter* split2;
749 bool ok; 749 bool ok;
750 int x, y, width, height; 750 int x, y, width, height;
751 751
752 QWidget *d = configApp->desktop(); 752 QWidget *d = configApp->desktop();
753 753
754#if QT_VERSION >= 300 754#if QT_VERSION >= 0x030000
755 width = configSettings->readNumEntry("/kconfig/qconf/window width", d->width() - 64); 755 width = configSettings->readNumEntry("/kconfig/qconf/window width", d->width() - 64);
756 height = configSettings->readNumEntry("/kconfig/qconf/window height", d->height() - 64); 756 height = configSettings->readNumEntry("/kconfig/qconf/window height", d->height() - 64);
757 resize(width, height); 757 resize(width, height);
758 x = configSettings->readNumEntry("/kconfig/qconf/window x", 0, &ok); 758 x = configSettings->readNumEntry("/kconfig/qconf/window x", 0, &ok);
759 if (ok) 759 if (ok)
760 y = configSettings->readNumEntry("/kconfig/qconf/window y", 0, &ok); 760 y = configSettings->readNumEntry("/kconfig/qconf/window y", 0, &ok);
761 if (ok) 761 if (ok)
762 move(x, y); 762 move(x, y);
763#else 763#else
764 width = d->width() - 64; 764 width = d->width() - 64;
765 height = d->height() - 64; 765 height = d->height() - 64;
766 resize(width, height); 766 resize(width, height);
767#endif 767#endif
768 768
769 showDebug = false; 769 showDebug = false;
770 770
771 split1 = new QSplitter(this); 771 split1 = new QSplitter(this);
772 split1->setOrientation(QSplitter::Horizontal); 772 split1->setOrientation(QSplitter::Horizontal);
773 setCentralWidget(split1); 773 setCentralWidget(split1);
774 774
775 menuView = new ConfigView(split1, this); 775 menuView = new ConfigView(split1, this);
776 menuList = menuView->list; 776 menuList = menuView->list;
777 777
778 split2 = new QSplitter(split1); 778 split2 = new QSplitter(split1);
@@ -1245,60 +1245,60 @@ void fixup_rootmenu(struct menu *menu)
1245 } else if (!menu_cnt) 1245 } else if (!menu_cnt)
1246 fixup_rootmenu(child); 1246 fixup_rootmenu(child);
1247 } 1247 }
1248} 1248}
1249 1249
1250static const char *progname; 1250static const char *progname;
1251 1251
1252static void usage(void) 1252static void usage(void)
1253{ 1253{
1254 printf("%s <config>\n", progname); 1254 printf("%s <config>\n", progname);
1255 exit(0); 1255 exit(0);
1256} 1256}
1257 1257
1258int main(int ac, char** av) 1258int main(int ac, char** av)
1259{ 1259{
1260 ConfigMainWindow* v; 1260 ConfigMainWindow* v;
1261 const char *name; 1261 const char *name;
1262 1262
1263#ifndef LKC_DIRECT_LINK 1263#ifndef LKC_DIRECT_LINK
1264 kconfig_load(); 1264 kconfig_load();
1265#endif 1265#endif
1266 1266
1267 progname = av[0]; 1267 progname = av[0];
1268 configApp = new QApplication(ac, av); 1268 configApp = new QApplication(ac, av);
1269#if QT_VERSION >= 300 1269#if QT_VERSION >= 0x030000
1270 configSettings = new QSettings; 1270 configSettings = new QSettings;
1271#endif 1271#endif
1272 if (ac > 1 && av[1][0] == '-') { 1272 if (ac > 1 && av[1][0] == '-') {
1273 switch (av[1][1]) { 1273 switch (av[1][1]) {
1274 case 'h': 1274 case 'h':
1275 case '?': 1275 case '?':
1276 usage(); 1276 usage();
1277 } 1277 }
1278 name = av[2]; 1278 name = av[2];
1279 } else 1279 } else
1280 name = av[1]; 1280 name = av[1];
1281 if (!name) 1281 if (!name)
1282 usage(); 1282 usage();
1283 1283
1284 conf_parse(name); 1284 conf_parse(name);
1285 fixup_rootmenu(&rootmenu); 1285 fixup_rootmenu(&rootmenu);
1286 conf_read(NULL); 1286 conf_read(NULL);
1287 //zconfdump(stdout); 1287 //zconfdump(stdout);
1288 1288
1289 v = new ConfigMainWindow(); 1289 v = new ConfigMainWindow();
1290 1290
1291 //zconfdump(stdout); 1291 //zconfdump(stdout);
1292 v->show(); 1292 v->show();
1293 configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); 1293 configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit()));
1294 configApp->exec(); 1294 configApp->exec();
1295 1295
1296#if QT_VERSION >= 300 1296#if QT_VERSION >= 0x030000
1297 configSettings->writeEntry("/kconfig/qconf/window x", v->pos().x()); 1297 configSettings->writeEntry("/kconfig/qconf/window x", v->pos().x());
1298 configSettings->writeEntry("/kconfig/qconf/window y", v->pos().y()); 1298 configSettings->writeEntry("/kconfig/qconf/window y", v->pos().y());
1299 configSettings->writeEntry("/kconfig/qconf/window width", v->size().width()); 1299 configSettings->writeEntry("/kconfig/qconf/window width", v->size().width());
1300 configSettings->writeEntry("/kconfig/qconf/window height", v->size().height()); 1300 configSettings->writeEntry("/kconfig/qconf/window height", v->size().height());
1301 delete configSettings; 1301 delete configSettings;
1302#endif 1302#endif
1303 return 0; 1303 return 0;
1304} 1304}