diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2011-07-10 15:24:15 -0500 |
commit | bd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch) | |
tree | 7a520322212d48ebcb9fbe1087e7fca28b76185c /tools/designer/examples/colortool/mainform.ui.h | |
download | qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip |
Add Qt3 development HEAD version
Diffstat (limited to 'tools/designer/examples/colortool/mainform.ui.h')
-rw-r--r-- | tools/designer/examples/colortool/mainform.ui.h | 585 |
1 files changed, 585 insertions, 0 deletions
diff --git a/tools/designer/examples/colortool/mainform.ui.h b/tools/designer/examples/colortool/mainform.ui.h new file mode 100644 index 0000000..1ed2622 --- /dev/null +++ b/tools/designer/examples/colortool/mainform.ui.h @@ -0,0 +1,585 @@ +/**************************************************************************** +** ui.h extension file, included from the uic-generated form implementation. +** +** If you wish to add, delete or rename functions use Qt Designer which will +** update this file, preserving your code. Create an init() function in place +** of a constructor, and a destroy() function in place of a destructor. +*****************************************************************************/ + + +const int CLIP_AS_HEX = 0; +const int CLIP_AS_NAME = 1; +const int CLIP_AS_RGB = 2; +const int COL_NAME = 0; +const int COL_HEX = 1; +const int COL_WEB = 2; +const QString WINDOWS_REGISTRY = "/QtExamples"; +const QString APP_KEY = "/ColorTool/"; + +void MainForm::init() +{ + clipboard = QApplication::clipboard(); + if ( clipboard->supportsSelection() ) + clipboard->setSelectionMode( TRUE ); + + findForm = 0; + loadSettings(); + m_filename = ""; + m_changed = FALSE; + m_table_dirty = TRUE; + m_icons_dirty = TRUE; + clearData( TRUE ); +} + +void MainForm::clearData( bool fillWithDefaults ) +{ + setCaption( "Color Tool" ); + + m_colors.clear(); + m_comments.clear(); + + if ( fillWithDefaults ) { + m_colors["black"] = Qt::black; + m_colors["blue"] = Qt::blue; + m_colors["cyan"] = Qt::cyan; + m_colors["darkblue"] = Qt::darkBlue; + m_colors["darkcyan"] = Qt::darkCyan; + m_colors["darkgray"] = Qt::darkGray; + m_colors["darkgreen"] = Qt::darkGreen; + m_colors["darkmagenta"] = Qt::darkMagenta; + m_colors["darkred"] = Qt::darkRed; + m_colors["darkyellow"] = Qt::darkYellow; + m_colors["gray"] = Qt::gray; + m_colors["green"] = Qt::green; + m_colors["lightgray"] = Qt::lightGray; + m_colors["magenta"] = Qt::magenta; + m_colors["red"] = Qt::red; + m_colors["white"] = Qt::white; + m_colors["yellow"] = Qt::yellow; + } + + populate(); +} + +void MainForm::populate() +{ + if ( m_table_dirty ) { + for ( int r = 0; r < colorTable->numRows(); ++r ) { + for ( int c = 0; c < colorTable->numCols(); ++c ) { + colorTable->clearCell( r, c ); + } + } + + colorTable->setNumRows( m_colors.count() ); + if ( ! m_colors.isEmpty() ) { + QPixmap pixmap( 22, 22 ); + int row = 0; + QMap<QString,QColor>::ConstIterator it; + for ( it = m_colors.constBegin(); it != m_colors.constEnd(); ++it ) { + QColor color = it.data(); + pixmap.fill( color ); + colorTable->setText( row, COL_NAME, it.key() ); + colorTable->setPixmap( row, COL_NAME, pixmap ); + colorTable->setText( row, COL_HEX, color.name().upper() ); + if ( m_show_web ) { + QCheckTableItem *item = new QCheckTableItem( colorTable, "" ); + item->setChecked( isWebColor( color ) ); + colorTable->setItem( row, COL_WEB, item ); + } + row++; + } + colorTable->setCurrentCell( 0, 0 ); + } + colorTable->adjustColumn( COL_NAME ); + colorTable->adjustColumn( COL_HEX ); + if ( m_show_web ) { + colorTable->showColumn( COL_WEB ); + colorTable->adjustColumn( COL_WEB ); + } + else + colorTable->hideColumn( COL_WEB ); + m_table_dirty = FALSE; + } + + if ( m_icons_dirty ) { + colorIconView->clear(); + + QMap<QString,QColor>::ConstIterator it; + for ( it = m_colors.constBegin(); it != m_colors.constEnd(); ++it ) + (void) new QIconViewItem( colorIconView, it.key(), + colorSwatch( it.data() ) ); + m_icons_dirty = FALSE; + } +} + +QPixmap MainForm::colorSwatch( const QColor color ) +{ + QPixmap pixmap( 80, 80 ); + pixmap.fill( white ); + QPainter painter; + painter.begin( &pixmap ); + painter.setPen( NoPen ); + painter.setBrush( color ); + painter.drawEllipse( 0, 0, 80, 80 ); + painter.end(); + return pixmap; +} + +void MainForm::fileNew() +{ + if ( okToClear() ) { + m_filename = ""; + m_changed = FALSE; + m_table_dirty = TRUE; + m_icons_dirty = TRUE; + clearData( FALSE ); + } +} + +void MainForm::fileOpen() +{ + if ( ! okToClear() ) + return; + + QString filename = QFileDialog::getOpenFileName( + QString::null, "Colors (*.txt)", this, + "file open", "Color Tool -- File Open" ); + if ( ! filename.isEmpty() ) + load( filename ); + else + statusBar()->message( "File Open abandoned", 2000 ); +} + +void MainForm::fileSave() +{ + if ( m_filename.isEmpty() ) { + fileSaveAs(); + return; + } + + QFile file( m_filename ); + if ( file.open( IO_WriteOnly ) ) { + QTextStream stream( &file ); + if ( ! m_comments.isEmpty() ) + stream << m_comments.join( "\n" ) << "\n"; + QMap<QString,QColor>::ConstIterator it; + for ( it = m_colors.constBegin(); it != m_colors.constEnd(); ++it ) { + QColor color = it.data(); + stream << QString( "%1 %2 %3\t\t%4" ). + arg( color.red(), 3 ). + arg( color.green(), 3 ). + arg( color.blue(), 3 ). + arg( it.key() ) << "\n"; + } + file.close(); + setCaption( QString( "Color Tool -- %1" ).arg( m_filename ) ); + statusBar()->message( QString( "Saved %1 colors to '%2'" ). + arg( m_colors.count() ). + arg( m_filename ), 3000 ); + m_changed = FALSE; + } + else + statusBar()->message( QString( "Failed to save '%1'" ). + arg( m_filename ), 3000 ); + +} + +void MainForm::fileSaveAs() +{ + QString filename = QFileDialog::getSaveFileName( + QString::null, "Colors (*.txt)", this, + "file save as", "Color Tool -- File Save As" ); + if ( ! filename.isEmpty() ) { + int ans = 0; + if ( QFile::exists( filename ) ) + ans = QMessageBox::warning( + this, "Color Tool -- Overwrite File", + QString( "Overwrite\n'%1'?" ). + arg( filename ), + "&Yes", "&No", QString::null, 1, 1 ); + if ( ans == 0 ) { + m_filename = filename; + fileSave(); + return; + } + } + statusBar()->message( "Saving abandoned", 2000 ); +} + +void MainForm::load( const QString& filename ) +{ + clearData( FALSE ); + m_filename = filename; + QRegExp regex( "^\\s*(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\S+.*)$" ); + QFile file( filename ); + if ( file.open( IO_ReadOnly ) ) { + statusBar()->message( QString( "Loading '%1'..." ). + arg( filename ) ); + QTextStream stream( &file ); + QString line; + while ( ! stream.eof() ) { + line = stream.readLine(); + if ( regex.search( line ) == -1 ) + m_comments += line; + else + m_colors[regex.cap( 4 )] = QColor( + regex.cap( 1 ).toInt(), + regex.cap( 2 ).toInt(), + regex.cap( 3 ).toInt() ); + } + file.close(); + m_filename = filename; + setCaption( QString( "Color Tool -- %1" ).arg( m_filename ) ); + statusBar()->message( QString( "Loaded '%1'" ). + arg( m_filename ), 3000 ); + QWidget *visible = colorWidgetStack->visibleWidget(); + m_icons_dirty = ! ( m_table_dirty = ( visible == tablePage ) ); + populate(); + m_icons_dirty = ! ( m_table_dirty = ( visible != tablePage ) ); + m_changed = FALSE; + } + else + statusBar()->message( QString( "Failed to load '%1'" ). + arg( m_filename ), 3000 ); +} + + +bool MainForm::okToClear() +{ + if ( m_changed ) { + QString msg; + if ( m_filename.isEmpty() ) + msg = "Unnamed colors "; + else + msg = QString( "Colors '%1'\n" ).arg( m_filename ); + msg += QString( "has been changed." ); + int ans = QMessageBox::information( + this, + "Color Tool -- Unsaved Changes", + msg, "&Save", "Cancel", "&Abandon", + 0, 1 ); + if ( ans == 0 ) + fileSave(); + else if ( ans == 1 ) + return FALSE; + } + + return TRUE; +} + +void MainForm::closeEvent( QCloseEvent * ) +{ + fileExit(); +} + +void MainForm::fileExit() +{ + if ( okToClear() ) { + saveSettings(); + QApplication::exit( 0 ); + } +} + +void MainForm::editCut() +{ + QString name; + QWidget *visible = colorWidgetStack->visibleWidget(); + statusBar()->message( QString( "Deleting '%1'" ).arg( name ) ); + + if ( visible == tablePage && colorTable->numRows() ) { + int row = colorTable->currentRow(); + name = colorTable->text( row, 0 ); + colorTable->removeRow( colorTable->currentRow() ); + if ( row < colorTable->numRows() ) + colorTable->setCurrentCell( row, 0 ); + else if ( colorTable->numRows() ) + colorTable->setCurrentCell( colorTable->numRows() - 1, 0 ); + m_icons_dirty = TRUE; + } + else if ( visible == iconsPage && colorIconView->currentItem() ) { + QIconViewItem *item = colorIconView->currentItem(); + name = item->text(); + if ( colorIconView->count() == 1 ) + colorIconView->clear(); + else { + QIconViewItem *current = item->nextItem(); + if ( ! current ) + current = item->prevItem(); + delete item; + if ( current ) + colorIconView->setCurrentItem( current ); + colorIconView->arrangeItemsInGrid(); + } + m_table_dirty = TRUE; + } + + if ( ! name.isNull() ) { + m_colors.remove( name ); + m_changed = TRUE; + statusBar()->message( QString( "Deleted '%1'" ).arg( name ), 5000 ); + } + else + statusBar()->message( QString( "Failed to delete '%1'" ).arg( name ), 5000 ); +} + +void MainForm::editCopy() +{ + QString text; + QWidget *visible = colorWidgetStack->visibleWidget(); + + if ( visible == tablePage && colorTable->numRows() ) { + int row = colorTable->currentRow(); + text = colorTable->text( row, 0 ); + } + else if ( visible == iconsPage && colorIconView->currentItem() ) { + QIconViewItem *item = colorIconView->currentItem(); + text = item->text(); + } + if ( ! text.isNull() ) { + QColor color = m_colors[text]; + switch ( m_clip_as ) { + case CLIP_AS_HEX: text = color.name(); break; + case CLIP_AS_NAME: break; + case CLIP_AS_RGB: + text = QString( "%1,%2,%3" ). + arg( color.red() ). + arg( color.green() ). + arg( color.blue() ); + break; + } + clipboard->setText( text ); + statusBar()->message( "Copied '" + text + "' to the clipboard" ); + } +} + +void MainForm::editFind() +{ + if ( ! findForm ) { + findForm = new FindForm( this ); + connect( findForm, SIGNAL( lookfor(const QString&) ), + this, SLOT( lookfor(const QString&) ) ); + } + findForm->show(); +} + +void MainForm::lookfor( const QString& text ) +{ + if ( text.isEmpty() ) + return; + QString ltext = text.lower(); + QWidget *visible = colorWidgetStack->visibleWidget(); + bool found = FALSE; + + if ( visible == tablePage && colorTable->numRows() ) { + int row = colorTable->currentRow(); + for ( int i = row + 1; i < colorTable->numRows(); ++i ) + if ( colorTable->text( i, 0 ).lower().contains( ltext ) ) { + colorTable->setCurrentCell( i, 0 ); + colorTable->clearSelection(); + colorTable->selectRow( i ); + found = TRUE; + break; + } + if ( ! found ) + colorTable->setCurrentCell( row, 0 ); + + } + else if ( visible == iconsPage ) { + QIconViewItem *start = colorIconView->currentItem(); + for ( QIconViewItem *item = start->nextItem(); item; item = item->nextItem() ) + if ( item->text().lower().contains( ltext ) ) { + colorIconView->setCurrentItem( item ); + colorIconView->ensureItemVisible( item ); + found = TRUE; + break; + } + if ( ! found && start ) + colorIconView->setCurrentItem( start ); + } + if ( ! found ) { + statusBar()->message( QString( "Could not find '%1' after here" ). + arg( text ) ); + findForm->notfound(); + } +} + + + +void MainForm::helpIndex() +{ + +} + +void MainForm::helpContents() +{ + +} + +void MainForm::helpAbout() +{ + +} + + +void MainForm::changedTableColor( int row, int ) +{ + changedColor( colorTable->text( row, COL_NAME ) ); +} + +void MainForm::changedIconColor( QIconViewItem *item ) +{ + changedColor( item->text() ); +} + +void MainForm::changedColor( const QString& name ) +{ + QColor color = m_colors[name]; + int r = color.red(); + int g = color.green(); + int b = color.blue(); + statusBar()->message( QString( "%1 \"%2\" (%3,%4,%5)%6 {%7 %8 %9}" ). + arg( name ). + arg( color.name().upper() ). + arg( r ).arg( g ).arg( b ). + arg( isWebColor( color ) ? " web" : "" ). + arg( r / 255.0, 1, 'f', 3 ). + arg( g / 255.0, 1, 'f', 3 ). + arg( b / 255.0, 1, 'f', 3 ) + ); +} + + +void MainForm::changeView(QAction* action) +{ + if ( action == viewTableAction ) + colorWidgetStack->raiseWidget( tablePage ); + else + colorWidgetStack->raiseWidget( iconsPage ); +} + +bool MainForm::isWebColor( QColor color ) +{ + int r = color.red(); + int g = color.green(); + int b = color.blue(); + + return ( ( r == 0 || r == 51 || r == 102 || + r == 153 || r == 204 || r == 255 ) && + ( g == 0 || g == 51 || g == 102 || + g == 153 || g == 204 || g == 255 ) && + ( b == 0 || b == 51 || b == 102 || + b == 153 || b == 204 || b == 255 ) ); +} + + +void MainForm::editAdd() +{ + QColor color = white; + if ( ! m_colors.isEmpty() ) { + QWidget *visible = colorWidgetStack->visibleWidget(); + if ( visible == tablePage ) + color = colorTable->text( colorTable->currentRow(), + colorTable->currentColumn() ); + else + color = colorIconView->currentItem()->text(); + } + color = QColorDialog::getColor( color, this ); + if ( color.isValid() ) { + QPixmap pixmap( 80, 10 ); + pixmap.fill( color ); + ColorNameForm *colorForm = new ColorNameForm( this, "color", TRUE ); + colorForm->setColors( m_colors ); + colorForm->colorLabel->setPixmap( pixmap ); + if ( colorForm->exec() ) { + QString name = colorForm->colorLineEdit->text(); + m_colors[name] = color; + QPixmap pixmap( 22, 22 ); + pixmap.fill( color ); + int row = colorTable->currentRow(); + colorTable->insertRows( row, 1 ); + colorTable->setText( row, COL_NAME, name ); + colorTable->setPixmap( row, COL_NAME, pixmap ); + colorTable->setText( row, COL_HEX, color.name().upper() ); + if ( m_show_web ) { + QCheckTableItem *item = new QCheckTableItem( colorTable, "" ); + item->setChecked( isWebColor( color ) ); + colorTable->setItem( row, COL_WEB, item ); + } + colorTable->setCurrentCell( row, 0 ); + + (void) new QIconViewItem( colorIconView, name, + colorSwatch( color ) ); + m_changed = TRUE; + } + } +} + +void MainForm::editOptions() +{ + OptionsForm *options = new OptionsForm( this, "options", TRUE ); + switch ( m_clip_as ) { + case CLIP_AS_HEX: + options->hexRadioButton->setChecked( TRUE ); + break; + case CLIP_AS_NAME: + options->nameRadioButton->setChecked( TRUE ); + break; + case CLIP_AS_RGB: + options->rgbRadioButton->setChecked( TRUE ); + break; + } + options->webCheckBox->setChecked( m_show_web ); + + if ( options->exec() ) { + if ( options->hexRadioButton->isChecked() ) + m_clip_as = CLIP_AS_HEX; + else if ( options->nameRadioButton->isChecked() ) + m_clip_as = CLIP_AS_NAME; + else if ( options->rgbRadioButton->isChecked() ) + m_clip_as = CLIP_AS_RGB; + m_table_dirty = m_show_web != + options->webCheckBox->isChecked(); + m_show_web = options->webCheckBox->isChecked(); + + populate(); + } +} + +void MainForm::loadSettings() +{ + QSettings settings; + settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY ); + int windowWidth = settings.readNumEntry( APP_KEY + "WindowWidth", 550 ); + int windowHeight = settings.readNumEntry( APP_KEY + "WindowHeight", 500 ); + int windowX = settings.readNumEntry( APP_KEY + "WindowX", 0 ); + int windowY = settings.readNumEntry( APP_KEY + "WindowY", 0 ); + m_clip_as = settings.readNumEntry( APP_KEY + "ClipAs", CLIP_AS_HEX ); + m_show_web = settings.readBoolEntry( APP_KEY + "ShowWeb", TRUE ); + if ( ! settings.readBoolEntry( APP_KEY + "View", TRUE ) ) { + colorWidgetStack->raiseWidget( iconsPage ); + viewIconsAction->setOn( TRUE ); + } + + resize( windowWidth, windowHeight ); + move( windowX, windowY ); +} + +void MainForm::saveSettings() +{ + QSettings settings; + settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY ); + settings.writeEntry( APP_KEY + "WindowWidth", width() ); + settings.writeEntry( APP_KEY + "WindowHeight", height() ); + settings.writeEntry( APP_KEY + "WindowX", x() ); + settings.writeEntry( APP_KEY + "WindowY", y() ); + settings.writeEntry( APP_KEY + "ClipAs", m_clip_as ); + settings.writeEntry( APP_KEY + "ShowWeb", m_show_web ); + settings.writeEntry( APP_KEY + "View", + colorWidgetStack->visibleWidget() == tablePage ); +} + + +void MainForm::aboutToShow() +{ + populate(); +} |