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.
301 lines
7.8 KiB
301 lines
7.8 KiB
/***************************************************************************
|
|
tabulardialog.h
|
|
----------------------------------------------------------------------------
|
|
date : Sep 17 2006
|
|
version : 0.26
|
|
copyright : (C) 2005-2006 by Holger Danielsson
|
|
email : holger.danielsson@t-online.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* 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 option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef TABULARDIALOG_H
|
|
#define TABULARDIALOG_H
|
|
|
|
#include "kilewizard.h"
|
|
#include "latexcmd.h"
|
|
|
|
#include <tqevent.h>
|
|
#include <tqpainter.h>
|
|
#include <tqtable.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqradiobutton.h>
|
|
#include <tqcombobox.h>
|
|
#include <tqspinbox.h>
|
|
#include <tqregexp.h>
|
|
#include <tqvalidator.h>
|
|
#include <tqpopupmenu.h>
|
|
|
|
#include <kdialogbase.h>
|
|
#include <kcolorcombo.h>
|
|
#include <kpushbutton.h>
|
|
|
|
namespace KileDialog
|
|
{
|
|
|
|
namespace TabularCell
|
|
{
|
|
enum { cbNone=0, cbLeft=1, cbTop=2, cbRight=4, cbBottom=8 };
|
|
enum { cfNormal=0, cfBold=1, cfItalic=2 };
|
|
|
|
struct Data
|
|
{
|
|
int align;
|
|
int font;
|
|
int border;
|
|
TQColor bgcolor;
|
|
TQColor textcolor;
|
|
};
|
|
|
|
struct Count
|
|
{
|
|
int bold;
|
|
int italic;
|
|
int bgcolor;
|
|
int textcolor;
|
|
int cells;
|
|
TQString nameBgcolor;
|
|
TQString nameTextcolor;
|
|
};
|
|
|
|
struct Preamble
|
|
{
|
|
bool vline;
|
|
bool bold;
|
|
bool italic;
|
|
int align;
|
|
TQString bgcolor;
|
|
TQString textcolor;
|
|
};
|
|
|
|
struct CountLines
|
|
{
|
|
int cnt;
|
|
int cells;
|
|
TQValueList<int> list;
|
|
};
|
|
|
|
}
|
|
|
|
class TabCellFrame : public TQFrame
|
|
{
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
TabCellFrame(TQWidget* parent);
|
|
void setBorder(int value);
|
|
int border() { return m_border; }
|
|
|
|
protected:
|
|
void drawContents(TQPainter *p);
|
|
void mousePressEvent(TQMouseEvent *event);
|
|
void mouseDoubleClickEvent(TQMouseEvent *event);
|
|
|
|
private:
|
|
int m_border;
|
|
TQRect m_left,m_top,m_right,m_bottom;
|
|
};
|
|
|
|
|
|
class TabCellDialog : public KDialogBase
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
TabCellDialog(TQWidget *parent, TabularCell::Data *data,
|
|
const TQString &headerlabel, const TQStringList &alignlist);
|
|
~TabCellDialog() {}
|
|
|
|
TabularCell::Data data();
|
|
TQString header();
|
|
|
|
private slots:
|
|
void slotFramebuttonClicked();
|
|
void slotSeparatorClicked();
|
|
void slotResetClicked();
|
|
|
|
private:
|
|
TQComboBox *m_coHeader;
|
|
TQCheckBox *m_cbBold, *m_cbItalic;
|
|
TQRadioButton *m_rbAlignleft, *m_rbAligncenter, *m_rbAlignright;
|
|
KColorCombo *m_ccBgcolor, *m_ccTextcolor;
|
|
KPushButton *m_pbFrame1,*m_pbFrame2,*m_pbFrame3,*m_pbFrame4;
|
|
TQCheckBox *m_cbPre, *m_cbPost, *m_cbAt, *m_cbSep;
|
|
TabCellFrame *m_cellframe;
|
|
|
|
TabularCell::Data m_data;
|
|
bool m_header;
|
|
TQString m_headerlabel;
|
|
TQStringList m_preamblelist;
|
|
|
|
void initWidgets();
|
|
void initWidgetData();
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
class TabularItem :public TQTableItem
|
|
{
|
|
public:
|
|
TabularItem(TQTable* table);
|
|
TabularItem(TQTable* table, const TabularCell::Data &data);
|
|
|
|
int alignment() const;
|
|
bool isDefault();
|
|
bool isMulticolumn();
|
|
|
|
void paint(TQPainter *p,const TQColorGroup &cg,const TQRect &cr,bool selected);
|
|
TabularCell::Data m_data;
|
|
};
|
|
|
|
class TabularDialog;
|
|
class TabularTable : public TQTable
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
TabularTable(int numRows,int numCols,TQWidget* parent, TabularDialog *tabdialog);
|
|
|
|
void setText(int row,int col,const TQString &text);
|
|
void setAlignment(int row,int col,int align);
|
|
TabularCell::Data defaultAttributes();
|
|
|
|
bool isMulticolumn(int row,int col);
|
|
|
|
void paintCell( TQPainter *p, int row, int col,
|
|
const TQRect &cr, bool selected, const TQColorGroup &cg );
|
|
void updateCurrentCell();
|
|
|
|
bool isRowEmpty(int row);
|
|
bool isRowEmpty(int row,int col1, int col2);
|
|
bool isColEmpty(int col);
|
|
void clearHorizontalHeader(int col1,int col2);
|
|
void clearVerticalHeader(int row1,int row2);
|
|
|
|
bool isVLine(int row,int col, bool left);
|
|
TabularCell::Count countCells(int x1,int y1,int x2,int y2);
|
|
TabularCell::CountLines countHLines(int row, bool top);
|
|
TabularCell::CountLines countVLines(int col, bool left);
|
|
|
|
protected:
|
|
void endEdit(int row,int col,bool accept,bool replace);
|
|
void activateNextCell();
|
|
|
|
private:
|
|
enum { DataAlign, DataFont, DataBorder, DataBgcolor, DataTextcolor };
|
|
enum { PopupNone, PopupEdit, PopupSet, PopupBreak,
|
|
PopupLeft, PopupCenter, PopupRight,
|
|
PopupText, PopupAttributes, PopupAll };
|
|
|
|
TabularItem *cellItem(int row,int col);
|
|
bool isDefaultAttr(const TabularCell::Data &data);
|
|
bool updateCell(int row,int col);
|
|
void setAttributes(int row,int col,const TabularCell::Data &data);
|
|
void clearAttributes(int row,int col);
|
|
void cellParameterDialog(int x1,int y1,int x2,int y2, TabularCell::Data *data,
|
|
const TQString &headerlabel);
|
|
bool equalParameter(int x1,int y1,int x2,int y2, int code);
|
|
|
|
void mouseContextHorizontalHeader(int pos);
|
|
void mouseContextVerticalHeader(int pos);
|
|
void updateHeaderAlignment(int col1,int col2,TQChar alignchar);
|
|
|
|
bool getCurrentSelection(int &x1,int &y1,int &x2,int &y2);
|
|
void clearSelectionCells(bool cleartext,bool clearattributes);
|
|
void clearHeaderCells(bool cleartext,bool clearattributes);
|
|
void clearCellrange(int x1,int y1,int x2,int y2,bool cleartext,bool clearattributes);
|
|
void setCellrangeAlignment(int x1,int y1,int x2,int y2,int align);
|
|
void setCellrangeAttributes(int x1,int y1,int x2,int y2,const TabularCell::Data &data);
|
|
|
|
void setColspan(int row,int col1,int col2,int numcols,const TQString &text);
|
|
void getCellRange(int row,int col1, int col2, int &xl, int &xr);
|
|
TQString getCellRangeText(int row,int col1, int col2);
|
|
|
|
TQPopupMenu *createPopupMenu();
|
|
void insertPopupAlign(TQPopupMenu *popup,bool header);
|
|
void insertPopupClear(TQPopupMenu *popup);
|
|
int popupId(TQPopupMenu *popup, int id);
|
|
|
|
void cellPopupEdit();
|
|
void cellPopupSetMulticolumn();
|
|
void cellPopupBreakMulticolumn();
|
|
void cellPopupAlign(int align);
|
|
|
|
void setupContextHeaderPopup(bool horizontal, int section);
|
|
void headerPopupEdit();
|
|
void headerPopupAlign(TQChar alignchar);
|
|
|
|
bool m_horizontal;
|
|
int m_section;
|
|
int m_x1,m_y1,m_x2,m_y2;
|
|
|
|
TQPopupMenu *m_headerpopup;
|
|
TQPopupMenu *m_cellpopup;
|
|
TabularDialog *m_tabdialog;
|
|
|
|
private slots:
|
|
void slotContextMenuClicked(int row,int col,const TQPoint &);
|
|
void slotCellPopupActivated(int id);
|
|
void slotHeaderPopupActivated(int id);
|
|
|
|
protected:
|
|
bool eventFilter(TQObject *o, TQEvent *e);
|
|
|
|
};
|
|
|
|
|
|
class TabularDialog : public Wizard
|
|
{
|
|
TQ_OBJECT
|
|
|
|
|
|
public:
|
|
TabularDialog(TQWidget *parent, TDEConfig *config, KileDocument::LatexCommands *commands, bool tabularenv= true);
|
|
~TabularDialog() {}
|
|
TQStringList columnAlignments();
|
|
|
|
public slots:
|
|
void slotOk();
|
|
void slotRowValueChanged(int value);
|
|
|
|
private slots:
|
|
void slotColValueChanged(int value);
|
|
void slotEnvironmentChanged(const TQString &env);
|
|
|
|
private:
|
|
KileDocument::LatexCommands *m_latexCommands;
|
|
|
|
TabularTable *m_table;
|
|
TQComboBox *m_coEnvironment, *m_coParameter;
|
|
TQSpinBox *m_spRows, *m_spCols;
|
|
TQCheckBox *m_cbWarning, *m_cbBullets, *m_cbStarred;
|
|
TQCheckBox *m_cbCenter, *m_cbBooktabs;
|
|
|
|
int m_rows;
|
|
int m_cols;
|
|
|
|
void initEnvironments(bool tabularenv);
|
|
bool isMathmodeEnvironment(const TQString &env);
|
|
|
|
TQStringList m_alignlist;
|
|
|
|
TQStringList sortColorTable(TQMap<TQString,char> &colors);
|
|
TQString convertColor(int value);
|
|
char defineColor(const TQString &name, TQMap<TQString,char> &colors, char &colorcode);
|
|
TQString getEol(int row,bool top);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|