2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 // Example from Swig MACRO
20 %define BUTTON_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
21 %typemap(csimports) NameSpace::ClassName %{
23 using System.Runtime.InteropServices;
29 %define BUTTON_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
30 %typemap(cscode) NameSpace::ClassName %{
32 public class ClickedEventArgs : EventArgs
34 private Button _button;
49 public class PressedEventArgs : EventArgs
51 private Button _button;
66 public class ReleasedEventArgs : EventArgs
68 private Button _button;
83 public class StateChangedEventArgs : EventArgs
85 private Button _button;
101 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
102 private delegate bool ClickedCallbackDelegate(global::System.IntPtr data);
103 private DaliEventHandlerWithReturnType<object,ClickedEventArgs,bool> _buttonClickedEventHandler;
104 private ClickedCallbackDelegate _buttonClickedCallbackDelegate;
106 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
107 private delegate bool PressedCallbackDelegate(global::System.IntPtr data);
108 private DaliEventHandlerWithReturnType<object,PressedEventArgs,bool> _buttonPressedEventHandler;
109 private PressedCallbackDelegate _buttonPressedCallbackDelegate;
111 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
112 private delegate bool ReleasedCallbackDelegate(global::System.IntPtr data);
113 private DaliEventHandlerWithReturnType<object,ReleasedEventArgs,bool> _buttonReleasedEventHandler;
114 private ReleasedCallbackDelegate _buttonReleasedCallbackDelegate;
116 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
117 private delegate bool StateChangedCallbackDelegate(global::System.IntPtr data);
118 private DaliEventHandlerWithReturnType<object,StateChangedEventArgs,bool> _buttonStateChangedEventHandler;
119 private StateChangedCallbackDelegate _buttonStateChangedCallbackDelegate;
122 public event DaliEventHandlerWithReturnType<object,ClickedEventArgs,bool> Clicked
128 // Restricted to only one listener
129 if (_buttonClickedEventHandler == null)
131 _buttonClickedEventHandler += value;
133 _buttonClickedCallbackDelegate = new ClickedCallbackDelegate(OnClicked);
134 this.ClickedSignal().Connect(_buttonClickedCallbackDelegate);
143 if (_buttonClickedEventHandler != null)
145 this.ClickedSignal().Disconnect(_buttonClickedCallbackDelegate);
148 _buttonClickedEventHandler -= value;
153 // Callback for button click signal
154 private bool OnClicked (IntPtr data)
156 ClickedEventArgs e = new ClickedEventArgs();
158 e.Button = Button.GetButtonFromPtr(data);
160 if (_buttonClickedEventHandler != null)
162 //here we send all data to user event handlers
163 return _buttonClickedEventHandler(this, e);
169 public event DaliEventHandlerWithReturnType<object,PressedEventArgs,bool> Pressed
175 // Restricted to only one listener
176 if (_buttonPressedEventHandler == null)
178 _buttonPressedEventHandler += value;
180 _buttonPressedCallbackDelegate = new PressedCallbackDelegate(OnPressed);
181 this.PressedSignal().Connect(_buttonPressedCallbackDelegate);
190 if (_buttonPressedEventHandler != null)
192 this.PressedSignal().Disconnect(_buttonPressedCallbackDelegate);
195 _buttonPressedEventHandler -= value;
200 // Callback for button click signal
201 private bool OnPressed (IntPtr data)
203 PressedEventArgs e = new PressedEventArgs();
205 e.Button = Button.GetButtonFromPtr(data);
207 if (_buttonPressedEventHandler != null)
209 //here we send all data to user event handlers
210 return _buttonPressedEventHandler(this, e);
216 public event DaliEventHandlerWithReturnType<object,ReleasedEventArgs,bool> Released
222 // Restricted to only one listener
223 if (_buttonReleasedEventHandler == null)
225 _buttonReleasedEventHandler += value;
227 _buttonReleasedCallbackDelegate = new ReleasedCallbackDelegate(OnReleased);
228 this.ReleasedSignal().Connect(_buttonReleasedCallbackDelegate);
237 if (_buttonReleasedEventHandler != null)
239 this.ReleasedSignal().Disconnect(_buttonReleasedCallbackDelegate);
242 _buttonReleasedEventHandler -= value;
247 // Callback for button click signal
248 private bool OnReleased (IntPtr data)
250 ReleasedEventArgs e = new ReleasedEventArgs();
252 e.Button = Button.GetButtonFromPtr(data);
254 if (_buttonReleasedEventHandler != null)
256 //here we send all data to user event handlers
257 return _buttonReleasedEventHandler(this, e);
263 public event DaliEventHandlerWithReturnType<object,StateChangedEventArgs,bool> StateChanged
269 // Restricted to only one listener
270 if (_buttonStateChangedEventHandler == null)
272 _buttonStateChangedEventHandler += value;
274 _buttonStateChangedCallbackDelegate = new StateChangedCallbackDelegate(OnStateChanged);
275 this.StateChangedSignal().Connect(_buttonStateChangedCallbackDelegate);
284 if (_buttonStateChangedEventHandler != null)
286 this.StateChangedSignal().Disconnect(_buttonStateChangedCallbackDelegate);
289 _buttonStateChangedEventHandler -= value;
294 // Callback for button click signal
295 private bool OnStateChanged (IntPtr data)
297 StateChangedEventArgs e = new StateChangedEventArgs();
299 e.Button = Button.GetButtonFromPtr(data);
301 if (_buttonStateChangedEventHandler != null)
303 //here we send all data to user event handlers
304 return _buttonStateChangedEventHandler(this, e);
309 public static ClassName Get ## ClassName ## FromPtr(global::System.IntPtr cPtr) {
310 ClassName ret = new ClassName(cPtr, false);
311 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
316 /* Properties earlier added by Ruby Script */
323 GetProperty( Button.Property.DISABLED).Get( ref temp );
328 SetProperty( Button.Property.DISABLED, new Dali.Property.Value( value ) );
331 public bool AutoRepeating
336 GetProperty( Button.Property.AUTO_REPEATING).Get( ref temp );
341 SetProperty( Button.Property.AUTO_REPEATING, new Dali.Property.Value( value ) );
344 public float InitialAutoRepeatingDelay
349 GetProperty( Button.Property.INITIAL_AUTO_REPEATING_DELAY).Get( ref temp );
354 SetProperty( Button.Property.INITIAL_AUTO_REPEATING_DELAY, new Dali.Property.Value( value ) );
357 public float NextAutoRepeatingDelay
362 GetProperty( Button.Property.NEXT_AUTO_REPEATING_DELAY).Get( ref temp );
367 SetProperty( Button.Property.NEXT_AUTO_REPEATING_DELAY, new Dali.Property.Value( value ) );
370 public bool Togglable
375 GetProperty( Button.Property.TOGGLABLE).Get( ref temp );
380 SetProperty( Button.Property.TOGGLABLE, new Dali.Property.Value( value ) );
388 GetProperty( Button.Property.SELECTED).Get( ref temp );
393 SetProperty( Button.Property.SELECTED, new Dali.Property.Value( value ) );
396 public string UnselectedStateImage
401 GetProperty( Button.Property.UNSELECTED_STATE_IMAGE).Get( out temp );
406 SetProperty( Button.Property.UNSELECTED_STATE_IMAGE, new Dali.Property.Value( value ) );
409 public string SelectedStateImage
414 GetProperty( Button.Property.SELECTED_STATE_IMAGE).Get( out temp );
419 SetProperty( Button.Property.SELECTED_STATE_IMAGE, new Dali.Property.Value( value ) );
422 public string DisabledStateImage
427 GetProperty( Button.Property.DISABLED_STATE_IMAGE).Get( out temp );
432 SetProperty( Button.Property.DISABLED_STATE_IMAGE, new Dali.Property.Value( value ) );
435 public Dali.CSharp.Color UnselectedColor
439 Vector4 temp = new Vector4(0.0f,0.0f,0.0f,0.0f);
440 GetProperty( Button.Property.UNSELECTED_COLOR).Get( temp );
441 Dali.CSharp.Color ret = new Dali.CSharp.Color(temp.r, temp.g, temp.b, temp.a);
446 SetProperty( Button.Property.UNSELECTED_COLOR, new Dali.Property.Value( value ) );
449 public Dali.CSharp.Color SelectedColor
453 Vector4 temp = new Vector4(0.0f,0.0f,0.0f,0.0f);
454 GetProperty( Button.Property.SELECTED_COLOR).Get( temp );
455 Dali.CSharp.Color ret = new Dali.CSharp.Color(temp.r, temp.g, temp.b, temp.a);
460 SetProperty( Button.Property.SELECTED_COLOR, new Dali.Property.Value( value ) );
463 public Dali.Property.Map Label
467 Dali.Property.Map temp = new Dali.Property.Map();
468 GetProperty( Button.Property.LABEL).Get( temp );
473 SetProperty( Button.Property.LABEL, new Dali.Property.Value( value ) );
476 public string LabelText
481 GetProperty( Button.Property.LABEL_TEXT).Get( out temp );
486 SetProperty( Button.Property.LABEL_TEXT, new Dali.Property.Value( value ) );
490 /* Properties ends */
496 %define BUTTON_EVENTHANDLER_PARAM( NameSpace, ClassName)
498 BUTTON_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
499 BUTTON_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
505 BUTTON_EVENTHANDLER_PARAM( Dali::Toolkit, Button);