diff options
Diffstat (limited to 'kommander/editor/mainwindow.cpp')
-rw-r--r-- | kommander/editor/mainwindow.cpp | 188 |
1 files changed, 66 insertions, 122 deletions
diff --git a/kommander/editor/mainwindow.cpp b/kommander/editor/mainwindow.cpp index 497be25b..fd5059ec 100644 --- a/kommander/editor/mainwindow.cpp +++ b/kommander/editor/mainwindow.cpp @@ -18,6 +18,14 @@ **********************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef TQTDOCDIR +#define TQTDOCDIR "/usr/share/tqt3/doc/html" +#endif + #include <stdio.h> #include <stdlib.h> #include <sys/stat.h> @@ -118,10 +126,10 @@ static TQString textNoAccel(const TQString& text) MainWindow::MainWindow(bool asClient) : KParts::DockMainWindow(0, "mainwindow", WType_TopLevel | WDestructiveClose | WGroupLeader), grd(10, 10), sGrid(true), snGrid(true), restoreConfig(true), splashScreen(true), - docPath("$TQTDIR/doc/html"), client(asClient), databaseAutoEdit(false), previewing(false) + docPath(TQTDOCDIR), client(asClient), databaseAutoEdit(false), previewing(false) { m_partManager = new KParts::PartManager(this); - //connect(m_partManager, TQT_SIGNAL(activePartChanged(KParts::Part * )), this, TQT_SLOT(slotActivePartChanged(KParts::Part * ))); + //connect(m_partManager, TQ_SIGNAL(activePartChanged(KParts::Part * )), this, TQ_SLOT(slotActivePartChanged(KParts::Part * ))); init_colors(); inDebugMode = true; //debugging kommander @@ -169,7 +177,7 @@ MainWindow::MainWindow(bool asClient) as -= TQSize(30, 30); resize(TQSize(1200, 1000).boundedTo(as)); - connect(kapp->clipboard(), TQT_SIGNAL(dataChanged()), this, TQT_SLOT(clipboardChanged())); + connect(kapp->clipboard(), TQ_SIGNAL(dataChanged()), this, TQ_SLOT(clipboardChanged())); clipboardChanged(); layoutChilds = false; layoutSelected = false; @@ -191,12 +199,12 @@ MainWindow::MainWindow(bool asClient) w = WidgetFactory::create(WidgetDatabase::idFromClassName("TQFrame"), this, 0, false); delete w; - assistant = new AssistProc(TQT_TQOBJECT(this), "Internal Assistant", assistantPath()); + assistant = new AssistProc(this, "Internal Assistant", assistantPath()); statusBar()->setSizeGripEnabled(true); SpecialInformation::registerSpecials(); backupTimer = new TQTimer(this); - connect(backupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotCreateBackups())); + connect(backupTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotCreateBackups())); backupTimer->start(1000*60*5); //fire it every five minutes //createGUI(0); @@ -227,8 +235,8 @@ void MainWindow::setupMDI() PixmapChooser::NoSize)); qworkspace->setPaletteBackgroundColor(TQColor(238, 238, 238)); qworkspace->setScrollBarsEnabled(true); - connect(qworkspace, TQT_SIGNAL(windowActivated(TQWidget *)), - this, TQT_SLOT(activeWindowChanged(TQWidget *))); + connect(qworkspace, TQ_SIGNAL(windowActivated(TQWidget *)), + this, TQ_SLOT(activeWindowChanged(TQWidget *))); lastActiveFormWindow = 0; qworkspace->setAcceptDrops(true); } @@ -286,7 +294,7 @@ void MainWindow::setupWorkspace() QCompletionEdit *edit = new QCompletionEdit(vbox); TQToolTip::add(edit, i18n("Start typing the buffer you want to switch to here (ALT+B)")); TQAccel *a = new TQAccel(this); - a->connectItem(a->insertItem(ALT + Key_B), edit, TQT_SLOT(setFocus())); + a->connectItem(a->insertItem(ALT + Key_B), edit, TQ_SLOT(setFocus())); wspace = new Workspace(vbox, this); wspace->setBufferEdit(edit); dw->setWidget(vbox); @@ -417,7 +425,7 @@ void MainWindow::runForm() while ((editor = it.current()) != 0L) { ++it; - static_cast<AssocTextEditor*>(TQT_TQWIDGET(editor))->save(); + static_cast<AssocTextEditor*>(editor)->save(); } delete editors; @@ -452,75 +460,11 @@ void MainWindow::runForm() TDEProcess* process = new TDEProcess; process->setUseShell(true); (*process) << "kmdr-executor" << TQString("\"%1\"").arg(form->formFile()->fileName()); - connect(process, TQT_SIGNAL(receivedStdout(TDEProcess*, char*, int)), messageLog, - TQT_SLOT(receivedStdout(TDEProcess*, char*, int))); - connect(process, TQT_SIGNAL(receivedStderr(TDEProcess*, char*, int)), messageLog, - TQT_SLOT(receivedStderr(TDEProcess*, char*, int))); - connect(process, TQT_SIGNAL(processExited(TDEProcess*)), TQT_SLOT(closeRunningForm(TDEProcess*))); - messageLog->clear(MessageLog::All); - previewing = process->start(TDEProcess::NotifyOnExit, TDEProcess::AllOutput); - } -} - - -void MainWindow::runForm4() -{ - if (previewing) - { - KMessageBox::information(this, i18n("There is a dialog already running."), i18n("Run")); - return; - } - FormWindow* form = activeForm(); - if (!form || !form->formFile()) - return; - - TQObjectList *editors = queryList("AssocTextEditor"); - TQObjectListIt it(*editors); - TQObject *editor; - - while ((editor = it.current()) != 0L) - { - ++it; - static_cast<AssocTextEditor*>(TQT_TQWIDGET(editor))->save(); - } - delete editors; - - if (form->formFile()->hasTempFileName()) - { - if (!form->formFile()->saveAs()) - return; - } - - m_fileName = form->formFile()->fileName(); - m_backupName = m_fileName + ".running"; - m_modified = form->formFile()->isModified(); - - bool readOnlyFile = !TQFileInfo(m_fileName).isWritable(); - struct stat statbuf; - ::stat(m_fileName.local8Bit(), &statbuf); - if (!readOnlyFile && !TDEIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_backupName), statbuf.st_mode, true)) - { - KMessageBox::error(this, i18n("<qt>Cannot create temporary file <i>%1</i>.</qt>").arg(m_backupName)); - return; - } - form->formFile()->setFileName(m_fileName); - if (!readOnlyFile || m_modified) - form->formFile()->setModified(true); - if (form->formFile()->save(false)) - { - if (!readOnlyFile && !TDEIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_fileName + ".backup"), statbuf.st_mode, true)) - { - KMessageBox::error(this, i18n("<qt>Cannot create backup file <i>%1</i>.</qt>").arg(m_fileName + ".backup")); - } - ::chmod(m_fileName.local8Bit(), S_IRWXU); - TDEProcess* process = new TDEProcess; - process->setUseShell(true); - (*process) << "kommander" << TQString("\"%1\"").arg(form->formFile()->fileName()); - connect(process, TQT_SIGNAL(receivedStdout(TDEProcess*, char*, int)), messageLog, - TQT_SLOT(receivedStdout(TDEProcess*, char*, int))); - connect(process, TQT_SIGNAL(receivedStderr(TDEProcess*, char*, int)), messageLog, - TQT_SLOT(receivedStderr(TDEProcess*, char*, int))); - connect(process, TQT_SIGNAL(processExited(TDEProcess*)), TQT_SLOT(closeRunningForm(TDEProcess*))); + connect(process, TQ_SIGNAL(receivedStdout(TDEProcess*, char*, int)), messageLog, + TQ_SLOT(receivedStdout(TDEProcess*, char*, int))); + connect(process, TQ_SIGNAL(receivedStderr(TDEProcess*, char*, int)), messageLog, + TQ_SLOT(receivedStderr(TDEProcess*, char*, int))); + connect(process, TQ_SIGNAL(processExited(TDEProcess*)), TQ_SLOT(closeRunningForm(TDEProcess*))); messageLog->clear(MessageLog::All); previewing = process->start(TDEProcess::NotifyOnExit, TDEProcess::AllOutput); } @@ -554,9 +498,9 @@ void MainWindow::showProperties(TQObject *o) } TQWidget *w = (TQWidget*)o; setupHierarchyView(); - FormWindow *fw = (FormWindow*)isAFormWindowChild(TQT_TQOBJECT(w)); + FormWindow *fw = (FormWindow*)isAFormWindowChild(w); if (fw) { - propertyEditor->setWidget(TQT_TQOBJECT(w), fw); + propertyEditor->setWidget(w, fw); hierarchyView->setFormWindow(fw, w); } else { propertyEditor->setWidget(0, 0); @@ -617,7 +561,7 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) } break; case TQEvent::MouseButtonPress: - if (((TQMouseEvent*)e)->button() == Qt::MidButton && dynamic_cast<KommanderWidget *>(o)) + if (((TQMouseEvent*)e)->button() == TQt::MidButton && dynamic_cast<KommanderWidget *>(o)) { AssocTextEditor *editor = new AssocTextEditor((TQWidget*)o, formWindow(), propertyEditor, m_partManager, this, "AssocTextEditor", false); //deletes itself! @@ -638,7 +582,7 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) TQWidget *pw = w->parentWidget(); while (pw) { if (pw->inherits("FormWindow")) { - ((FormWindow*)pw)->emitShowProperties(TQT_TQOBJECT(w)); + ((FormWindow*)pw)->emitShowProperties(w); if (!o->inherits("QDesignerToolBar")) return !o->inherits("TQToolButton") && !o->inherits("TQMenuBar") && !o->inherits("TQComboBox") && !o->inherits("QDesignerToolBarSeparator"); @@ -669,7 +613,7 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) } lastPressWidget = (TQWidget*)o; if (passiveInteractor) - TQTimer::singleShot(0, formWindow(), TQT_SLOT(visibilityChanged())); + TQTimer::singleShot(0, formWindow(), TQ_SLOT(visibilityChanged())); if (currentTool() == CONNECT_TOOL) return true; return !passiveInteractor; @@ -685,7 +629,7 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) ((FormWindow*)w)->handleMouseRelease((TQMouseEvent*)e, ((FormWindow*)w)->designerWidget(o)); if (passiveInteractor) { selectionChanged(); - TQTimer::singleShot(0, formWindow(), TQT_SLOT(visibilityChanged())); + TQTimer::singleShot(0, formWindow(), TQ_SLOT(visibilityChanged())); } return !passiveInteractor; case TQEvent::MouseMove: @@ -740,8 +684,8 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) case TQEvent::Hide: if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) break; - if (((FormWindow*)w)->isWidgetSelected(TQT_TQOBJECT(o))) - ((FormWindow*)w)->selectWidget(TQT_TQOBJECT(o), false); + if (((FormWindow*)w)->isWidgetSelected(o)) + ((FormWindow*)w)->selectWidget(o, false); break; case TQEvent::Enter: case TQEvent::Leave: @@ -761,25 +705,25 @@ bool MainWindow::eventFilter(TQObject *o, TQEvent *e) case TQEvent::Close: break; case TQEvent::DragEnter: - if (TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(qWorkspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()->viewport())) { + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { workspace()->contentsDragEnterEvent((TQDragEnterEvent*)e); return true; } break; case TQEvent::DragMove: - if (TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(qWorkspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()->viewport())) { + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { workspace()->contentsDragMoveEvent((TQDragMoveEvent*)e); return true; } break; case TQEvent::Drop: - if (TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(qWorkspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()) || TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(workspace()->viewport())) { + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { workspace()->contentsDropEvent((TQDropEvent*)e); return true; } break; case TQEvent::Show: - if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(this)) + if (o != this) break; if (((TQShowEvent*)e)->spontaneous()) break; @@ -859,16 +803,16 @@ void MainWindow::insertFormWindow(FormWindow *fw) "<p>You can have several forms open, and all open forms are listed " "in the <b>Form List</b>.")); - connect(fw, TQT_SIGNAL(showProperties(TQObject *)), - this, TQT_SLOT(showProperties(TQObject *))); - connect(fw, TQT_SIGNAL(updateProperties(TQObject *)), - this, TQT_SLOT(updateProperties(TQObject *))); - connect(this, TQT_SIGNAL(currentToolChanged()), - fw, TQT_SLOT(currentToolChanged())); - connect(fw, TQT_SIGNAL(selectionChanged()), - this, TQT_SLOT(selectionChanged())); - connect(fw, TQT_SIGNAL(undoRedoChanged(bool, bool, const TQString &, const TQString &)), - this, TQT_SLOT(updateUndoRedo(bool, bool, const TQString &, const TQString &))); + connect(fw, TQ_SIGNAL(showProperties(TQObject *)), + this, TQ_SLOT(showProperties(TQObject *))); + connect(fw, TQ_SIGNAL(updateProperties(TQObject *)), + this, TQ_SLOT(updateProperties(TQObject *))); + connect(this, TQ_SIGNAL(currentToolChanged()), + fw, TQ_SLOT(currentToolChanged())); + connect(fw, TQ_SIGNAL(selectionChanged()), + this, TQ_SLOT(selectionChanged())); + connect(fw, TQ_SIGNAL(undoRedoChanged(bool, bool, const TQString &, const TQString &)), + this, TQ_SLOT(updateUndoRedo(bool, bool, const TQString &, const TQString &))); fw->show(); fw->currentToolChanged(); @@ -877,7 +821,7 @@ void MainWindow::insertFormWindow(FormWindow *fw) fw->mainContainer()->setCaption(fw->caption()); WidgetFactory::saveDefaultProperties(fw->mainContainer(), WidgetDatabase:: - idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(fw->mainContainer())))); + idFromClassName(WidgetFactory::classNameOf(fw->mainContainer()))); activeWindowChanged(fw); emit formWindowsChanged(); } @@ -1088,7 +1032,7 @@ void MainWindow::setupRMBSpecialCommands(TQValueList<int> &ids, TQMap<TQString, ids << (id = rmbWidgets->insertItem(i18n("Add Page"), -1, 0)); commands.insert("add", id); } - if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w))))) + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) { if (ids.isEmpty()) ids << rmbWidgets->insertSeparator(0); @@ -1154,48 +1098,48 @@ void MainWindow::handleRMBProperties(int id, TQMap<TQString, int> &props, TQWidg } if (ok) { TQString pn(i18n("Set the 'text' of '%1'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "text", w->property("text"), text, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "text", true); + MetaDataBase::setPropertyChanged(w, "text", true); } } else if (id == props[ "title" ]) { bool ok = false; TQString title = KInputDialog::getText(i18n("Title"), i18n("New title:"), w->property("title").toString(), &ok, this); if (ok) { TQString pn(i18n("Set the 'title' of '%1'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "title", w->property("title"), title, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "title", true); + MetaDataBase::setPropertyChanged(w, "title", true); } } else if (id == props[ "pagetitle" ]) { bool ok = false; TQString text = KInputDialog::getText(i18n("Page Title"), i18n("New page title:"), w->property("pageTitle").toString(), &ok, this); if (ok) { TQString pn(i18n("Set the 'pageTitle' of '%1'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "pageTitle", w->property("pageTitle"), text, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "pageTitle", true); + MetaDataBase::setPropertyChanged(w, "pageTitle", true); } } else if (id == props[ "pixmap" ]) { TQPixmap oldPix = TQVariant(w->property("pixmap")).toPixmap(); TQPixmap pix = qChoosePixmap(this, formWindow(), oldPix); if (!pix.isNull()) { TQString pn(i18n("Set the 'pixmap' of '%1'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "pixmap", w->property("pixmap"), pix, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "pixmap", true); + MetaDataBase::setPropertyChanged(w, "pixmap", true); } } } @@ -1247,9 +1191,9 @@ void MainWindow::handleRMBSpecialCommands(int id, TQMap<TQString, int> &commands } } } - if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w))))) { + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) { if (id == commands[ "edit" ]) - WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w))), this, w, formWindow()); + WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)), this, w, formWindow()); } } @@ -1374,7 +1318,7 @@ void MainWindow::selectionChanged() breakLayout = laidout > 0; } else if (selectedWidgets == 1) { TQWidget *w = widgets.first(); - bool isContainer = WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w)))) || + bool isContainer = WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w))) || w == formWindow()->mainContainer(); actionEditAdjustSize->setEnabled(!w->parentWidget() || WidgetFactory::layoutType(w->parentWidget()) == WidgetFactory::NoLayout); @@ -1384,7 +1328,7 @@ void MainWindow::selectionChanged() actionEditVLayout->setEnabled(false); actionEditGridLayout->setEnabled(false); if (w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) { - actionEditBreakLayout->setEnabled(!isAToolBarChild(TQT_TQOBJECT(w))); + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); breakLayout = true; } else { actionEditBreakLayout->setEnabled(false); @@ -1404,14 +1348,14 @@ void MainWindow::selectionChanged() layoutChilds = true; } if (w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) { - actionEditBreakLayout->setEnabled(!isAToolBarChild(TQT_TQOBJECT(w))); + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); breakLayout = true; } } else { actionEditHLayout->setEnabled(false); actionEditVLayout->setEnabled(false); actionEditGridLayout->setEnabled(false); - actionEditBreakLayout->setEnabled(!isAToolBarChild(TQT_TQOBJECT(w))); + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); breakLayout = true; } } @@ -1620,9 +1564,9 @@ ActionEditor *MainWindow::actioneditor() const bool MainWindow::openEditor(TQWidget* w, FormWindow*) { - if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w))))) { + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) { statusBar()->message(i18n("Edit %1...").arg(w->className())); - WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(TQT_TQOBJECT(w))), this, w, formWindow()); + WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)), this, w, formWindow()); statusBar()->clear(); return true; } @@ -1640,12 +1584,12 @@ bool MainWindow::openEditor(TQWidget* w, FormWindow*) } if (ok) { TQString pn(i18n("Set the 'text' of '%2'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "text", w->property("text"), text, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "text", true); + MetaDataBase::setPropertyChanged(w, "text", true); } return true; } @@ -1655,12 +1599,12 @@ bool MainWindow::openEditor(TQWidget* w, FormWindow*) text = KInputDialog::getText(i18n("Title"), i18n("New title:"), w->property("title").toString(), &ok, this); if (ok) { TQString pn(i18n("Set the 'title' of '%2'").arg(w->name())); - SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), TQT_TQOBJECT(w), propertyEditor, + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, "title", w->property("title"), text, TQString(), TQString()); cmd->execute(); formWindow()->commandHistory()->addCommand(cmd); - MetaDataBase::setPropertyChanged(TQT_TQOBJECT(w), "title", true); + MetaDataBase::setPropertyChanged(w, "title", true); } return true; } |