diff options
author | Armin Weatherwax | 2010-08-23 17:24:07 +0200 |
---|---|---|
committer | McCabe Maxsted | 2010-08-28 05:01:18 -0700 |
commit | 8cbb7451e6e88bcf4dfb67f900089720c71f8f28 (patch) | |
tree | 35e5e3646f881ab9020d0d91ab483e2d9148cc4f | |
parent | Added grid info to the title bar along with usernames when allow multiple ins... (diff) | |
download | meta-impy-8cbb7451e6e88bcf4dfb67f900089720c71f8f28.zip meta-impy-8cbb7451e6e88bcf4dfb67f900089720c71f8f28.tar.gz meta-impy-8cbb7451e6e88bcf4dfb67f900089720c71f8f28.tar.bz2 meta-impy-8cbb7451e6e88bcf4dfb67f900089720c71f8f28.tar.xz |
Emerald: copy/paste buttons for prim pos/rot/scale in panelobject
-rw-r--r-- | linden/indra/newview/llpanelobject.cpp | 237 | ||||
-rw-r--r-- | linden/indra/newview/llpanelobject.h | 30 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_tools.xml | 30 |
3 files changed, 297 insertions, 0 deletions
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp index 9ef7f91..1a9d8bf 100644 --- a/linden/indra/newview/llpanelobject.cpp +++ b/linden/indra/newview/llpanelobject.cpp | |||
@@ -106,6 +106,10 @@ enum { | |||
106 | MI_HOLE_COUNT | 106 | MI_HOLE_COUNT |
107 | }; | 107 | }; |
108 | 108 | ||
109 | LLVector3 LLPanelObject::mClipboardPos; | ||
110 | LLVector3 LLPanelObject::mClipboardSize; | ||
111 | LLVector3 LLPanelObject::mClipboardRot; | ||
112 | |||
109 | //*TODO:translate (depricated, so very low priority) | 113 | //*TODO:translate (depricated, so very low priority) |
110 | static const std::string LEGACY_FULLBRIGHT_DESC("Fullbright (Legacy)"); | 114 | static const std::string LEGACY_FULLBRIGHT_DESC("Fullbright (Legacy)"); |
111 | 115 | ||
@@ -167,6 +171,27 @@ BOOL LLPanelObject::postBuild() | |||
167 | mCtrlRotZ = getChild<LLSpinCtrl>("Rot Z"); | 171 | mCtrlRotZ = getChild<LLSpinCtrl>("Rot Z"); |
168 | childSetCommitCallback("Rot Z",onCommitRotation,this); | 172 | childSetCommitCallback("Rot Z",onCommitRotation,this); |
169 | 173 | ||
174 | mBtnCopyPos = getChild<LLButton>("copypos"); | ||
175 | childSetAction("copypos",onCopyPos, this); | ||
176 | mBtnPastePos = getChild<LLButton>("pastepos"); | ||
177 | childSetAction("pastepos",onPastePos, this); | ||
178 | mBtnPastePosClip = getChild<LLButton>("pasteposclip"); | ||
179 | childSetAction("pasteposclip",onPastePosClip, this); | ||
180 | |||
181 | mBtnCopySize = getChild<LLButton>("copysize"); | ||
182 | childSetAction("copysize",onCopySize, this); | ||
183 | mBtnPasteSize = getChild<LLButton>("pastesize"); | ||
184 | childSetAction("pastesize",onPasteSize, this); | ||
185 | mBtnPasteSizeClip = getChild<LLButton>("pastesizeclip"); | ||
186 | childSetAction("pastesizeclip",onPasteSizeClip, this); | ||
187 | |||
188 | mBtnCopyRot = getChild<LLButton>("copyrot"); | ||
189 | childSetAction("copyrot",onCopyRot, this); | ||
190 | mBtnPasteRot = getChild<LLButton>("pasterot"); | ||
191 | childSetAction("pasterot",onPasteRot, this); | ||
192 | mBtnPasteRotClip = getChild<LLButton>("pasterotclip"); | ||
193 | childSetAction("pasterotclip",onPasteRotClip, this); | ||
194 | |||
170 | //-------------------------------------------------------- | 195 | //-------------------------------------------------------- |
171 | 196 | ||
172 | // material type popup | 197 | // material type popup |
@@ -427,6 +452,9 @@ void LLPanelObject::getState( ) | |||
427 | mCtrlPosX->setEnabled(enable_move); | 452 | mCtrlPosX->setEnabled(enable_move); |
428 | mCtrlPosY->setEnabled(enable_move); | 453 | mCtrlPosY->setEnabled(enable_move); |
429 | mCtrlPosZ->setEnabled(enable_move); | 454 | mCtrlPosZ->setEnabled(enable_move); |
455 | mBtnCopyPos->setEnabled(enable_move); | ||
456 | mBtnPastePos->setEnabled(enable_move); | ||
457 | mBtnPastePosClip->setEnabled(enable_move); | ||
430 | 458 | ||
431 | mCtrlPosZ->setMaxValue(gHippoLimits->getMaxHeight()); | 459 | mCtrlPosZ->setMaxValue(gHippoLimits->getMaxHeight()); |
432 | 460 | ||
@@ -454,6 +482,9 @@ void LLPanelObject::getState( ) | |||
454 | mCtrlScaleX->setEnabled( enable_scale ); | 482 | mCtrlScaleX->setEnabled( enable_scale ); |
455 | mCtrlScaleY->setEnabled( enable_scale ); | 483 | mCtrlScaleY->setEnabled( enable_scale ); |
456 | mCtrlScaleZ->setEnabled( enable_scale ); | 484 | mCtrlScaleZ->setEnabled( enable_scale ); |
485 | mBtnCopySize->setEnabled( enable_scale ); | ||
486 | mBtnPasteSize->setEnabled( enable_scale ); | ||
487 | mBtnPasteSizeClip->setEnabled( enable_scale ); | ||
457 | 488 | ||
458 | LLQuaternion object_rot = objectp->getRotationEdit(); | 489 | LLQuaternion object_rot = objectp->getRotationEdit(); |
459 | object_rot.getEulerAngles(&(mCurEulerDegrees.mV[VX]), &(mCurEulerDegrees.mV[VY]), &(mCurEulerDegrees.mV[VZ])); | 490 | object_rot.getEulerAngles(&(mCurEulerDegrees.mV[VX]), &(mCurEulerDegrees.mV[VY]), &(mCurEulerDegrees.mV[VZ])); |
@@ -485,6 +516,9 @@ void LLPanelObject::getState( ) | |||
485 | mCtrlRotX->setEnabled( enable_rotate ); | 516 | mCtrlRotX->setEnabled( enable_rotate ); |
486 | mCtrlRotY->setEnabled( enable_rotate ); | 517 | mCtrlRotY->setEnabled( enable_rotate ); |
487 | mCtrlRotZ->setEnabled( enable_rotate ); | 518 | mCtrlRotZ->setEnabled( enable_rotate ); |
519 | mBtnCopyRot->setEnabled( enable_rotate ); | ||
520 | mBtnPasteRot->setEnabled( enable_rotate ); | ||
521 | mBtnPasteRotClip->setEnabled( enable_rotate ); | ||
488 | 522 | ||
489 | BOOL owners_identical; | 523 | BOOL owners_identical; |
490 | LLUUID owner_id; | 524 | LLUUID owner_id; |
@@ -2140,3 +2174,206 @@ void LLPanelObject::onClickBuildConstants(void *) | |||
2140 | { | 2174 | { |
2141 | LLNotifications::instance().add("ClickBuildConstants"); | 2175 | LLNotifications::instance().add("ClickBuildConstants"); |
2142 | } | 2176 | } |
2177 | |||
2178 | std::string shortfloat(F32 in) | ||
2179 | { | ||
2180 | std::string out = llformat("%f", in); | ||
2181 | int i = out.size(); | ||
2182 | while(out[--i] == '0') out.erase(i, 1); | ||
2183 | return out; | ||
2184 | } | ||
2185 | |||
2186 | void LLPanelObject::onCopyPos(void* user_data) | ||
2187 | { | ||
2188 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2189 | LLVector3 newpos(self->mCtrlPosX->get(), self->mCtrlPosY->get(), self->mCtrlPosZ->get()); | ||
2190 | self->mClipboardPos = newpos; | ||
2191 | |||
2192 | std::string stringVec = "<"; | ||
2193 | stringVec.append(shortfloat(newpos.mV[VX])); | ||
2194 | stringVec.append(", "); | ||
2195 | stringVec.append(shortfloat(newpos.mV[VY])); | ||
2196 | stringVec.append(", "); | ||
2197 | stringVec.append(shortfloat(newpos.mV[VZ])); | ||
2198 | stringVec.append(">"); | ||
2199 | |||
2200 | gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(stringVec)); | ||
2201 | } | ||
2202 | |||
2203 | void LLPanelObject::onCopySize(void* user_data) | ||
2204 | { | ||
2205 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2206 | LLVector3 newpos(self->mCtrlScaleX->get(), self->mCtrlScaleY->get(), self->mCtrlScaleZ->get()); | ||
2207 | self->mClipboardSize = newpos; | ||
2208 | |||
2209 | std::string stringVec = "<"; | ||
2210 | stringVec.append(shortfloat(newpos.mV[VX])); | ||
2211 | stringVec.append(", "); | ||
2212 | stringVec.append(shortfloat(newpos.mV[VY])); | ||
2213 | stringVec.append(", "); | ||
2214 | stringVec.append(shortfloat(newpos.mV[VZ])); | ||
2215 | stringVec.append(">"); | ||
2216 | |||
2217 | gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(stringVec)); | ||
2218 | } | ||
2219 | |||
2220 | void LLPanelObject::onCopyRot(void* user_data) | ||
2221 | { | ||
2222 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2223 | LLVector3 newpos(self->mCtrlRotX->get(), self->mCtrlRotY->get(), self->mCtrlRotZ->get()); | ||
2224 | self->mClipboardRot = newpos; | ||
2225 | |||
2226 | std::string stringVec = "<"; | ||
2227 | stringVec.append(shortfloat(newpos.mV[VX])); | ||
2228 | stringVec.append(", "); | ||
2229 | stringVec.append(shortfloat(newpos.mV[VY])); | ||
2230 | stringVec.append(", "); | ||
2231 | stringVec.append(shortfloat(newpos.mV[VZ])); | ||
2232 | stringVec.append(">"); | ||
2233 | |||
2234 | gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(stringVec)); | ||
2235 | } | ||
2236 | |||
2237 | |||
2238 | |||
2239 | void LLPanelObject::onPastePos(void* user_data) | ||
2240 | { | ||
2241 | if(mClipboardPos.isNull()) return; | ||
2242 | |||
2243 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2244 | LLCalc* calcp = LLCalc::getInstance(); | ||
2245 | mClipboardPos.mV[VX] = llclamp( mClipboardPos.mV[VX], 0.f, 256.f); | ||
2246 | mClipboardPos.mV[VY] = llclamp( mClipboardPos.mV[VY], 0.f, 256.f); | ||
2247 | mClipboardPos.mV[VZ] = llclamp( mClipboardPos.mV[VZ], 0.f, 4096.f); | ||
2248 | |||
2249 | self->mCtrlPosX->set( mClipboardPos.mV[VX] ); | ||
2250 | self->mCtrlPosY->set( mClipboardPos.mV[VY] ); | ||
2251 | self->mCtrlPosZ->set( mClipboardPos.mV[VZ] ); | ||
2252 | |||
2253 | calcp->setVar(LLCalc::X_POS, mClipboardPos.mV[VX]); | ||
2254 | calcp->setVar(LLCalc::Y_POS, mClipboardPos.mV[VY]); | ||
2255 | calcp->setVar(LLCalc::Z_POS, mClipboardPos.mV[VZ]); | ||
2256 | self->sendPosition(FALSE); | ||
2257 | } | ||
2258 | |||
2259 | void LLPanelObject::onPasteSize(void* user_data) | ||
2260 | { | ||
2261 | if(mClipboardSize.isNull()) return; | ||
2262 | |||
2263 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2264 | LLCalc* calcp = LLCalc::getInstance(); | ||
2265 | mClipboardSize.mV[VX] = llclamp(mClipboardSize.mV[VX], 0.01f, 10.f); | ||
2266 | mClipboardSize.mV[VY] = llclamp(mClipboardSize.mV[VY], 0.01f, 10.f); | ||
2267 | mClipboardSize.mV[VZ] = llclamp(mClipboardSize.mV[VZ], 0.01f, 10.f); | ||
2268 | |||
2269 | self->mCtrlScaleX->set( mClipboardSize.mV[VX] ); | ||
2270 | self->mCtrlScaleY->set( mClipboardSize.mV[VY] ); | ||
2271 | self->mCtrlScaleZ->set( mClipboardSize.mV[VZ] ); | ||
2272 | |||
2273 | calcp->setVar(LLCalc::X_SCALE, mClipboardSize.mV[VX]); | ||
2274 | calcp->setVar(LLCalc::Y_SCALE, mClipboardSize.mV[VY]); | ||
2275 | calcp->setVar(LLCalc::Z_SCALE, mClipboardSize.mV[VZ]); | ||
2276 | self->sendScale(FALSE); | ||
2277 | } | ||
2278 | |||
2279 | void LLPanelObject::onPasteRot(void* user_data) | ||
2280 | { | ||
2281 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2282 | LLCalc* calcp = LLCalc::getInstance(); | ||
2283 | |||
2284 | self->mCtrlRotX->set( mClipboardRot.mV[VX] ); | ||
2285 | self->mCtrlRotY->set( mClipboardRot.mV[VY] ); | ||
2286 | self->mCtrlRotZ->set( mClipboardRot.mV[VZ] ); | ||
2287 | |||
2288 | calcp->setVar(LLCalc::X_ROT, mClipboardRot.mV[VX]); | ||
2289 | calcp->setVar(LLCalc::Y_ROT, mClipboardRot.mV[VY]); | ||
2290 | calcp->setVar(LLCalc::Z_ROT, mClipboardRot.mV[VZ]); | ||
2291 | self->sendRotation(FALSE); | ||
2292 | } | ||
2293 | |||
2294 | BOOL getvectorfromclip(const std::string& buf, LLVector3* value) | ||
2295 | { | ||
2296 | if( buf.empty() || value == NULL) | ||
2297 | { | ||
2298 | return FALSE; | ||
2299 | } | ||
2300 | |||
2301 | LLVector3 v; | ||
2302 | S32 count = sscanf( buf.c_str(), "<%f, %f, %f>", v.mV + 0, v.mV + 1, v.mV + 2 ); | ||
2303 | if( 3 == count ) | ||
2304 | { | ||
2305 | value->setVec( v ); | ||
2306 | return TRUE; | ||
2307 | } | ||
2308 | |||
2309 | return FALSE; | ||
2310 | } | ||
2311 | |||
2312 | |||
2313 | void LLPanelObject::onPastePosClip(void* user_data) | ||
2314 | { | ||
2315 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2316 | LLCalc* calcp = LLCalc::getInstance(); | ||
2317 | |||
2318 | LLWString temp_string; | ||
2319 | LLView::getWindow()->pasteTextFromClipboard(temp_string); | ||
2320 | |||
2321 | std::string stringVec = wstring_to_utf8str(temp_string); | ||
2322 | if(!getvectorfromclip(stringVec, &mClipboardPos)) return; | ||
2323 | |||
2324 | mClipboardPos.mV[VX] = llclamp(mClipboardPos.mV[VX], 0.f, 256.f); | ||
2325 | mClipboardPos.mV[VY] = llclamp(mClipboardPos.mV[VY], 0.f, 256.f); | ||
2326 | mClipboardPos.mV[VZ] = llclamp(mClipboardPos.mV[VZ], 0.f, 4096.f); | ||
2327 | |||
2328 | self->mCtrlPosX->set( mClipboardPos.mV[VX] ); | ||
2329 | self->mCtrlPosY->set( mClipboardPos.mV[VY] ); | ||
2330 | self->mCtrlPosZ->set( mClipboardPos.mV[VZ] ); | ||
2331 | calcp->setVar(LLCalc::X_POS, mClipboardPos.mV[VX]); | ||
2332 | calcp->setVar(LLCalc::Y_POS, mClipboardPos.mV[VY]); | ||
2333 | calcp->setVar(LLCalc::Z_POS, mClipboardPos.mV[VZ]); | ||
2334 | self->sendPosition(FALSE); | ||
2335 | } | ||
2336 | |||
2337 | void LLPanelObject::onPasteSizeClip(void* user_data) | ||
2338 | { | ||
2339 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2340 | LLCalc* calcp = LLCalc::getInstance(); | ||
2341 | |||
2342 | LLWString temp_string; | ||
2343 | LLView::getWindow()->pasteTextFromClipboard(temp_string); | ||
2344 | |||
2345 | std::string stringVec = wstring_to_utf8str(temp_string); | ||
2346 | if(!getvectorfromclip(stringVec, &mClipboardSize)) return; | ||
2347 | |||
2348 | mClipboardSize.mV[VX] = llclamp(mClipboardSize.mV[VX], 0.01f, 10.f); | ||
2349 | mClipboardSize.mV[VY] = llclamp(mClipboardSize.mV[VY], 0.01f, 10.f); | ||
2350 | mClipboardSize.mV[VZ] = llclamp(mClipboardSize.mV[VZ], 0.01f, 10.f); | ||
2351 | |||
2352 | self->mCtrlScaleX->set( mClipboardSize.mV[VX] ); | ||
2353 | self->mCtrlScaleY->set( mClipboardSize.mV[VY] ); | ||
2354 | self->mCtrlScaleZ->set( mClipboardSize.mV[VZ] ); | ||
2355 | calcp->setVar(LLCalc::X_SCALE, mClipboardSize.mV[VX]); | ||
2356 | calcp->setVar(LLCalc::Y_SCALE, mClipboardSize.mV[VY]); | ||
2357 | calcp->setVar(LLCalc::Z_SCALE, mClipboardSize.mV[VZ]); | ||
2358 | self->sendScale(FALSE); | ||
2359 | } | ||
2360 | |||
2361 | void LLPanelObject::onPasteRotClip(void* user_data) | ||
2362 | { | ||
2363 | LLPanelObject* self = (LLPanelObject*) user_data; | ||
2364 | LLCalc* calcp = LLCalc::getInstance(); | ||
2365 | |||
2366 | LLWString temp_string; | ||
2367 | LLView::getWindow()->pasteTextFromClipboard(temp_string); | ||
2368 | |||
2369 | std::string stringVec = wstring_to_utf8str(temp_string); | ||
2370 | if(!getvectorfromclip(stringVec, &mClipboardRot)) return; | ||
2371 | |||
2372 | self->mCtrlRotX->set( mClipboardRot.mV[VX] ); | ||
2373 | self->mCtrlRotY->set( mClipboardRot.mV[VY] ); | ||
2374 | self->mCtrlRotZ->set( mClipboardRot.mV[VZ] ); | ||
2375 | calcp->setVar(LLCalc::X_ROT, mClipboardRot.mV[VX]); | ||
2376 | calcp->setVar(LLCalc::Y_ROT, mClipboardRot.mV[VY]); | ||
2377 | calcp->setVar(LLCalc::Z_ROT, mClipboardRot.mV[VZ]); | ||
2378 | self->sendRotation(FALSE); | ||
2379 | } | ||
diff --git a/linden/indra/newview/llpanelobject.h b/linden/indra/newview/llpanelobject.h index 2aa5ae1..f86eb46 100644 --- a/linden/indra/newview/llpanelobject.h +++ b/linden/indra/newview/llpanelobject.h | |||
@@ -74,6 +74,16 @@ public: | |||
74 | static void onCommitPhantom( LLUICtrl* ctrl, void* userdata); | 74 | static void onCommitPhantom( LLUICtrl* ctrl, void* userdata); |
75 | static void onCommitCastShadows( LLUICtrl* ctrl, void* userdata); | 75 | static void onCommitCastShadows( LLUICtrl* ctrl, void* userdata); |
76 | 76 | ||
77 | static void onCopyPos( void* user_data); | ||
78 | static void onPastePos( void* user_data); | ||
79 | static void onPastePosClip( void* user_data); | ||
80 | static void onCopySize( void* user_data); | ||
81 | static void onPasteSize( void* user_data); | ||
82 | static void onPasteSizeClip( void* user_data); | ||
83 | static void onCopyRot( void* user_data); | ||
84 | static void onPasteRot( void* user_data); | ||
85 | static void onPasteRotClip( void* user_data); | ||
86 | |||
77 | static void onCommitParametric(LLUICtrl* ctrl, void* userdata); | 87 | static void onCommitParametric(LLUICtrl* ctrl, void* userdata); |
78 | 88 | ||
79 | static void onCommitMaterial( LLUICtrl* ctrl, void* userdata); | 89 | static void onCommitMaterial( LLUICtrl* ctrl, void* userdata); |
@@ -101,6 +111,11 @@ protected: | |||
101 | void getVolumeParams(LLVolumeParams& volume_params); | 111 | void getVolumeParams(LLVolumeParams& volume_params); |
102 | 112 | ||
103 | protected: | 113 | protected: |
114 | |||
115 | static LLVector3 mClipboardPos; | ||
116 | static LLVector3 mClipboardSize; | ||
117 | static LLVector3 mClipboardRot; | ||
118 | |||
104 | S32 mComboMaterialItemCount; | 119 | S32 mComboMaterialItemCount; |
105 | 120 | ||
106 | LLTextBox* mLabelMaterial; | 121 | LLTextBox* mLabelMaterial; |
@@ -163,6 +178,21 @@ protected: | |||
163 | LLSpinCtrl* mCtrlRotY; | 178 | LLSpinCtrl* mCtrlRotY; |
164 | LLSpinCtrl* mCtrlRotZ; | 179 | LLSpinCtrl* mCtrlRotZ; |
165 | 180 | ||
181 | LLButton *mBtnCopyPos; | ||
182 | LLButton *mBtnPastePos; | ||
183 | LLButton *mBtnPastePosClip; | ||
184 | |||
185 | LLButton *mBtnCopySize; | ||
186 | LLButton *mBtnPasteSize; | ||
187 | LLButton *mBtnPasteSizeClip; | ||
188 | |||
189 | LLButton *mBtnCopyRot; | ||
190 | LLButton *mBtnPasteRot; | ||
191 | LLButton *mBtnPasteRotClip; | ||
192 | |||
193 | LLButton *mBtnCopyParams; | ||
194 | LLButton *mBtnPasteParams; | ||
195 | |||
166 | LLCheckBoxCtrl *mCheckLock; | 196 | LLCheckBoxCtrl *mCheckLock; |
167 | LLCheckBoxCtrl *mCheckPhysics; | 197 | LLCheckBoxCtrl *mCheckPhysics; |
168 | LLCheckBoxCtrl *mCheckTemporary; | 198 | LLCheckBoxCtrl *mCheckTemporary; |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml index a82e308..58c6443 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_tools.xml | |||
@@ -645,6 +645,16 @@ | |||
645 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" | 645 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" |
646 | max_val="4096" min_val="0" mouse_opaque="true" name="Pos Z" | 646 | max_val="4096" min_val="0" mouse_opaque="true" name="Pos Z" |
647 | text_enabled_color="0, 67, 132, 255" width="96" /> | 647 | text_enabled_color="0, 67, 132, 255" width="96" /> |
648 | <button bottom_delta="36" follows="top|right" font="SansSerifSmall" halign="center" | ||
649 | height="18" label="C" left_delta="90" mouse_opaque="true" name="copypos" enabled="true" | ||
650 | tool_tip="Copy Position" width="20" /> | ||
651 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
652 | height="18" label="P" left_delta="0" mouse_opaque="true" name="pastepos" enabled="true" | ||
653 | tool_tip="Paste Position" width="20" /> | ||
654 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
655 | height="18" label="p" left_delta="0" mouse_opaque="true" name="pasteposclip" enabled="true" | ||
656 | tool_tip="Paste Position from Clipboard" width="20" /> | ||
657 | |||
648 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 658 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
649 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | 659 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" |
650 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | 660 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" |
@@ -663,6 +673,16 @@ | |||
663 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" | 673 | increment="0.01" initial_val="0" label="Z" label_width="10" left="10" |
664 | mouse_opaque="true" name="Scale Z" | 674 | mouse_opaque="true" name="Scale Z" |
665 | text_enabled_color="1, 1, 1, 1" width="96" /> | 675 | text_enabled_color="1, 1, 1, 1" width="96" /> |
676 | <button bottom_delta="36" follows="top|right" font="SansSerifSmall" halign="center" | ||
677 | height="18" label="C" left_delta="90" mouse_opaque="true" name="copysize" enabled="true" | ||
678 | tool_tip="Copy Size" width="20" /> | ||
679 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
680 | height="18" label="P" left_delta="0" mouse_opaque="true" name="pastesize" enabled="true" | ||
681 | tool_tip="Paste Size" width="20" /> | ||
682 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
683 | height="18" label="p" left_delta="0" mouse_opaque="true" name="pastesizeclip" enabled="true" | ||
684 | tool_tip="Paste Size from Clipboard" width="20" /> | ||
685 | |||
666 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 686 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
667 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | 687 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" |
668 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | 688 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" |
@@ -681,6 +701,16 @@ | |||
681 | increment="1" initial_val="0" label="Z" label_width="10" left="10" | 701 | increment="1" initial_val="0" label="Z" label_width="10" left="10" |
682 | max_val="9999" min_val="-9999" mouse_opaque="true" name="Rot Z" | 702 | max_val="9999" min_val="-9999" mouse_opaque="true" name="Rot Z" |
683 | text_enabled_color="1, 1, 1, 1" width="96" /> | 703 | text_enabled_color="1, 1, 1, 1" width="96" /> |
704 | <button bottom_delta="36" follows="top|right" font="SansSerifSmall" halign="center" | ||
705 | height="18" label="C" left_delta="90" mouse_opaque="true" name="copyrot" enabled="true" | ||
706 | tool_tip="Copy Rotation" width="20" /> | ||
707 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
708 | height="18" label="P" left_delta="0" mouse_opaque="true" name="pasterot" enabled="true" | ||
709 | tool_tip="Paste Rotation" width="20" /> | ||
710 | <button bottom_delta="-18" follows="top|right" font="SansSerifSmall" halign="center" | ||
711 | height="18" label="p" left_delta="0" mouse_opaque="true" name="pasterotclip" enabled="true" | ||
712 | tool_tip="Paste Rotation from Clipboard" width="20" /> | ||
713 | |||
684 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" | 714 | <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" |
685 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" | 715 | bottom_delta="-16" drop_shadow_visible="true" follows="left|top" |
686 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" | 716 | font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" |