From 90825e2392b2d70e43c7a25b8a3752299a933894 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- .../examples/qt-examples/chart/setdataform.rb | 184 +++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 qtruby/rubylib/examples/qt-examples/chart/setdataform.rb (limited to 'qtruby/rubylib/examples/qt-examples/chart/setdataform.rb') diff --git a/qtruby/rubylib/examples/qt-examples/chart/setdataform.rb b/qtruby/rubylib/examples/qt-examples/chart/setdataform.rb new file mode 100644 index 00000000..81a9403b --- /dev/null +++ b/qtruby/rubylib/examples/qt-examples/chart/setdataform.rb @@ -0,0 +1,184 @@ +class SetDataForm < Qt::Dialog + + slots 'setColor()', + 'setChosenColor( int, int )', + 'currentChanged( int, int )', + 'valueChanged( int, int )', + 'accept()' + + MAX_PATTERNS = 14 + + + def initialize( elements, decimalPlaces, + parent = nil, name = "set data form", + modal = true, f = 0 ) + super( parent, name, modal, f ) + + @elements = elements + @decimalPlaces = decimalPlaces + + setCaption( "Chart -- Set Data" ) + resize( 540, 440 ) + + @tableButtonBox = Qt::VBoxLayout.new( self, 11, 6, "@table button box layout" ) + + @table = Qt::Table.new( self, "data @table" ) + @table.setNumCols( 5 ) + @table.setNumRows( ChartForm::MAX_ELEMENTS ) + @table.setColumnReadOnly( 1, true ) + @table.setColumnReadOnly( 2, true ) + @table.setColumnReadOnly( 4, true ) + @table.setColumnWidth( 0, 80 ) + @table.setColumnWidth( 1, 60 ) # Columns 1 and 4 must be equal + @table.setColumnWidth( 2, 60 ) + @table.setColumnWidth( 3, 200 ) + @table.setColumnWidth( 4, 60 ) + th = @table.horizontalHeader() + th.setLabel( 0, "Value" ) + th.setLabel( 1, "Color" ) + th.setLabel( 2, "Pattern" ) + th.setLabel( 3, "Label" ) + th.setLabel( 4, "Color" ) + @tableButtonBox.addWidget( @table ) + + @buttonBox = Qt::HBoxLayout.new( nil, 0, 6, "button box layout" ) + + @colorPushButton = Qt::PushButton.new( self, "color button" ) + @colorPushButton.setText( "&Color..." ) + @colorPushButton .setEnabled( false ) + @buttonBox.addWidget( @colorPushButton ) + + spacer = Qt::SpacerItem.new( 0, 0, Qt::SizePolicy::Expanding, + Qt::SizePolicy::Minimum ) + @buttonBox.addItem( spacer ) + + okPushButton = Qt::PushButton.new( self, "ok button" ) + okPushButton.setText( "OK" ) + okPushButton.setDefault( true ) + @buttonBox.addWidget( okPushButton ) + + cancelPushButton = Qt::PushButton.new( self, "cancel button" ) + cancelPushButton.setText( "Cancel" ) + cancelPushButton.setAccel( Qt::KeySequence.new(Key_Escape) ) + @buttonBox.addWidget( cancelPushButton ) + + @tableButtonBox.addLayout( @buttonBox ) + + connect( @table, SIGNAL( 'clicked(int,int,int,const QPoint&)' ), + self, SLOT( 'setChosenColor(int,int)' ) ) + connect( @table, SIGNAL( 'currentChanged(int,int)' ), + self, SLOT( 'currentChanged(int,int)' ) ) + connect( @table, SIGNAL( 'valueChanged(int,int)' ), + self, SLOT( 'valueChanged(int,int)' ) ) + connect( @colorPushButton, SIGNAL( 'clicked()' ), self, SLOT( 'setColor()' ) ) + connect( okPushButton, SIGNAL( 'clicked()' ), self, SLOT( 'accept()' ) ) + connect( cancelPushButton, SIGNAL( 'clicked()' ), self, SLOT( 'reject()' ) ) + + patterns = Array.new(MAX_PATTERNS) + patterns[0] = Qt::Pixmap.new( "images/pattern01.xpm" ) + patterns[1] = Qt::Pixmap.new( "images/pattern02.xpm" ) + patterns[2] = Qt::Pixmap.new( "images/pattern03.xpm" ) + patterns[3] = Qt::Pixmap.new( "images/pattern04.xpm" ) + patterns[4] = Qt::Pixmap.new( "images/pattern05.xpm" ) + patterns[5] = Qt::Pixmap.new( "images/pattern06.xpm" ) + patterns[6] = Qt::Pixmap.new( "images/pattern07.xpm" ) + patterns[7] = Qt::Pixmap.new( "images/pattern08.xpm" ) + patterns[8] = Qt::Pixmap.new( "images/pattern09.xpm" ) + patterns[9] = Qt::Pixmap.new( "images/pattern10.xpm" ) + patterns[10] = Qt::Pixmap.new( "images/pattern11.xpm" ) + patterns[11] = Qt::Pixmap.new( "images/pattern12.xpm" ) + patterns[12] = Qt::Pixmap.new( "images/pattern13.xpm" ) + patterns[13] = Qt::Pixmap.new( "images/pattern14.xpm" ) + + rect = @table.cellRect( 0, 1 ) + pix = Qt::Pixmap.new( rect.width(), rect.height() ) + + for i in 0...ChartForm::MAX_ELEMENTS + element = @elements[i] + + if element.isValid() + @table.setText(i, 0, "%.#{@decimalPlaces}f" % element.value() ) + end + + color = element.valueColor() + pix.fill( color ) + @table.setPixmap( i, 1, pix ) + @table.setText( i, 1, color.name() ) + + combobox = Qt::ComboBox.new + for j in 0...MAX_PATTERNS + combobox.insertItem( patterns[j] ) + end + combobox.setCurrentItem( element.valuePattern() - 1 ) + @table.setCellWidget( i, 2, combobox ) + + @table.setText( i, 3, element.label() ) + + color = element.labelColor() + pix.fill( color ) + @table.setPixmap( i, 4, pix ) + @table.setText( i, 4, color.name() ) + end + + end + + + def currentChanged( i, col ) + @colorPushButton.setEnabled( col == 1 || col == 4 ) + end + + + def valueChanged( row, col ) + if col == 0 + d = @table.text( row, col ).to_f + if d && d > EPSILON + @table.setText( row, col, "%.#{@decimalPlaces}f" % d ) + elsif ! @table.text( row, col ).empty? + @table.setText( row, col, @table.text( row, col ) + "?" ) + end + end + end + + + def setColor() + setChosenColor( @table.currentRow(), @table.currentColumn() ) + @table.setFocus() + end + + + def setChosenColor( row, col ) + if !( col == 1 || col == 4 ) + return + end + + color = Qt::ColorDialog.getColor( + Qt::Color.new( @table.text( row, col ) ), + self, "color dialog" ) + if color.isValid() + pix = @table.pixmap( row, col ) + pix.fill( color ) + @table.setPixmap( row, col, pix ) + @table.setText( row, col, color.name() ) + end + end + + + def accept() + for i in 0...ChartForm::MAX_ELEMENTS + element = @elements[i] + d = @table.text( i, 0 ).to_f + if d + element.value = d + else + element.value = Element::INVALID + end + element.valueColor = Qt::Color.new( @table.text( i, 1 ) ) + element.valuePattern = (@table.cellWidget( i, 2 )).currentItem() + 1 + element.label = @table.text( i, 3 ) + element.labelColor = Qt::Color.new( @table.text( i, 4 ) ) + end + + super + end + +end -- cgit v1.2.3