示例#1
0
void MSCheckPopupMenu::updateData(void)
{
  if (MSView::model()!=0)
   {
     freeze();
     const MSStringVector& aStringVector=stringVector();
     unsigned currentCount(itemCount());
     unsigned i;
     MSWidgetVector itemVector(children());
     MSCheckMenuItem *pMenuItem;
     for (i=0;i<aStringVector.length();i++)
      {
	if (i<itemVector.length())
	 {
           pMenuItem=(MSCheckMenuItem *)itemVector(i);
	   pMenuItem->label(aStringVector(i));
	   pMenuItem->state(MSFalse);
	 }
	else 
	  {
	    pMenuItem=new MSCheckMenuItem(this,aStringVector(i),0,i);
	    pMenuItem->selectColor(_selectColor);
	  }
	setItem(pMenuItem,i);
      }
     for (i=aStringVector.length();i<itemVector.length();i++)
      {
	pMenuItem=(MSCheckMenuItem *)itemVector(i);
	delete pMenuItem;
      }
     unfreeze();
     computeSize();
   }
  else removeAllItems();
}
示例#2
0
void MSCheckPopupMenu::selectColor(unsigned long pixel_)
{ 
  if (_selectColor!=pixel_)
   { 
     _selectColor=pixel_; 
     MSWidgetVector itemVector(children());
     MSCheckMenuItem *pMenuItem;
     for (unsigned i=0, len=itemVector.length();i<len;i++)
       {
	 pMenuItem=(MSCheckMenuItem *)itemVector(i);
	 pMenuItem->selectColor(_selectColor);
       }
   }
}
示例#3
0
void MSCheckPopupMenu::resetSelection(void)
{
  MSWidgetVector itemVector(children());
  MSCheckMenuItem *pMenuItem;
  for (unsigned i=0, len=itemVector.length();i<len;i++)
    {
      pMenuItem=(MSCheckMenuItem *)itemVector(i);
      if (_selection.indexOf(pMenuItem->label())<_selection.length())
	{
	  pMenuItem->state(MSTrue);
	}
      else
	{
	  pMenuItem->state(MSFalse);
	}
    }
}
示例#4
0
float MFModel::predictRating(int userID, int itemID){
    if(userVectors.count(userID) == 0 || itemVectors.count(itemID) == 0){
        cout << "wrong userID or itemID" << endl;
        return 0;
    }
    float preRating = 0;
    vector<float> userVector(userVectors[userID]->latentVector);
    vector<float> itemVector(itemVectors[itemID]->latentVector);
    for(int i = 0; i < latentLen; i++){
        preRating += userVector[i] * itemVector[i];
        //cout << userVector[i] << " " << itemVector[i] << endl;
    }
    //cout << "predict " << userID << " " << itemID << " " << preRating << endl;
    return preRating;
}
示例#5
0
void MSOptionPopupMenu::update(const MSIndexVector& index_)
{
  if (MSView::model()!=0)
   {
     if (index_.length()==0)
      {
	if (optionsModel().length()==itemCount())
	 {
	   MSMenuItem *mi;
           int i,n=itemCount();
           for(i=0;i<n;i++)
	    {
	      mi=(MSMenuItem *)itemVector()(i);
	      mi->label(optionsModel()(i));
	    }
	   computeSize();
	   optionMenu()->setSelectedItem(0);
	   optionMenu()->computeSize();
	 }
	else rebuildMenu();
      }
     else 
      {
	MSIndexVector iv(index_);
	iv.sortUp();
	if (iv(0)==itemCount())
	 {
	   for (unsigned i=0,j=itemCount();i<iv.length();i++,j++)
	    {
	      MSMenuItem *pMenuItem=new MSMenuItem(this,optionsModel()(j),0,j);
	      setItem(pMenuItem,j);
	    }
	 }
	else
	 {
	   for (unsigned i=0;i<iv.length();i++)
	    {
	      unsigned index=iv(i);
	      MSMenuItem *mi=menuItem(index);
	      if (mi!=0) mi->label(optionsModel()(index));
	    }
	 }
      }
     computeSize();
     optionMenu()->computeSize();
   }
}