PreferencesWindow.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:5k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * PreferencesWindow.h
  3.  *****************************************************************************
  4.  * Copyright (C) 1999, 2000, 2001 the VideoLAN team
  5.  * $Id: 85823db761d8358e01668e66fd79424262b8ed15 $
  6.  *
  7.  * Authors: Eric Petit <titer@m0k.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. #ifndef BEOS_PREFERENCES_WINDOW_H
  24. #define BEOS_PREFERENCES_WINDOW_H
  25. #include <InterfaceKit.h>
  26. #define PREFS_WINDOW_WIDTH   700
  27. #define PREFS_WINDOW_HEIGHT  400
  28. #define PREFS_ITEM_SELECTED  'pris'
  29. #define PREFS_DEFAULTS       'prde'
  30. #define PREFS_APPLY          'prap'
  31. #define PREFS_SAVE           'prsa'
  32. class VTextView : public BTextView
  33. {
  34.     public:
  35.              VTextView( BRect frame, const char *name,
  36.                         uint32 resizingMode, uint32 flags );
  37.         void FrameResized( float width, float height );
  38. };
  39. class VTextControl : public BTextControl
  40. {
  41.     public:
  42.              VTextControl( BRect frame, const char *name,
  43.                            const char *label, const char *text,
  44.                            BMessage * message, uint32 resizingMode );
  45.         void FrameResized( float width, float height );
  46. };
  47. class ConfigWidget : public BView
  48. {
  49.     public:
  50.                         ConfigWidget( intf_thread_t * p_intf, BRect rect,
  51.                                       module_config_t * p_item );
  52.                         ~ConfigWidget();
  53.         bool            InitCheck() { return fInitOK; }
  54.         void            Apply( bool doIt );
  55.     private:
  56.         intf_thread_t * p_intf;
  57.         bool            fInitOK;
  58.         int             fType;
  59.         char          * fName;
  60.         VTextControl  * fTextControl;
  61.         BCheckBox     * fCheckBox;
  62.         BPopUpMenu    * fPopUpMenu;
  63.         BMenuField    * fMenuField;
  64.         BSlider       * fSlider;
  65.         BStringView   * fStringView;
  66.         BCheckBox     * fAltCheck;
  67.         BCheckBox     * fCtrlCheck;
  68.         BCheckBox     * fShiftCheck;
  69. };
  70. class ConfigItem : public BStringItem
  71. {
  72.     public:
  73.                       ConfigItem( intf_thread_t * p_intf,
  74.                                   char * name, bool subModule,
  75.                                   int objectId, int type, char * help );
  76.                       ~ConfigItem();
  77.         int           ObjectId() { return fObjectId; }
  78.         BBox        * Box() { return fBox; }
  79.         void          UpdateScrollBar();
  80.         void          ResetScroll();
  81.         void          Apply( bool doIt );
  82.     private:
  83.         intf_thread_t * p_intf;
  84.         bool            fSubModule;
  85.         int             fObjectId;
  86.         int             fType;
  87.         char          * fHelp;
  88.         BBox          * fBox;
  89.         VTextView     * fTextView;
  90.         BScrollView   * fScroll;
  91.         BView         * fView;
  92. };
  93. class PreferencesWindow : public BWindow
  94. {
  95.   public:
  96.                             PreferencesWindow( intf_thread_t * p_intf,
  97.                                                BRect frame,
  98.                                                const char * name );
  99.     virtual                 ~PreferencesWindow();
  100.     virtual bool            QuitRequested();
  101.     virtual void            MessageReceived(BMessage* message);
  102.     virtual void            FrameResized( float, float );
  103.             void            Update();
  104.             void            Apply( bool doIt );
  105.             void            ReallyQuit();
  106.   private:
  107.     void                    BuildConfigView( ConfigItem * stringItem,
  108.                                              module_config_t ** pp_item,
  109.                                              bool stop_after_category );
  110.     BView                 * fPrefsView;
  111.     BOutlineListView      * fOutline;
  112.     BView                 * fDummyView;
  113.     ConfigItem            * fCurrent;
  114.     intf_thread_t         * p_intf;
  115. };
  116. #endif    // BEOS_PREFERENCES_WINDOW_H