|
|
|
/* This file is part of the KDE project
|
|
|
|
Copyright (C) 2002-2003 Ariya Hidayat <ariya@kde.org>
|
|
|
|
(C) 2002-2003 Norbert Andres <nandres@web.de>
|
|
|
|
(C) 1999-2003 Laurent Montel <montel@kde.org>
|
|
|
|
(C) 2002 Philipp Mueller <philipp.mueller@gmx.de>
|
|
|
|
(C) 2002 John Dailey <dailey@vt.edu>
|
|
|
|
(C) 2002 Daniel Herring <herring@eecs.ku.edu>
|
|
|
|
(C) 2000-2001 Werner Trobin <trobin@kde.org>
|
|
|
|
(C) 1998-2000 Torben Weis <weis@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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __kspread_dlg_formula__
|
|
|
|
#define __kspread_dlg_formula__
|
|
|
|
|
|
|
|
#include <tqframe.h>
|
|
|
|
|
|
|
|
#include <kcompletion.h>
|
|
|
|
#include <kdialogbase.h>
|
|
|
|
|
|
|
|
class TQComboBox;
|
|
|
|
class TQLabel;
|
|
|
|
class TQLineEdit;
|
|
|
|
class TQListBox;
|
|
|
|
class TQPushButton;
|
|
|
|
class TQTabWidget;
|
|
|
|
class TQTextBrowser;
|
|
|
|
class KLineEdit;
|
|
|
|
|
|
|
|
namespace KSpread
|
|
|
|
{
|
|
|
|
class FunctionDescription;
|
|
|
|
class Sheet;
|
|
|
|
class View;
|
|
|
|
|
|
|
|
class FormulaDialog : public KDialogBase
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_OBJECT
|
|
|
|
public:
|
|
|
|
FormulaDialog( View* tqparent, const char* name,const TQString& formulaName=0);
|
|
|
|
~FormulaDialog();
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Turns the @p text into a parameter that koscript can understand. The type
|
|
|
|
* of this parameter is extracted by looking at parameter number @p param in @ref #m_desc.
|
|
|
|
*/
|
|
|
|
TQString createParameter( const TQString& _text, int param );
|
|
|
|
/**
|
|
|
|
* Reads the text out of @ref #firstElement and friends and creates a parameter
|
|
|
|
* list for the function.
|
|
|
|
*/
|
|
|
|
TQString createFormula();
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
/**
|
|
|
|
* Called by the Ok button.
|
|
|
|
*/
|
|
|
|
void slotOk();
|
|
|
|
/**
|
|
|
|
* Called by the Close button.
|
|
|
|
*/
|
|
|
|
void slotClose();
|
|
|
|
/**
|
|
|
|
* Called if a function name was selected but not double clicked.
|
|
|
|
* This will just show the help page for the function.
|
|
|
|
*/
|
|
|
|
void slotSelected( const TQString& function );
|
|
|
|
/**
|
|
|
|
* Called if the user clicked on one of the "related function"
|
|
|
|
* This will switch the active function and show help page
|
|
|
|
* of the function as well.
|
|
|
|
*/
|
|
|
|
void slotShowFunction( const TQString& function );
|
|
|
|
/**
|
|
|
|
* Called if the user double clicked on some method name.
|
|
|
|
* That will switch into editing mode, allowing the user
|
|
|
|
* to enter the parameters for the function.
|
|
|
|
*/
|
|
|
|
void slotDoubleClicked( TQListBoxItem* item );
|
|
|
|
/**
|
|
|
|
* Called if a category of methods has been selected.
|
|
|
|
*/
|
|
|
|
void slotActivated(const TQString& category );
|
|
|
|
/**
|
|
|
|
* Called if the text of @ref #firstElement, @ref #secondElement etc. changes.
|
|
|
|
*/
|
|
|
|
void slotChangeText(const TQString& text );
|
|
|
|
/**
|
|
|
|
* Connected to @ref View to get notified if the selection in the
|
|
|
|
* sheet changes.
|
|
|
|
*/
|
|
|
|
void slotSelectionChanged();
|
|
|
|
/**
|
|
|
|
* Called if the button @ref #selectFunction was clicked. That
|
|
|
|
* insertes a new function call to the result.
|
|
|
|
*/
|
|
|
|
void slotSelectButton();
|
|
|
|
/**
|
|
|
|
* Called if the user changes some character in @ref #searchFunct.
|
|
|
|
*/
|
|
|
|
void slotSearchText(const TQString& text );
|
|
|
|
/**
|
|
|
|
* Called if the user pressed return in @ref #searchFunct.
|
|
|
|
*/
|
|
|
|
void slotPressReturn();
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Find out which widget got focus.
|
|
|
|
*/
|
|
|
|
bool eventFilter( TQObject* obj, TQEvent* ev );
|
|
|
|
protected:
|
|
|
|
virtual void closeEvent ( TQCloseEvent * );
|
|
|
|
private:
|
|
|
|
View* m_pView;
|
|
|
|
|
|
|
|
TQTabWidget* m_tabwidget;
|
|
|
|
TQTextBrowser* m_browser;
|
|
|
|
TQWidget* m_input;
|
|
|
|
|
|
|
|
TQPushButton *selectFunction;
|
|
|
|
TQComboBox *typeFunction;
|
|
|
|
TQListBox *functions;
|
|
|
|
TQLineEdit *result;
|
|
|
|
|
|
|
|
KLineEdit *searchFunct;
|
|
|
|
KCompletion listFunct;
|
|
|
|
|
|
|
|
TQLabel* label1;
|
|
|
|
TQLabel* label2;
|
|
|
|
TQLabel* label3;
|
|
|
|
TQLabel* label4;
|
|
|
|
TQLabel* label5;
|
|
|
|
TQLineEdit *firstElement;
|
|
|
|
TQLineEdit *secondElement;
|
|
|
|
TQLineEdit *thirdElement;
|
|
|
|
TQLineEdit *fourElement;
|
|
|
|
TQLineEdit *fiveElement;
|
|
|
|
/**
|
|
|
|
* Tells which of the lineedits has the logical focus currently.
|
|
|
|
* It may happen that a lineedit does not have qt focus but
|
|
|
|
* logical focus but not the other way round.
|
|
|
|
*/
|
|
|
|
TQLineEdit* m_focus;
|
|
|
|
|
|
|
|
int m_column;
|
|
|
|
int m_row;
|
|
|
|
TQString m_oldText;
|
|
|
|
|
|
|
|
TQString m_funcName;
|
|
|
|
TQString m_sheetName;
|
|
|
|
|
|
|
|
TQString m_rightText;
|
|
|
|
TQString m_leftText;
|
|
|
|
/**
|
|
|
|
* A lock for @ref #slotChangeText.
|
|
|
|
*/
|
|
|
|
bool refresh_result;
|
|
|
|
|
|
|
|
KSpread::FunctionDescription* m_desc;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace KSpread
|
|
|
|
|
|
|
|
#endif
|