// Adds a new option to the select control. int WidgetDropDown::AddOption(const Rocket::Core::String& rml, const Rocket::Core::String& value, int before, bool select, bool selectable) { // Instance a new element for the option. Core::Element* element = Core::Factory::InstanceElement(selection_element, "*", "option", Rocket::Core::XMLAttributes()); // Force to block display and inject the RML. Register a click handler so we can be notified of selection. element->SetProperty("display", "block"); element->SetProperty("clip", "auto"); element->SetInnerRML(rml); element->AddEventListener("click", this); int option_index; if (before < 0 || before >= (int) options.size()) { selection_element->AppendChild(element); options.push_back(SelectOption(element, value, selectable)); option_index = (int) options.size() - 1; } else { selection_element->InsertBefore(element, selection_element->GetChild(before)); options.insert(options.begin() + before, SelectOption(element, value, selectable)); option_index = before; } element->RemoveReference(); // Select the option if appropriate. if (select) SetSelection(option_index); box_layout_dirty = true; return option_index; }
bool CPDF_FormField::SetItemSelection(int index, bool bSelected, bool bNotify) { ASSERT(GetType() == ComboBox || GetType() == ListBox); if (index < 0 || index >= CountOptions()) return false; CFX_WideString opt_value = GetOptionValue(index); if (bNotify && !NotifyListOrComboBoxBeforeChange(opt_value)) return false; if (bSelected) { if (GetType() == ListBox) { SelectOption(index, true); if (!(m_Flags & kFormListMultiSelect)) { m_pDict->SetNewFor<CPDF_String>("V", PDF_EncodeText(opt_value), false); } else { CPDF_Array* pArray = m_pDict->SetNewFor<CPDF_Array>("V"); for (int i = 0; i < CountOptions(); i++) { if (i == index || IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddNew<CPDF_String>(PDF_EncodeText(opt_value), false); } } } } else { m_pDict->SetNewFor<CPDF_String>("V", PDF_EncodeText(opt_value), false); CPDF_Array* pI = m_pDict->SetNewFor<CPDF_Array>("I"); pI->AddNew<CPDF_Number>(index); } } else { CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); if (pValue) { if (GetType() == ListBox) { SelectOption(index, false); if (pValue->IsString()) { if (pValue->GetUnicodeText() == opt_value) m_pDict->RemoveFor("V"); } else if (pValue->IsArray()) { std::unique_ptr<CPDF_Array> pArray(new CPDF_Array); for (int i = 0; i < CountOptions(); i++) { if (i != index && IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddNew<CPDF_String>(PDF_EncodeText(opt_value), false); } } if (pArray->GetCount() > 0) m_pDict->SetFor("V", std::move(pArray)); } } else { m_pDict->RemoveFor("V"); m_pDict->RemoveFor("I"); } } } if (bNotify) NotifyListOrComboBoxAfterChange(); return true; }
static int premia_interactive_menu( Planning *pt_plan, Model **models, Family **families, Pricing **pricings, int user) { Model* pt_model; Option* pt_option; Pricing* pt_pricing; PricingMethod* pt_method; DynamicTest* pt_test; PricingMethod* pt_methods_available[MAX_METHODS]; if (OutputFile(&out_stream)!=OK) return WRONG; if (SelectModel(user,pt_plan,models,families,pricings,&pt_model)!=OK) return WRONG; if (SelectOption(user,pt_plan,families,pt_model,pricings,&pt_option)!=OK) return WRONG; if (SelectPricing(user,pt_model,pt_option,pricings,&pt_pricing)!=OK) return WRONG; while(1){ if (SelectMethod(user,pt_plan,pt_pricing,pt_option,pt_model,&pt_method)!=OK) return FAIL; if (SelectTest(user,pt_plan,pt_pricing,pt_option,pt_model,pt_method,&pt_test)!=OK) return FAIL; if (GetTimeInfo(user,pt_plan,&computation_time_info)!=OK) return FAIL; if ((pt_plan->Action=='p')|| (( pt_plan->Action=='t')&& (GetTest(user,pt_plan,pt_pricing,pt_option,pt_test)==OK))){ (void)ShowPlanning(NAMEONLYTOFILE,pt_plan); (void)Action(pt_model,pt_option,pt_pricing, pt_method,pt_test,NAMEONLYTOFILE,pt_plan,&computation_time_info); Fprintf(TOSCREEN,"\nComputing...\n"); Iterate(pt_plan,&(pt_plan->Par[0]),0,pt_plan->Action,pt_model,pt_option, pt_pricing,pt_method,pt_test,TOFILE,&computation_time_info); pt_methods_available[pt_plan->NumberOfMethods]=pt_method; if (pt_plan->Action=='t' || MoreAction(&(pt_plan->NumberOfMethods))==FAIL) break; else free_premia_method(pt_method); } } fclose(out_stream); if ((pt_plan->Action=='p') && (pt_plan->VarNumber>0)) (void)BuildGnuStuff(pt_plan,pt_model,pt_option,pt_pricing,pt_methods_available); if (pt_plan->Action=='t') { (void)FreeTest(pt_test); (void)BuildGnuStuffTest(pt_model,pt_option,pt_pricing,pt_method,pt_test); } free_premia_model(pt_model); free_premia_option(pt_option); free_premia_method(pt_method); return OK; }
FX_BOOL CPDF_FormField::SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) { ASSERT(GetType() == ComboBox || GetType() == ListBox); if (index < 0 || index >= CountOptions()) return FALSE; CFX_WideString opt_value = GetOptionValue(index); if (bNotify && !NotifyListOrComboBoxBeforeChange(opt_value)) return FALSE; if (bSelected) { if (GetType() == ListBox) { SelectOption(index, TRUE); if (!(m_Flags & FORMLIST_MULTISELECT)) { m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); } else { CPDF_Array* pArray = new CPDF_Array; for (int i = 0; i < CountOptions(); i++) { if (i == index || IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } m_pDict->SetAt("V", pArray); } } else { m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); CPDF_Array* pI = new CPDF_Array; pI->AddInteger(index); m_pDict->SetAt("I", pI); } } else { CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); if (pValue) { if (GetType() == ListBox) { SelectOption(index, FALSE); if (pValue->IsString()) { if (pValue->GetUnicodeText() == opt_value) m_pDict->RemoveAt("V"); } else if (pValue->IsArray()) { CPDF_Array* pArray = new CPDF_Array; for (int i = 0; i < CountOptions(); i++) { if (i != index && IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } if (pArray->GetCount() < 1) pArray->Release(); else m_pDict->SetAt("V", pArray); } } else { m_pDict->RemoveAt("V"); m_pDict->RemoveAt("I"); } } } if (bNotify) NotifyListOrComboBoxAfterChange(); return TRUE; }
FX_BOOL CPDF_FormField::SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) { ASSERT(GetType() == ComboBox || GetType() == ListBox); if (index < 0 || index >= CountOptions()) return FALSE; CFX_WideString opt_value = GetOptionValue(index); if (bNotify && !NotifyListOrComboBoxBeforeChange(opt_value)) return FALSE; if (bSelected) { if (GetType() == ListBox) { SelectOption(index, TRUE); if (!(m_Flags & kFormListMultiSelect)) { m_pDict->SetStringFor("V", PDF_EncodeText(opt_value)); } else { CPDF_Array* pArray = new CPDF_Array; for (int i = 0; i < CountOptions(); i++) { if (i == index || IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } m_pDict->SetFor("V", pArray); } } else { m_pDict->SetStringFor("V", PDF_EncodeText(opt_value)); CPDF_Array* pI = new CPDF_Array; pI->AddInteger(index); m_pDict->SetFor("I", pI); } } else { CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); if (pValue) { if (GetType() == ListBox) { SelectOption(index, FALSE); if (pValue->IsString()) { if (pValue->GetUnicodeText() == opt_value) m_pDict->RemoveFor("V"); } else if (pValue->IsArray()) { std::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>> pArray( new CPDF_Array); for (int i = 0; i < CountOptions(); i++) { if (i != index && IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } if (pArray->GetCount() > 0) m_pDict->SetFor("V", pArray.release()); // std::move someday } } else { m_pDict->RemoveFor("V"); m_pDict->RemoveFor("I"); } } } if (bNotify) NotifyListOrComboBoxAfterChange(); return TRUE; }
FX_BOOL CPDF_FormField::SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) { ASSERT(GetType() == ComboBox || GetType() == ListBox); if (index < 0 || index >= CountOptions()) { return FALSE; } CFX_WideString opt_value = GetOptionValue(index); if (bNotify && m_pForm->m_pFormNotify) { int iRet = 0; if (GetType() == ListBox) { iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); } if (GetType() == ComboBox) { iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); } if (iRet < 0) { return FALSE; } } if (!bSelected) { CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); if (pValue) { if (m_Type == ListBox) { SelectOption(index, FALSE); if (pValue->IsString()) { if (pValue->GetUnicodeText() == opt_value) { m_pDict->RemoveAt("V"); } } else if (pValue->IsArray()) { CPDF_Array* pArray = new CPDF_Array; int iCount = CountOptions(); for (int i = 0; i < iCount; i++) { if (i != index) { if (IsItemSelected(i)) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } } if (pArray->GetCount() < 1) { pArray->Release(); } else { m_pDict->SetAt("V", pArray); } } } else if (m_Type == ComboBox) { m_pDict->RemoveAt("V"); m_pDict->RemoveAt("I"); } } } else { if (m_Type == ListBox) { SelectOption(index, TRUE); if (!(m_Flags & FORMLIST_MULTISELECT)) { m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); } else { CPDF_Array* pArray = new CPDF_Array; int iCount = CountOptions(); for (int i = 0; i < iCount; i++) { FX_BOOL bSelected; if (i != index) { bSelected = IsItemSelected(i); } else { bSelected = TRUE; } if (bSelected) { opt_value = GetOptionValue(i); pArray->AddString(PDF_EncodeText(opt_value)); } } m_pDict->SetAt("V", pArray); } } else if (m_Type == ComboBox) { m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); CPDF_Array* pI = new CPDF_Array; pI->AddInteger(index); m_pDict->SetAt("I", pI); } } if (bNotify && m_pForm->m_pFormNotify) { if (GetType() == ListBox) { m_pForm->m_pFormNotify->AfterSelectionChange(this); } if (GetType() == ComboBox) { m_pForm->m_pFormNotify->AfterValueChange(this); } } if (CPDF_InterForm::m_bUpdateAP) { UpdateAP(NULL); } m_pForm->m_bUpdated = TRUE; return TRUE; }