Source Code (Use browser search to find items of interest.)
Class Index
knu'TopLevel (./kdenetwork/knu/knu.h:102)
class TopLevel: public KTMainWindow
{
Q_OBJECT
public:
TopLevel(QWidget *parent=0, const char *name=0);
~TopLevel();
//CommandDlg **getPages(int *pn) { *pn=pagesNumber; return pages; };
protected:
virtual void saveProperties(KConfig*);
virtual void readProperties(KConfig*);
QPopupMenu *fileMenu, *editMenu, *helpMenu;
KMenuBar *menuBar;
KTabCtl *tabCtrl;
int configIndex;
int closeIndex;
CommandDlg *pages[10];
static CommandCfgDlg *cfgPages[10];
int pagesNumber;
public slots:
void slotTabChanged(int);
void slotQuit();
void slotClose();
void slotCopy();
void slotSelectAll();
void slotHelp();
void slotConfig();
void slotClear();
void slotNew();
void checkBinaryAndDisplayWidget();
void enableFileClose(bool);
private:
KConfig *kconfig;
int currentTab;
//public:
// static QList<TopLevel> windowList;
protected:
void createMenu();
};
knu'TopLevel::TopLevel() (./kdenetwork/knu/knu.cpp:190)
TopLevel::TopLevel(QWidget *, const char *name)
: KTMainWindow(name)
{
KConfig *kc = kapp->config();
PingDlg *pd;
TracerouteDlg *td;
HostDlg *hd;
FingerDlg *fd;
MtrDlg *md;
WhoisDlg *wd;
NetstatDlg *nd;
/*
* Set caption string
*/
setCaption(CaptionString);
kconfig = kc;
/*
* Create MenuBar
*/
createMenu();
setMenu(menuBar);
/*
* Create the tabctrl widget
*/
tabCtrl = new KTabCtl(this);
CHECK_PTR(tabCtrl);
connect(tabCtrl, SIGNAL(tabSelected(int)),
this, SLOT(slotTabChanged(int)));
pagesNumber = 0;
/*********************
* Don't forget the slotConfig function while adding tabs
*********************/
// ping tab
if (isTabEnabled("Ping", kc)) {
pd = new PingDlg("ping", tabCtrl, i18n("&Ping"));
CHECK_PTR(pd);
tabCtrl->addTab(pd, pd->name());
pages[pagesNumber] = pd;
pagesNumber++;
}
// traceroute tab
if (isTabEnabled("Traceroute", kc)) {
td = new TracerouteDlg("traceroute", tabCtrl, i18n("&Traceroute"));
CHECK_PTR(td);
tabCtrl->addTab(td, td->name());
pages[pagesNumber] = td;
pagesNumber++;
}
// host tab
if (isTabEnabled("Host resolution", kc)) {
hd = new HostDlg("host", tabCtrl, i18n("Host &resolution"));
/*
* the "host" command name can be modified by
* HostDlg::search_for_binary if host is not found
*/
CHECK_PTR(hd);
tabCtrl->addTab(hd, hd->name());
pages[pagesNumber] = hd;
pagesNumber++;
}
// finger tab
if (isTabEnabled("Finger", kc)) {
fd = new FingerDlg("finger", tabCtrl, i18n("F&inger"));
CHECK_PTR(fd);
tabCtrl->addTab(fd, fd->name());
pages[pagesNumber] = fd;
pagesNumber++;
}
// mtr tab
if (isTabEnabled("Mtr", kc)) {
md = new MtrDlg("mtr", tabCtrl, i18n("&mtr"));
CHECK_PTR(md);
tabCtrl->addTab(md, md->name());
pages[pagesNumber] = md;
pagesNumber++;
}
// whois tab
if (isTabEnabled("Whois", kc)) {
wd = new WhoisDlg("whois", tabCtrl, i18n("&Whois"));
CHECK_PTR(wd);
tabCtrl->addTab(wd, wd->name());
pages[pagesNumber] = wd;
pagesNumber++;
}
// netstat tab
if (isTabEnabled("Netstat", kc)) {
nd = new NetstatDlg("netstat", tabCtrl, i18n("Netstat"));
CHECK_PTR(nd);
tabCtrl->addTab(nd, nd->name());
pages[pagesNumber] = nd;
pagesNumber++;
}
if (pagesNumber == 0) {
// There is *no* command enabled !
QMessageBox::critical(this, caption(),
i18n("There is no command enabled\n"
"in the configuration file.\n\n"
"So I can't do anything...\n"),
i18n("OK"));
exit(-1);
}
setFrameBorderWidth(FRAME_BORDER_WIDTH);
//tabCtrl->adjustSize();
//tabCtrl->setMinimumSize(tabCtrl->size());
setView(tabCtrl, true); // for KTMainWindow
currentTab = -1;
/*
* Enable File->Close if needed
* (calls each toplevel window's enableFileClose() )
*/
if (memberList->count() > 1) {
if (memberList->count() == 2) {
KTMainWindow *ktmw = memberList->first();
while (ktmw) {
((TopLevel *)ktmw)->enableFileClose(true);
ktmw = memberList->next();
}
}
} else {
enableFileClose(false);
}
menuBar->show();
adjustSize();
setMinimumSize(QMAX(tabCtrl->minimumSize().width()
+2*FRAME_BORDER_WIDTH, 500),
QMAX(tabCtrl->minimumSize().height()
+2*FRAME_BORDER_WIDTH, 300));
}
/**
* Create the KMenuBar
*/
void
knu'TopLevel::createMenu() (./kdenetwork/knu/knu.cpp:341)
TopLevel::createMenu()
{
int mi;
fileMenu = new QPopupMenu;
CHECK_PTR(fileMenu);
fileMenu->insertItem(i18n("&New window"),
this, SLOT(slotNew()), KStdAccel::key(KStdAccel::New));
fileMenu->insertSeparator();
closeIndex = fileMenu->insertItem(i18n("&Close window"),
this, SLOT(slotClose()),
KStdAccel::key(KStdAccel::Close));
fileMenu->insertItem(i18n("&Quit"), this, SLOT(slotQuit()),
KStdAccel::key(KStdAccel::Quit));
editMenu = new QPopupMenu;
CHECK_PTR(editMenu);
mi = editMenu->insertItem(i18n("&Copy"), this, SLOT(slotCopy()),
KStdAccel::key(KStdAccel::Copy));
editMenu->setItemEnabled(mi, FALSE);
editMenu->insertItem(i18n("Select &all"),
this, SLOT(slotSelectAll()));
editMenu->insertSeparator();
editMenu->insertItem(i18n("C&lear output window"),
this, SLOT(slotClear()));
editMenu->insertSeparator();
configIndex = editMenu->insertItem(i18n("P&references..."),
this, SLOT(slotConfig()));
#if 1
QString about;
about = i18n("Knu\nVersion %1\n\nBertrand Leconte\n<B.Leconte@mail.dotcom.fr>\n").arg(KNU_VERSION);
KHelpMenu *myHelpMenu = new KHelpMenu( this, about);
#else
// old style
helpMenu = new QPopupMenu;
CHECK_PTR(helpMenu);
helpMenu->insertItem(i18n("&Contents"),
this, SLOT(slotHelp()), KStdAccel::key(KStdAccel::Help));
helpMenu->insertSeparator();
QString str;
str = i18n("&About %1").arg(KNU_APPNAME);
helpMenu->insertItem(str, this, SLOT(slotAbout()), SHIFT+Key_F1);
helpMenu->insertItem(i18n("About &Qt"), this, SLOT(slotAboutQt()));
#endif
menuBar = new KMenuBar(this);
CHECK_PTR(menuBar);
menuBar->insertItem(i18n("&File"), fileMenu);
menuBar->insertItem(i18n("&Edit"), editMenu);
menuBar->insertSeparator();
#if 1
menuBar->insertItem(i18n("&Help"), myHelpMenu->menu());
#else
menuBar->insertItem(i18n("&Help"), helpMenu);
#endif
}
/**
* enableFileClose - called to change the status (enable/disable)
* of the File-> Close menu
*/
void
knu'TopLevel::enableFileClose() (./kdenetwork/knu/knu.cpp:406)
TopLevel::enableFileClose(bool toggle)
{
debug("TopLevel::enableFileClose(%s)", (toggle ? "true" : "false"));
fileMenu->setItemEnabled(closeIndex, toggle);
}
/**
* Edit->Preferences menu entry
*/
void
knu'TopLevel::slotConfig() (./kdenetwork/knu/knu.cpp:416)
TopLevel::slotConfig()
{
CommandCfgDlg *configPages[10];
OptionsDlg *options;
int n = 0;
/*
* Create options dialogBox
*/
/* ping */
CommandCfgDlg *ccd = new CommandCfgDlg(i18n("&Ping"), 0, "ping_cfg");
CHECK_PTR(ccd);
configPages[n] = ccd;
n++;
/* traceroute */
ccd = new CommandCfgDlg(i18n("&Traceroute"), 0, "traceroute_cfg");
CHECK_PTR(ccd);
configPages[n] = ccd;
n++;
/* host resolution */
HostCfgDlg *hcd = new HostCfgDlg(i18n("Host &resolution"), 0, "host_cfg");
CHECK_PTR(hcd);
configPages[n] = hcd;
n++;
/* finger */
ccd = new CommandCfgDlg(i18n("&Finger"), 0, "finger_cfg");
CHECK_PTR(ccd);
configPages[n] = ccd;
n++;
/* mtr */
ccd = new CommandCfgDlg(i18n("&mtr"), 0, "mtr_cfg");
CHECK_PTR(ccd);
configPages[n] = ccd;
n++;
/* whois */
WhoisCfgDlg *wcd = new WhoisCfgDlg(i18n("&Whois"), 0, "whois_cfg");
CHECK_PTR(wcd);
configPages[n] = wcd;
n++;
/* netstat */
CommandCfgDlg *ncd = new CommandCfgDlg(i18n("Netstat"), 0, "netstat_cfg");
CHECK_PTR(ncd);
configPages[n] = ncd;
n++;
options = new OptionsDlg(configPages, n, 0);
CHECK_PTR(options);
if (options->exec()) {
kapp->config()->sync();
} else {
// nothing to do
}
// distribute the new configs values among all the toplevel windows
KTMainWindow *ktmw = memberList->first();
while (ktmw) {
((TopLevel *)ktmw)->checkBinaryAndDisplayWidget();
ktmw = memberList->next();
}
}
/**
* Pass checkBinaryAndDisplayWidget to each tab
*/
void
knu'TopLevel::checkBinaryAndDisplayWidget() (./kdenetwork/knu/knu.cpp:490)
TopLevel::checkBinaryAndDisplayWidget()
{
int i;
for (i=0; i<pagesNumber; i++) {
pages[i]->checkBinaryAndDisplayWidget();
}
}
/**
* Destructor
*/
knu'TopLevel::~TopLevel() (./kdenetwork/knu/knu.cpp:502)
TopLevel::~TopLevel()
{
KTMainWindow *ktmw;
debug("TopLevel::~TopLevel() [memberList->count() = %d]",
memberList->count());
if (memberList->count() == 2) {
// disable last window File->Close menu entry
// (I don't know if I'm the first or the last one...)
ktmw = memberList->first();
((TopLevel *)ktmw)->enableFileClose(false);
ktmw = memberList->next();
((TopLevel *)ktmw)->enableFileClose(false);
}
}
/**
* called when a tab is changed
*/
void
knu'TopLevel::slotTabChanged() (./kdenetwork/knu/knu.cpp:523)
TopLevel::slotTabChanged(int newTab)
{
if (newTab != currentTab) {
if (currentTab >= 0) {
pages[currentTab]->tabDeselected();
}
pages[newTab]->tabSelected();
currentTab = newTab;
}
}
/**
* File->Quit menu entry
*/
void
knu'TopLevel::slotQuit() (./kdenetwork/knu/knu.cpp:538)
TopLevel::slotQuit()
{
debug("TopLevel::slotQuit()");
::quit();
}
/**
* Edit->Copy menu entry
*/
void
knu'TopLevel::slotCopy() (./kdenetwork/knu/knu.cpp:548)
TopLevel::slotCopy()
{
debug("TopLevel::slotCopy() is not yet implemented");
}
/**
* Edit->Clear output window menu entry
*/
void
knu'TopLevel::slotClear() (./kdenetwork/knu/knu.cpp:557)
TopLevel::slotClear()
{
pages[currentTab]->clearOutput();
}
/**
* File->New window menu entry
*/
void
knu'TopLevel::slotNew() (./kdenetwork/knu/knu.cpp:566)
TopLevel::slotNew()
{
TopLevel *toplevel = new TopLevel;
toplevel->show();
}
/**
* File->Close window menu entry
*/
void
knu'TopLevel::slotClose() (./kdenetwork/knu/knu.cpp:576)
TopLevel::slotClose()
{
//debug("TopLevel::slotClose()");
delete this; // TopLevel has been allocated by new
}
/**
* Edit->Select all menu entry
*/
void
knu'TopLevel::slotSelectAll() (./kdenetwork/knu/knu.cpp:587)
TopLevel::slotSelectAll()
{
pages[currentTab]->selectAll();
}
/**
* Help->Contents menu entry
*/
void
knu'TopLevel::slotHelp() (./kdenetwork/knu/knu.cpp:597)
TopLevel::slotHelp()
{
kapp->invokeHTMLHelp("", "");
}
/*
* Called when the user is login out.
*/
void
knu'TopLevel::saveProperties() (./kdenetwork/knu/knu.cpp:607)
TopLevel::saveProperties(KConfig *kc)
{
kc->writeEntry("CurrentTab", currentTab);
}
void
knu'TopLevel::readProperties() (./kdenetwork/knu/knu.cpp:613)
TopLevel::readProperties(KConfig *kc)
{
int entry = kc->readNumEntry("CurrentTab", -1);
if (entry >= 0) {
//tabCtrl->setCurrentTab(entry);
// This is not implemented yet (bug somewhere. Qt ?)
// FIXME
}
}
/**
* Application quit function
*/
void