int Widgets::textInputBox(QWidget *parent, int width, int height, const QString& title, const QStringList& args, QString &result) { // KTextBox dlg(parent, 0, true, width, height, file); KDialog dlg( parent ); dlg.setCaption( title ); dlg.setButtons( KDialog::Ok ); dlg.setModal( true ); kapp->setTopWidget( &dlg ); KVBox* vbox = new KVBox(&dlg); dlg.setMainWidget(vbox); if( args.count() > 0 ) { QLabel *label = new QLabel(vbox); label->setText(args[0]); } KTextEdit *edit = new KTextEdit( vbox ); edit->setReadOnly(false); edit->setFocus(); if( args.count() > 1 ) edit->insertPlainText( args[1] ); if ( width > 0 && height > 0 ) dlg.setInitialSize( QSize( width, height ) ); handleXGeometry(&dlg); dlg.setCaption(title); const int returnDialogCode = dlg.exec(); result = edit->toPlainText(); return (returnDialogCode == KDialog::Accepted ? 0 : 1); }
void setupUI() { p->setObjectName(QStringLiteral("FieldLineEdit")); hLayout = new QHBoxLayout(p); hLayout->setMargin(0); hLayout->setSpacing(2); m_pushButtonType = new QPushButton(p); appendWidget(m_pushButtonType); hLayout->setStretchFactor(m_pushButtonType, 0); m_pushButtonType->setObjectName(QStringLiteral("FieldLineEditButton")); if (isMultiLine) { m_multiLineEditText = new KTextEdit(p); appendWidget(m_multiLineEditText); connect(m_multiLineEditText, &KTextEdit::textChanged, p, &MenuLineEdit::slotTextChanged); m_multiLineEditText->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); p->setFocusProxy(m_multiLineEditText); m_multiLineEditText->setAcceptRichText(false); } else { m_singleLineEditText = new KLineEdit(p); appendWidget(m_singleLineEditText); hLayout->setStretchFactor(m_singleLineEditText, 100); m_singleLineEditText->setClearButtonEnabled(true); m_singleLineEditText->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); m_singleLineEditText->setCompletionMode(KCompletion::CompletionPopup); m_singleLineEditText->completionObject()->setIgnoreCase(true); p->setFocusProxy(m_singleLineEditText); connect(m_singleLineEditText, &KLineEdit::textEdited, p, &MenuLineEdit::textChanged); } p->setFocusPolicy(Qt::StrongFocus); // FIXME improve focus handling p->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); }
void Klipper::slotEditData() { const HistoryStringItem* item = dynamic_cast<const HistoryStringItem*>(m_history->first()); KDialog dlg; dlg.setModal( true ); dlg.setCaption( i18n("Edit Contents") ); dlg.setButtons( KDialog::Ok | KDialog::Cancel ); KTextEdit *edit = new KTextEdit( &dlg ); if (item) { edit->setText( item->text() ); } edit->setFocus(); edit->setMinimumSize( 300, 40 ); dlg.setMainWidget( edit ); dlg.adjustSize(); if ( dlg.exec() == KDialog::Accepted ) { QString text = edit->toPlainText(); if (item) { m_history->remove( item ); } m_history->insert( new HistoryStringItem(text) ); if (m_myURLGrabber) { m_myURLGrabber->checkNewData( m_history->first() ); } } }
void KTextEdit_UnitTest::testPaste() { const QString origText = QApplication::clipboard()->text(); const QString pastedText = "Test paste from ktextedit_unittest"; QApplication::clipboard()->setText(pastedText); KTextEdit w; w.setPlainText("Hello world"); w.selectAll(); QTest::keyClick(&w, Qt::Key_V, Qt::ControlModifier); QCOMPARE(w.toPlainText(), pastedText); QApplication::clipboard()->setText(origText); }
InfoPanel::InfoPanel(QGraphicsWidget *parent) : QGraphicsWidget(parent), m_layout(new QGraphicsGridLayout), m_menuTextEdit(new Plasma::TextEdit), m_colorScheme(0) { m_colorScheme = new KColorScheme(QPalette::Active, KColorScheme::View, Plasma::Theme::defaultTheme()->colorScheme()); KTextEdit *c = m_menuTextEdit->nativeWidget(); c->setFrameShape(QFrame::NoFrame); c->setAttribute(Qt::WA_NoSystemBackground); c->viewport()->setAutoFillBackground(false); c->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // Attention: this causes a crash currently when right-clicking on the edit // http://bugs.kde.org/show_bug.cgi?id=173071 //c->setTextInteractionFlags(Qt::NoTextInteraction); c->setCursor(Qt::ArrowCursor); c->setReadOnly(true); c->setMinimumWidth(350); m_layout->addItem(m_menuTextEdit, 0, 0); setLayout(m_layout); }
void NotifyCollection::displayCollection( QWidget *p ) const { //KMessageBox::information(p,collection(),i18n("Collected Notes")); KDialog *dlg = new KDialog( p ); dlg->setCaption( i18n( "Collected Notes" ) ); dlg->setButtons( KDialog::Close ); dlg->setDefaultButton( KDialog::Close ); dlg->setModal( false ); KTextEdit *text = new KTextEdit( dlg ); text->setReadOnly( true ); text->setText( collection() ); dlg->setMainWidget( text ); dlg->setMinimumWidth( 300 ); dlg->setMinimumHeight( 300 ); dlg->show(); }
void setWidgetReadOnly(QWidget *w, bool isReadOnly) { if (m_singleLineEditText == w) m_singleLineEditText->setReadOnly(isReadOnly); else if (m_multiLineEditText == w) m_multiLineEditText->setReadOnly(isReadOnly); else if (!w->property("isConst").isValid() && !w->property("isConst").toBool()) w->setEnabled(!isReadOnly); }
void ExpandingWidgetModel::setExpanded(QModelIndex idx_, bool expanded) { QModelIndex idx(firstColumn(idx_)); //kDebug( 13035 ) << "Setting expand-state of row " << idx.row() << " to " << expanded; if( !idx.isValid() ) return; if( isExpandable(idx) ) { if( !expanded && m_expandingWidgets.contains(idx) && m_expandingWidgets[idx] ) { m_expandingWidgets[idx]->hide(); } m_expandState[idx] = expanded ? Expanded : Expandable; if( expanded ) partiallyUnExpand(idx); if( expanded && !m_expandingWidgets.contains(idx) ) { QVariant v = data(idx, CodeCompletionModel::ExpandingWidget); if( v.canConvert<QWidget*>() ) { m_expandingWidgets[idx] = v.value<QWidget*>(); } else if( v.canConvert<QString>() ) { //Create a html widget that shows the given string KTextEdit* edit = new KTextEdit( v.value<QString>() ); edit->setReadOnly(true); edit->resize(200, 50); //Make the widget small so it embeds nicely. m_expandingWidgets[idx] = edit; } else { m_expandingWidgets[idx] = 0; } } //Eventually partially expand the row if( !expanded && firstColumn(treeView()->currentIndex()) == idx && !isPartiallyExpanded(idx) ) rowSelected(idx); //Partially expand the row. emit dataChanged(idx, idx); if(treeView()) treeView()->scrollTo(idx); } }
int Widgets::textBox(QWidget *parent, int width, int height, const QString& title, const QString& file) { // KTextBox dlg(parent, 0, true, width, height, file); KDialog dlg( parent ); dlg.setCaption( title ); dlg.setButtons( KDialog::Ok ); dlg.setModal( true ); kapp->setTopWidget( &dlg ); KVBox* vbox = new KVBox(&dlg); dlg.setMainWidget(vbox); KTextEdit *edit = new KTextEdit( vbox ); edit->setReadOnly(true); QFile f(file); if (!f.open(QIODevice::ReadOnly)) { kError() << i18n("kdialog: could not open file %1", file) << endl; return -1; } QTextStream s(&f); while (!s.atEnd()) edit->append(s.readLine()); edit->setTextCursor(QTextCursor(edit->document())); f.close(); if ( width > 0 && height > 0 ) dlg.setInitialSize( QSize( width, height ) ); handleXGeometry(&dlg); dlg.setCaption(title); return (dlg.exec() == KDialog::Accepted) ? 0 : 1; }
void ScriptManager::slotShowContextMenu( QListViewItem* item, const QPoint& pos ) { const bool isCategory = item == m_generalCategory || item == m_lyricsCategory || item == m_scoreCategory || item == m_transcodeCategory; if( !item || isCategory ) return; // Look up script entry in our map ScriptMap::Iterator it; ScriptMap::Iterator end( m_scripts.end() ); for( it = m_scripts.begin(); it != end; ++it ) if( it.data().li == item ) break; enum { SHOW_LOG, EDIT }; KPopupMenu menu; menu.insertTitle( i18n( "Debugging" ) ); menu.insertItem( SmallIconSet( amaroK::icon( "clock" ) ), i18n( "Show Output &Log" ), SHOW_LOG ); menu.insertItem( SmallIconSet( amaroK::icon( "edit" ) ), i18n( "&Edit" ), EDIT ); menu.setItemEnabled( SHOW_LOG, it.data().process ); const int id = menu.exec( pos ); switch( id ) { case EDIT: KRun::runCommand( "kwrite " + it.data().url.path() ); break; case SHOW_LOG: QString line; while( it.data().process->readln( line ) != -1 ) it.data().log += line; KTextEdit* editor = new KTextEdit( it.data().log ); kapp->setTopWidget( editor ); editor->setCaption( kapp->makeStdCaption( i18n( "Output Log for %1" ).arg( it.key() ) ) ); editor->setReadOnly( true ); QFont font( "fixed" ); font.setFixedPitch( true ); font.setStyleHint( QFont::TypeWriter ); editor->setFont( font ); editor->setTextFormat( QTextEdit::PlainText ); editor->resize( 500, 380 ); editor->show(); break; } }
bool Item::mouseDoubleClickEvent( const EventInfo & eventInfo ) { Q_UNUSED(eventInfo); Property * property = 0l; Variant::Type::Value type = Variant::Type::None; const VariantDataMap::iterator variantDataEnd = m_variantData.end(); for ( VariantDataMap::iterator it = m_variantData.begin(); it != variantDataEnd; ++it ) { Property * current = *it; if ( current->type() == Variant::Type::Multiline || current->type() == Variant::Type::RichText ) { property = current; type = current->type(); break; } } if ( !property ) return false; if ( type == Variant::Type::Multiline ) { //KDialog * dlg = new KDialog( 0l, "", true, property->editorCaption(), KDialog::Ok|KDialog::Cancel|KDialog::User1, KDialog::Ok, // false, KStandardGuiItem::clear() ); KDialog * dlg = new KDialog( 0 ); dlg->setModal(true); dlg->setCaption( property->editorCaption() ); dlg->setButtons(KDialog::Ok|KDialog::Cancel|KDialog::User1); dlg->setDefaultButton(KDialog::Ok); dlg->showButtonSeparator(false); dlg->setButtonText(KDialog::User1, KStandardGuiItem::clear().text()); //QFrame *frame = dlg->makeMainWidget(); QFrame *frame = new QFrame(dlg); dlg->setMainWidget(frame); QVBoxLayout *layout = new QVBoxLayout( frame ); layout->setMargin(0); layout->setSpacing(dlg->spacingHint()); KTextEdit *textEdit = new KTextEdit( frame ); //textEdit->setTextFormat( Qt::PlainText ); // 2018.12.02 textEdit->setAcceptRichText(false); textEdit->setText( property->value().toString() ); layout->addWidget( textEdit, 10 ); textEdit->setFocus(); connect( dlg, SIGNAL( user1Clicked() ), textEdit, SLOT( clear() ) ); dlg->setMinimumWidth( 600 ); if ( dlg->exec() == KDialog::Accepted ) { property->setValue( textEdit->toPlainText() ); dataChanged(); p_itemDocument->setModified(true); } delete dlg; } else { // Is rich text RichTextEditorDlg * dlg = new RichTextEditorDlg( 0l, property->editorCaption() ); dlg->setText( property->value().toString() ); if ( dlg->exec() == KDialog::Accepted ) { property->setValue( dlg->text() ); dataChanged(); p_itemDocument->setModified(true); } delete dlg; } return true; }
void InsertHtmlDialogPrivate::_k_slotTextChanged() { q->enableButtonOk( !editor->toPlainText().isEmpty() ); }
/*! This function constructs a dialog which contains a label and a linedit for the given variable It return either the entered value or an empty string if the user hit cancel */ QString SnippetWidget::showSingleVarDialog(QString var, QMap<QString, QString> * mapSave, QRect & dlgSize) { // --BEGIN-- building a dynamic dialog QDialog dlg(this); dlg.setCaption(i18n("Enter Values for Variables")); QGridLayout * layout = new QGridLayout( &dlg, 1, 1, 11, 6, "layout"); QGridLayout * layoutTop = new QGridLayout( 0, 1, 1, 0, 6, "layoutTop"); QGridLayout * layoutVar = new QGridLayout( 0, 1, 1, 0, 6, "layoutVar"); QGridLayout * layoutBtn = new QGridLayout( 0, 2, 1, 0, 6, "layoutBtn"); KTextEdit *te = NULL; QLabel * labTop = NULL; QCheckBox * cb = NULL; labTop = new QLabel( &dlg, "label" ); layoutTop->addWidget(labTop, 0, 0); labTop->setText(i18n("Enter the replacement values for %1:").arg( var )); layout->addMultiCellLayout( layoutTop, 0, 0, 0, 1 ); cb = new QCheckBox( &dlg, "cbVar" ); cb->setChecked( FALSE ); cb->setText(i18n( "Make value &default" )); te = new KTextEdit( &dlg, "teVar" ); layoutVar->addWidget( te, 0, 1, Qt::AlignTop); layoutVar->addWidget( cb, 1, 1, Qt::AlignTop); if ((*mapSave)[var].length() > 0) { cb->setChecked( TRUE ); te->setText((*mapSave)[var]); } QToolTip::add( cb, i18n("Enable this to save the value entered to the right as the default value for this variable") ); QWhatsThis::add( cb, i18n("If you enable this option, the value entered to the right will be saved. " "If you use the same variable later, even in another snippet, the value entered to the right " "will be the default value for that variable.") ); layout->addMultiCellLayout( layoutVar, 1, 1, 0, 1 ); KPushButton * btn1 = new KPushButton( &dlg, "pushButton1" ); btn1->setText(i18n("&Cancel")); layoutBtn->addWidget( btn1, 0, 0 ); KPushButton * btn2 = new KPushButton( &dlg, "pushButton2" ); btn2->setText(i18n("&Apply")); btn2->setDefault( TRUE ); layoutBtn->addWidget( btn2, 0, 1 ); layout->addMultiCellLayout( layoutBtn, 2, 2, 0, 1 ); te->setFocus(); // --END-- building a dynamic dialog //connect the buttons to the QDialog default slots connect(btn1, SIGNAL(clicked()), &dlg, SLOT(reject()) ); connect(btn2, SIGNAL(clicked()), &dlg, SLOT(accept()) ); //execute the dialog QString strReturn = ""; if (dlgSize.isValid()) dlg.setGeometry(dlgSize); if ( dlg.exec() == QDialog::Accepted ) { if (cb->isChecked()) //if the checkbox is on; save the values for later (*mapSave)[var] = te->text(); else (*mapSave).erase(var); strReturn = te->text(); //copy the entered values back the the given map dlgSize = dlg.geometry(); } //do some cleanup delete cb; delete te; delete labTop; delete btn1; delete btn2; delete layoutTop; delete layoutVar; delete layoutBtn; delete layout; return strReturn; }
/*! This function constructs a dialog which contains a label and a linedit for every variable that is stored in the given map except the double-delimiter entry It return true if everything was ok and false if the user hit cancel */ bool SnippetWidget::showMultiVarDialog(QMap<QString, QString> * map, QMap<QString, QString> * mapSave, int & iWidth, int & iBasicHeight, int & iOneHeight) { //if no var -> no need to show if (map->count() == 0) return true; //if only var is the double-delimiter -> no need to show QMap<QString, QString>::Iterator it = map->begin(); if ( map->count() == 1 && it.data()==_SnippetConfig.getDelimiter()+_SnippetConfig.getDelimiter() ) return true; QMap<QString, KTextEdit *> mapVar2Te; //this map will help keeping track which TEXTEDIT goes with which variable QMap<QString, QCheckBox *> mapVar2Cb; //this map will help keeping track which CHECKBOX goes with which variable // --BEGIN-- building a dynamic dialog QDialog dlg(this); dlg.setCaption(i18n("Enter Values for Variables")); QGridLayout * layout = new QGridLayout( &dlg, 1, 1, 11, 6, "layout"); QGridLayout * layoutTop = new QGridLayout( 0, 1, 1, 0, 6, "layoutTop"); QGridLayout * layoutVar = new QGridLayout( 0, 1, 1, 0, 6, "layoutVar"); QGridLayout * layoutBtn = new QGridLayout( 0, 1, 1, 0, 6, "layoutBtn"); KTextEdit *te = NULL; QLabel * labTop = NULL; QCheckBox * cb = NULL; labTop = new QLabel( &dlg, "label" ); labTop->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, labTop->sizePolicy().hasHeightForWidth() ) ); labTop->setText(i18n("Enter the replacement values for these variables:")); layoutTop->addWidget(labTop, 0, 0); layout->addMultiCellLayout( layoutTop, 0, 0, 0, 1 ); int i = 0; //walk through the variable map and add for ( it = map->begin(); it != map->end(); ++it ) { //a checkbox, a lable and a lineedit to the main layout if (it.key() == _SnippetConfig.getDelimiter() + _SnippetConfig.getDelimiter()) continue; cb = new QCheckBox( &dlg, "cbVar" ); cb->setChecked( FALSE ); cb->setText(it.key()); layoutVar->addWidget( cb, i ,0, Qt::AlignTop ); te = new KTextEdit( &dlg, "teVar" ); layoutVar->addWidget( te, i, 1, Qt::AlignTop ); if ((*mapSave)[it.key()].length() > 0) { cb->setChecked( TRUE ); te->setText((*mapSave)[it.key()]); } mapVar2Te[it.key()] = te; mapVar2Cb[it.key()] = cb; QToolTip::add( cb, i18n("Enable this to save the value entered to the right as the default value for this variable") ); QWhatsThis::add( cb, i18n("If you enable this option, the value entered to the right will be saved. " "If you use the same variable later, even in another snippet, the value entered to the right " "will be the default value for that variable.") ); i++; } layout->addMultiCellLayout( layoutVar, 1, 1, 0, 1 ); KPushButton * btn1 = new KPushButton( &dlg, "pushButton1" ); btn1->setText(i18n("&Cancel")); btn1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, btn1->sizePolicy().hasHeightForWidth() ) ); layoutBtn->addWidget( btn1, 0, 0 ); KPushButton * btn2 = new KPushButton( &dlg, "pushButton2" ); btn2->setText(i18n("&Apply")); btn2->setDefault( TRUE ); btn2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, btn2->sizePolicy().hasHeightForWidth() ) ); layoutBtn->addWidget( btn2, 0, 1 ); layout->addMultiCellLayout( layoutBtn, 2, 2, 0, 1 ); // --END-- building a dynamic dialog //connect the buttons to the QDialog default slots connect(btn1, SIGNAL(clicked()), &dlg, SLOT(reject()) ); connect(btn2, SIGNAL(clicked()), &dlg, SLOT(accept()) ); //prepare to execute the dialog bool bReturn = false; //resize the textedits if (iWidth > 1) { QRect r = dlg.geometry(); r.setHeight(iBasicHeight + iOneHeight*mapVar2Te.count()); r.setWidth(iWidth); dlg.setGeometry(r); } if ( i > 0 && // only if there are any variables dlg.exec() == QDialog::Accepted ) { QMap<QString, KTextEdit *>::Iterator it2; for ( it2 = mapVar2Te.begin(); it2 != mapVar2Te.end(); ++it2 ) { if (it2.key() == _SnippetConfig.getDelimiter() + _SnippetConfig.getDelimiter()) continue; (*map)[it2.key()] = it2.data()->text(); //copy the entered values back to the given map if (mapVar2Cb[it2.key()]->isChecked()) //if the checkbox is on; save the values for later (*mapSave)[it2.key()] = it2.data()->text(); else (*mapSave).erase(it2.key()); } bReturn = true; iBasicHeight = dlg.geometry().height() - layoutVar->geometry().height(); iOneHeight = layoutVar->geometry().height() / mapVar2Te.count(); iWidth = dlg.geometry().width(); } //do some cleanup QMap<QString, KTextEdit *>::Iterator it1; for (it1 = mapVar2Te.begin(); it1 != mapVar2Te.end(); ++it1) delete it1.data(); mapVar2Te.clear(); QMap<QString, QCheckBox *>::Iterator it2; for (it2 = mapVar2Cb.begin(); it2 != mapVar2Cb.end(); ++it2) delete it2.data(); mapVar2Cb.clear(); delete layoutTop; delete layoutVar; delete layoutBtn; delete layout; if (i==0) //if nothing happened this means, that there are no variables to translate return true; //.. so just return OK return bReturn; }