/*********************************************************************\
	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);
        }
    }
}
Example #2
0
 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;
}
Example #6
0
/*********************************************************************\
	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();
        }
    }
}
Example #8
0
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;
}
Example #9
0
/*********************************************************************\
	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);
}
Example #10
0
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);
}
Example #11
0
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);

}
Example #12
0
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);
}
Example #13
0
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;
}
Example #14
0
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;
}
Example #15
0
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;
}
Example #16
0
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;
}
Example #17
0
 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;
 }
Example #18
0
/*********************************************************************\
	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;
}
Example #20
0
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;
}