You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/help/helpwidget.cpp

155 lines
4.8 KiB

//
// File : helpwidget.cpp
// Creation date : Thu Aug 10 2000 17:42:12 by Szymon Stefanek
//
// This file is part of the KVirc irc client distribution
// Copyright (C) 1999-2000 Szymon Stefanek (pragma at kvirc dot net)
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your opinion) any later version.
//
// This program is distributed in the HOPE that it will be USEFUL,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#include "helpwidget.h"
#include "kvi_frame.h"
#include "kvi_iconmanager.h"
#include "kvi_locale.h"
#include "kvi_app.h"
#include "kvi_msgbox.h"
#include "kvi_module.h"
#include "kvi_styled_controls.h"
#include "helpwindow.h"
#include "kvi_fileutils.h"
#include <tqtoolbutton.h>
#include <tqlineedit.h>
#include <tqtooltip.h>
#include <tqtimer.h>
#include <clipboard.h>
extern Index * g_pDocIndex;
extern KviPointerList<KviHelpWindow> * g_pHelpWindowList;
extern KviPointerList<KviHelpWidget> * g_pHelpWidgetList;
KviHelpWidget::KviHelpWidget(TQWidget * par,KviFrame * lpFrm,bool bIsStandalone)
: TQWidget(par,"help_widget")
{
if(bIsStandalone)g_pHelpWidgetList->append(this);
m_bIsStandalone = bIsStandalone;
//#warning "Re enable this when using TQt 3.0 : TQProcess "
m_pTextBrowser = new TQTextBrowser(this,"text_browser");
m_pTextBrowser->setFrameStyle(TQFrame::StyledPanel|TQFrame::Sunken);
#ifndef COMPILE_USE_QT4
m_pTextBrowser->setFocusPolicy(TQ_NoFocus);
#endif
m_pToolBar = new KviTalHBox(this);
m_pBtnIndex = new KviStyledToolButton(m_pToolBar);
m_pBtnIndex->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPINDEX));
connect(m_pBtnIndex,TQT_SIGNAL(clicked()),this,TQT_SLOT(showIndex()));
//m_pBtnIndex->setUsesBigPixmap(true);
m_pBtnBackward = new KviStyledToolButton(m_pToolBar);
m_pBtnBackward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPBACK));
connect(m_pBtnBackward,TQT_SIGNAL(clicked()),m_pTextBrowser,TQT_SLOT(backward()));
m_pBtnBackward->setEnabled(false);
//m_pBtnBackward->setUsesBigPixmap(true);
m_pBtnForward = new KviStyledToolButton(m_pToolBar);
m_pBtnForward->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPFORWARD));
connect(m_pBtnForward,TQT_SIGNAL(clicked()),m_pTextBrowser,TQT_SLOT(forward()));
m_pBtnForward->setEnabled(false);
//m_pBtnForward->setUsesBigPixmap(true);
TQWidget* pSpacer=new TQWidget(m_pToolBar);
if(bIsStandalone)
{
TQToolButton * b = new KviStyledToolButton(m_pToolBar);
b->setIconSet(*g_pIconManager->getBigIcon(KVI_BIGICON_HELPCLOSE));
connect(b,TQT_SIGNAL(clicked()),this,TQT_SLOT(doClose()));
//b->setUsesBigPixmap(true);
}
m_pToolBar->setStretchFactor(pSpacer,1);
connect(m_pTextBrowser,TQT_SIGNAL(backwardAvailable(bool)),m_pBtnBackward,TQT_SLOT(setEnabled(bool)));
connect(m_pTextBrowser,TQT_SIGNAL(forwardAvailable(bool)),m_pBtnForward,TQT_SLOT(setEnabled(bool)));
m_pTextBrowser->viewport()->installEventFilter(this);
}
KviHelpWidget::~KviHelpWidget()
{
if(m_bIsStandalone)g_pHelpWidgetList->removeRef(this);
}
void KviHelpWidget::showIndex()
{
#ifdef COMPILE_USE_QT4
m_pTextBrowser->setSource(TQUrl("index.html"));
#else
m_pTextBrowser->setSource("index.html");
#endif
}
void KviHelpWidget::resizeEvent(TQResizeEvent *e)
{
int hght = m_pToolBar->sizeHint().height();
if(hght < 40)hght = 40;
m_pToolBar->setGeometry(0,0,width(),hght);
m_pTextBrowser->setGeometry(0,hght,width(),height() - hght);
}
void KviHelpWidget::doClose()
{
// hack needed to workaround "TQToolBar::emulateButtonClicked()"
// that refers to the "this" pointer after this slot has been
// called (from the "too-small-toolbar-for-all-items-popup")
TQTimer::singleShot(0,this,TQT_SLOT(suicide()));
}
void KviHelpWidget::suicide()
{
// goodbye cruel wolrd
delete this;
}
TQSize KviHelpWidget::sizeHint() const
{
int wdth = m_pTextBrowser->sizeHint().width();
if(m_pToolBar->sizeHint().width() > wdth)wdth = m_pToolBar->sizeHint().width();
TQSize s(wdth,m_pTextBrowser->sizeHint().height() + m_pToolBar->sizeHint().height());
return s;
}
bool KviHelpWidget::eventFilter(TQObject * o, TQEvent *e)
{
TQClipboard *cb = TQApplication::clipboard();
if(e->type() == TQEvent::MouseButtonRelease) {
if(m_pTextBrowser->hasSelectedText()) {
cb->setText(m_pTextBrowser->selectedText());
}
}
return TQWidget::eventFilter(o,e);
}
#include "helpwidget.moc"