00001 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 #ifndef _ASN1GUIUTIL_H_
00031 #define _ASN1GUIUTIL_H_
00032 
00033 
00034 
00035 
00036 
00037 
00038 #include <qlistview.h>
00039 
00040 #include <asn1.h>
00041 
00042 
00043 #include "asn1cfggui.h"
00044 
00045 
00046 namespace OSB_LIB {
00047     class Asn1Info;
00048     class Asn1InputInfo;
00049     class Asn1TagDes;
00050 }
00051 
00052 class QCheckBox;
00053 
00054 
00055 
00056 namespace OSB_GUI {
00057 
00058 
00059 
00060     class Asn1Item;
00061 
00062 
00063 
00064 
00065 
00066 
00070     class LvAsn1 : public QListView {
00071     public:
00073         LvAsn1(
00074                   QWidget*  parent,
00075             const char*     name   = 0,
00076                   WFlags    flags  = 0
00077         );
00078     public:
00080         void languageChange();
00082         void populate(
00083             const OSB_LIB::Asn1InputInfo& tagInfos,
00084                   OSB_LIB::Asn1Info&      info,
00085                   bool                    showTags
00086         );
00088         void showNesting(int level);
00089     private:
00091         void populate(
00092             const OSB_LIB::Asn1InputInfo& tagInfos,
00093                   OSB_GUI::Asn1Item*      parent,
00094                   OSB_LIB::Asn1Info&      info,
00095                   bool                    showTags
00096         );
00098         void openTags(
00099             QListViewItem* item,
00100             int            level
00101         );
00102     private:
00104         std::list<OSB_LIB::Asn1Tag> tagStack_;
00105     };                                   
00106 
00110     class Asn1Item : public QListViewItem {
00111     public:
00113         Asn1Item(
00114                   QListView*           parent,
00115                   QListViewItem*       after,
00116             const OSB_LIB::Asn1Info&   asn1,
00117             const OSB_LIB::Asn1TagDes* tagDes,
00118                   bool                 showTag
00119         );
00121         Asn1Item(
00122                   QListViewItem*       parent,
00123                   QListViewItem*       after,
00124             const OSB_LIB::Asn1Info&   asn1,
00125             const OSB_LIB::Asn1TagDes* tagDes,
00126                   bool                 showTag
00127         );
00128     private:
00130         void setup();
00131 
00133         void showAsn1(
00134             const OSB_LIB::Asn1Info&   asn1,
00135             const OSB_LIB::Asn1TagDes* tagDes,
00136                   bool                 showTag
00137         );
00138     };                                  
00139 
00143     struct Asn1BrowserCfg {
00144     public:
00156         Asn1BrowserCfg();
00157     public:
00159         std::list<std::string> desPaths_;
00160 
00162         std::string desName_;
00164         std::string desDir_;
00165 
00167         size_t blkSize_;
00169         OSB_LIB::Asn1Byte blkFiller_;
00170 
00172         bool allDes_;
00174         bool mergeDes_;
00176         bool showTags_;
00178         bool autoConfig_;
00180         int indentLevel_;
00181 
00182     public:
00184         std::string desPath() const;
00186         void setDesPath(
00187             const std::string& desPath
00188         );
00189     };                                  
00190 
00194     class DlgAsn1Cfg : public DlgAsn1CfgGui {
00195         Q_OBJECT                        
00196     public:
00198         DlgAsn1Cfg(
00199                   QWidget* parent,
00200             const char*    name   = 0,
00201                   WFlags   flags  = 0
00202         );
00203 
00204     public:
00206         void languageChange();
00212         int exec(Asn1BrowserCfg& config);
00213 
00215         bool haveBlkSize() const;
00217         bool haveBlkFiller() const;
00218 
00219     private:
00221         void accept();
00223         void setWidgets();
00225         bool setConfig();
00226     private slots:
00228         void pathChanged();
00230         void openAsn1Des();
00231 
00232     private:
00234         Asn1BrowserCfg* config_;
00235     };                                  
00236 }                                       
00237 
00238 
00239 
00240 namespace OSB_GUI {
00241 }                                       
00242 #endif                                  // #ifndef _ASN1GUIUTIL_H_