qt-minicalc / minicalc / Window.pm

package Window;

use strict;
use warnings;

use QtCore4;
use QtGui4;
# [0]
use QtCore4::isa qw( Qt::Widget );
use QtCore4::slots
    echoChanged => ['int'],
    alignmentChanged => ['int'],
    ;

sub echoLineEdit() {
    return this->{echoLineEdit};
}

sub setEchoLineEdit() {
    return this->{echoLineEdit} = shift;
}

sub addendLineEdit() {
    return this->{addendLineEdit};
}

sub addend2LineEdit() {
    return this->{addend2LineEdit};
}

sub setAddendLineEdit() {
    return this->{addendLineEdit} = shift;
}

sub setAddend2LineEdit() {
    return this->{addend2LineEdit} = shift;
}

sub alignmentLineEdit() {
    return this->{alignmentLineEdit};
}

sub setAlignmentLineEdit() {
    return this->{alignmentLineEdit} = shift;
}

sub resultLineEdit() {
    return this->{resultLineEdit};
}

sub setAccessLineEdit() {
    return this->{resultLineEdit} = shift;
}

# [0]

# [0]
sub NEW {
    my ( $class, $parent ) = @_;
    $class->SUPER::NEW( $parent );

    my $addendGroup = Qt::GroupBox(this->tr('Addend #1'));

    my $addendLabel = Qt::Label(this->tr('Addend #1:'));

    my $addend2Group = Qt::GroupBox(this->tr('Addend #2'));

    my $addend2Label = Qt::Label(this->tr('Addend #2:'));
    
    this->setAddendLineEdit( Qt::LineEdit() );
    this->setAddend2LineEdit( Qt::LineEdit() );
# [1]

# [2]
    my $alignmentGroup = Qt::GroupBox(this->tr('Alignment'));

    my $alignmentLabel = Qt::Label(this->tr('Type:'));
    my $alignmentComboBox = Qt::ComboBox();
    $alignmentComboBox->addItem(this->tr('Left'));
    $alignmentComboBox->addItem(this->tr('Centered'));
    $alignmentComboBox->addItem(this->tr('Right'));

    this->setAlignmentLineEdit( Qt::LineEdit() );

    my $resultGroup = Qt::GroupBox(this->tr('Result:'));

    my $resultLabel = Qt::Label(this->tr('Result:'));

    this->setAccessLineEdit( Qt::LineEdit() );

    this->resultLineEdit->setReadOnly(1);
    this->connect($alignmentComboBox, SIGNAL 'activated(int)',
            this, SLOT 'alignmentChanged(int)');

    my $addendLayout = Qt::GridLayout();
    $addendLayout->addWidget($addendLabel, 0, 0);
    $addendLayout->addWidget(this->addendLineEdit, 1, 0, 1, 2);
    $addendGroup->setLayout($addendLayout);

    this->addendLineEdit->setValidator(Qt::DoubleValidator(5,
            999.0, 2, this->addendLineEdit));

    my $addend2Layout = Qt::GridLayout();
    $addend2Layout->addWidget($addend2Label, 0, 0);
    $addend2Layout->addWidget(this->addend2LineEdit, 1, 0, 1, 2);
    $addend2Group->setLayout($addend2Layout);

    this->addend2LineEdit->setValidator(Qt::DoubleValidator(5,
            999.0, 2, this->addend2LineEdit));

    my $alignmentLayout = Qt::GridLayout();
    $alignmentLayout->addWidget($alignmentLabel, 0, 0);
    $alignmentLayout->addWidget($alignmentComboBox, 0, 1);
    $alignmentLayout->addWidget(this->alignmentLineEdit, 1, 0, 1, 2);
    $alignmentGroup->setLayout($alignmentLayout);

    my $resultLayout = Qt::GridLayout();
    $resultLayout->addWidget($resultLabel, 0, 0);
    $resultLayout->addWidget(this->resultLineEdit, 1, 0, 1, 2);
    $resultGroup->setLayout($resultLayout);
# [7]

# [8]
    my $layout = Qt::GridLayout();
    $layout->addWidget($addendGroup, 0, 0);
    $layout->addWidget($addend2Group, 0, 1);
    $layout->addWidget($resultGroup, 0, 2);
    this->setLayout($layout);

    this->setWindowTitle(this->tr('Line Edits'));
}
# [8]

# [9]
sub echoChanged {
    my ($index) = @_;
    if ($index == 0) {
        this->echoLineEdit->setEchoMode(Qt::LineEdit::Normal());
    }
    elsif ( $index == 1 ) {
        this->echoLineEdit->setEchoMode(Qt::LineEdit::Password());
    }
    elsif ( $index == 2 ) {
    	this->echoLineEdit->setEchoMode(Qt::LineEdit::PasswordEchoOnEdit());
    }
    elsif ( $index == 3 ) {
        this->echoLineEdit->setEchoMode(Qt::LineEdit::NoEcho());
    }
}
# [9]

# [10]

# [11]
sub alignmentChanged {
    my ($index) = @_;
    if ( $index == 0 ) {
        this->alignmentLineEdit->setAlignment(Qt::AlignLeft());
    }
    elsif ( $index == 1 ) {
        this->alignmentLineEdit->setAlignment(Qt::AlignCenter());
    }
    elsif ( $index == 2 ) {
    	this->alignmentLineEdit->setAlignment(Qt::AlignRight());
    }
}
# [11]

1;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.