// return mycolor.color public static void DoColorPickerCallback() { ColorPickerDlg ColorPickerDlg = "ColorPickerDlg"; GuiSwatchButtonCtrl myColor = "myColor"; omni.Util.eval(omni.sGlobal["$ColorPickerCallback"] + "(\"" + constructNewColor(myColor.color.AsString(), omni.iGlobal["$ColorCallbackType"]) + "\");"); ((GuiCanvas)ColorPickerDlg.getRoot()).popDialog(ColorPickerDlg); }
// This function pushes the color picker dialog and returns to a callback the selected value public static void GetColorI(string currentColor, string callback, string root, string updateCallback, string cancelCallback) { GuiSwatchButtonCtrl oldColor = "oldColor"; GuiSwatchButtonCtrl myColor = "myColor"; GuiColorPickerCtrl ColorRangeSelect = "ColorRangeSelect"; GuiColorPickerCtrl ColorBlendSelect = "ColorBlendSelect"; GuiSliderCtrl ColorAlphaSelect = "ColorAlphaSelect"; GuiCanvas Canvas = "Canvas"; GuiTextEditCtrl Channel_A_Val = "Channel_A_Val"; ColorPickerDlg ColorPickerDlg = "ColorPickerDlg"; omni.bGlobal["$ColorPickerSignal"] = true; omni.sGlobal["$ColorPickerCallback"] = callback; omni.sGlobal["$ColorPickerCancelCallback"] = cancelCallback; omni.sGlobal["$ColorPickerUpdateCallback"] = updateCallback; omni.iGlobal["$ColorCallbackType"] = 1; // ColorI oldColor.color = ColorIntToFloat(currentColor).AsColorF(); myColor.color = ColorIntToFloat(currentColor).AsColorF(); ColorRangeSelect.showReticle = true; ColorBlendSelect.showReticle = true; // Set the range according to int ColorAlphaSelect.range = "0 255".AsPoint2F(); // Set the RGBA displays accordingly float red = omni.Util.getWord(currentColor, 0).AsFloat() / 255; float green = omni.Util.getWord(currentColor, 1).AsFloat() / 255; float blue = omni.Util.getWord(currentColor, 2).AsFloat() / 255; float alpha = omni.Util.getWord(currentColor, 3).AsFloat(); // set the initial range blend to correct color, no alpha needed // this should also set the color blend select right now ColorRangeSelect.baseColor = (red.AsString() + " " + green.AsString() + " " + blue.AsString() + " " + "1.0").AsColorF(); ColorRangeSelect.updateColor(); if (!root.isObject()) { root = Canvas; } ((GuiCanvas)root).pushDialog(ColorPickerDlg); // update the alpha value first ColorAlphaSelect.setValue(alpha.AsString()); Channel_A_Val.setText(alpha.AsString()); }