ADD_EXECUTABLE(mussagl WIN32 MACOSX_BUNDLE ${MAIN_SOURCES} )
-LINK_DIRECTORIES(${MUSSA_BINARY_DIR}/alg
- ${MUSSA_BINARY_DIR}/py)
TARGET_LINK_LIBRARIES(mussagl
mussa_core
mussa_qui
SET_SOURCE_FILES_PROPERTIES(${SOURCES} PROPERTIES COMPILE_FLAGS "-fPIC")
SET_TARGET_PROPERTIES(mussa_qui PROPERTIES COMPILE_FLAGS "-fPIC")
SET_TARGET_PROPERTIES(mussagl PROPERTIES COMPILE_FLAGS "-fPIC")
+
+ADD_SUBDIRECTORY( test )
: QAbstractTableModel(parent)
{
Sequence s("AGCT");
- sequence_locations.push_back(SequenceLocation(s, 0, 1));
- sequence_locations.push_back(SequenceLocation(s, 2, 2));
+}
+
+void SequenceLocationModel::assign(
+ SequenceLocationModel::size_type num,
+ const SequenceLocation& val
+)
+{
+ sequence_locations.assign(num, val);
+}
+
+SequenceLocation& SequenceLocationModel::at(
+ SequenceLocationModel::size_type index
+)
+{
+ return sequence_locations.at(index);
+}
+
+SequenceLocation& SequenceLocationModel::back()
+{
+ return sequence_locations.back();
+}
+
+SequenceLocationModel::iterator SequenceLocationModel::begin()
+{
+ return sequence_locations.begin();
+}
+
+SequenceLocationModel::const_iterator SequenceLocationModel::begin() const
+{
+ return sequence_locations.begin();
+}
+
+SequenceLocationModel::iterator SequenceLocationModel::end()
+{
+ return sequence_locations.end();
+}
+
+SequenceLocationModel::const_iterator SequenceLocationModel::end() const
+{
+ return sequence_locations.end();
+}
+
+bool SequenceLocationModel::empty() const
+{
+ return sequence_locations.empty();
+}
+
+SequenceLocation& SequenceLocationModel::operator[](
+ SequenceLocationModel::size_type index
+)
+{
+ return sequence_locations[index];
+}
+
+void SequenceLocationModel::pop_back()
+{
+ sequence_locations.pop_back();
+}
+
+void SequenceLocationModel::push_back(SequenceLocation& item)
+{
+ sequence_locations.push_back(item);
+}
+
+SequenceLocationModel::size_type SequenceLocationModel::size() const
+{
+ return sequence_locations.size();
}
int
public:
SequenceLocationModel(QObject *parent = 0);
-
+ typedef std::vector<SequenceLocation> model_type;
+ typedef model_type::size_type size_type;
+ typedef model_type::iterator iterator;
+ typedef model_type::const_iterator const_iterator;
+ //! \defgroup VectorInterface
+ //! \addtogroup VectorInterface
+ //! \@{
+ //! assign num copies of val to our vector
+ void assign(size_type num, const SequenceLocation& val);
+ //! return a specific element
+ SequenceLocation& at(size_type index);
+ //! return the last element
+ SequenceLocation& back();
+ //! return an iterator to the beginning of the model
+ iterator begin();
+ //! return an iterator to the beginning of the model
+ const_iterator begin() const;
+ //! return an iterator to the end of the model
+ iterator end();
+ //! return an iterator to the end of the model
+ const_iterator end() const;
+ //! is the model empty?
+ bool empty() const;
+ //! return a specific element
+ SequenceLocation& operator[](size_type index);
+ //! remove the last element from our model
+ void pop_back();
+ //! add a sequence location to the end of our model
+ void push_back(SequenceLocation&);
+ //! how many elements are in our model.
+ size_type size() const;
+ //! \@}
+
+ //! \defgroup QtModelInterface
+ //! \addtogroup QtModel
+ //! \@{
int rowCount(const QModelIndex& parent=QModelIndex()) const;
int columnCount(const QModelIndex& parent=QModelIndex()) const;
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const;
// const QModelIndex& parent=QModelIndex());
//bool removeRows(int row, int count);
// const QModelIndex& parent=QModelIndex());
+ //! \@}
private:
- std::vector<SequenceLocation> sequence_locations;
+ model_type sequence_locations;
};
#endif
--- /dev/null
+#deal with some debian wierdness
+FIND_PROGRAM(QT_QMAKE_EXECUTABLE qmake-qt4 )
+FIND_PROGRAM(QT_MOC_EXECUTABLE moc-qt4 )
+
+FIND_PACKAGE(Qt4)
+SET(QT_USE_QTOPENGL 1)
+IF(QT_ASSISTANT_LIB)
+ SET(QT_USE_QTNETWORK 1)
+ SET(QT_USE_QTASSISTANT 1)
+ENDIF(QT_ASSISTANT_LIB)
+INCLUDE( ${QT_USE_FILE} )
+FIND_PACKAGE(OpenGL)
+FIND_PACKAGE(Boost)
+FIND_PACKAGE(PythonLibs)
+
+SET(libs
+ mussa_core
+ mussa_qui
+ ${QT_LIBRARIES}
+ ${OPENGL_gl_LIBRARY}
+ ${BOOST_PROGRAM_OPTIONS_LIBRARY}
+ ${BOOST_FILESYSTEM_LIBRARY}
+ ${QT_QTTEST_LIBRARY}
+ )
+
+MACRO(MAKE_UNITTEST basename)
+ QT4_WRAP_CPP(${basename}_MOC_CXX ${basename}.cpp)
+ GET_FILENAME_COMPONENT(${basename}_MOC_DIR ${${basename}_MOC_CXX} PATH)
+ SET(${basename}_SRC ${basename}.cpp)
+ INCLUDE_DIRECTORIES(${${basename}_MOC_DIR})
+ SET_SOURCE_FILES_PROPERTIES(${${basename}_SRC}
+ PROPERTIES COMPILE_FLAGS "-fPIC"
+ )
+ ADD_EXECUTABLE(${basename} ${${basename}_SRC})
+ SET_TARGET_PROPERTIES(${basename} PROPERTIES COMPILE_FLAGS "-fPIC")
+ TARGET_LINK_LIBRARIES(${basename} ${libs})
+ ADD_TEST(${basename} ${basename})
+ENDMACRO(MAKE_UNITTEST)
+
+MAKE_UNITTEST(TestSequenceLocationModel)
--- /dev/null
+#include "qui/SequenceLocationModel.hpp"
+#include "alg/sequence_location.hpp"
+#include "alg/sequence.hpp"
+
+#include <QtTest/QtTest>
+
+class TestSequenceLocationModel : public QObject
+{
+ Q_OBJECT
+
+private slots:
+
+ void testAddSequences() {
+ Sequence seq1("AAGGCCTT");
+ Sequence seq2("GGCCTTAA");
+
+ SequenceLocation loc1(seq1, 0, 2);
+ SequenceLocation loc2(seq2, 3, 3);
+
+ SequenceLocationModel slm;
+ QVERIFY(slm.size() == 0);
+ slm.push_back(loc1);
+ slm.push_back(loc2);
+
+ QVERIFY(slm.rowCount() == 2);
+ QVERIFY(slm.rowCount() == slm.size());
+
+ }
+
+ void testColumn() {
+ SequenceLocationModel slm;
+ QVERIFY(slm.columnCount() == 3);
+ }
+};
+
+
+QTEST_MAIN(TestSequenceLocationModel)
+#include "moc_TestSequenceLocationModel.cxx"