diff options
Diffstat (limited to 'examples/showimg/imagetexteditor.cpp')
-rw-r--r-- | examples/showimg/imagetexteditor.cpp | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/examples/showimg/imagetexteditor.cpp b/examples/showimg/imagetexteditor.cpp new file mode 100644 index 0000000..b3f34d9 --- /dev/null +++ b/examples/showimg/imagetexteditor.cpp @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for Qt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include "imagetexteditor.h" +#include <qimage.h> +#include <qlayout.h> +#include <qgrid.h> +#include <qvbox.h> +#include <qhbox.h> +#include <qcombobox.h> +#include <qmultilineedit.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qlistbox.h> +#include <qpushbutton.h> + + +ImageTextEditor::ImageTextEditor( QImage& i, QWidget *parent, const char *name, WFlags f ) : + QDialog(parent,name,TRUE,f), + image(i) +{ + QVBoxLayout* vbox = new QVBoxLayout(this,8); + vbox->setAutoAdd(TRUE); + + QGrid* controls = new QGrid(3,QGrid::Horizontal,this); + controls->setSpacing(8); + QLabel* l; + l=new QLabel("Language",controls); l->setAlignment(AlignCenter); + l=new QLabel("Key",controls); l->setAlignment(AlignCenter); + (void)new QLabel("",controls); // dummy + languages = new QComboBox(controls); + keys = new QComboBox(controls); + QPushButton* remove = new QPushButton("Remove",controls); + + newlang = new QLineEdit(controls); + newkey = new QLineEdit(controls); + QPushButton* add = new QPushButton("Add",controls); + + text = new QMultiLineEdit(this); + + QHBox* hbox = new QHBox(this); + QPushButton* cancel = new QPushButton("Cancel",hbox); + QPushButton* ok = new QPushButton("OK",hbox); + + connect(add,SIGNAL(clicked()), + this,SLOT(addText())); + + connect(remove,SIGNAL(clicked()), + this,SLOT(removeText())); + + connect(ok,SIGNAL(clicked()), + this,SLOT(accept())); + + connect(cancel,SIGNAL(clicked()), + this,SLOT(reject())); + + connect(languages,SIGNAL(activated(int)), + this,SLOT(updateText())); + + connect(keys,SIGNAL(activated(int)), + this,SLOT(updateText())); + + imageChanged(); +} + +ImageTextEditor::~ImageTextEditor() +{ +} + +void ImageTextEditor::imageChanged() +{ + languages->clear(); + keys->clear(); + text->clear(); + languages->insertItem("<any>"); + + languages->insertStringList(image.textLanguages()); + keys->insertStringList(image.textKeys()); + + updateText(); +} + +void ImageTextEditor::accept() +{ + storeText(); + QDialog::accept(); +} + +void ImageTextEditor::updateText() +{ + storeText(); + newlang->setText(languages->currentText()); + newkey->setText(keys->currentText()); + QString t = image.text(currKey(),currLang()); + + text->setText(t); +} + +QString ImageTextEditor::currKey() +{ + return newkey->text(); +} + +QString ImageTextEditor::currLang() +{ + QString l = newlang->text(); + if ( l=="<any>" ) + l = QString::null; + return l; +} + +QString ImageTextEditor::currText() +{ + QString t = text->text(); + if ( t.isNull() ) t = ""; + return t; +} + + +void ImageTextEditor::removeText() +{ + image.setText(currKey(),currLang(),QString::null); +} + +void ImageTextEditor::addText() +{ + storeText(); +} + +void ImageTextEditor::storeText() +{ + if ( currKey().length() > 0 ) { + image.setText(currKey(),currLang(),currText()); + } +} |