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.
koffice/kword/KWFrameStyleManager.h

215 lines
6.1 KiB

/* This file is part of the KDE project
Copyright (C) 2002 Nash Hoogwater <nrhoogwater@wanadoo.nl>
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; using
version 2 of the License.
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.
*/
#ifndef kwframestylemanager_h
#define kwframestylemanager_h
#include "KWFrameStyle.h"
#include <kdialogbase.h>
#include <tqptrlist.h>
class TQGroupBox;
class TQGridLayout;
class TQLineEdit;
class TQListBox;
class TQPushButton;
class TQTabWidget;
class TQWidget;
class KWDocument;
class KWFrameStyleManagerTab;
class KoParagLayoutWidget;
class KoParagLayout;
class KColorButton;
class KWBrushStylePreview;
/******************************************************************/
/* Class: KWFrameStylePreview */
/******************************************************************/
class KWFrameStylePreview : public TQWidget
{
Q_OBJECT
TQ_OBJECT
public:
KWFrameStylePreview( TQWidget *parent )
: TQWidget( parent ), frameStyle( 0 ) {
setBackgroundColor( white );
}
void setFrameStyle(KWFrameStyle *_frameStyle);
protected:
void paintEvent( TQPaintEvent *e );
void setTopBorder(KoBorder _bTop) { frameStyle->setTopBorder( _bTop ); repaint( true ); }
void setBottomBorder(KoBorder _bBottom) { frameStyle->setBottomBorder( _bBottom ); repaint( true ); }
void setRightBorder(KoBorder _bRight) { frameStyle->setRightBorder( _bRight ); repaint( true ); }
void setLeftBorder(KoBorder _bLeft) { frameStyle->setLeftBorder( _bLeft ); repaint( true ); }
void setBackground( const TQColor & col ) { frameStyle->setBackgroundColor( col ); repaint( true ); }
KWFrameStyle *frameStyle;
};
class KWFrameStyleListItem
{
public:
KWFrameStyleListItem() {}
~KWFrameStyleListItem();
KWFrameStyleListItem(KWFrameStyle *orig, KWFrameStyle *changed) {
m_origFrameStyle = orig;
m_changedFrameStyle = changed;
}
KWFrameStyle *origFrameStyle()const { return m_origFrameStyle; }
KWFrameStyle *changedFrameStyle()const { return m_changedFrameStyle; }
void setOrigFrameStyle( KWFrameStyle *_orig ) { m_origFrameStyle = _orig; }
void setChangedFrameStyle( KWFrameStyle *_changed ) { m_changedFrameStyle = _changed; }
void deleteOrigFrameStyle() { delete m_changedFrameStyle; }
void deleteChangedFrameStyle() { delete m_changedFrameStyle; }
void switchStyle();
void deleteStyle( KWFrameStyle *current );
void apply();
protected:
KWFrameStyle *m_origFrameStyle;
KWFrameStyle *m_changedFrameStyle;
};
/******************************************************************/
/* Class: KWFrameStyleManager */
/******************************************************************/
class KWFrameStyleManager : public KDialogBase
{
Q_OBJECT
TQ_OBJECT
public:
KWFrameStyleManager( TQWidget *_parent, KWDocument *_doc,
const TQString & activeStyleName );
~KWFrameStyleManager();
protected:
void addStyles(const TQPtrList<KWFrameStyle> & style );
void setupWidget();
void addGeneralTab();
void apply();
void updateGUI();
void updatePreview();
void save();
int frameStyleIndex( int pos );
TQTabWidget *m_tabs;
TQListBox *m_stylesList;
TQLineEdit *m_nameString;
TQPushButton *m_deleteButton;
TQPushButton *m_newButton;
TQPushButton *m_moveUpButton;
TQPushButton *m_moveDownButton;
TQGroupBox *previewBox;
KWFrameStylePreview *preview;
KWFrameStyle *m_currentFrameStyle;
TQStringList m_styleOrder;
TQPtrList<KWFrameStyleListItem> m_frameStyles;
TQPtrList<KWFrameStyleManagerTab> m_tabsList;
int numFrameStyles;
bool noSignals;
KWDocument *m_doc;
protected slots:
virtual void slotOk();
virtual void slotApply();
void switchStyle();
void switchTabs();
void addStyle();
void deleteStyle();
void moveUpStyle();
void moveDownStyle();
void renameStyle(const TQString &);
void importFromFile();
protected:
void addTab( KWFrameStyleManagerTab * tab );
};
class KWFrameStyleManagerTab : public TQWidget {
Q_OBJECT
TQ_OBJECT
public:
KWFrameStyleManagerTab(TQWidget *parent) : TQWidget(parent) {};
/** the new style which is to be displayed */
void setStyle(KWFrameStyle *style) { m_style = style; }
/** update the GUI from the current Style*/
virtual void update() = 0;
/** return the (i18n-ed) name of the tab */
virtual TQString tabName() = 0;
/** save the GUI to the style */
virtual void save() = 0;
protected:
KWFrameStyle *m_style;
};
class KWFrameStyleBackgroundTab : public KWFrameStyleManagerTab
{
Q_OBJECT
TQ_OBJECT
public:
KWFrameStyleBackgroundTab( TQWidget * parent );
virtual void update();
virtual void save();
virtual TQString tabName();
protected slots:
void updateBrushConfiguration( const TQColor & );
protected:
TQBrush m_backgroundColor;
TQWidget *bgwidget;
TQGridLayout *grid;
KColorButton *brushColor;
KWBrushStylePreview *brushPreview;
};
class KWFrameStyleBordersTab : public KWFrameStyleManagerTab
{
Q_OBJECT
TQ_OBJECT
public:
KWFrameStyleBordersTab( TQWidget * parent );
~KWFrameStyleBordersTab();
void setWidget( KoParagLayoutWidget * widget );
virtual void update();
virtual void save();
virtual TQString tabName();
protected:
virtual void resizeEvent( TQResizeEvent *e );
KoParagLayoutWidget * m_widget;
KoParagLayout *m_borders; // Pity that I'm using such an overdosis for just borders :-(
};
#endif