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.
qt3/examples/showimg/imagetexteditor.cpp

142 lines
3.1 KiB

/****************************************************************************
**
** 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());
}
}