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
115
116
117
118
119
120
121
122
|
#include "normalktm.h"
#include "parts.h"
#include "notepad.h"
#include <tqsplitter.h>
#include <tqcheckbox.h>
#include <tqdir.h>
#include <kiconloader.h>
#include <kstandarddirs.h>
#include <kapplication.h>
#include <kmessagebox.h>
#include <kaction.h>
#include <klocale.h>
#include <kmenubar.h>
Shell::Shell()
{
// We can do this "switch active part" because we have a splitter with
// two items in it.
// I wonder what tdevelop uses/will use to embed kedit, BTW.
m_splitter = new TQSplitter( this );
m_part1 = new Part1(this, m_splitter);
m_part2 = new Part2(this, m_splitter);
TQPopupMenu * pFile = new TQPopupMenu( this );
menuBar()->insertItem( "File", pFile );
TQObject * coll = this;
KAction * paLocal = new KAction( "&View local file", 0, this, TQT_SLOT( slotFileOpen() ), coll, "open_local_file" );
// No XML : we need to plug our actions ourselves
paLocal->plug( pFile );
KAction * paRemote = new KAction( "&View remote file", 0, this, TQT_SLOT( slotFileOpenRemote() ), coll, "open_remote_file" );
paRemote->plug( pFile );
m_paEditFile = new KAction( "&Edit file", 0, this, TQT_SLOT( slotFileEdit() ), coll, "edit_file" );
m_paEditFile->plug( pFile );
m_paCloseEditor = new KAction( "&Close file editor", 0, this, TQT_SLOT( slotFileCloseEditor() ), coll, "close_editor" );
m_paCloseEditor->setEnabled(false);
m_paCloseEditor->plug( pFile );
KAction * paQuit = new KAction( "&Quit", 0, this, TQT_SLOT( close() ), coll, "shell_quit" );
paQuit->setIconSet(TQIconSet(BarIcon("exit")));
paQuit->plug( pFile );
setCentralWidget( m_splitter );
m_splitter->setMinimumSize( 400, 300 );
m_splitter->show();
m_editorpart = 0;
}
Shell::~Shell()
{
}
void Shell::slotFileOpen()
{
if ( ! m_part1->openURL( locate("data", TDEGlobal::instance()->instanceName()+"/kpartstest_shell.rc" ) ) )
KMessageBox::error(this,"Couldn't open file !");
}
void Shell::slotFileOpenRemote()
{
KURL u ( "http://www.kde.org/index.html" );
if ( ! m_part1->openURL( u ) )
KMessageBox::error(this,"Couldn't open file !");
}
void Shell::embedEditor()
{
// replace part2 with the editor part
delete m_part2;
m_part2 = 0L;
m_editorpart = new NotepadPart( m_splitter, "editor",
this, "NotepadPart" );
m_editorpart->setReadWrite(); // read-write mode
////// m_manager->addPart( m_editorpart );
m_editorpart->widget()->show(); //// we need to do this in a normal KTM....
m_paEditFile->setEnabled(false);
m_paCloseEditor->setEnabled(true);
}
void Shell::slotFileCloseEditor()
{
delete m_editorpart;
m_editorpart = 0L;
m_part2 = new Part2(this, m_splitter);
////// m_manager->addPart( m_part2 );
m_part2->widget()->show(); //// we need to do this in a normal KTM....
m_paEditFile->setEnabled(true);
m_paCloseEditor->setEnabled(false);
}
void Shell::slotFileEdit()
{
if ( !m_editorpart )
embedEditor();
// TODO use KFileDialog to allow testing remote files
if ( ! m_editorpart->openURL( TQDir::current().absPath()+"/kpartstest_shell.rc" ) )
KMessageBox::error(this,"Couldn't open file !");
}
int main( int argc, char **argv )
{
TDEApplication app( argc, argv, "kpartstest" ); // we cheat and call ourselves kpartstest for Shell::slotFileOpen()
Shell *shell = new Shell;
shell->show();
app.exec();
return 0;
}
#include "normalktm.moc"
|