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 LiquidToolData::MouseInput(BaseDocument* doc, BaseContainer& data, BaseDraw* bd, EditorWindow* win, const BaseContainer& msg) { Float mx = msg.GetFloat(BFM_INPUT_X); Float my = msg.GetFloat(BFM_INPUT_Y); Int32 button; switch (msg.GetInt32(BFM_INPUT_CHANNEL)) { case BFM_INPUT_MOUSELEFT: button = KEY_MLEFT; break; case BFM_INPUT_MOUSERIGHT: button = KEY_MRIGHT; break; default: return true; } BaseObject* cl = nullptr, *null = nullptr, *op = nullptr; Float dx, dy, rad = 5.0; Bool newmeta = false; op = BaseObject::Alloc(Osphere); if (!op) return false; null = BaseObject::Alloc(Ometaball); { null->GetDataInstance()->SetFloat(METABALLOBJECT_SUBEDITOR, 10.0); null->MakeTag(Tphong); } newmeta = true; if (newmeta) { doc->InsertObject(null, nullptr, nullptr); doc->SetActiveObject(null); doc->AddUndo(UNDOTYPE_NEW, null); DrawViews(DRAWFLAGS_ONLY_ACTIVE_VIEW | DRAWFLAGS_NO_THREAD | DRAWFLAGS_NO_ANIMATION); } BaseContainer bc; BaseContainer device; win->MouseDragStart(button, mx, my, MOUSEDRAGFLAGS_DONTHIDEMOUSE | MOUSEDRAGFLAGS_NOMOVE); while (win->MouseDrag(&dx, &dy, &device) == MOUSEDRAGRESULT_CONTINUE) { bc = BaseContainer(); win->BfGetInputEvent(BFM_INPUT_MOUSE, &bc); if (bc.GetInt32(BFM_INPUT_CHANNEL) == BFM_INPUT_MOUSEWHEEL) { rad += bc.GetFloat(BFM_INPUT_VALUE) / 120.0; rad = ClampValue(rad, (Float) 0.1, (Float) MAXRANGE); GePrint(String::FloatToString(rad)); } if (dx == 0.0 && dy == 0.0) continue; mx += dx; my += dy; cl = (BaseObject*)op->GetClone(COPYFLAGS_0, nullptr); if (!cl) break; cl->GetDataInstance()->SetFloat(PRIM_SPHERE_RAD, rad); cl->SetAbsPos(bd->SW(Vector(mx, my, 500.0))); cl->InsertUnder(null); DrawViews(DRAWFLAGS_ONLY_ACTIVE_VIEW | DRAWFLAGS_NO_THREAD | DRAWFLAGS_NO_ANIMATION); } if (win->MouseDragEnd() == MOUSEDRAGRESULT_ESCAPE) { doc->DoUndo(true); } BaseObject::Free(op); EventAdd(); return true; }
void StartQueue() { Introduction(); BaseContainer(); }