Index: src/UIElements/QT4/QTDialog.hpp
===================================================================
--- src/UIElements/QT4/QTDialog.hpp	(revision 3731b4909c6d6ae4b595859d66058d1e878886f9)
+++ src/UIElements/QT4/QTDialog.hpp	(revision e212ff44099f167003b8536a5d60337d9b9100be)
@@ -17,4 +17,5 @@
 class QDoubleSpinBox;
 class QLineEdit;
+class QListWidget;
 class QComboBox;
 class QDialogButtonBox;
@@ -22,9 +23,18 @@
 
 // Forward declarations for plumbing
+template<typename T> class QTQueryListPipe;
 class StringQTQueryPipe;
+class StringsQTQueryPipe;
 class IntQTQueryPipe;
 class DoubleQTQueryPipe;
+class DoublesQTQueryPipe;
+class AtomQTQueryPipe;
+class AtomsQTQueryPipe;
 class MoleculeQTQueryPipe;
+class MoleculesQTQueryPipe;
 class ElementQTQueryPipe;
+class ElementsQTQueryPipe;
+class VectorQTQueryPipe;
+class VectorsQTQueryPipe;
 
 class QTDialog : public QDialog, public Dialog
@@ -38,12 +48,18 @@
   virtual void queryBoolean(const char *, std::string = "");
   virtual void queryInt(const char *,std::string = "");
+  virtual void queryInts(const char *,std::string = "");
   virtual void queryDouble(const char*,std::string = "");
+  virtual void queryDoubles(const char*,std::string = "");
   virtual void queryString(const char*,std::string = "");
   virtual void queryStrings(const char*,std::string = "");
   virtual void queryAtom(const char*,std::string = "");
+  virtual void queryAtoms(const char*,std::string = "");
   virtual void queryMolecule(const char*,std::string = "");
+  virtual void queryMolecules(const char*,std::string = "");
   virtual void queryVector(const char*,bool,std::string = "");
+  virtual void queryVectors(const char*,bool,std::string = "");
   virtual void queryBox(const char*, std::string = "");
   virtual void queryElement(const char*,std::string = "");
+  virtual void queryElements(const char*,std::string = "");
 
   virtual bool display();
@@ -66,4 +82,21 @@
     };
 
+  class IntsQTQuery : public Dialog::IntsQuery {
+    public:
+      IntsQTQuery(std::string _title,QBoxLayout *_parent,QTDialog *_dialog);
+      virtual ~IntsQTQuery();
+      virtual bool handle();
+      void IntegerEntered(const QString&);
+      void IntegerSelected();
+      void AddInteger();
+      void RemoveInteger();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+
+      QTQueryListPipe<int> *pipe;
+    };
+
     class DoubleQTQuery : public Dialog::DoubleQuery {
     public:
@@ -80,4 +113,18 @@
     };
 
+    class DoublesQTQuery : public Dialog::DoublesQuery {
+    public:
+      DoublesQTQuery(std::string title,QBoxLayout *_parent,QTDialog *_dialog);
+      virtual ~DoublesQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+      QDoubleSpinBox *inputBox;
+
+      QTQueryListPipe<double> *pipe;
+    };
+
     class StringQTQuery : public Dialog::StringQuery {
     public:
@@ -105,5 +152,33 @@
       QLineEdit *inputBox;
 
-      StringQTQueryPipe *pipe;
+      QTQueryListPipe<std::string> *pipe;
+    };
+
+    class AtomQTQuery : public Dialog::AtomQuery {
+    public:
+      AtomQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
+      virtual ~AtomQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+      QComboBox *inputBox;
+
+      AtomQTQueryPipe *pipe;
+    };
+
+    class AtomsQTQuery : public Dialog::AtomsQuery {
+    public:
+      AtomsQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
+      virtual ~AtomsQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+      QComboBox *inputBox;
+
+      AtomsQTQueryPipe *pipe;
     };
 
@@ -122,4 +197,18 @@
     };
 
+    class MoleculesQTQuery : public Dialog::MoleculesQuery {
+    public:
+      MoleculesQTQuery(std::string _title, QBoxLayout *_parent,QTDialog *_dialog);
+      virtual ~MoleculesQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+      QComboBox *inputBox;
+
+      MoleculesQTQueryPipe *pipe;
+    };
+
     class VectorQTQuery : public Dialog::VectorQuery {
     public:
@@ -132,9 +221,26 @@
       QLabel *titleLabel;
       QBoxLayout *subLayout;
-      QBoxLayout *coordLayout[3];
-      QLabel *coordLabel[3];
-      QDoubleSpinBox *coordInput[3];
-
-      DoubleQTQueryPipe *pipe[3];
+      QBoxLayout *coordLayout;
+      QLabel *coordLabel;
+      QDoubleSpinBox *coordInput;
+
+      VectorQTQueryPipe *pipe;
+    };
+
+    class VectorsQTQuery : public Dialog::VectorsQuery {
+    public:
+      VectorsQTQuery(std::string title,bool _check,QBoxLayout *,QTDialog *);
+      virtual ~VectorsQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *mainLayout;
+      QLabel *titleLabel;
+      QBoxLayout *subLayout;
+      QBoxLayout *coordLayout;
+      QLabel *coordLabel;
+      QDoubleSpinBox *coordInput;
+
+      VectorsQTQueryPipe *pipe;
     };
 
@@ -151,4 +257,18 @@
 
       ElementQTQueryPipe *pipe;
+    };
+
+    class ElementsQTQuery : public Dialog::ElementsQuery {
+    public:
+      ElementsQTQuery(std::string _title, QBoxLayout *_parent, QTDialog *_dialog);
+      virtual ~ElementsQTQuery();
+      virtual bool handle();
+    private:
+      QBoxLayout *parent;
+      QBoxLayout *thisLayout;
+      QLabel *titleLabel;
+      QComboBox *inputBox;
+
+      ElementsQTQueryPipe *pipe;
     };
 
@@ -164,4 +284,27 @@
 // since MOC doesn't like nested classes
 
+
+template<typename T> class QTQueryListPipe : public QWidget {
+  public:
+    QTQueryListPipe(std::vector<T> *_content, QTDialog *_dialog, QLineEdit *_inputBox, QListWidget *_inputList, QPushButton *_AddButton, QPushButton *_RemoveButton);
+    virtual ~QTQueryListPipe();
+    void AddInteger();
+    void RemoveInteger();
+    void IntegerSelected();
+    void IntegerEntered(const QString&);
+
+  private:
+    void AddValue(T item);
+    void RemoveRow(int row);
+
+    std::vector<T> *content;
+    QTDialog *dialog;
+    QLineEdit *inputBox;
+    QListWidget *inputList;
+    QPushButton *AddButton;
+    QPushButton *RemoveButton;
+};
+
+
 class StringQTQueryPipe : public QWidget {
   Q_OBJECT
@@ -194,4 +337,5 @@
 };
 
+
 class DoubleQTQueryPipe : public QWidget {
   Q_OBJECT
@@ -209,4 +353,37 @@
 };
 
+class AtomQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  AtomQTQueryPipe(atom **_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~AtomQTQueryPipe();
+
+public slots:
+  void update(int);
+
+private:
+  atom **content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+
+};
+
+
+class AtomsQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  AtomsQTQueryPipe(std::vector<atom *>*_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~AtomsQTQueryPipe();
+
+public slots:
+  void update(int);
+
+private:
+  std::vector<atom *>*content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+
+};
+
 class MoleculeQTQueryPipe : public QWidget {
   Q_OBJECT
@@ -225,8 +402,54 @@
 };
 
+class MoleculesQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  MoleculesQTQueryPipe(std::vector<molecule *>*_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~MoleculesQTQueryPipe();
+
+public slots:
+  void update(int);
+
+private:
+  std::vector<molecule *>*content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+
+};
+
+class VectorQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  VectorQTQueryPipe(Vector *_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~VectorQTQueryPipe();
+
+public slots:
+  void update();
+
+private:
+  Vector *content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+};
+
+class VectorsQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  VectorsQTQueryPipe(std::vector<Vector>*_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~VectorsQTQueryPipe();
+
+public slots:
+  void update();
+
+private:
+  std::vector<Vector> *content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+};
+
 class ElementQTQueryPipe : public QWidget {
   Q_OBJECT
 public:
-  ElementQTQueryPipe(std::vector<element *> *_content, QTDialog *_dialog, QComboBox *_theBox);
+  ElementQTQueryPipe(element **_content, QTDialog *_dialog, QComboBox *_theBox);
   virtual ~ElementQTQueryPipe();
 
@@ -235,5 +458,20 @@
 
 private:
-  std::vector<element *> *content;
+  element **content;
+  QTDialog *dialog;
+  QComboBox *theBox;
+};
+
+class ElementsQTQueryPipe : public QWidget {
+  Q_OBJECT
+public:
+  ElementsQTQueryPipe(std::vector<element *>*_content, QTDialog *_dialog, QComboBox *_theBox);
+  virtual ~ElementsQTQueryPipe();
+
+public slots:
+  void update(int);
+
+private:
+  std::vector<element *>*content;
   QTDialog *dialog;
   QComboBox *theBox;
