/*********************************************************************\ Function name : CCustomElementSettings::SetData Description : Created at : 11.08.01, @ 23:18:59 Created by : Thomas Kunert Modified by : \*********************************************************************/ void CCustomElementSettings::SetData() { _Init(); CreateElementList(); // fill the list view with the elements Int32 a = 0; while (m_wndListView.RemoveItem(a)) { a++; } if (!g_pCustomElements) return; Int32 lElementCount = g_pCustomElements->Entries(); if (lElementCount == 0) return; CCustomElements* pFirst = g_pCustomElements->First(); a = 0; while (pFirst) { BaseContainer data; data.SetString('name', pFirst->m_strName); data.SetString('resy', pFirst->m_pChResSym); data.SetString('ceid', String::IntToString(pFirst->m_lID)); m_wndListView.SetItem(a, data); a++; pFirst = g_pCustomElements->Next(pFirst); } m_wndListView.DataChanged(); AutoAlloc<BaseSelect> pSel; if (pSel) { pSel->Select(m_pElement->m_lElement); m_lLastID = -1; m_wndListView.SetSelection(pSel); m_wndListView.DataChanged(); } // write the custom object properties if (g_pCustomElements && m_pElement->m_lElement >= 0 && m_pElement->m_lElement < g_pCustomElements->Entries()) { CCustomElements* pElement = g_pCustomElements->GetItem(m_pElement->m_lElement); BasePlugin* pPlug = nullptr; if (pElement) pPlug = pElement->m_pPlug; if (pPlug) { CustomProperty *prop = CallCustomGuiCmd(pPlug, GetProperties)(); m_wndSubDlg.Refresh(m_pSettingsDialog, prop, m_pElement); } } }
Bool CreateLayout() { GroupBeginInMenuLine(); { BaseContainer customdata; customdata.SetString(HYPERLINK_LINK_TEXT, GeLoadString(CMG_DEVLINK)); customdata.SetString(HYPERLINK_LINK_DEST, GeLoadString(CMG_DEVLINK_LINK)); customdata.SetBool(HYPERLINK_IS_LINK, true); customdata.SetBool(HYPERLINK_ALIGN_RIGHT, true); customdata.SetBool(HYPERLINK_NO_UNDERLINE, true); AddCustomGui(CMG_DEVLINK, CUSTOMGUI_HYPER_LINK_STATIC, "", 0, 0, 0, customdata); GroupEnd(); } return LoadDialogResource(DLG_MAIN, nullptr, BFH_SCALEFIT | BFV_SCALEFIT); }
Bool ApplinkImporter::CreateChannelNormal(long i, BaseMaterial* mat) { if(this->matArray[i].norm_map != "") { BaseChannel *color = mat->GetChannel(CHANNEL_NORMAL); if (!color) return false; GeData b; mat->GetParameter(DescID(MATERIAL_USE_NORMAL), b, DESCFLAGS_GET_0); if(!b.GetBool()) mat->SetParameter(DescID(MATERIAL_USE_NORMAL), true, DESCFLAGS_SET_0); mat->SetParameter(DescID(MATERIAL_NORMAL_REVERSEY), true, DESCFLAGS_SET_0); BaseContainer cdata = color->GetData(); if (this->matArray[i].useTextures) { //GePrint ("Material Use texture: " + this->matArray[i].map_Kd); cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].norm_map); cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath); } color->SetData(cdata); } return true; }
Bool ApplinkImporter::CreateChannelSpecular(long i, BaseMaterial* mat) { if(this->matArray[i].map_Ks != "") { BaseChannel *color = mat->GetChannel(CHANNEL_SPECULARCOLOR); if (!color) return false; GeData b; mat->GetParameter(DescID(MATERIAL_USE_SPECULARCOLOR), b, DESCFLAGS_GET_0); if(!b.GetBool()) mat->SetParameter(DescID(MATERIAL_USE_SPECULARCOLOR), true, DESCFLAGS_SET_0); BaseContainer cdata = color->GetData(); cdata.SetVector(BASECHANNEL_COLOR_EX, this->matArray[i].Ks); cdata.SetData(BAKE_TEX_NORMAL_FLIP_Y, GeData(true)); if (this->matArray[i].useTextures) { //GePrint ("Material Use texture: " + this->matArray[i].map_Kd); cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].map_Ks); cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath); } color->SetData(cdata); } return true; }
Bool ApplinkImporter::CreateChannelDisplacement(long i, BaseMaterial* mat) { if(this->matArray[i].disp_map != "") { BaseChannel *color = mat->GetChannel(CHANNEL_DISPLACEMENT); if (!color) return false; GeData b; mat->GetParameter(DescID(MATERIAL_USE_DISPLACEMENT), b, DESCFLAGS_GET_0); if(!b.GetBool()) mat->SetParameter(DescID(MATERIAL_USE_DISPLACEMENT), true, DESCFLAGS_SET_0); BaseContainer cdata = color->GetData(); //GePrint("disp: " + RealToString(this->matArray[i].disp_k)); mat->SetParameter(DescID(MATERIAL_DISPLACEMENT_STRENGTH), this->matArray[i].disp_k/100, DESCFLAGS_SET_0); if (this->matArray[i].useTextures) { //GePrint ("Material Use texture: " + this->matArray[i].map_Kd); cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].disp_map); cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath); } color->SetData(cdata); } return true; }
/*********************************************************************\ Function name : TreeView::AddItem Description : Created at : 15.08.01, @ 09:39:49 Created by : Thomas Kunert Modified by : \*********************************************************************/ TreeViewItem* TreeView::AddItem(String strName, Int32 lType, TreeViewItem* pParent) { BaseContainer bc; bc.SetString(TREEVIEW_TEXT, strName); bc.SetInt32(TREEVIEW_ICON, lType); return AddItem(bc, pParent); }
/*********************************************************************\ Function name : CDialogCustomElement::CreateElementBegin Description : Created at : 27.03.02, @ 11:22:38 Created by : Thomas Kunert Modified by : \*********************************************************************/ void CDialogCustomElement::CreateElementBegin(Int32 lID, GeDialog *pDlg) { if (!m_pbcGUI) return; if (g_pCustomElements && m_lElement >= 0 && m_lElement < g_pCustomElements->Entries()) { CCustomElements* pElement = g_pCustomElements->GetItem(m_lElement); if (pElement) { BaseContainer bc = m_pbcGUI[m_lElement]; for (Int32 i = 0; pElement->m_pProp && pElement->m_pProp[i].type != CUSTOMTYPE_END; i++) { if (pElement->m_pProp[i].type == CUSTOMTYPE_STRING) { String str = m_pbcGUI[m_lElement].GetString(pElement->m_pProp[i].id); if (str.Content()) { Bool b; String str1 = m_pDocument->GetString(str, b); if (!b) str1 = "[" + str + "]"; bc.SetString(pElement->m_pProp[i].id, str1); } } } pDlg->AddCustomGui(lID, pElement->m_lID, m_strName, m_lFlags, CONVERT_WIDTH(m_lInitW), CONVERT_HEIGHT(m_lInitH), bc); //BaseCustomGuiLib* pGUI = (BaseCustomGuiLib*)pDlg->FindCustomGui(lID, pElement->m_lID); //if (pGUI) pGUI->SetDefaultForResEdit(); } } }
Bool LiquidToolData::GetCursorInfo(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, Float x, Float y, BaseContainer& bc) { if (bc.GetId() == BFM_CURSORINFO_REMOVE) return true; bc.SetString(RESULT_BUBBLEHELP, GeLoadString(IDS_PRIMITIVETOOL)); bc.SetInt32(RESULT_CURSOR, MOUSE_POINT_HAND); return true; }
/*********************************************************************\ Function name : CResEditBrowser::Message Description : Created at : 21.10.01, @ 17:23:02 Created by : Thomas Kunert Modified by : \*********************************************************************/ Int32 CResEditBrowser::Message(const BaseContainer &msg, BaseContainer &result) { if (msg.GetId() == BFM_GETCURSORINFO && m_dirText.Content()) { result.SetId(msg.GetId()); result.SetString(RESULT_BUBBLEHELP, "<b>Selected:</b> " + m_dirText.GetString()); return true; } return GeDialog::Message(msg, result); }
void PaletteSubDialog::ToContainer(BaseContainer &bc) { Int32 i=0; bc.SetBool(++i, m_showLabel); bc.SetInt32(++i, m_rows); bc.SetInt32(++i, m_layout); bc.SetString(++i, m_searchString); bc.SetInt32(++i, m_paletteID); }
void PaletteSubDialog::UpdatePopup(Int32 current) { BaseContainer bc; bc.SetString(ACTION_LOAD, "Load palette"); bc.SetString(ACTION_NEW, "New palette"); bc.SetString(ACTION_SAVE, "Save palette"); bc.InsData(0, String("")); if(m_showControls){ bc.SetString(ACTION_LABEL, "Show controls&c&"); }else{ bc.SetString(ACTION_LABEL, "Show controls"); } bc.InsData(0, String("")); GeDynamicArray<Palette> pals; Palette::GetPalettes(pals); for(Int32 i=0;i<pals.GetCount();i++){ String str; if(i==current){ str = "&c&"; } bc.SetString(ACTION_COUNT+i,pals[i].m_name+str); } SetPopup(m_actionPopup,bc); }
void ApplinkImporter::InsertTextureTag(PolygonObject* pObj, String mat, String& name) { TextureTag* txttag = TextureTag::Alloc(); txttag->SetMaterial(doc->SearchMaterial(mat)); BaseContainer bc = txttag->GetData(); bc.SetInt32(TEXTURETAG_PROJECTION, TEXTURETAG_PROJECTION_UVW); bc.SetInt32(TEXTURETAG_SIDE, TEXTURETAG_SIDE_FRONT); bc.SetString(TEXTURETAG_RESTRICTION, name); bc.SetInt32(TEXTURETAG_TILE, 1); txttag->SetData(bc); pObj->InsertTag(txttag, this->GetLastTag(pObj)); txttag->Message(MSG_UPDATE); }
static Bool CreateSculptUndo(BaseDocument *pDoc) { if (pDoc) { BaseSceneHook *pSceneHook = pDoc->FindSceneHook(ID_PAINT_UNDOREDO_SCENEHOOK); if (pSceneHook) { BaseContainer *bc = pSceneHook->GetDataInstance(); bc->SetString(UNDOTYPE_PRIVATE_STRING, SCULPTPAINTUNDOSTRING); pDoc->StartUndo(); pDoc->AddUndo(UNDOTYPE_PRIVATE_STRING, pSceneHook); pDoc->EndUndo(); return true; } } return false; }
Bool ApplinkImporter::CreateChannelColor(long i, BaseMaterial* mat) { BaseChannel *color = mat->GetChannel(CHANNEL_COLOR); if (!color) return false; // return some error BaseContainer cdata = color->GetData(); cdata.SetVector(BASECHANNEL_COLOR_EX, this->matArray[i].Kd); if (this->matArray[i].useTextures) { //GePrint ("Material Use texture: " + this->matArray[i].map_Kd); cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].map_Kd); cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath); } color->SetData(cdata); return true; }
Bool ListViewDialog::InitValues(void) { // first call the parent instance if (!GeDialog::InitValues()) return FALSE; BaseContainer layout; BaseContainer data; LONG i=0; layout.SetLong('name',LV_COLUMN_TEXT); // layout.SetLong('used',LV_COLUMN_CHECKBOX); listview1.SetLayout(1,layout); layout = BaseContainer(); layout.SetLong('chck',LV_COLUMN_CHECKBOX); layout.SetLong('name',LV_COLUMN_TEXT); layout.SetLong('bttn',LV_COLUMN_BUTTON); listview2.SetLayout(3,layout); data = BaseContainer(); for (i=0;testdata[i].id;i++) { data.SetString('name',testdata[i].name); //data.SetLong('used',FALSE); listview1.SetItem(testdata[i].id,data); } //data = BaseContainer(); //for (i=0;testdata[i].id;i++) //{ // data.SetLong('chck',TRUE); // data.SetString('name',testdata[i].name); // data.SetString('bttn',"..."); // listview2.SetItem(testdata[i].id,data); //} listview1.DataChanged(); listview2.DataChanged(); UpdateButtons(); return TRUE; }
Bool ApplinkImporter::CreateChannelBump(long i, BaseMaterial* mat) { if(this->matArray[i].disp_map != "") { BaseChannel *color = mat->GetChannel(CHANNEL_BUMP); if (!color) return false; GeData b; mat->GetParameter(DescID(MATERIAL_USE_BUMP), b, 0); if(b == FALSE) mat->SetParameter(DescID(MATERIAL_USE_BUMP), TRUE, 0); BaseContainer cdata = color->GetData(); if (this->matArray[i].useTextures) { //GePrint ("Material Use texture: " + this->matArray[i].map_Kd); cdata.SetString(BASECHANNEL_TEXTURE, this->matArray[i].disp_map); cdata.SetFilename(BASECHANNEL_SUGGESTEDFOLDER, this->pSet.tempPath); } color->SetData(cdata); } return true; }
virtual Bool Init(GeListNode* node) override { if (!node || !super::Init(node)) return false; if (m_customIcon) BaseBitmap::Free(m_customIcon); m_protected = false; m_protectionHash = ""; BaseContainer* bc = ((BaseList2D*) node)->GetDataInstance(); if (!bc) return false; bc->SetBool(NRCONTAINER_HIDE_TAGS, false); bc->SetBool(NRCONTAINER_HIDE_MATERIALS, true); bc->SetBool(NRCONTAINER_GENERATOR_CHECKMARK, true); bc->SetString(NRCONTAINER_INFO_NAME, ""); bc->SetString(NRCONTAINER_INFO_VERSION, ""); bc->SetString(NRCONTAINER_INFO_URL, ""); bc->SetString(NRCONTAINER_INFO_AUTHOR, ""); bc->SetString(NRCONTAINER_INFO_AUTHOR_EMAIL, ""); bc->SetString(NRCONTAINER_INFO_DESCRIPTION, ""); return true; }
/*********************************************************************\ Function name : CCompareTableDialog::InitValues Description : Created at : 09.10.01, @ 21:07:22 Created by : Thomas Kunert Modified by : \*********************************************************************/ Bool CCompareTableDialog::InitValues(void) { BaseContainer bcLayout; Int32 a, b; bcLayout.SetInt32(COMPARE_LIST_NAME, LV_COLUMN_TEXT); bcLayout.SetInt32(COMPARE_LIST_DATA, LV_COLUMN_TEXT); m_wndOutputList.SetLayout(2, bcLayout); // the tbles are loaded, so write some important information Int32 lItemCount = 0; BaseContainer data; CStringTable* pTable; StringTableType stt; for (b = 0; b < 2; b++) { if (b == 0) { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_ORIGINAL_FILE)); data.SetString(COMPARE_LIST_DATA, m_fnOriginal.GetString()); m_wndOutputList.SetItem(lItemCount++, data); pTable = m_pOriginalTable; stt = m_OriginalDoc.m_StringTableType; } else { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_NEW_FILE)); data.SetString(COMPARE_LIST_DATA, m_fnNew.GetString()); m_wndOutputList.SetItem(lItemCount++, data); pTable = m_pNewTable; stt = m_NewDoc.m_StringTableType; } data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_STT)); if (stt == typeDialogStrings) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYPE_DLG)); else if (stt == typeStringTable) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYPE_STT)); else if (stt == typeCommandStrings) data.SetString(COMPARE_LIST_DATA, GeLoadString(IDS_COMPARE_TYE_COMMAND)); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_NUM_LANG)); data.SetString(COMPARE_LIST_DATA, String::IntToString(pTable->GetUsedLanguages())); m_wndOutputList.SetItem(lItemCount++, data); for (a = 0; a < pTable->GetUsedLanguages(); a++) { if (a == 0) { data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_LANGUAGES)); } else { data.SetString(COMPARE_LIST_NAME, ""); } String strSuffix = pTable->GetSuffix(a); data.SetString(COMPARE_LIST_DATA, String("") + g_LanguageList.GetName(strSuffix) + String("(") + strSuffix + String(")")); m_wndOutputList.SetItem(lItemCount++, data); } data.SetString(COMPARE_LIST_DATA, String("")); data.SetString(COMPARE_LIST_NAME, String("")); m_wndOutputList.SetItem(lItemCount++, data); } // search all strings that are in the original table, but not in the new table data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_REMOVED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); for (a = 0; a < m_pOriginalTable->GetNumElements(); a++) { String strID = m_pOriginalTable->GetElementID(a); if (!m_pNewTable->ContainsElement(strID)) { data.SetString(COMPARE_LIST_DATA, strID); m_wndOutputList.SetItem(lItemCount++, data); } } // now, find all items that were added in the new table data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_ADDED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); for (a = 0; a < m_pNewTable->GetNumElements(); a++) { String strID = m_pNewTable->GetElementID(a); if (!m_pOriginalTable->ContainsElement(strID)) { data.SetString(COMPARE_LIST_DATA, strID); m_wndOutputList.SetItem(lItemCount++, data); } } // search for all modified languages data.SetString(COMPARE_LIST_NAME, GeLoadString(IDS_COMPARE_MODIFIED_ITEMS)); data.SetString(COMPARE_LIST_DATA, String("")); m_wndOutputList.SetItem(lItemCount++, data); data.SetString(COMPARE_LIST_NAME, String("")); Int32 lLanguages = m_pOriginalTable->GetUsedLanguages(); Int32 lBothLang = 0; Int32 *plLangIDO = bNewDeprecatedUseArraysInstead<Int32>(lLanguages); Int32 *plLangIDN = bNewDeprecatedUseArraysInstead<Int32>(lLanguages); Bool *pbChanged = bNewDeprecatedUseArraysInstead<Bool>(lLanguages); // check for all languages that are available in both tables for (a = 0; a < lLanguages; a++) { String strLangID = m_pOriginalTable->GetSuffix(a); Int32 lLangID = m_pNewTable->GetLanguageID(strLangID); if (lLangID < 0) continue; plLangIDO[lBothLang] = a; plLangIDN[lBothLang] = lLangID; lBothLang++; } for (a = 0; a < m_pOriginalTable->GetNumElements(); a++) { String strID = m_pOriginalTable->GetElementID(a); if (m_pNewTable->ContainsElement(strID)) { Bool bChanged = false; ClearMemType(pbChanged, lLanguages); for (b = 0; b < lBothLang; b++) { if (m_bIsCommandTable) { String str1, str2, strCommand1, strCommand2; Bool bFound; str1 = m_pOriginalTable->GetString(a, plLangIDO[b], &strCommand1); str2 = m_pNewTable->GetString(m_pOriginalTable->GetElementID(a), plLangIDN[b], bFound, &strCommand2); if ((str1 != str2) || (strCommand1 != strCommand2)) { pbChanged[b] = true; bChanged = true; } } else { String str = m_pOriginalTable->GetString(a, plLangIDO[b]); Bool bFound; if (str != m_pNewTable->GetString(m_pOriginalTable->GetElementID(a), plLangIDN[b], bFound)) { pbChanged[b] = true; bChanged = true; } } } if (bChanged) { String str = m_pOriginalTable->GetElementID(a); for (b = 0; b < lBothLang; b++) { if (pbChanged[b]) str += String(" ") + m_pOriginalTable->GetSuffix(plLangIDO[b]); } data.SetString(COMPARE_LIST_DATA, str); m_wndOutputList.SetItem(lItemCount++, data); } } } bDelete(plLangIDO); bDelete(plLangIDN); bDelete(pbChanged); m_wndOutputList.DataChanged(); return true; }
LONG CSVNodeData::FillPortsMenu(GvNode* node, BaseContainer& names, BaseContainer& ids, GvValueID value_type, GvPortIO flag, LONG firstId) { // Validate the passed flag. switch (flag) { case GV_PORT_INPUT: case GV_PORT_OUTPUT: break; case GV_PORT_INVALID: case GV_PORT_INPUT_OR_GEDATA: default: // DEBUG: GePrint(__FUNCTION__ ": Invalid flag passed. (" + LongToString(flag) + ")"); return 0; } // end switch // Retrieve a list of already available ports. AutoAlloc<GvPortList> availPorts; if (!availPorts) return 0; // memory error node->GetPortList(flag, availPorts); // Iterate over all ports available ports and yield them. LONG countAdded = 0; for (LONG i=0; g_csvports[i].id != 0; i++) { const CSVPort& port = g_csvports[i]; // Skip this port if it is not requested (eg. an INPORT, but only // OUTPORTs are requested). if (port.inport && flag != GV_PORT_INPUT) continue; if (!port.inport && flag != GV_PORT_OUTPUT) continue; // Check if the port already exists. Bool exists = NodeHasPort(node, port.id, flag); // Fill in the menu containers. String name = GeLoadString(port.id) + String(exists ? "&d&" : ""); names.SetString(firstId + i, name); ids.SetLong(firstId + i, port.id); countAdded++; } // Add the CSV Table's output ports. if (flag == GV_PORT_OUTPUT && m_table.Loaded()) { LONG colCount = m_table.GetColumnCount(); GeData forceCols, forceColsCount; node->GetParameter(CSVNODE_FORCEOUTPORTS, forceCols, DESCFLAGS_GET_0); node->GetParameter(CSVNODE_FORCEOUTPORTS_COUNT, forceColsCount, DESCFLAGS_GET_0); if (forceCols.GetBool() && forceColsCount.GetLong() > colCount) { colCount = forceColsCount.GetLong(); } for (LONG i=0; i < colCount; i++) { // Compute the port id and check if the port already exists. LONG portId = CSVNODE_DYNPORT_START + i; Bool exists = NodeHasPort(node, portId, flag); // Compute the name of the port. String name = GetTableColumnPortName(i); names.SetString(firstId + portId, name + String(exists ? "&d&" : "")); ids.SetLong(firstId + portId, portId); countAdded++; } } return countAdded; }
Bool ListViewDialog::Command(LONG id,const BaseContainer &msg) { switch (id) { case GADGET_LISTVIEW1: case GADGET_LISTVIEW2: { switch (msg.GetLong(BFM_ACTION_VALUE)) { case LV_SIMPLE_SELECTIONCHANGED: GePrintF("Selection changed, id: %d, val: %p ",msg.GetLong(LV_SIMPLE_ITEM_ID),msg.GetVoid(LV_SIMPLE_DATA)); break; case LV_SIMPLE_CHECKBOXCHANGED: GePrintF("CheckBox changed, id: %d, col: %d, val: %p",msg.GetLong(LV_SIMPLE_ITEM_ID),msg.GetLong(LV_SIMPLE_COL_ID),msg.GetVoid(LV_SIMPLE_DATA)); break; case LV_SIMPLE_FOCUSITEM: GePrintF("Focus set id: %d, col: %d",msg.GetLong(LV_SIMPLE_ITEM_ID),msg.GetLong(LV_SIMPLE_COL_ID)); break; case LV_SIMPLE_BUTTONCLICK: GePrintF("Button clicked id: %d, col: %d",msg.GetLong(LV_SIMPLE_ITEM_ID),msg.GetLong(LV_SIMPLE_COL_ID)); break; } } UpdateButtons(); break; // case GADGET_LISTVIEW2: // break; case GADGET_INSERT: { AutoAlloc<BaseSelect> s2; if (selection && s2) { // TEST LONG i,id,count = listview1.GetItemCount(); BaseContainer test; for (i=0;i<count;i++) { listview1.GetItemLine(i,&id,&test); } // TEST if (!listview1.GetSelection(selection)) { GePrint("No Selection"); } else { LONG i,a,b; String str; for (i=0;selection->GetRange(i,MAXLONGl,&a,&b);i++) { if (a==b) str += LongToString(a)+" "; else str += LongToString(a)+"-"+LongToString(b)+" "; } // str.Delete(str.GetLength()-1,1); GePrint("Selection: "+str); BaseContainer data; for (i=0;testdata[i].id;i++) { if (selection->IsSelected(testdata[i].id)) { data.SetLong('chck',TRUE); data.SetString('name',testdata[i].name); data.SetString('bttn',"..."); selection->Select(counter2); listview2.SetItem(counter2++,data); } } listview2.SetSelection(selection); listview2.DataChanged(); } } } UpdateButtons(); break; case GADGET_REMOVE: { if (selection && listview2.GetSelection(selection)) { LONG i,a,b; for (i=0;selection->GetRange(i,MAXLONGl,&a,&b);i++) { for (;a<=b;a++) { listview2.RemoveItem(a); } } listview2.DataChanged(); } } UpdateButtons(); break; } return TRUE; }