try to reduce number of moveToThread warnings
authorDiane Trout <diane@caltech.edu>
Wed, 13 Dec 2006 00:14:00 +0000 (00:14 +0000)
committerDiane Trout <diane@caltech.edu>
Wed, 13 Dec 2006 00:14:00 +0000 (00:14 +0000)
I went off on a fools errand of trying to get rid of the QObject::moveToThread
warnings that Qt was spitting out when trying to prepare an icon.

Qt does prefer widgets to be dynamically constructed and to have their
parent widget set, which is what I tried to do to cut down on the
useless chatter.

(Note the chatter only happens on OS X when the frameworks have been installed
into the application bundle).

14 files changed:
qui/MussaWindow.cpp
qui/MussaWindow.hpp
qui/ThresholdWidget.cpp
qui/ThresholdWidget.hpp
qui/ZoomWidget.cpp
qui/motif_editor/MotifEditor.cpp
qui/motif_editor/MotifEditor.hpp
qui/mussa_setup_dialog/MussaSetupWidget.cpp
qui/mussa_setup_dialog/MussaSetupWidget.hpp
qui/mussagl.cpp
qui/seqbrowser/ScrollableSequenceBrowser.cpp
qui/seqbrowser/ScrollableSequenceBrowser.hpp
qui/seqbrowser/SequenceBrowser.cpp
qui/seqbrowser/SequenceBrowserWidget.cpp

index 11eb02f4ac21392e71466adec05ad26263902b05..2342ee783fbfc75bb06673923f5eed26ef3c69eb 100644 (file)
@@ -35,14 +35,12 @@ using namespace std;
 MussaWindow::MussaWindow(MussaRef analysis_, QWidget *parent) :
   QMainWindow(parent),
   analysis(analysis_),
-  default_dir(new QDir(QDir::home().absolutePath())),
   motif_editor(0),
-  setup_analysis_dialog(new MussaSetupDialog(this)),
-  subanalysis_window(new SubanalysisWindow(analysis)),
-  browser(new SequenceBrowserWidget(default_dir, this)),  
-  mussaViewTB(new QToolBar("Path Views")),
-  zoom(new ZoomWidget),
-  threshold(new ThresholdWidget),
+  setup_analysis_dialog(0),
+  browser(0),
+  mussaViewTB(0),
+  zoom(0),
+  threshold(0),
   progress_dialog(0),
   aboutAction(0),
   closeAction(0),
@@ -62,14 +60,14 @@ MussaWindow::MussaWindow(MussaRef analysis_, QWidget *parent) :
   viewMussaAlignmentAction(0),
   manualAssistant(0)
 {
+  setupWidgets();
   setupActions();
-  setupMainMenu();
   setupAssistant();
+  setupMainMenu();
+  
+  setWindowIcon(QIcon(":/icons/mussa.png"));
+  default_dir.reset(new QDir(QDir::home().absolutePath()));
 
-  //This next setWhatsThis function prevents
-  // a segfault when using WhatsThis feature with 
-  // opengl widget.
-  //scene->setWhatsThis(tr("Mussa in OpenGL!"));
   setCentralWidget(browser);
   // well updatePosition isn't quite right as we really just need
   // to call update()
@@ -77,19 +75,11 @@ MussaWindow::MussaWindow(MussaRef analysis_, QWidget *parent) :
   connect(this, SIGNAL(changedMotifs()), this, SLOT(updateAnnotations()));
   connect(browser, SIGNAL(basepairsCopied(size_t)), 
           this, SLOT(showBasePairsCopied(size_t)));
-
-  //mussaViewTB->addAction(toggleMotifsAction);
-  mussaViewTB->addWidget(zoom);
-  
   connect(zoom, SIGNAL(valueChanged(double)), 
           browser, SLOT(setZoom(double)));
-  
-  // threshold range is set in updateAnalysis
-  
-  //scene->setClipPlane(20);
-  // FIXME: for when we get the paths drawn at the appropriate depth
-  //connect(threshold, SIGNAL(thresholdChanged(int)),
-  //        this, SLOT(setClipPlane(int)));
+  mussaViewTB->addWidget(zoom);
+
+  // threshold range is set in updateAnalysis  
   connect(threshold, SIGNAL(thresholdChanged(int)),
           this, SLOT(setSoftThreshold(int)));
   mussaViewTB->addWidget(threshold);
@@ -97,6 +87,7 @@ MussaWindow::MussaWindow(MussaRef analysis_, QWidget *parent) :
   addToolBar(mussaViewTB);
 
   statusBar()->showMessage("Welcome to mussa", 2000);
+
   // FIXME: we should start refactoring the connect call to updateAnalysis or something
   if (analysis) {
     connect(analysis.get(), SIGNAL(progress(const QString&, int, int)),
@@ -178,7 +169,7 @@ void MussaWindow::setupActions()
   mussaManualAssistantAction = new QAction(tr("Mussagl Manual..."), this);
   mussaManualAssistantAction->setIcon(QIcon(":/icons/contents.png"));
   connect(mussaManualAssistantAction, SIGNAL(triggered()),
-         this, SLOT(showManual()));
+               this, SLOT(showManual()));
 
   newMussaWindowAction = new QAction(tr("&New Mussa Window"), this);
   newMussaWindowAction->setStatusTip("open another mussa window to allow comparing results");
@@ -280,6 +271,16 @@ void MussaWindow::setupMainMenu()
   }
 }
 
+void MussaWindow::setupWidgets()
+{
+  setup_analysis_dialog = new MussaSetupDialog;
+  subanalysis_window.reset(new SubanalysisWindow(analysis));
+  browser = new SequenceBrowserWidget(default_dir);
+  mussaViewTB = new QToolBar("Path Views", this);
+  zoom = new ZoomWidget(mussaViewTB);
+  threshold = new ThresholdWidget(mussaViewTB);
+}
+
 void MussaWindow::setupAssistant()
 {
 #if defined(QT_QTASSISTANT_FOUND)
index 1d6e2746d4da9e8353affa18532500be2b914770..f02f0917c299392c1600b9ba68db8a02b79f2884 100644 (file)
@@ -150,6 +150,8 @@ protected:
   void closeEvent(QCloseEvent *event);
   //! initialize this windows menu object
   void setupMainMenu();
+  //! initialize all of our widgets
+  void setupWidgets();
   //! initialize assistant client
   void setupAssistant();
   //! stub function to fill in QActions
index fc2444e5f2f3f3d8ba31d64d588957d9da0e53cb..5c856968139fca01ded6f1d6dbf2985c3bc03c1e 100644 (file)
@@ -9,11 +9,12 @@
 // LCDRange.cpp
 ThresholdWidget::ThresholdWidget(QWidget *parent, int min, int max) 
   : QWidget(parent),
-    layout(new QHBoxLayout(this)),
-    basepair_spinner(new QSpinBox(this)),
-    window_size_label(new QLabel(this)),
-    percent_label(new QLabel(this))
+    layout(0),
+    basepair_spinner(0),
+    window_size_label(0),
+    percent_label(0)
 {
+  setupWidgets();
   basepair_spinner->setWhatsThis("How many base pairs need to be conserved in the window size");
 
   setRange(min, max);
@@ -31,6 +32,14 @@ ThresholdWidget::ThresholdWidget(QWidget *parent, int min, int max)
   setLayout(layout);
 }
 
+void ThresholdWidget::setupWidgets()
+{
+  layout = new QHBoxLayout(this);
+  basepair_spinner = new QSpinBox(this);
+  window_size_label = new QLabel(this);
+  percent_label = new QLabel(this);
+}
+  
 void ThresholdWidget::setRange(int min, int max)
 {
   basepair_spinner->setRange(min, max);
index e83c815695cec7089996a0a2e82dde552b4cbdac..47a7778f4accb6d272435a7d6a79232c84ba66ab 100644 (file)
@@ -38,6 +38,7 @@ signals:
   void thresholdChanged(int new_threshold);
 
 protected:
+  void setupWidgets();
   QHBoxLayout *layout;
   QSpinBox *basepair_spinner;
   QLabel *window_size_label;
index 2ceba408081440039b340024845edc229eb811d0..f8f856a5d11c7c3877a2d845ab35b7e62c315313 100644 (file)
@@ -8,9 +8,10 @@ using namespace std;
 
 ZoomWidget::ZoomWidget(QWidget *parent)
   : QWidget(parent),
-    zoom(new QDoubleSpinBox),
+    zoom(0),
     max_zoom_size(10000)
 {
+  zoom = new QDoubleSpinBox(this);
   zoom->setRange(0.01, max_zoom_size);
   zoom->setSingleStep(0.1);
   connect(zoom, SIGNAL(valueChanged(double)), this, SLOT(setValue(double)));
@@ -20,7 +21,7 @@ ZoomWidget::ZoomWidget(QWidget *parent)
   QHBoxLayout *layout = new QHBoxLayout;
   layout->addWidget(zoomLabel);
   layout->addWidget(zoom);
-  layout->addWidget(new QLabel("bp/pix"));
+  layout->addWidget(new QLabel("bp/pix", this));
   setLayout(layout);
 
   setToolTip(tr("Zoom"));
index ea10650ee84aea7cfdf68fcd55e78e81ef334e66..f98402689b3e763c41216b02fe008624109f8268 100644 (file)
@@ -9,13 +9,15 @@ using namespace std;
 MotifEditor::MotifEditor(MussaRef m, QWidget *parent)
   : QWidget(parent),
     analysis(m),
-    editor_layout(new QVBoxLayout(parent)),
-    button_layout(new QHBoxLayout(parent)),
-    table(new QTableView(this)),
-    delegate(new MotifEditorDelegate(this)),
-    applyButton(new QPushButton("apply")),
+    editor_layout(0),
+    button_layout(0),
+    table(0),
+    delegate(0),
+    applyButton(0),
     model(0)
 {
+  setupWidgets();
+  
   assert (m != 0);
   const set<Sequence> &motif = analysis->motifs();
   vector<Sequence> motif_seq(motif.begin(), motif.end());
@@ -35,6 +37,15 @@ MotifEditor::MotifEditor(MussaRef m, QWidget *parent)
   updateModel();
 }
 
+void MotifEditor::setupWidgets()
+{
+  editor_layout = new QVBoxLayout(this);
+  button_layout = new QHBoxLayout(this);
+  table = new QTableView(this);
+  delegate = new MotifEditorDelegate(this);
+  applyButton = new QPushButton("apply");
+}
+
 void MotifEditor::updateModel()
 {
   MotifModel *new_model = new MotifModel(analysis);
index 6efe8767b64b44856bf56b9fd70f6cc794b503f2..aaff9a729a9cc59d3f01f9ed3c8d38e7dc8760d9 100644 (file)
@@ -35,6 +35,8 @@ signals:
   void changedMotifs();
   
 private:
+  //! initialize all our gui widgets
+  void setupWidgets();
   MussaRef analysis;
 
   QPushButton *applyButton;
index 097e247bb98e2b796fe82ed42b079b119ad1eaa2..ad25e4386527833d566274b78606c51b083ae9fd 100644 (file)
@@ -30,7 +30,13 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
     cancelPushButton(new QPushButton(tr("Cancel"))),
     seqSetupFrame(0)
 {
-  
+  analysisNameLineEdit = new QLineEdit;
+  windowEdit = new QSpinBox;
+  thresholdEdit = new QSpinBox;
+  numOfSequencesSpinBox = new QSpinBox;
+  createPushButton = new QPushButton(tr("Create"));
+  cancelPushButton = new QPushButton(tr("Cancel"));
+    
   // Analysis name
   QLabel *analysisNameLabel = new QLabel(tr("Analysis Name"));
   analysisNameLabel->setBuddy(analysisNameLineEdit);
index 4e0a4fd949a0a06073622f6dbe7d203985f161f8..c63cd9ff2a0fd59609bbb2ba0b0b374c563eda00 100644 (file)
@@ -30,7 +30,6 @@ private slots:
   void updateThreshold(int);
 
 private:
-
   QLineEdit *analysisNameLineEdit;
   QSpinBox *windowEdit;
   QSpinBox *thresholdEdit;
index 54d737be7f7dbabce71394b5b64104178bc39bb5..0795a9a6af213b004164dd5947ad8b0cfa07fc7b 100644 (file)
@@ -52,18 +52,16 @@ int main(int argc, char **argv)
   //opts.doc_dir = get_doc_dir();
   QApplication app(argc, argv, opts.useGUI);
   Q_INIT_RESOURCE(icons);
-  const QIcon mussa_icon(":/icons/mussa.png");
-  app.setWindowIcon(mussa_icon);
 
   initialize_mussa(opts, argc, argv);
   if (opts.analysis == 0) {
     return 1;
   }
-
-  ThreadManager &thread = ThreadManagerFactory();
+  
   try {
 #ifdef USE_PYTHON
     if (opts.runAsPythonInterpeter) {
+      ThreadManager &thread = ThreadManagerFactory();
       // allow the user to keep the interpreter open even after
       // closing all the windows
       app.setQuitOnLastWindowClosed(false);
@@ -87,8 +85,8 @@ int main(int argc, char **argv)
     } else 
 #endif /* USE_PYTHON */
     if (opts.useGUI) { 
-      MussaWindow win(opts.analysis);
-      win.show();
+      MussaWindow *win = new MussaWindow(opts.analysis);
+      win->show();
       app.exec();
     }
     return 0;
index ab4ce603b1a65ac938c1b0d11eef186becf64b74..7357af143c0447b67e136fb3ce7defe7a88d6a4a 100644 (file)
@@ -4,17 +4,20 @@
 
 ScrollableSequenceBrowser::ScrollableSequenceBrowser(QWidget *parent) :
   QWidget(parent),
-  viewportBar(Qt::Horizontal)
+  sequence_browser(0),
+  viewportBar(0)
 {
+  QVBoxLayout *layout = new QVBoxLayout(this);
+  sequence_browser = new SequenceBrowser;
+  viewportBar = new QScrollBar(Qt::Horizontal);
   // construct central opengl widget
-  QVBoxLayout *layout = new QVBoxLayout;
 
-  layout->addWidget(&sequence_browser);
-  layout->addWidget(&viewportBar);
+  layout->addWidget(sequence_browser);
+  layout->addWidget(viewportBar);
 
-  connect(&viewportBar, SIGNAL(valueChanged(int)), 
+  connect(viewportBar, SIGNAL(valueChanged(int)), 
           this, SLOT(setViewportCenter(int)));
-  connect(&sequence_browser, SIGNAL(viewportChanged()), 
+  connect(sequence_browser, SIGNAL(viewportChanged()), 
           this, SLOT(updateScrollBar()));
 
   setLayout(layout);
@@ -23,26 +26,25 @@ ScrollableSequenceBrowser::ScrollableSequenceBrowser(QWidget *parent) :
   updateScrollBar();
 
   // enble keyboard input
-  viewportBar.setFocusPolicy(Qt::StrongFocus);
+  viewportBar->setFocusPolicy(Qt::StrongFocus);
 }
 
 void ScrollableSequenceBrowser::updateScrollBar()
 {
-  thumb = (int)sequence_browser.viewportCenter();
-  viewportBar.setRange((int)sequence_browser.left(), 
-                       (int)sequence_browser.right());
-  viewportBar.setValue(thumb);
-  viewportBar.setPageStep(static_cast<int>(sequence_browser.viewportWidth()));
-  int step_size = static_cast<int>(sequence_browser.zoom());
+  thumb = (int)sequence_browser->viewportCenter();
+  viewportBar->setRange((int)sequence_browser->left(), 
+                        (int)sequence_browser->right());
+  viewportBar->setValue(thumb);
+  viewportBar->setPageStep(static_cast<int>(sequence_browser->viewportWidth()));
+  int step_size = static_cast<int>(sequence_browser->zoom());
   step_size = step_size > 1 ? step_size : 1;
-  viewportBar.setSingleStep(static_cast<int>( step_size ));
+  viewportBar->setSingleStep(static_cast<int>( step_size ));
 }
 
 void ScrollableSequenceBrowser::setViewportCenter(int x)
 {
   if (x != thumb) {
     thumb = x;
-    sequence_browser.setViewportCenter(thumb);
+    sequence_browser->setViewportCenter(thumb);
   }
-}
-
+}
\ No newline at end of file
index b8a470e55c537fdab9801d495e51a726ebae1240..bd5e0231c9df2f11b27d26cc61c1e74450699697 100644 (file)
@@ -11,10 +11,10 @@ class ScrollableSequenceBrowser : public QWidget
 
 public:
   ScrollableSequenceBrowser(QWidget *parent=0);
-  SequenceBrowser sequence_browser;
+  SequenceBrowser *sequence_browser;
 
-  SequenceBrowser& browser() { return sequence_browser; }
-  const SequenceBrowser& browser() const { return sequence_browser; }
+  SequenceBrowser& browser() { return *sequence_browser; }
+  const SequenceBrowser& browser() const { return *sequence_browser; }
 public slots:
   //! update the scrollbar with current viewport information
   void updateScrollBar();
@@ -22,7 +22,7 @@ public slots:
   void setViewportCenter(int x);
 
 private:
-  QScrollBar viewportBar;
+  QScrollBar *viewportBar;
   int thumb;
 
   float range;
index 0f2868eb23e1cc6d144e6bbed4e847a76eb21f52..0927cfd137ea144c5082370e84922b5c09466022 100644 (file)
@@ -20,11 +20,16 @@ using namespace std;
 SequenceBrowser::SequenceBrowser(QWidget *parent)
   : QGLWidget(parent),
     rubberBand(0),
-    popupMenu(new QMenu(this)),
-    copySelectedSequenceAsFastaAction(new QAction(tr("&Copy as Fasta"), this)),
-    copySelectedSequenceAsStringAction(new QAction(tr("&Copy Sequence"), this)),
-    editSequencePropertiesAction(new QAction(tr("Sequence &Properties"), this))
+    popupMenu(0),
+    copySelectedSequenceAsFastaAction(0),
+    copySelectedSequenceAsStringAction(0),
+    editSequencePropertiesAction(0)
 { 
+  popupMenu = new QMenu(this);
+  copySelectedSequenceAsFastaAction = new QAction(tr("&Copy as Fasta"), this);
+  copySelectedSequenceAsStringAction = new QAction(tr("&Copy Sequence"), this);
+  editSequencePropertiesAction = new QAction(tr("Sequence &Properties"), this);
+  
   connect(copySelectedSequenceAsFastaAction, SIGNAL(triggered()), 
           this, SLOT(copySelectedSequenceAsFasta()));
   popupMenu->addAction(copySelectedSequenceAsFastaAction);
index e8277d052cdbd1f45413c09d6794c8269b534008..3b25b912c59e7a01792fce494ccdbf52f5a97455 100644 (file)
@@ -23,13 +23,20 @@ SequenceBrowserWidget::SequenceBrowserWidget(
     QWidget *parent
 )
   : QScrollArea(parent),
-    default_dir(default_dir_),
-    left_sidebar(new SequenceBrowserSidebar),
-    scrollable_browser(new ScrollableSequenceBrowser),
-    right_sidebar(new SequenceBrowserSidebar),
-    layout(new QHBoxLayout),
-    layout_container(new QWidget(this))
+    left_sidebar(0),
+    scrollable_browser(0),
+    right_sidebar(0),
+    layout(0),
+    layout_container(0)
 {
+  default_dir = default_dir_;
+
+  layout_container = new QWidget(this);
+  layout = new QHBoxLayout(layout_container);
+  left_sidebar = new SequenceBrowserSidebar(layout_container);
+  scrollable_browser = new ScrollableSequenceBrowser(layout_container);
+  right_sidebar = new SequenceBrowserSidebar(layout_container);
+  
   layout->addWidget(left_sidebar, 0);
   layout->addWidget(scrollable_browser, 1);
   layout->addWidget(right_sidebar, 0);