#include <list>
#include <boost/shared_ptr.hpp>
+#include <QCloseEvent>
+#include <QDir>
#include <QMainWindow>
#include <QPixmap>
#include <QProgressDialog>
#include <QSpinBox>
#include <QToolBar>
+#include <QProcess>
#include "qui/MussaAlignedWindow.hpp"
#include "qui/motif_editor/MotifEditor.hpp"
#include "qui/mussa_setup_dialog/MussaSetupDialog.hpp"
#include "qui/seqbrowser/SequenceBrowserWidget.hpp"
-#include "qui/SubanalysisWindow.hpp"
+#include "qui/subanalysis/SubanalysisWindow.hpp"
#include "qui/ThresholdWidget.hpp"
#include "qui/ZoomWidget.hpp"
class QStringList;
class Mussa;
class QAssistantClient;
+class MussaWindow;
+
+typedef boost::shared_ptr<MussaWindow> MussaWindowRef;
class MussaWindow : public QMainWindow
{
Q_OBJECT
public:
- MussaWindow(Mussa* analysis=0, QWidget *parent=0);
+ MussaWindow(MussaRef analysis, QWidget *parent=0);
+public:
//! reset any attached window
void clear();
//! switch to a new analysis
- void setAnalysis(Mussa *new_analysis);
+ void setAnalysis(MussaRef new_analysis);
//! ask the user what to do if we're going to lose data
//! returns true if getting rid of this analysis is safe
void saveAnalysis();
//! save an analysis after prompting for new name
void saveAnalysisAs();
+ //! set the window modified flag
+ void updateAnalysisModified(bool);
+ //! try to conver the mussa analysis_path to a title
+ void updateTitle();
//\@}
//! \defgroup MotifHandling Handling of motif lists
//! set the soft threshold used by the Nway_Path algorithm
void setSoftThreshold(int thres);
//! update progress bar
- void updateProgress(const std::string& description, int cur, int max);
+ void updateProgress(const QString& description, int cur, int max);
//! open a new mussa window so one can compare analyses
void newMussaWindow();
void showMussaToolbar();
+ //! display how many base pairs were copied on the status bar
+ void showBasePairsCopied(size_t);
+
//! open new window showing our alignment
void viewMussaAlignment();
signals:
void changedAnnotations();
+ void changedMotifs();
protected:
- //! reference to our analysis
- Mussa *analysis;
+ //! shared_ptr to our analysis
+ MussaRef analysis;
//! the default directory we should loand and save from
- boost::filesystem::path default_dir;
- std::list<boost::shared_ptr<MussaAlignedWindow> > aligned_windows;
+ boost::shared_ptr<QDir> default_dir;
+ std::list<MussaAlignedWindowRef> aligned_windows;
MotifEditor *motif_editor;
- MussaSetupDialog setup_analysis_dialog;
- SubanalysisWindow subanalysis_window;
+ MussaSetupDialog *setup_analysis_dialog;
+ SubanalysisWindowRef subanalysis_window;
// display our wonderful mussa output
- SequenceBrowserWidget browser;
- QToolBar mussaViewTB;
- ZoomWidget zoom;
- ThresholdWidget threshold;
+ SequenceBrowserWidget *browser;
+ QToolBar *mussaViewTB;
+ ZoomWidget *zoom;
+ ThresholdWidget *threshold;
QProgressDialog *progress_dialog;
QAction *aboutAction;
QAction *whatsThisAction;
QAction *viewMussaAlignmentAction;
- QAssistantClient *manualAssistant;
+ //QAssistantClient *manualAssistant;
+ QProcess *assistantProcess;
//! initialze the actions
void setupActions();
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