2005-04-17 02:20:36 +04:00
/*
* Copyright ( C ) 2002 Roman Zippel < zippel @ linux - m68k . org >
* Released under the terms of the GNU GPL v2 .0 .
*/
2010-08-31 19:34:37 +04:00
# if QT_VERSION < 0x040000
2005-04-17 02:20:36 +04:00
# include <qlistview.h>
# else
2010-08-31 19:34:37 +04:00
# include <q3listview.h>
# endif
# include <qsettings.h>
# if QT_VERSION < 0x040000
# define Q3ValueList QValueList
# define Q3PopupMenu QPopupMenu
# define Q3ListView QListView
# define Q3ListViewItem QListViewItem
# define Q3VBox QVBox
# define Q3TextBrowser QTextBrowser
# define Q3MainWindow QMainWindow
# define Q3Action QAction
# define Q3ToolBar QToolBar
# define Q3ListViewItemIterator QListViewItemIterator
# define Q3FileDialog QFileDialog
2005-04-17 02:20:36 +04:00
# endif
2006-06-09 09:12:46 +04:00
class ConfigView ;
2005-04-17 02:20:36 +04:00
class ConfigList ;
class ConfigItem ;
class ConfigLineEdit ;
class ConfigMainWindow ;
class ConfigSettings : public QSettings {
public :
2013-10-06 22:21:31 +04:00
ConfigSettings ( ) ;
2010-08-31 19:34:37 +04:00
Q3ValueList < int > readSizes ( const QString & key , bool * ok ) ;
bool writeSizes ( const QString & key , const Q3ValueList < int > & value ) ;
2005-04-17 02:20:36 +04:00
} ;
enum colIdx {
promptColIdx , nameColIdx , noColIdx , modColIdx , yesColIdx , dataColIdx , colNr
} ;
enum listMode {
2006-06-09 09:12:45 +04:00
singleMode , menuMode , symbolMode , fullMode , listMode
2005-04-17 02:20:36 +04:00
} ;
2010-05-10 12:33:41 +04:00
enum optionMode {
normalOpt = 0 , allOpt , promptOpt
} ;
2005-04-17 02:20:36 +04:00
2010-08-31 19:34:37 +04:00
class ConfigList : public Q3ListView {
2005-04-17 02:20:36 +04:00
Q_OBJECT
2010-08-31 19:34:37 +04:00
typedef class Q3ListView Parent ;
2005-04-17 02:20:36 +04:00
public :
2006-06-09 09:12:46 +04:00
ConfigList ( ConfigView * p , const char * name = 0 ) ;
2005-04-17 02:20:36 +04:00
void reinit ( void ) ;
ConfigView * parent ( void ) const
{
return ( ConfigView * ) Parent : : parent ( ) ;
}
2006-06-09 09:12:47 +04:00
ConfigItem * findConfigItem ( struct menu * ) ;
2005-04-17 02:20:36 +04:00
protected :
void keyPressEvent ( QKeyEvent * e ) ;
void contentsMousePressEvent ( QMouseEvent * e ) ;
void contentsMouseReleaseEvent ( QMouseEvent * e ) ;
void contentsMouseMoveEvent ( QMouseEvent * e ) ;
void contentsMouseDoubleClickEvent ( QMouseEvent * e ) ;
void focusInEvent ( QFocusEvent * e ) ;
2006-06-09 09:12:46 +04:00
void contextMenuEvent ( QContextMenuEvent * e ) ;
2005-04-17 02:20:36 +04:00
public slots :
void setRootMenu ( struct menu * menu ) ;
void updateList ( ConfigItem * item ) ;
void setValue ( ConfigItem * item , tristate val ) ;
void changeValue ( ConfigItem * item ) ;
void updateSelection ( void ) ;
2006-06-09 09:12:46 +04:00
void saveSettings ( void ) ;
2005-04-17 02:20:36 +04:00
signals :
2006-06-09 09:12:45 +04:00
void menuChanged ( struct menu * menu ) ;
2005-04-17 02:20:36 +04:00
void menuSelected ( struct menu * menu ) ;
void parentSelected ( void ) ;
2006-06-09 09:12:47 +04:00
void gotFocus ( struct menu * ) ;
2005-04-17 02:20:36 +04:00
public :
void updateListAll ( void )
{
updateAll = true ;
updateList ( NULL ) ;
updateAll = false ;
}
ConfigList * listView ( )
{
return this ;
}
ConfigItem * firstChild ( ) const
{
return ( ConfigItem * ) Parent : : firstChild ( ) ;
}
int mapIdx ( colIdx idx )
{
return colMap [ idx ] ;
}
void addColumn ( colIdx idx , const QString & label )
{
colMap [ idx ] = Parent : : addColumn ( label ) ;
colRevMap [ colMap [ idx ] ] = idx ;
}
void removeColumn ( colIdx idx )
{
int col = colMap [ idx ] ;
if ( col > = 0 ) {
Parent : : removeColumn ( col ) ;
colRevMap [ col ] = colMap [ idx ] = - 1 ;
}
}
void setAllOpen ( bool open ) ;
void setParentMenu ( void ) ;
2010-05-10 12:33:41 +04:00
bool menuSkip ( struct menu * ) ;
2005-04-17 02:20:36 +04:00
template < class P >
2006-01-08 12:05:02 +03:00
void updateMenuList ( P * , struct menu * ) ;
2005-04-17 02:20:36 +04:00
bool updateAll ;
QPixmap symbolYesPix , symbolModPix , symbolNoPix ;
QPixmap choiceYesPix , choiceNoPix ;
QPixmap menuPix , menuInvPix , menuBackPix , voidPix ;
2010-05-10 12:33:41 +04:00
bool showName , showRange , showData ;
2005-04-17 02:20:36 +04:00
enum listMode mode ;
2010-05-10 12:33:41 +04:00
enum optionMode optMode ;
2005-04-17 02:20:36 +04:00
struct menu * rootEntry ;
QColorGroup disabledColorGroup ;
QColorGroup inactivedColorGroup ;
2010-08-31 19:34:37 +04:00
Q3PopupMenu * headerPopup ;
2005-04-17 02:20:36 +04:00
private :
int colMap [ colNr ] ;
int colRevMap [ colNr ] ;
} ;
2010-08-31 19:34:37 +04:00
class ConfigItem : public Q3ListViewItem {
typedef class Q3ListViewItem Parent ;
2005-04-17 02:20:36 +04:00
public :
2010-08-31 19:34:37 +04:00
ConfigItem ( Q3ListView * parent , ConfigItem * after , struct menu * m , bool v )
2005-04-17 02:20:36 +04:00
: Parent ( parent , after ) , menu ( m ) , visible ( v ) , goParent ( false )
{
init ( ) ;
}
ConfigItem ( ConfigItem * parent , ConfigItem * after , struct menu * m , bool v )
: Parent ( parent , after ) , menu ( m ) , visible ( v ) , goParent ( false )
{
init ( ) ;
}
2010-08-31 19:34:37 +04:00
ConfigItem ( Q3ListView * parent , ConfigItem * after , bool v )
2005-04-17 02:20:36 +04:00
: Parent ( parent , after ) , menu ( 0 ) , visible ( v ) , goParent ( true )
{
init ( ) ;
}
~ ConfigItem ( void ) ;
void init ( void ) ;
void okRename ( int col ) ;
void updateMenu ( void ) ;
void testUpdateMenu ( bool v ) ;
ConfigList * listView ( ) const
{
return ( ConfigList * ) Parent : : listView ( ) ;
}
ConfigItem * firstChild ( ) const
{
return ( ConfigItem * ) Parent : : firstChild ( ) ;
}
ConfigItem * nextSibling ( ) const
{
return ( ConfigItem * ) Parent : : nextSibling ( ) ;
}
void setText ( colIdx idx , const QString & text )
{
Parent : : setText ( listView ( ) - > mapIdx ( idx ) , text ) ;
}
QString text ( colIdx idx ) const
{
return Parent : : text ( listView ( ) - > mapIdx ( idx ) ) ;
}
void setPixmap ( colIdx idx , const QPixmap & pm )
{
Parent : : setPixmap ( listView ( ) - > mapIdx ( idx ) , pm ) ;
}
const QPixmap * pixmap ( colIdx idx ) const
{
return Parent : : pixmap ( listView ( ) - > mapIdx ( idx ) ) ;
}
void paintCell ( QPainter * p , const QColorGroup & cg , int column , int width , int align ) ;
ConfigItem * nextItem ;
struct menu * menu ;
bool visible ;
bool goParent ;
} ;
class ConfigLineEdit : public QLineEdit {
Q_OBJECT
typedef class QLineEdit Parent ;
public :
2006-06-09 09:12:45 +04:00
ConfigLineEdit ( ConfigView * parent ) ;
2005-04-17 02:20:36 +04:00
ConfigView * parent ( void ) const
{
return ( ConfigView * ) Parent : : parent ( ) ;
}
void show ( ConfigItem * i ) ;
void keyPressEvent ( QKeyEvent * e ) ;
public :
ConfigItem * item ;
} ;
2010-08-31 19:34:37 +04:00
class ConfigView : public Q3VBox {
2006-06-09 09:12:46 +04:00
Q_OBJECT
2010-08-31 19:34:37 +04:00
typedef class Q3VBox Parent ;
2006-06-09 09:12:46 +04:00
public :
ConfigView ( QWidget * parent , const char * name = 0 ) ;
~ ConfigView ( void ) ;
static void updateList ( ConfigItem * item ) ;
static void updateListAll ( void ) ;
bool showName ( void ) const { return list - > showName ; }
bool showRange ( void ) const { return list - > showRange ; }
bool showData ( void ) const { return list - > showData ; }
public slots :
void setShowName ( bool ) ;
void setShowRange ( bool ) ;
void setShowData ( bool ) ;
2010-05-10 12:33:41 +04:00
void setOptionMode ( QAction * ) ;
2006-06-09 09:12:46 +04:00
signals :
void showNameChanged ( bool ) ;
void showRangeChanged ( bool ) ;
void showDataChanged ( bool ) ;
public :
ConfigList * list ;
ConfigLineEdit * lineEdit ;
static ConfigView * viewList ;
ConfigView * nextView ;
2010-05-10 12:33:41 +04:00
static QAction * showNormalAction ;
static QAction * showAllAction ;
static QAction * showPromptAction ;
2006-06-09 09:12:46 +04:00
} ;
2010-08-31 19:34:37 +04:00
class ConfigInfoView : public Q3TextBrowser {
2006-06-09 09:12:45 +04:00
Q_OBJECT
2010-08-31 19:34:37 +04:00
typedef class Q3TextBrowser Parent ;
2006-06-09 09:12:45 +04:00
public :
ConfigInfoView ( QWidget * parent , const char * name = 0 ) ;
bool showDebug ( void ) const { return _showDebug ; }
public slots :
void setInfo ( struct menu * menu ) ;
2006-06-09 09:12:46 +04:00
void saveSettings ( void ) ;
2006-06-09 09:12:45 +04:00
void setShowDebug ( bool ) ;
signals :
void showDebugChanged ( bool ) ;
2006-06-09 09:12:47 +04:00
void menuSelected ( struct menu * ) ;
2006-06-09 09:12:45 +04:00
protected :
2006-06-09 09:12:47 +04:00
void symbolInfo ( void ) ;
2006-06-09 09:12:45 +04:00
void menuInfo ( void ) ;
QString debug_info ( struct symbol * sym ) ;
static QString print_filter ( const QString & str ) ;
2006-06-09 09:12:47 +04:00
static void expr_print_help ( void * data , struct symbol * sym , const char * str ) ;
2010-08-31 19:34:37 +04:00
Q3PopupMenu * createPopupMenu ( const QPoint & pos ) ;
2006-06-09 09:12:46 +04:00
void contentsContextMenuEvent ( QContextMenuEvent * e ) ;
2006-06-09 09:12:45 +04:00
2006-06-09 09:12:47 +04:00
struct symbol * sym ;
2010-08-31 19:34:37 +04:00
struct menu * _menu ;
2006-06-09 09:12:45 +04:00
bool _showDebug ;
} ;
class ConfigSearchWindow : public QDialog {
Q_OBJECT
typedef class QDialog Parent ;
public :
2006-10-05 21:12:59 +04:00
ConfigSearchWindow ( ConfigMainWindow * parent , const char * name = 0 ) ;
2006-06-09 09:12:46 +04:00
2006-06-09 09:12:45 +04:00
public slots :
2006-06-09 09:12:46 +04:00
void saveSettings ( void ) ;
2006-06-09 09:12:45 +04:00
void search ( void ) ;
2006-06-09 09:12:46 +04:00
2006-06-09 09:12:45 +04:00
protected :
QLineEdit * editField ;
QPushButton * searchButton ;
2006-06-09 09:12:46 +04:00
QSplitter * split ;
2006-06-09 09:12:45 +04:00
ConfigView * list ;
ConfigInfoView * info ;
struct symbol * * result ;
} ;
2010-08-31 19:34:37 +04:00
class ConfigMainWindow : public Q3MainWindow {
2005-04-17 02:20:36 +04:00
Q_OBJECT
2006-12-13 11:34:08 +03:00
2010-08-31 19:34:37 +04:00
static Q3Action * saveAction ;
2006-12-13 11:34:08 +03:00
static void conf_changed ( void ) ;
2005-04-17 02:20:36 +04:00
public :
ConfigMainWindow ( void ) ;
public slots :
void changeMenu ( struct menu * ) ;
2006-06-09 09:12:47 +04:00
void setMenuLink ( struct menu * ) ;
2005-04-17 02:20:36 +04:00
void listFocusChanged ( void ) ;
void goBack ( void ) ;
void loadConfig ( void ) ;
2011-05-25 17:10:25 +04:00
bool saveConfig ( void ) ;
2005-04-17 02:20:36 +04:00
void saveConfigAs ( void ) ;
2006-06-09 09:12:45 +04:00
void searchConfig ( void ) ;
2005-04-17 02:20:36 +04:00
void showSingleView ( void ) ;
void showSplitView ( void ) ;
void showFullView ( void ) ;
void showIntro ( void ) ;
void showAbout ( void ) ;
void saveSettings ( void ) ;
protected :
void closeEvent ( QCloseEvent * e ) ;
2006-06-09 09:12:45 +04:00
ConfigSearchWindow * searchWindow ;
2005-04-17 02:20:36 +04:00
ConfigView * menuView ;
ConfigList * menuList ;
ConfigView * configView ;
ConfigList * configList ;
2006-06-09 09:12:45 +04:00
ConfigInfoView * helpText ;
2010-08-31 19:34:37 +04:00
Q3ToolBar * toolBar ;
Q3Action * backAction ;
2005-04-17 02:20:36 +04:00
QSplitter * split1 ;
QSplitter * split2 ;
} ;