00001
00002
00003
00004
00005 #ifndef BALL_VIEW_DIALOGSPUBCHEMDIALOG_H
00006 #define BALL_VIEW_DIALOGSPUBCHEMDIALOG_H
00007
00008 #ifndef BALL_COMMON_GLOBAL_H
00009 # include <BALL/COMMON/global.h>
00010 #endif
00011
00012 #ifndef BALL_VIEW_KERNEL_MODULARWIDGET_H
00013 # include <BALL/VIEW/KERNEL/modularWidget.h>
00014 #endif
00015
00016 #ifndef BALL_STRUCTURE_SMILESPARSER_H
00017 # include <BALL/STRUCTURE/smilesParser.h>
00018 #endif
00019
00020 #ifndef BALL_VIEW_WIDGETS_SDWIDGET_H
00021 # include <BALL/VIEW/WIDGETS/SDWidget.h>
00022 #endif
00023
00024 #include <BALL/VIEW/UIC/ui_pubchemDialog.h>
00025
00026 #include <QtGui/QDialog>
00027 #include <QtNetwork/QHttp>
00028
00029 #include <map>
00030
00031 class QDomNode;
00032 class QProgressBar;
00033
00034 namespace BALL
00035 {
00036 namespace VIEW
00037 {
00040 class BALL_VIEW_EXPORT PubChemDialog :
00041 public QDialog,
00042 public Ui_PubChemDialogData,
00043 public ModularWidget
00044 {
00045 Q_OBJECT
00046
00047 public:
00048
00049 BALL_EMBEDDABLE(PubChemDialog,ModularWidget)
00050
00051
00052 PubChemDialog(QWidget *parent = NULL, const char *name = "PubChemDialog");
00053
00055 virtual ~PubChemDialog();
00056
00060 void generateFromSMILES(const String& SMILES);
00061
00063 virtual void initializeWidget(MainControl& main_control);
00064
00066 virtual void checkMenu(MainControl& main_control);
00067
00069 void callESummary(QString const& entry_id, QTreeWidgetItem* current_item = NULL);
00070
00071 public slots:
00072
00074 void show();
00075
00077 void generateButtonClicked();
00078
00080 void queryPubChem();
00081
00083 void switchView(QTreeWidgetItem* item, int column);
00084
00086 void clearEntries();
00087
00089 void finished();
00090
00092 void esearchFinished(int id, bool error);
00093
00095 void esummaryFinished(int id, bool error);
00096
00097 protected:
00098
00099 struct ParsedResult_
00100 {
00101 String name;
00102 String description;
00103 String smiles;
00104 };
00105
00106 void parseItemRecursive_(const QDomNode& current_node, Position level, ParsedResult_& result);
00107
00108 void insert_(ParsedResult_ d, QTreeWidgetItem* parent, bool plot);
00109
00110 bool parseESummaryXml_(const QByteArray& data, ParsedResult_& result);
00111
00112 std::map<QTreeWidgetItem*, System*> sd_systems_;
00113 std::map<QTreeWidgetItem*, System*> original_systems_;
00114 std::map<QTreeWidgetItem*, ParsedResult_> descriptions_;
00115
00116 SmilesParser smiles_parser_;
00117
00118 QAction* action1_, *action2_;
00119
00120 String esearch_base_url_;
00121 String esummary_base_url_;
00122
00123 int current_request_id_;
00124
00125 HashMap<int, QTreeWidgetItem*> esummary_request_ids_;
00126
00127 QHttp esearch_connector_;
00128 QHttp esummary_connector_;
00129
00130 QProgressBar *progress_;
00131
00132 QPushButton* add_button_;
00133 };
00134 }
00135 }
00136 #endif