예제 #1
0
파일: WModelIndex.C 프로젝트: 913862627/wt
std::size_t hash_value(const Wt::WModelIndex& index) {
  boost::hash<int> intHasher;
  boost::hash< ::uint64_t > longHasher;

  return intHasher(index.row()) + intHasher(index.column())
    + longHasher(index.internalId());
}
예제 #2
0
 boost::any data(const Wt::WModelIndex& index,
                 int role=Wt::DisplayRole) const {
     dbo::Transaction t(fApp->session());
     const CommentPtr& o = resultRow(index.row());
     if (index.column() == deleted_column) {
         if (role == Wt::DisplayRole) {
             return "";
         } else if (role == Wt::CheckStateRole) {
             return o->deleted();
         }
     } else if (index.column() == index_column) {
         if (role == Wt::LinkRole) {
             return Wt::WLink(Wt::WLink::InternalPath, fApp->comment_path(o));
         } else if (role == Wt::DisplayRole) {
             return tr("facts.common.id_format").arg(o.id().index);
         }
     } else if (index.column() == ip_column && role == Wt::LinkRole) {
         return  Wt::WLink(Wt::WLink::InternalPath, fApp->ip_path(o->ip()));
     } else if (index.column() == text_column && role == Wt::DisplayRole) {
         if (o->deleted()) {
             return tr("facts.comment.deleted");
         } else {
             return tr("facts.comment.format").arg(o->username()).arg(o->email())
                    .arg(o->when_added().toString()).arg(o->text());
         }
     }
     return BaseQM::data(index, role);
 }
예제 #3
0
void RSWappSearchFilesPage::tableClicked()
{
	//_tableView->selectedIndexes().begin().
	Wt::WModelIndex index;
	std::list<int> jobList;
	const Wt::WModelIndexSet selectedRows = _tableView->selectedIndexes();
	for (Wt::WModelIndexSet::iterator i = selectedRows.begin();
		i != selectedRows.end(); ++i) {
			index = *i;
			jobList.push_back(index.row());
	}
	DirDetails dd;
	std::list<DirDetails> items = _shared_files_model->getItems(jobList);
	for (std::list<DirDetails>::iterator i = items.begin();
		i != items.end(); ++i) {
			dd = *i;

			FileInfo finfo ;
		    rsFiles->FileDetails(dd.hash, RS_FILE_HINTS_REMOTE, finfo) ;

		    std::list<std::string> srcIds;
		    for(std::list<TransferInfo>::const_iterator it(finfo.peers.begin());it!=finfo.peers.end();++it)
		    {
		        srcIds.push_back((*it).peerId) ;
		    }

		    if (rsFiles->FileRequest(dd.name, dd.hash, dd.count, "", RS_FILE_REQ_ANONYMOUS_ROUTING, srcIds)) {
				std::cerr << "\n\n DOWNLOADING: " << dd.name << ", " << dd.hash << ", " << dd.count <<std::endl;
		    } else {
				std::cerr << "\n\n SKIPDL: " << dd.name << ", " << dd.hash << ", " << dd.count <<std::endl;
		        //fileExist.append(link.name());
		    }
	}
	//dryRunSignal().emit(jobList);
}
예제 #4
0
 boost::any data(const Wt::WModelIndex& index,
                 int role=Wt::DisplayRole) const {
     dbo::Transaction t(fApp->session());
     if (role == Wt::LinkRole && index.column() == N_COLUMN) {
         const FactPtr& o = resultRow(index.row());
         return Wt::WLink(Wt::WLink::InternalPath, fApp->fact_path(o));
     }
     return BaseQM::data(index, role);
 }
예제 #5
0
		virtual boost::any data(const Wt::WModelIndex& index, int role = Wt::DisplayRole) const
		{
			RsStackMutex mtx(_mtx) ;
			std::cerr << "data row: " << index.row() << std::endl;
			if(index.column() >= 6 || index.row() >= (int)_searchResults.size())
				return boost::any();

			//DirDetails dd;
			//dd.count;
			switch (role) 
			{
				case Wt::DisplayRole:
					switch(index.column())
					{
						case COLUMN_FILENAME  : return Wt::WString(_searchResults[index.row()].name) ;
						case COLUMN_SIZE  : return make_big_number(_searchResults[index.row()].count) ;
						case COLUMN_AGE: return make_big_number(_searchResults[index.row()].age);
						default:
														return boost::any();
					}
				case Wt::UserRole:
					switch(index.column())
					{

					default: return Wt::WString(_searchResults[index.row()].hash) ;
					}
				case Wt::ToolTipRole:
						Wt::WString(_searchResults[index.row()].hash) ;
				default:
					return boost::any();
			}
		}
boost::any
InstructionListModel::data(const Wt::WModelIndex &index, int role) const {
    ASSERT_require(index.isValid());
    ASSERT_require(index.row()>=0 && (size_t)index.row() < insns_.size());
    SgAsmInstruction *insn = insns_[index.row()];
    if (Wt::DisplayRole == role) {
        switch (index.column()) {
            case C_ADDR: {
                return Wt::WString(StringUtility::addrToString(insn->get_address()));
            }
            case C_BYTES: {
                std::string s;
                for (size_t i=0; i<insn->get_raw_bytes().size(); ++i) {
                    uint8_t byte = insn->get_raw_bytes()[i];
                    char buf[32];
                    sprintf(buf, "%02x", byte);
                    s += std::string(i?" ":"") + buf;
                }
                return Wt::WString(s);
            }
            case C_CHARS: {
                std::string s;
                for (size_t i=0; i<insn->get_raw_bytes().size(); ++i) {
                    char ch = insn->get_raw_bytes()[i];
                    s += std::string(i?" ":"") + (isgraph(ch) ? std::string(1, ch) : std::string(" "));
                }
                return Wt::WString(s);
            }
            case C_STACKDELTA: {
                int64_t delta = insn->get_stackDelta();
                if (delta == SgAsmInstruction::INVALID_STACK_DELTA)
                    return Wt::WString("");
                std::string s = (delta >= 0 ? "+" : "") + boost::lexical_cast<std::string>(delta);
                return Wt::WString(s);
            }
            case C_NAME: {
                return Wt::WString(unparseMnemonic(insn));
            }
            case C_ARGS: {
                std::string s;
                const RegisterDictionary *regs = ctx_.partitioner.instructionProvider().registerDictionary();
                const SgAsmExpressionPtrList &operands = insn->get_operandList()->get_operands();
                for (size_t i=0; i<operands.size(); ++i)
                    s += (i?", ":"") + unparseExpression(operands[i], NULL, regs);
                return Wt::WString(s);
            }
            case C_COMMENT: {
                return Wt::WString(insn->get_comment());
            }
            default:
                ASSERT_not_reachable("invalid column number");
        }
    }
    return boost::any();
}
예제 #7
0
 bool setData(const Wt::WModelIndex& index, const boost::any& value,
              int role=Wt::EditRole) {
     if (role == Wt::CheckStateRole && value.type() == typeid(bool)) {
         dbo::Transaction t(fApp->session());
         const CommentPtr& o = resultRow(index.row());
         o.modify()->set_deleted(boost::any_cast<bool>(value));
         t.commit();
         dataChanged().emit(index, this->index(index.row(), text_column));
         return true;
     }
     return BaseQM::setData(index, value, Wt::EditRole);
 }
예제 #8
0
파일: DataModels.cpp 프로젝트: Unss/wt
boost::any PlaneData::data(const Wt::WModelIndex& index,
			   int role) const
{
  if (role != DisplayRole) {
    return boost::any();
  }

  double x, y;
  y = yStart_ + index.column() * yDelta_;
  x = xStart_ + index.row() * xDelta_;
  return 0.5*y;
}
 virtual boost::any data(const Wt::WModelIndex& index, int role = Wt::DisplayRole) const
 {
   switch (role) {
     case Wt::DisplayRole:
       if(index.column()==0)
         return Wt::WString(_profiles[index.row()].uuid);
       if(index.column()==1)
         return Wt::WString(_profiles[index.row()].name);
     default:
       return boost::any();
   }
 }
예제 #10
0
Sawyer::Optional<rose_addr_t>
HexDumpModel::cellAddress(const Wt::WModelIndex &idx) const {
    if (!idx.isValid())
        return Sawyer::Nothing();
    size_t column = idx.column();
    size_t row = idx.row();

    if (column >= bytesColumn && column < bytesColumn + bytesPerRow)
        return cellAddress(row, column - bytesColumn);
    if (column >= asciiColumn && column < asciiColumn + bytesPerRow)
        return cellAddress(row, column - asciiColumn);
    return Sawyer::Nothing();
}
예제 #11
0
Wt::cpp17::any PlaneData::data(const Wt::WModelIndex& index, Wt::ItemDataRole role) const
{
  if (role != Wt::ItemDataRole::Display) {
    return WStandardItemModel::data(index, role);
  }

  double delta_x = (xEnd_ - xStart_)/(rowCount()-2);
  double delta_y = (yEnd_ - yStart_)/(columnCount()-2);
  double x = xStart_ + index.row() * delta_x;
  double y = yStart_ + index.column() * delta_y;

  return 0.2*x - 0.2*y;
}
예제 #12
0
  virtual boost::any data(const Wt::WModelIndex& index, int role = Wt::DisplayRole) const
  {
    switch (role) {
    case Wt::DisplayRole:
      if (index.column() == 0)
	return Wt::WString("Row {1}").arg(index.row());
      else
	return Wt::WString("Item row {1}, col {2}")
	  .arg(index.row()).arg(index.column());
    default:
      return boost::any();
    }
  }
예제 #13
0
파일: DataModels.cpp 프로젝트: Unss/wt
boost::any SombreroData::data(const Wt::WModelIndex& index,
			      int role) const
{
  if (role != DisplayRole) {
    return boost::any();
  }

  double delta_y = (yEnd_ - yStart_)/(nbYPts_-1);
  if (index.row() == 0) { // give back y-abscis
    if (index.column() == 0)
      return 0.0;
    return yStart_ + (index.column()-1)*delta_y;
  }
  
  double delta_x = (xEnd_ - xStart_)/(nbXPts_-1);
  if (index.column() == 0) { // give back x-abscis
    if (index.row() == 0)
      return 0.0;
    return xStart_ + (index.row()-1)*delta_x;
  }

  double x, y;
  y = yStart_ + (index.column()-1)*delta_y;
  x = xStart_ + (index.row()-1)*delta_x;
  return 4*std::sin(std::sqrt(std::pow(x,2) + std::pow(y,2))) 
    / (std::sqrt (std::pow(x,2) + std::pow(y,2)));
}
예제 #14
0
Wt::cpp17::any SombreroData::data(const Wt::WModelIndex& index, Wt::ItemDataRole role) const
{
  if (role != Wt::ItemDataRole::Display) {
    return WStandardItemModel::data(index, role);
  }

  double delta_y = (yEnd_ - yStart_)/(columnCount()-2);
  if (index.row() == 0) { // give back y-abscis
    if (index.column() == 0)
      return 0.0;
    return yStart_ + (index.column()-1)*delta_y;
  }
  
  double delta_x = (xEnd_ - xStart_)/(rowCount()-2);
  if (index.column() == 0) { // give back x-abscis
    if (index.row() == 0)
      return 0.0;
    return xStart_ + (index.row()-1)*delta_x;
  }

  double x, y;
  y = yStart_ + (index.column()-1)*delta_y;
  x = xStart_ + (index.row()-1)*delta_x;
  return 4*std::sin(std::sqrt(std::pow(x,2) + std::pow(y,2))) 
    / (std::sqrt (std::pow(x,2) + std::pow(y,2)));
}
void ProfileList::doubleClicked(Wt::WModelIndex index, Wt::WMouseEvent event)
{
  LOGDEBUG("cell double clicked:"<< boost::any_cast<Wt::WString>(tableView->model()->data(index.row(),index.column())));
  tableView->select(index);
  db::Preset preset=((ProfileTableModel*)tableView->model())->getPresetAtIndex(index.row());
  openEditDialog(preset);
}
예제 #16
0
		virtual int rowCount(const Wt::WModelIndex& parent = Wt::WModelIndex()) const
		{
			if (!parent.isValid())
				return _friends.size() ;
			else
				return 0;
		}
예제 #17
0
		virtual int columnCount(const Wt::WModelIndex& parent = Wt::WModelIndex()) const
		{
			if (!parent.isValid())
				return 6;
			else
				return 0;
		}
예제 #18
0
 virtual int rowCount(const Wt::WModelIndex& parent = Wt::WModelIndex()) const
 {
   if (!parent.isValid())
     return rows_;
   else
     return 0;
 }
예제 #19
0
파일: locale.C 프로젝트: 913862627/wt
  virtual boost::any data(const Wt::WModelIndex& index,
			  int role = Wt::DisplayRole) const
  {
    std::string id = ids_[index.row()];

    switch (role) {
    case Wt::DisplayRole: {
      if (showOffset_) {
	boost::local_time::time_zone_ptr tz = tz_db_.time_zone_from_region(id);
	
	Wt::WTime t = Wt::WTime(0, 0, 0)
	  .addSecs(tz->base_utc_offset().total_seconds());

	std::string result = locality(id) + " (GMT" + 
	  t.toString("+hh:mm").toUTF8() + ")";

	return result;
      } else
	return locality(id);
    }
    case Wt::LevelRole:
      return id.substr(0, id.find('/'));
    case BoostTimeZoneRole:
      return tz_db_.time_zone_from_region(id);
    case PosixTimeZoneRole:
      return tz_db_.time_zone_from_region(id)->to_posix_string();
    default:
      return boost::any();
    }
  }
예제 #20
0
 Wt::WFlags<Wt::ItemFlag> flags(const Wt::WModelIndex& i) const {
     Wt::WFlags<Wt::ItemFlag> f = ULP::BaseQM::flags(i);
     if (i.column() == NAME_COLUMN) {
         f |= Wt::ItemIsXHTMLText;
     }
     return f;
 }
예제 #21
0
		virtual int rowCount(const Wt::WModelIndex& parent = Wt::WModelIndex()) const
		{
			RsStackMutex mtx(_mtx) ;
			if (!parent.isValid())
				return _searchResults.size() ;
			else
				return 0;
		}
예제 #22
0
파일: IpList.cpp 프로젝트: starius/thechess
 boost::any data(const Wt::WModelIndex& index,
                 int role = Wt::DisplayRole) const {
     dbo::Transaction t(tApp->session());
     const BDPtr& o = resultRow(index.row());
     if (role == Wt::DisplayRole) {
         if (index.column() == BAN) {
             if (o->type() == Wt::Wc::Gather::IP) {
                 if (IpBan::is_banned(o->value())) {
                     return tr("tc.user.Already_banned");
                 } else {
                     return tr("tc.user.New_ban");
                 }
             } else {
                 return "";
             }
         } else if (index.column() == USER) {
             return o->user()->username();
         } else if (index.column() == TYPE) {
             return Wt::Wc::Gather::type_to_str(o->type());
         }
     } else if (role == Wt::LinkRole) {
         if (index.column() == VALUE && o->type() == Wt::Wc::Gather::IP) {
             return tApp->path().banned_ip()->get_link(o->value());
         } else if (index.column() == BAN &&
                    o->type() == Wt::Wc::Gather::IP &&
                    !IpBan::is_banned(o->value())) {
             tApp->path().user_view()->set_integer_value(o->user().id());
             return tApp->path().new_ip_ban()->get_link(o->value());
         } else if (index.column() == USER) {
             return tApp->path().user_view()->get_link(o->user().id());
         }
     }
     return ILP::BaseQM::data(index, role);
 }
예제 #23
0
파일: DataModels.cpp 프로젝트: Unss/wt
boost::any PointsData::data(const Wt::WModelIndex& index,
			    int role) const
{
  if (role == MarkerBrushColorRole) {
    //return WColor(rand()%256, rand()%256, rand()%256);
    return WColor(0, 255, 0);
  } else if (role != DisplayRole) {
    return boost::any();
  }


  const double pi = 3.141592;
  double XYangle = index.row() * (8*pi/nbPts_);
  if (index.column() == 0) {
    return std::cos(XYangle);
  }
  if (index.column() == 1) {
    return std::sin(XYangle);
  }
  if (index.column() == 2) {
    return -5.0 + index.row() * (10.0/nbPts_);
  }
  return boost::any();
}
예제 #24
0
파일: WModelIndex.C 프로젝트: 913862627/wt
bool WModelIndex::isAncestor(const Wt::WModelIndex& i1,
			     const Wt::WModelIndex& i2) {
  if (!i1.isValid())
    return false;

  for (Wt::WModelIndex p = i1.parent(); p.isValid(); p = p.parent()) {
    if (p == i2)
      return true;
  }

  return !i2.isValid();
}
예제 #25
0
Wt::cpp17::any SpiralData::data(const Wt::WModelIndex& index, Wt::ItemDataRole role) const
{
  if (role != Wt::ItemDataRole::Display) {
    return WStandardItemModel::data(index, role);
  }

  const double pi = 3.141592;
  double XYangle = index.row() * (8*pi/nbPts_);
  double heightRatio = (float)index.row() / rowCount();
  double radius = 1.0 + heightRatio * 5.0;
  if (index.column() == 0) {
    return radius * std::cos(XYangle);
  } else if (index.column() == 1) {
    return radius * std::sin(XYangle);
  } else if (index.column() == 2) {
    return 5.0 - index.row() * (10.0/nbPts_);
  } else {
    return Wt::cpp17::any();
  }
}
int
InstructionListModel::columnCount(const Wt::WModelIndex &parent) const {
    return parent.isValid() ? 0 : C_NCOLS;
}
int
InstructionListModel::rowCount(const Wt::WModelIndex &parent) const {
    return parent.isValid() ? 0 : insns_.size();
}
예제 #28
0
boost::any
HexDumpModel::data(const Wt::WModelIndex &index, int role) const {
    ASSERT_require(index.isValid());
    ASSERT_require(index.row() >= 0);                   // Why signed when a valid row is non-negative?
    size_t row = index.row();
    ASSERT_require(row < nRows_);
    ASSERT_require(index.column() >= 0);                // Why signed when a valid column is non-negative?
    size_t column = index.column();
    ASSERT_require(column < endColumn);

    if (role == Wt::DisplayRole) {
        if (column == addressColumn) {
            rose_addr_t va = 0;
            if (rowAddress(row).assignTo(va))
                return Wt::WString(StringUtility::addrToString(va));
            return Wt::WString("");
        } else if (column >= bytesColumn && column < bytesColumn + bytesPerRow) {
            uint8_t byte = 0;
            if (readByte(cellAddress(row, column-bytesColumn)).assignTo(byte) && byte!=0) {
                char buf[8];
                sprintf(buf, "%02x", (unsigned)byte);
                return Wt::WString(buf);
            }
            return Wt::WString("");
        } else if (column >= asciiColumn && column < asciiColumn + bytesPerRow) {
            uint8_t byte = 0;
            std::string s;
            if (readByte(cellAddress(row, column-asciiColumn)).assignTo(byte))
                s = charToString(byte);
            return Wt::WString(s);
        } else if (column == sep1Column || column == sep2Column) {
            return Wt::WString("");
        } else {
            ASSERT_not_reachable("this column needs data");
        }
    } else if (role == Wt::ToolTipRole) {
        MemoryMap::ConstNodeIterator mmNode = memoryMap_->nodes().end();
        rose_addr_t va = 0;
        if (column == addressColumn) {
            mmNode = rowSegment(row);
            va = cellAddress(row, 0).orElse(0);
        } else if (column >= bytesColumn && column < bytesColumn + bytesPerRow &&
                   cellAddress(row, column-bytesColumn).assignTo(va)) {
            mmNode = memoryMap_->at(va).findNode();
        } else if (column >= asciiColumn && column < asciiColumn + bytesPerRow &&
                   cellAddress(row, column-asciiColumn).assignTo(va)) {
            mmNode = memoryMap_->at(va).findNode();
        }
        if (mmNode != memoryMap_->nodes().end()) {
            const AddressInterval &interval = mmNode->key();
            const MemoryMap::Segment &segment = mmNode->value();
            std::string tip = StringUtility::htmlEscape(segment.name());
            if (interval.isContaining(va))
                tip += "+" + StringUtility::addrToString(va-interval.least());
            return Wt::WString(tip);
        }
    } else if (role == Wt::StyleClassRole) {
        if (column==sep1Column || column==sep2Column || !rowAddress(row)) {
            return Wt::WString("hexdump_unmapped");
        } else if (column >= bytesColumn && column < bytesColumn + bytesPerRow && !cellAddress(row, column-bytesColumn)) {
            return Wt::WString("hexdump_unmapped");
        } else if (column >= asciiColumn && column < asciiColumn + bytesPerRow) {
            if (!cellAddress(row, column-asciiColumn)) {
                return Wt::WString("hexdump_unmapped");
            } else if (charToString(*readByte(cellAddress(row, column-asciiColumn))).empty()) {
                return Wt::WString("hexdump_nochar");
            }
        } else if (column == addressColumn) {
            MemoryMap::ConstNodeIterator mmIter = rowSegment(row);
            ASSERT_require(mmIter != memoryMap_->nodes().end()); // would have been caught above
            unsigned a = mmIter->value().accessibility();
            std::string style;
            if (0!=(a & MemoryMap::READABLE))
                style += "r";
            if (0!=(a & MemoryMap::WRITABLE))
                style += "w";
            if (0!=(a & MemoryMap::EXECUTABLE))
                style += "x";
            if (style.empty())
                style = "none";
            return Wt::WString("hexdump_addr_" + style);
        } else if (row % 2) {
            return Wt::WString("hexdump_oddrow");
        } else {
            return Wt::WString("hexdump_evenrow");
        }
    }
    return boost::any();
}
예제 #29
0
int
HexDumpModel::columnCount(const Wt::WModelIndex &parent) const {
    return parent.isValid() ? 0 : endColumn;
}
예제 #30
0
 boost::any data(const Wt::WModelIndex& index,
                 int role = Wt::DisplayRole) const {
     dbo::Transaction t(tApp->session());
     const UserPtr& o = resultRow(index.row());
     if (role == Wt::DisplayRole) {
         if (index.column() == NUMBER_COL) {
             return index.row() + 1;
         } else if (index.column() == NAME_COLUMN) {
             return tr("tc.user.User_template")
                    .arg(o->safe_username())
                    .arg(Gravatar::path(o))
                    .arg(o->online() ? tr("tc.user.Online") : "");
         } else if (index.column() == CLASSIFICATION_COLUMN) {
             return o->classification_str();
         } else if (index.column() == DRAWS_COLUMN) {
             return o->games_stat().draws();
         } else if (index.column() == ONLINE_TIME) {
             return td2str(o->online_time());
         }
     } else if (role == Wt::LinkRole) {
         if (index.column() == NAME_COLUMN) {
             return tApp->path().user_view()->get_link(o.id());
         }
     } else if (role == Wt::StyleClassRole) {
         if (index.column() == NAME_COLUMN) {
             return "thechess-user-anchor";
         } else if (index.column() == ALL_COLUMN) {
             return "thechess-games-all";
         } else if (index.column() == WINS_COLUMN) {
             return "thechess-games-wins";
         } else if (index.column() == FAILS_COLUMN) {
             return "thechess-games-fails";
         } else if (index.column() == DRAWS_COLUMN) {
             return "thechess-games-draws";
         } else if (index.column() == RATING_COLUMN) {
             return "thechess-games-rating";
         } else if (index.column() == ONLINE_TIME ||
                    index.column() == REGISTRATION_DATE) {
             return "thechess-datetime";
         }
     }
     t.commit();
     return ULP::BaseQM::data(index, role);
 }