00001 /**************************************************************************** 00002 00003 File: arrayparam.h 00004 Created: by Aidan Lane, December 30, 2004 00005 Updated: by Aidan Lane, February 15, 2004 00006 00007 This file is part of Glitch 00008 Copyright (C) 2003-2004 Monash University, Clayton Campus, Australia 00009 Created by Aidan Lane, under the supervision of Jon McCormack. 00010 00011 This program was developed to aid the students studying the CSE3313 00012 Computer Graphics course at Monash University. 00013 00014 This software may contain portions that are copyright (C) 1993, 00015 Silicon Graphics, Inc. All Rights Reserved. 00016 00017 Glitch is free software; you can redistribute it and/or modify 00018 it under the terms of the GNU General Public License as published by 00019 the Free Software Foundation, version 2. 00020 00021 Glitch is distributed in the hope that it will be useful, 00022 but WITHOUT ANY WARRANTY; without even the implied warranty of 00023 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00024 GNU General Public License for more details. 00025 00026 You should have received a copy of the GNU General Public License 00027 along with this program; if not, write to the Free Software 00028 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00029 00030 *****************************************************************************/ 00031 00032 #ifndef __ARRAYPARAM_H__ 00033 #define __ARRAYPARAM_H__ 00034 00035 00036 #include <qlineedit.h> 00037 00038 #include "cmdparam.h" 00039 00040 00058 class ArrayParam : public CmdParam { 00059 00060 Q_OBJECT // make QT's signal/slot system work 00061 00062 public: 00063 ArrayParam( const char* formalVarName, const char* defaultValue, 00064 SuperPtrList<CmdParam>* extVarElements, 00065 const char* exactTypeName = "unknown_array" ) 00066 : CmdParam( formalVarName, defaultValue, exactTypeName, extVarElements ) {} 00067 00068 // widgets 00069 virtual QWidget* createWidget( QWidget* parent, const char* name, 00070 const QObject *slotOwner, const char* member ) 00071 { 00072 QLineEdit* w = new QLineEdit( parent, name ); 00073 // NOTE: we are not connecting to the lineedit's textChanged signal, but 00074 // rather its returnPressed and lostFocus signals, as it can get very 00075 // annoying when glitch updates after EVERY keystroke, especially 00076 // when enforcing the unique variable name policy. 00077 connect( w, SIGNAL( returnPressed() ), slotOwner, member ); 00078 connect( w, SIGNAL( lostFocus() ), slotOwner, member ); 00079 return (QWidget*)w; 00080 } 00081 00082 // Update the name of the array variable 00083 virtual void setWidgetValue( QWidget* widget, const QString& value ) { 00084 if ( widget != NULL ) 00085 ((QLineEdit*)widget)->setText( value ); 00086 } 00087 00088 virtual QString getWidgetValue( QWidget* widget ) { 00089 return (widget!=NULL) ? ((QLineEdit*)widget)->text() : QString::null; 00090 } 00091 }; 00092 00093 00094 #endif // __ARRAYPARAM_H__
1.3.2