home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / qt3_emx.zip / examples / showimg / imagetexteditor.cpp < prev    next >
C/C++ Source or Header  |  2001-10-11  |  3KB  |  143 lines

  1. /****************************************************************************
  2. ** $Id:  qt/imagetexteditor.cpp   3.0.0   edited Jun 22 13:24 $
  3. **
  4. ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
  5. **
  6. ** This file is part of an example program for Qt.  This example
  7. ** program may be used, distributed and modified without limitation.
  8. **
  9. *****************************************************************************/
  10.  
  11. #include "imagetexteditor.h"
  12. #include <qimage.h>
  13. #include <qlayout.h>
  14. #include <qgrid.h>
  15. #include <qvbox.h>
  16. #include <qhbox.h>
  17. #include <qcombobox.h>
  18. #include <qmultilineedit.h>
  19. #include <qlabel.h>
  20. #include <qlineedit.h>
  21. #include <qlistbox.h>
  22. #include <qpushbutton.h>
  23.  
  24.  
  25. ImageTextEditor::ImageTextEditor( QImage& i, QWidget *parent, const char *name, WFlags f ) :
  26.     QDialog(parent,name,TRUE,f),
  27.     image(i)
  28. {
  29.     QVBoxLayout* vbox = new QVBoxLayout(this,8);
  30.     vbox->setAutoAdd(TRUE);
  31.  
  32.     QGrid* controls = new QGrid(3,QGrid::Horizontal,this);
  33.     controls->setSpacing(8);
  34.     QLabel* l;
  35.     l=new QLabel("Language",controls); l->setAlignment(AlignCenter);
  36.     l=new QLabel("Key",controls); l->setAlignment(AlignCenter);
  37.     (void)new QLabel("",controls); // dummy
  38.     languages = new QComboBox(controls);
  39.     keys = new QComboBox(controls);
  40.     QPushButton* remove = new QPushButton("Remove",controls);
  41.  
  42.     newlang = new QLineEdit(controls);
  43.     newkey = new QLineEdit(controls);
  44.     QPushButton* add = new QPushButton("Add",controls);
  45.  
  46.     text = new QMultiLineEdit(this);
  47.  
  48.     QHBox* hbox = new QHBox(this);
  49.     QPushButton* cancel = new QPushButton("Cancel",hbox);
  50.     QPushButton* ok = new QPushButton("OK",hbox);
  51.  
  52.     connect(add,SIGNAL(clicked()),
  53.     this,SLOT(addText()));
  54.  
  55.     connect(remove,SIGNAL(clicked()),
  56.     this,SLOT(removeText()));
  57.  
  58.     connect(ok,SIGNAL(clicked()),
  59.     this,SLOT(accept()));
  60.  
  61.     connect(cancel,SIGNAL(clicked()),
  62.     this,SLOT(reject()));
  63.  
  64.     connect(languages,SIGNAL(activated(int)),
  65.     this,SLOT(updateText()));
  66.  
  67.     connect(keys,SIGNAL(activated(int)),
  68.     this,SLOT(updateText()));
  69.  
  70.     imageChanged();
  71. }
  72.  
  73. ImageTextEditor::~ImageTextEditor()
  74. {
  75. }
  76.  
  77. void ImageTextEditor::imageChanged()
  78. {
  79.     languages->clear();
  80.     keys->clear();
  81.     text->clear();
  82.     languages->insertItem("<any>");
  83.  
  84.     languages->insertStringList(image.textLanguages());
  85.     keys->insertStringList(image.textKeys());
  86.  
  87.     updateText();
  88. }
  89.  
  90. void ImageTextEditor::accept()
  91. {
  92.     storeText();
  93.     QDialog::accept();
  94. }
  95.  
  96. void ImageTextEditor::updateText()
  97. {
  98.     storeText();
  99.     newlang->setText(languages->currentText());
  100.     newkey->setText(keys->currentText());
  101.     QString t = image.text(currKey(),currLang());
  102.  
  103.     text->setText(t);
  104. }
  105.  
  106. QString ImageTextEditor::currKey()
  107. {
  108.     return newkey->text();
  109. }
  110.  
  111. QString ImageTextEditor::currLang()
  112. {
  113.     QString l = newlang->text();
  114.     if ( l=="<any>" )
  115.     l = QString::null;
  116.     return l;
  117. }
  118.  
  119. QString ImageTextEditor::currText()
  120. {
  121.     QString t = text->text();
  122.     if ( t.isNull() ) t = "";
  123.     return t;
  124. }
  125.  
  126.  
  127. void ImageTextEditor::removeText()
  128. {
  129.     image.setText(currKey(),currLang(),QString::null);
  130. }
  131.  
  132. void ImageTextEditor::addText()
  133. {
  134.     storeText();
  135. }
  136.  
  137. void ImageTextEditor::storeText()
  138. {
  139.     if ( currKey().length() > 0 ) {
  140.     image.setText(currKey(),currLang(),currText());
  141.     }
  142. }
  143.