| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2012 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- // Common functionality for GuiSwatchButtonCtrls.
- //
- // Note that for the mouse-event related functionality, "useMouseEvents" must be set
- // to true.
- //---------------------------------------------------------------------------------------------
- function GuiSwatchButtonCtrl::onMouseDragged( %this )
- {
- %payload = new GuiSwatchButtonCtrl();
- %payload.assignFieldsFrom( %this );
- %payload.position = "0 0 ";
- %payload.dragSourceControl = %this;
-
- %xOffset = getWord( %payload.extent, 0 ) / 2;
- %yOffset = getWord( %payload.extent, 1 ) / 2;
- %cursorpos = Canvas.getCursorPos();
- %xPos = getWord( %cursorpos, 0 ) - %xOffset;
- %yPos = getWord( %cursorpos, 1 ) - %yOffset;
- // Create the drag control.
-
- %ctrl = new GuiDragAndDropControl()
- {
- canSaveDynamicFields = "0";
- Profile = "ToolsGuiSolidDefaultProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = %xPos SPC %yPos;
- extent = %payload.extent;
- MinExtent = "4 4";
- canSave = "1";
- Visible = "1";
- hovertime = "1000";
- deleteOnMouseUp = true;
- class = "GuiDragAndDropControlType_ColorSwatch";
- };
-
- %ctrl.add( %payload );
-
- // Start drag.
-
- Canvas.getContent().add( %ctrl );
- %ctrl.startDragging( %xOffset, %yOffset );
- }
- //---------------------------------------------------------------------------------------------
- function GuiSwatchButtonCtrl::onControlDropped( %this, %payload, %position )
- {
- if( !%payload.parentGroup.isInNamespaceHierarchy( "GuiDragAndDropControlType_ColorSwatch" ) )
- return;
-
- // If dropped on same button whence we came from,
- // do nothing.
-
- if( %payload.dragSourceControl == %this )
- return;
- // If a swatch button control is dropped onto this control,
- // copy it's color.
-
- if( %payload.isMemberOfClass( "GuiSwatchButtonCtrl" ) )
- {
- // If the swatch button is part of a color-type inspector field,
- // remember the inspector field so we can later set the color
- // through it.
- if( %this.parentGroup.isMemberOfClass( "GuiInspectorTypeColorI" ) )
- %this.parentGroup.apply( ColorFloatToInt( %payload.color ) );
- else if( %this.parentGroup.isMemberOfClass( "GuiInspectorTypeColorF" ) )
- %this.parentGroup.apply( %payload.color );
- else
- %this.setColor( %payload.color );
- }
- }
|