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.
200 lines
5.9 KiB
200 lines
5.9 KiB
/* This file is part of the KDE libraries
|
|
Copyright (C) 2004 Christoph Cullmann <cullmann@kde.org>
|
|
Copyright (C) 2002,2003 Joseph Wenninger <jowenn@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
Based on:
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Project : KDE MDI extension
|
|
//
|
|
// begin : 07/1999 by Szymon Stefanek as part of kvirc
|
|
// (an IRC application)
|
|
// changes : 09/1999 by Falk Brettschneider to create an
|
|
// - 06/2000 stand-alone Qt extension set of
|
|
// classes and a Qt-based library
|
|
// : 02/2000 by Massimo Morin (mmorin@schedsys.com)
|
|
// 2000-2003 maintained by the KDevelop project
|
|
// patches : -/2000 by Lars Beikirch (Lars.Beikirch@gmx.net)
|
|
// : 01/2003 by Jens Zurheide (jens.zurheide@gmx.de)
|
|
//
|
|
// copyright : (C) 1999-2003 by Falk Brettschneider
|
|
// and
|
|
// Szymon Stefanek (stefanek@tin.it)
|
|
// email : falkbr@kdevelop.org (Falk Brettschneider)
|
|
//----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef _TDEMDI_MAINWINDOW_H_
|
|
#define _TDEMDI_MAINWINDOW_H_
|
|
|
|
#include <tdeparts/dockmainwindow.h>
|
|
#include <tdemenubar.h>
|
|
#include <tdepopupmenu.h>
|
|
|
|
#include <tqptrlist.h>
|
|
#include <tqrect.h>
|
|
#include <tqapplication.h>
|
|
#include <tqguardedptr.h>
|
|
|
|
#include <tdemdi/global.h>
|
|
|
|
class TQPopupMenu;
|
|
class TQMenuBar;
|
|
|
|
#include <tdemdi/toolviewaccessor.h>
|
|
|
|
namespace KMDIPrivate {
|
|
class MainWindowPrivate;
|
|
class GUIClient;
|
|
}
|
|
|
|
namespace KMDI
|
|
{
|
|
|
|
class DockContainer;
|
|
class TabWidget;
|
|
|
|
class KMDI_EXPORT MainWindow : public KParts::DockMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class KMDI::ToolViewAccessor;
|
|
|
|
public:
|
|
/**
|
|
* Constructor.
|
|
*/
|
|
MainWindow ( TQWidget* parentWidget, const char* name = "");
|
|
|
|
/**
|
|
* Destructor.
|
|
*/
|
|
virtual ~MainWindow ();
|
|
|
|
public:
|
|
/**
|
|
* get the central tabwidget
|
|
* add all your content as child to this widget
|
|
* or as multiple tabs
|
|
* @return tabwidget in central of window
|
|
*/
|
|
TabWidget *tabWidget ();
|
|
|
|
/**
|
|
* Using this method you have to use the setWidget method of the access object, and it is very recommendet, that you use
|
|
* the widgetContainer() method for the parent of your newly created widget
|
|
* @return created toolview
|
|
*/
|
|
KMDI::ToolViewAccessor *createToolWindow();
|
|
|
|
/**
|
|
* Usually called from addWindow() when adding a tool view window. It reparents the given widget
|
|
* as toplevel and stay-on-top on the application's main widget.
|
|
* @param pWnd widget for the toolview
|
|
* @param pos docking position
|
|
* @param pTargetWnd
|
|
* @param percent
|
|
* @param tabToolTip
|
|
* @param tabCaption
|
|
* @return created toolview
|
|
*/
|
|
KMDI::ToolViewAccessor *addToolWindow( TQWidget* pWnd, KDockWidget::DockPosition pos = KDockWidget::DockNone, TQWidget* pTargetWnd = 0L, int percent = 50, const TQString& tabToolTip = 0, const TQString& tabCaption = 0);
|
|
|
|
/**
|
|
* delete the toolview belonging to the given accessor
|
|
* @param accessor toolview to delete
|
|
*/
|
|
void deleteToolWindow( KMDI::ToolViewAccessor *accessor);
|
|
|
|
/**
|
|
* delete the toolview belonging to the given pWnd
|
|
* @param pWnd toolview to be deleted
|
|
*/
|
|
void deleteToolWindow( TQWidget* pWnd);
|
|
|
|
/**
|
|
* Sets the appearance of the toolview tabs.
|
|
* @param flags See KMDI::ToolviewStyle.
|
|
*/
|
|
void setToolViewStyle(int flags);
|
|
|
|
public slots:
|
|
void prevToolViewInDock();
|
|
void nextToolViewInDock();
|
|
|
|
signals:
|
|
void collapseOverlapContainers();
|
|
|
|
protected:
|
|
void findToolViewsDockedToMain(TQPtrList<KDockWidget>* list,KDockWidget::DockPosition dprtmw);
|
|
void dockToolViewsIntoContainers(TQPtrList<KDockWidget>& widgetsToReparent,KDockWidget *container);
|
|
|
|
private:
|
|
/**
|
|
* setup main dock + tab widget
|
|
*/
|
|
void setupMainDock ();
|
|
|
|
/**
|
|
* setup the sidebars for the toolviews
|
|
* and other internals to get them working
|
|
*/
|
|
void setupToolViews ();
|
|
|
|
/**
|
|
* setup the menuentries
|
|
* must be done AFTER setupToolViews ()
|
|
*/
|
|
void setupGUIClient ();
|
|
|
|
private slots:
|
|
void setActiveToolDock(DockContainer*);
|
|
void removeFromActiveDockList(DockContainer*);
|
|
|
|
#define protected public
|
|
signals:
|
|
#undef protected
|
|
void toggleTop();
|
|
void toggleLeft();
|
|
void toggleRight();
|
|
void toggleBottom();
|
|
|
|
protected:
|
|
KMDIPrivate::GUIClient *m_guiClient;
|
|
TQMap <TQWidget*, KMDI::ToolViewAccessor*> *m_toolViews;
|
|
|
|
KDockWidget *m_leftContainer;
|
|
KDockWidget *m_rightContainer;
|
|
KDockWidget *m_topContainer;
|
|
KDockWidget *m_bottomContainer;
|
|
|
|
KMDI::TabWidget *m_tabWidget;
|
|
|
|
private:
|
|
/**
|
|
* private d-pointer for BC
|
|
*/
|
|
KMDIPrivate::MainWindowPrivate *d;
|
|
};
|
|
|
|
}
|
|
|
|
#endif //_MainWindow_H_
|
|
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|