#include <optimizelayoutalgo.h>
Inheritance diagram for OptimizeLayoutAlgo:
Public Member Functions | |
OptimizeLayoutAlgo (TrapperDoc *pDoc_, std::set< db_recno_t > &recnoList, AlgoParam *param) | |
void | start () |
Definition at line 6 of file optimizelayoutalgo.h.
OptimizeLayoutAlgo::OptimizeLayoutAlgo | ( | TrapperDoc * | pDoc_, | |
std::set< db_recno_t > & | recnoList, | |||
AlgoParam * | param | |||
) | [inline] |
void OptimizeLayoutAlgo::start | ( | ) | [virtual] |
Implements Algo.
Definition at line 14 of file optimizelayoutalgo.cc.
References QInputDialog::getInteger(), TrapperView::mousePressedRow(), Algo::my_param, optimize_layout(), Algo::pDoc, Algo::selectedReads, and ViewParam::view().
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 }