You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
276 lines
9.1 KiB
276 lines
9.1 KiB
/***************************************************************************
|
|
* Copyright (C) 2005 by Niklas Knutsson *
|
|
* nq@altern.org *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
***************************************************************************/
|
|
#include "qalculateeditnamesdialog.h"
|
|
#include "qalculate_tde_utils.h"
|
|
|
|
#include <tdelocale.h>
|
|
#include <tdelistview.h>
|
|
#include <kpushbutton.h>
|
|
#include <tqlayout.h>
|
|
#include <klineedit.h>
|
|
#include <tqlabel.h>
|
|
#include <tqapplication.h>
|
|
#include <kstdguiitem.h>
|
|
|
|
QalculateEditNamesDialog::QalculateEditNamesDialog(int item_type, TQWidget *parent, const char *name) : KDialog(parent, name, true) {
|
|
|
|
setCaption(i18n("Edit Names"));
|
|
|
|
i_type = item_type;
|
|
|
|
TQVBoxLayout *layout = new TQVBoxLayout(this, marginHint(), spacingHint());
|
|
|
|
namesView = new TDEListView(this);
|
|
namesView->addColumn(i18n("Name"));
|
|
namesView->addColumn(i18n("Abbreviation"));
|
|
namesView->setColumnAlignment(1, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Plural"));
|
|
namesView->setColumnAlignment(2, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Reference"));
|
|
namesView->setColumnAlignment(3, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Avoid Input"));
|
|
namesView->setColumnAlignment(4, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Unicode"));
|
|
namesView->setColumnAlignment(5, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Suffix"));
|
|
namesView->setColumnAlignment(6, TQt::AlignCenter);
|
|
namesView->addColumn(i18n("Case Sensitive"));
|
|
namesView->setColumnAlignment(7, TQt::AlignCenter);
|
|
namesView->setSorting(-1);
|
|
namesView->setItemsRenameable(true);
|
|
namesView->setItemsMovable(true);
|
|
namesView->setDragEnabled(true);
|
|
namesView->setAcceptDrops(true);
|
|
layout->addWidget(namesView);
|
|
|
|
TQHBoxLayout *buttonLayout = new TQHBoxLayout(layout, spacingHint());
|
|
newButton = new TQPushButton(i18n("New"), this);
|
|
buttonLayout->addWidget(newButton);
|
|
deleteButton = new TQPushButton(i18n("Delete"), this);
|
|
deleteButton->setEnabled(false);
|
|
buttonLayout->addWidget(deleteButton);
|
|
buttonLayout->addItem(new TQSpacerItem(0, 0, TQSizePolicy::Expanding, TQSizePolicy::Minimum));
|
|
buttonClose = new KPushButton(KStdGuiItem::close(), this);
|
|
buttonClose->setAutoDefault(true);
|
|
buttonClose->setDefault(true);
|
|
buttonLayout->addWidget(buttonClose);
|
|
|
|
connect(namesView, TQ_SIGNAL(selectionChanged()), this, TQ_SLOT(nameSelectionChanged()));
|
|
connect(buttonClose, TQ_SIGNAL(clicked()), this, TQ_SLOT(accept()));
|
|
connect(newButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(newName()));
|
|
connect(deleteButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(deleteName()));
|
|
connect(namesView, TQ_SIGNAL(clicked(TQListViewItem*, const TQPoint&, int)), this, TQ_SLOT(itemClicked(TQListViewItem*, const TQPoint&, int)));
|
|
connect(namesView->renameLineEdit(), TQ_SIGNAL(textChanged(const TQString&)), this, TQ_SLOT(nameChanged(const TQString&)));
|
|
|
|
}
|
|
|
|
QalculateEditNamesDialog::~QalculateEditNamesDialog() {}
|
|
|
|
void QalculateEditNamesDialog::newName() {
|
|
ExpressionName name;
|
|
TQListViewItem *i = new TDEListViewItem(namesView, namesView->lastChild(), "", i18n("No"), i18n("No"), i18n("No"), i18n("No"), i18n("No"), i18n("No"), i18n("No"));
|
|
namesView->setSelected(i, true);
|
|
tqApp->processEvents();
|
|
namesView->rename(i, 0);
|
|
}
|
|
|
|
void QalculateEditNamesDialog::setNames(ExpressionItem *item, const TQString &namestr, bool names_edited) {
|
|
|
|
if(!names_edited) {
|
|
deleteButton->setEnabled(false);
|
|
namesView->clear();
|
|
}
|
|
if(!names_edited && item && item->countNames() > 0) {
|
|
TQListViewItem *i_prev = NULL;
|
|
for(size_t index = 1; index <= item->countNames(); index++) {
|
|
const ExpressionName *ename = &item->getName(index);
|
|
TQListViewItem *i = new TDEListViewItem(namesView, i_prev);
|
|
i_prev = i;
|
|
if(ename->abbreviation)
|
|
i->setText(1, i18n("Yes"));
|
|
else
|
|
i->setText(1, i18n("No"));
|
|
if(ename->plural)
|
|
i->setText(2, i18n("Yes"));
|
|
else
|
|
i->setText(2, i18n("No"));
|
|
if(ename->reference)
|
|
i->setText(3, i18n("Yes"));
|
|
else
|
|
i->setText(3, i18n("No"));
|
|
if(ename->avoid_input)
|
|
i->setText(4, i18n("Yes"));
|
|
else
|
|
i->setText(4, i18n("No"));
|
|
if(ename->unicode)
|
|
i->setText(5, i18n("Yes"));
|
|
else
|
|
i->setText(5, i18n("No"));
|
|
if(ename->suffix)
|
|
i->setText(6, i18n("Yes"));
|
|
else
|
|
i->setText(6, i18n("No"));
|
|
if(ename->case_sensitive)
|
|
i->setText(7, i18n("Yes"));
|
|
else
|
|
i->setText(7, i18n("No"));
|
|
if(index == 1 && !namestr.isEmpty()) {
|
|
i->setText(0, namestr);
|
|
} else {
|
|
i->setText(0, ename->name.c_str());
|
|
}
|
|
}
|
|
} else if(!namestr.isEmpty()) {
|
|
if(names_edited) {
|
|
TQListViewItemIterator it(namesView);
|
|
if(it.current())
|
|
it.current()->setText(0, namestr);
|
|
} else {
|
|
ExpressionName ename(namestr.ascii());
|
|
TQListViewItem *i = new TDEListViewItem(namesView, ename.name.c_str());
|
|
if(ename.abbreviation)
|
|
i->setText(1, i18n("Yes"));
|
|
else
|
|
i->setText(1, i18n("No"));
|
|
if(ename.plural)
|
|
i->setText(2, i18n("Yes"));
|
|
else
|
|
i->setText(2, i18n("No"));
|
|
if(ename.reference)
|
|
i->setText(3, i18n("Yes"));
|
|
else
|
|
i->setText(3, i18n("No"));
|
|
if(ename.avoid_input)
|
|
i->setText(4, i18n("Yes"));
|
|
else
|
|
i->setText(4, i18n("No"));
|
|
if(ename.unicode)
|
|
i->setText(5, i18n("Yes"));
|
|
else
|
|
i->setText(5, i18n("No"));
|
|
if(ename.suffix)
|
|
i->setText(6, i18n("Yes"));
|
|
else
|
|
i->setText(6, i18n("No"));
|
|
if(ename.case_sensitive)
|
|
i->setText(7, i18n("Yes"));
|
|
else
|
|
i->setText(7, i18n("No"));
|
|
}
|
|
}
|
|
}
|
|
void QalculateEditNamesDialog::saveNames(ExpressionItem *item, const TQString &str) {
|
|
item->clearNames();
|
|
TQListViewItemIterator it(namesView);
|
|
if(it.current()) {
|
|
bool b = false;
|
|
while(it.current()) {
|
|
ExpressionName ename;
|
|
if(b || str.isEmpty())
|
|
ename.name = it.current()->text(0).ascii();
|
|
else
|
|
ename.name = str.ascii();
|
|
ename.abbreviation = (it.current()->text(1) == i18n("Yes"));
|
|
ename.plural = (it.current()->text(2) == i18n("Yes"));
|
|
ename.reference = (it.current()->text(3) == i18n("Yes"));
|
|
ename.avoid_input = (it.current()->text(4) == i18n("Yes"));
|
|
ename.unicode = (it.current()->text(5) == i18n("Yes"));
|
|
ename.suffix = (it.current()->text(6) == i18n("Yes"));
|
|
ename.case_sensitive = (it.current()->text(7) == i18n("Yes"));
|
|
item->addName(ename);
|
|
++it;
|
|
b = true;
|
|
}
|
|
} else {
|
|
item->addName(str.ascii());
|
|
}
|
|
}
|
|
void QalculateEditNamesDialog::setNamesLE(TQLineEdit *entry, TQLabel *label) {
|
|
int index = 0;
|
|
TQString str;
|
|
TQListViewItemIterator it(namesView);
|
|
while(it.current()) {
|
|
if(index == 0) {
|
|
entry->setText(it.current()->text(0));
|
|
} else {
|
|
if(index == 1) {
|
|
str = "+ ";
|
|
} else {
|
|
str += ", ";
|
|
}
|
|
str += it.current()->text(0);
|
|
}
|
|
++it;
|
|
index++;
|
|
}
|
|
label->setText(str);
|
|
}
|
|
bool QalculateEditNamesDialog::isEmpty() {
|
|
return namesView->childCount() <= 0;
|
|
}
|
|
|
|
void QalculateEditNamesDialog::deleteName() {
|
|
namesView->removeItem(namesView->selectedItem());
|
|
}
|
|
|
|
void QalculateEditNamesDialog::itemClicked(TQListViewItem *i, const TQPoint &, int c) {
|
|
if(i && c > 0) {
|
|
if(i->text(c) == i18n("Yes"))
|
|
i->setText(c, i18n("No"));
|
|
else
|
|
i->setText(c, i18n("Yes"));
|
|
if(c == 1)
|
|
i->setText(7, i->text(c));
|
|
}
|
|
}
|
|
|
|
void QalculateEditNamesDialog::nameSelectionChanged() {
|
|
deleteButton->setEnabled(namesView->selectedItem() != NULL);
|
|
}
|
|
|
|
void QalculateEditNamesDialog::nameChanged(const TQString &name) {
|
|
if(name.isNull()) return;
|
|
namesView->renameLineEdit()->blockSignals(true);
|
|
switch(i_type) {
|
|
case TYPE_VARIABLE: {
|
|
if(!CALCULATOR->variableNameIsValid(name.ascii())) {
|
|
namesView->renameLineEdit()->setText(CALCULATOR->convertToValidVariableName(name.ascii()).c_str());
|
|
}
|
|
break;
|
|
}
|
|
case TYPE_UNIT: {
|
|
if(!CALCULATOR->unitNameIsValid(name.ascii())) {
|
|
namesView->renameLineEdit()->setText(CALCULATOR->convertToValidUnitName(name.ascii()).c_str());
|
|
}
|
|
break;
|
|
}
|
|
case TYPE_FUNCTION: {
|
|
if(!CALCULATOR->functionNameIsValid(name.ascii())) {
|
|
namesView->renameLineEdit()->setText(CALCULATOR->convertToValidFunctionName(name.ascii()).c_str());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
namesView->renameLineEdit()->blockSignals(false);
|
|
}
|
|
|
|
|
|
#include "qalculateeditnamesdialog.moc"
|