preferences.h
上传用户:psq1974
上传日期:2007-01-06
资源大小:1195k
文件大小:2k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /* Copyright (C) 1998, 1999 State University of New York at Stony Brook
  2.    Author: Andrew V. Shuvalov ( andrew@ecsl.cs.sunysb.edu )
  3.    Software license is located in file "COPYING"
  4. */
  5. #ifndef _preferences_h_
  6. #define _preferences_h_
  7. #include <gtk--.h>
  8. class Session;
  9. /** parent abstract class to store configuration parameter
  10.  */
  11. class BaseConfigItem {
  12. protected:
  13.   void init_base( const char *des, const char *k );
  14. public:
  15.   string descr;
  16.   string key;
  17.   BaseConfigItem() {}
  18.   virtual void init
  19.   ( GDBM_FILE dbf, const char *des, const char *k, const char *def, 
  20.     Session *ses ) = 0;
  21.   virtual void update( const string &newval ) = 0;
  22.   virtual void load( GDBM_FILE dbf ) = 0;
  23.   virtual void store( GDBM_FILE dbf ) = 0;
  24.   virtual const string &str() const = 0;
  25. };
  26. /**
  27.  */
  28. class ConfigItemStr : public BaseConfigItem {
  29.   string value;
  30. public:
  31.   void init( GDBM_FILE dbf, const char *des, const char *k, const char *def,
  32.      Session *ses );
  33.   void update( const string &newval );
  34.   void load( GDBM_FILE dbf );
  35.   void store( GDBM_FILE dbf );
  36.   
  37.   const string &str() const;
  38.   const char *c_str() const { return value.c_str(); }
  39. };
  40. /**
  41.  */
  42. class ConfigItemInt : public BaseConfigItem {
  43.   int value;
  44.   string strrepr;
  45. public:
  46.   void init( GDBM_FILE dbf, const char *des, const char *k, const char *def,
  47.      Session *ses );
  48.   void update( const string &newval );
  49.   void load( GDBM_FILE dbf );
  50.   void store( GDBM_FILE dbf );
  51.   
  52.   const string &str() const { return strrepr; }
  53.   operator int() const { return value; }
  54.   void fix();
  55. };
  56. /** edit preferences
  57.  */
  58. class PrefWindow : public Gtk_Window {
  59.   /** reference to Session */
  60.   Session &session;
  61.   Gtk_VBox *profList;
  62.   vector< Gtk_Entry * > entries;
  63. public:
  64.   static const int topWindowInitSizeX = 700;
  65.   static const int topWindowInitSizeY = 400;
  66. public:
  67.   PrefWindow( Session &session );
  68.   void add_config_items();
  69.   void update_from_screen();
  70.   void callback_select_list_item( gpointer entry );
  71.   void callback_save();
  72.   void callback_ok();
  73.   void callback_cancel();
  74. };
  75. #endif // _preferences_h_