optimizelayoutalgo.cc

Go to the documentation of this file.
00001 #include "optimizelayoutalgo.h"
00002 #include <qinputdialog.h>
00003 // #include <set>
00004 // #include <vector>
00005 #include "viewparam.h"
00006 #include <cassert>
00007 #include "trapperview.h"
00008 // #include "readdata.h"
00009 // #include "generaldata.h"
00010 #include "optimizelayout.h"
00011 
00012 using namespace std;
00013 
00014 void OptimizeLayoutAlgo::start()
00015 {
00016 
00017   if ( selectedReads.empty() ) {
00018     return;
00019   }
00020 
00021   ViewParam* param = dynamic_cast<ViewParam*>(my_param);
00022   assert(param);
00023 
00024   bool ok;
00025   int res = QInputDialog::getInteger(
00026                                      "Optimize Layout", "Enter start row for selected reads:", param->view()->mousePressedRow(), 1, numeric_limits<int>::max(), 1,
00027                                      &ok, 0 );
00028   
00029   size_t row(1);
00030   if ( ok ) {
00031     // user entered something and pressed OK
00032     row = res;
00033   } else {
00034     // user pressed Cancel
00035     return;
00036   }
00037 
00038   optimize_layout(row, selectedReads, pDoc);
00039 
00040 //   cerr<<"Inserting..."<<endl;
00041   
00042 //   multiset<sort_struct, compBeg> set_begin;
00043 
00044 //   for (set< db_recno_t >::iterator it = selectedReads.begin(); it != selectedReads.end(); it++ ){
00045 
00046 //     Database::PrimaryIterator<ReadData> read_it(pDoc, "ReadData");
00047 //     int ret_read = read_it.setFromRecno(*it);
00048 //     ReadData* r_test = (ret_read != DB_NOTFOUND) ? read_it.answer() : 0;
00049 //     assert( r_test );
00050 //     assert( ret_read == 0 );
00051     
00052 //     sort_struct s;
00053 //     s.begin = r_test->startPos();
00054 //     s.end = r_test->endPos() + 1;
00055 //     s.ID = *it;
00056     
00057 //     set_begin.insert(s);
00058     
00059 //   }
00060 // //   cerr<<"Reading..."<<endl;
00061   
00062 //   multiset<sort_struct, compBeg>::iterator it = set_begin.begin();
00063 //   sort_struct tmp(*it);
00064 //   tmp.begin = tmp.end;
00065 //   vector<sort_struct> row_vec;
00066 //   row_vec.push_back(tmp);
00067 
00068 //   vector<sort_struct> result_vec;
00069 //   tmp.row = row;
00070 //   result_vec.push_back(tmp);
00071 //   set_begin.erase( set_begin.begin() );
00072   
00073 //   while ( !set_begin.empty() ) {
00074 //     it = set_begin.lower_bound( row_vec[ row_vec.size() - 1 ] );
00075     
00076 //     if ( it == set_begin.end() ) {
00077 //       //New row
00078       
00079 //       row_vec.clear();
00080 //       ++row;
00081 //       it = set_begin.begin();
00082 //     }
00083     
00084 //     tmp = *it;
00085 //     tmp.begin = tmp.end;
00086 //     row_vec.push_back(tmp);
00087 
00088 //     tmp.row = row;
00089 //     result_vec.push_back(tmp);
00090 //     set_begin.erase(it);
00091 //   } 
00092 // //   cerr<<"Writing..."<<endl;
00093 
00094 //   for( size_t i = 0; i < result_vec.size(); i++ ) {
00095 //     Database::PrimaryIterator<ReadData>* read_it = new Database::PrimaryIterator<ReadData>(pDoc, "ReadData");
00096 //     int ret_read = read_it->setFromRecno(result_vec[i].ID);
00097 //     ReadData* r_test = (ret_read != DB_NOTFOUND) ? read_it->answer() : 0;
00098 //     assert( r_test );
00099 //     assert( ret_read == 0 );
00100 
00101 //     Database::Creator<ReadData> a_creator(pDoc, "ReadData");
00102     
00103 //     a_creator.data()->copy(r_test);
00104 //     a_creator.data()->setRecno(result_vec[i].ID);
00105 //     a_creator.data()->setRow(result_vec[i].row);
00106     
00107 //     delete read_it;
00108 //     a_creator.create(true);
00109     
00110 //   }
00111   
00112 }
00113 

Generated on Fri Jul 17 20:19:29 2009 for ngsview by  doxygen 1.5.1