1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
package MainWindow;
use strict;
use warnings;
use QtCore4;
use KDEUi4;
use KIO4;
use Qt4::GlobalSpace qw( i18n );
use Qt4::isa qw( KDE::XmlGuiWindow );
use Qt4::slots
newFile => [],
openFile => [],
saveFile => [],
saveFileAs => [],
saveFileAs => ['const QString &'];
sub NEW {
my ($class, $parent) = @_;
$class->SUPER::NEW( $parent );
this->{textArea} = KDE::TextEdit();
this->setCentralWidget(this->{textArea});
this->setupActions();
}
sub setupActions
{
my $clearAction = KDE::Action(this);
$clearAction->setText(i18n('Clear'));
$clearAction->setIcon(KDE::Icon('document-new'));
$clearAction->setShortcut(Qt4::KeySequence('Ctrl+W'));
this->actionCollection()->addAction('clear', $clearAction);
this->connect($clearAction, SIGNAL 'triggered(bool)',
this->{textArea}, SLOT 'clear()');
KDE::StandardAction::quit(kapp, SLOT 'quit()',
this->actionCollection());
KDE::StandardAction::open(this, SLOT 'openFile()',
this->actionCollection());
KDE::StandardAction::save(this, SLOT 'saveFile()',
actionCollection());
KDE::StandardAction::saveAs(this, SLOT 'saveFileAs()',
actionCollection());
KDE::StandardAction::openNew(this, SLOT 'newFile()',
actionCollection());
this->setupGUI();
}
sub newFile
{
this->{fileName} = undef;
this->{textArea}->clear();
}
sub saveFileAs
{
my ($outputFileName) = @_;
if ( !defined $outputFileName ) {
$outputFileName = KDE::FileDialog::getSaveFileName();
}
my $file = KDE::SaveFile($outputFileName);
$file->open();
my $outputByteArray = Qt4::ByteArray();
$outputByteArray->append(this->{textArea}->toPlainText());
$file->write($outputByteArray);
$file->finalize();
$file->close();
this->{fileName} = $outputFileName;
}
sub saveFile
{
this->saveFileAs(this->{fileName});
}
sub openFile
{
my ( $inputFileName ) = @_;
if ( !defined $inputFileName ) {
$inputFileName = KDE::FileDialog::getOpenFileName();
}
$inputFileName = $inputFileName ? $inputFileName : '';
my $tmpFile;
if(KDE::IO::NetAccess::download(KDE::Url($inputFileName), $tmpFile,
this))
{
my $file = Qt4::File($tmpFile);
$file->open(Qt4::IODevice::ReadOnly());
this->{textArea}->setPlainText(Qt4::TextStream($file)->readAll());
this->{fileName} = $inputFileName;
KDE::IO::NetAccess::removeTempFile($tmpFile);
}
else
{
KDE::MessageBox::error(this,
KDE::IO::NetAccess::lastErrorString());
}
}
1;
|