public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
        {
            base.Show(_request, _listener);
            if (_request == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(_request.m_MessageInfor) == false)
            {
                m_AllSystemMessage.Add(_request.m_MessageInfor); //压入消息
                                                                 // Debug.Log("新来的消息长度 " + (_request.m_MessageInfor).Length);
                m_MessageText.text += "\n" + _request.m_MessageInfor;

                if (_request.m_AutoClip)
                {                               //自动裁减  弹出最上层的消息 ***需要优化
                    StartCoroutine(AutoSize()); //*********不能直接在这里使用While循环 否则会在一帧内执行完 弹出所有的输入
                }
                else
                {
                    if (m_AllSystemMessage.Count > _request.m_MaxMsgCout && _request.m_MaxMsgCout > 0)
                    {                                           //对于超过数量的消息自动弹出最上层的消息
                        string _oldStr = m_AllSystemMessage[0]; //取第一个元素
                        _oldStr = _oldStr + "\n";
                        string _newStr     = m_MessageText.text;
                        int    totalLength = _newStr.Length;
                        int    deleteIndex = _oldStr.Length;
                        //   Debug.Log(_oldStr + "弹出的长度是 " + deleteIndex);
                        m_MessageText.text = _newStr.Substring(deleteIndex, totalLength - deleteIndex);
                        m_AllSystemMessage.RemoveAt(0);
                    }
                }
            }
        }
Пример #2
0
 public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
 {
     base.Show(_request, _listener);
     if (_request == null)
     {
         Hide(); return;
     }
     if (m_ProgressBar != null)
     {
         m_ProgressBar.fillAmount = _request.m_Progress;
         m_Progress.text          = (int)(_request.m_Progress * 100) + "%";
         if (Mathf.Abs(_request.m_Progress - 1) <= 0.01f)
         {
             if (_listener != null)
             {
                 _listener(response);
             }
             Hide();
         }
     }
     if (m_Title != null)
     {
         m_Title.text = _request.m_Title;
     }
     if (m_MessageTip != null)
     {
         m_MessageTip.text = _request.m_MessageInfor;  //提示信息
     }
 }
Пример #3
0
 public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
 {
     base.Show(_request, _listener);
     if (_request == null)
     {
         return;
     }
     if (string.IsNullOrEmpty(_request.m_MessageInfor) == false)
     {
         if (_request.m_Highpriority)
         { //优先显示
             Debug.Log("优先显示");
             List <string> _newList = new List <string>(systemInfor.Count + 1);
             _newList.Add(_request.m_MessageInfor);  //压入数据
             for (int _index = 0; _index < systemInfor.Count; _index++)
             {
                 _newList.Add(systemInfor[_index]);
             }//for
             systemInfor.Clear();
             systemInfor = _newList;
         }//if
         else
         { //顺序显示
             systemInfor.Add(_request.m_MessageInfor);  //压入数据
         }
     }
     transform.position = _request.m_WorldPosition;
 }
Пример #4
0
        public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
        {
            base.Show(_request, _listener);
            if (_request == null)
            {
                Hide(); return;
            }
            _request.m_IsModel = true;   //等待框一定是模态的

            //MessageBoxModel.GetInstance().ModelMessageBoxRegest(this, true);

            if (m_Message != null)
            {
                m_Message.text = string.IsNullOrEmpty(_request.m_MessageInfor) ? "" : _request.m_MessageInfor;  //默认显示“”
            }
            EventCenter.GetInstance().AddUpdateEvent(AutoFillSize, EventCenter.UpdateRate.DelayTwooFrame);
            EventCenter.GetInstance().AddUpdateEvent(Waitting, EventCenter.UpdateRate.DelayTwooFrame);  //自旋转

            if (_request.m_DispearTime <= 0)
            {
                Debug.Log("等待时间太短!");
                _request.m_DispearTime = 1f;
            }

            StartCoroutine(AutoWait(_request.m_DispearTime));   //进入等待模式
            transform.SetParent(EventCenter.GetInstance().m_UIRoot);
            transform.localPosition = new Vector3(0, 0, 0.5f);
            transform.localRotation = Quaternion.identity;
        }
Пример #5
0
 /// <summary>
 /// flag 是否显示倒计时
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="callback"></param>
 /// <param name="callbackCancel"></param>
 /// <param name="flag"></param>
 static public void Show(string msg, MessageBoxCallback callback = null, MessageBoxCallback callbackCancel = null, bool flag = false)
 {
     if (instance != null)
     {
         instance.ShowMessageBox(msg, callback, callbackCancel, flag);
     }
 }
Пример #6
0
 public MsgBox(MessageBoxResquest req, MessageBoxCallback _call)
 {
     request           = req;
     callBack          = _call;
     BoxID             = BoxIDRecord;
     BaseMessageBoxObj = null;
 }
Пример #7
0
    public void ButtonAction(Button button)
    {
        MessageBoxCallbackType callbackType = (MessageBoxCallbackType)Enum.Parse(typeof(MessageBoxCallbackType), button.name);
        MessageBoxCallback     callback     = Array.Find(callbacks, (c) => c.CallbackType == callbackType);

        callback.Action?.Invoke();
        Close();
    }
Пример #8
0
 /// <summary>
 /// VR 公告广播
 /// </summary>
 /// <param name="msg">要显示的消息</param>
 /// <param name="handle"></param>
 /// <param name="request"></param>
 public static void VRBrocard(string msg, MessageBoxCallback handle, MessageBoxResquest request)
 {
     if (request == null)
     {
         return;
     }
     request.m_MSGType      = MessageBoxResquest.MessageType.VRBrocard;
     request.m_MessageInfor = msg;
     Show(request, handle);
 }
Пример #9
0
 /// <summary>
 /// 系统滚动条广播
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="highpriority">是否是高优先级</param>
 /// <param name="handle"></param>
 /// <param name="request"></param>
 public static void SystemBrocard(string msg, bool highpriority, MessageBoxCallback handle, MessageBoxResquest request)
 {
     if (request == null)
     {
         return;
     }
     request.m_MSGType      = MessageBoxResquest.MessageType.SystemBroadcast;
     request.m_MessageInfor = msg;
     request.m_Highpriority = highpriority;
     Show(request, handle);
 }
Пример #10
0
        /// <summary>
        /// 显示一个自动滚动的进度条 它不能定义一个时间间隔自动关闭
        /// </summary>
        /// <param name="title"></param>
        /// <param name="msg"></param>
        /// <param name="handle"></param>
        /// <param name="request"></param>
        public static void Progress(float progress, MessageBoxCallback handle, MessageBoxResquest request)
        {
            if (request == null)
            {
                return;
            }
            request.m_MSGType  = MessageBoxResquest.MessageType.ProgressBar;
            request.m_Progress = progress;

            Show(request, handle);
        }
Пример #11
0
        private void OnShowMessage(ShowMessageSignal signal)
        {
            _message.text = signal.Message;
            _callback     = signal.Callback;
            _okButon.gameObject.SetActive(signal.Buttons == MessageBoxButton.None ||
                                          (signal.Buttons & MessageBoxButton.Ok) != 0);
            _cancelButon.gameObject.SetActive((signal.Buttons & MessageBoxButton.Cancel) != 0);
            _yesButon.gameObject.SetActive((signal.Buttons & MessageBoxButton.Yes) != 0);
            _noButon.gameObject.SetActive((signal.Buttons & MessageBoxButton.No) != 0);

            gameObject.SetActive(true);
        }
Пример #12
0
 /// <summary>
 /// 显示一个垂直拉伸的提示框 几秒后自动消失
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="dispearTime"></param>
 /// <param name="handle"></param>
 /// <param name="request"></param>
 public static void SystemTip(string msg, float dispearTime, MessageBoxCallback handle, MessageBoxResquest request)
 {
     //if (request == null) return;
     if (request == null)
     {
         request = new MessageBoxResquest();
     }
     request.m_MSGType      = MessageBoxResquest.MessageType.SystemTip;
     request.m_MessageInfor = msg;
     request.m_DispearTime  = dispearTime;
     Show(request, handle);
 }
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			if (type == MessageBoxTypes.Ok)
			{
				EditorUtility.DisplayDialog(title, message, options.OkButtonName);
				if (callback != null) callback(MessageBoxResult.Ok);
			}
			else
			{
				bool value = EditorUtility.DisplayDialog(title, message, options.OkButtonName, options.CancelButtonText);
				if (callback != null) callback(value ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
			}
		}
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxCallback callback)
		{
			if (type == MessageBoxTypes.Ok)
			{
				MessageBox(IntPtr.Zero, message, title, MB_OK);
				if (callback != null) callback(MessageBoxResult.Ok);
			}
			else
			{
				int result = MessageBox(IntPtr.Zero, message, title, MB_OKCANCEL);
				if (callback != null) callback(result != IDCANCEL ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
			}
		}
Пример #15
0
        /// <summary>
        /// 显示一个模态系统等待框
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="waitTime">事件必须大于0</param>
        /// <param name="handle"></param>
        /// <param name="request"></param>
        public static void SystemWait(string msg, float waitTime, MessageBoxCallback handle, MessageBoxResquest request)
        {
            if (request == null)
            {
                return;
            }
            request.m_MSGType      = MessageBoxResquest.MessageType.SystemWait;
            request.m_MessageInfor = msg;
            request.m_DispearTime  = waitTime;
            request.m_IsModel      = true;

            Show(request, handle);
        }
Пример #16
0
        /// <summary>
        /// 显示一个确认信息框  有两个按钮
        /// </summary>
        /// <param name="title"></param>
        /// <param name="msg"></param>
        /// <param name="handle">回调</param>
        /// <param name="request">其他额外设置</param>
        public static void Confirm(string title, string msg, MessageBoxCallback handle, MessageBoxResquest request)
        {
            if (request == null)
            {
                return;
            }
            request.m_MSGType      = MessageBoxResquest.MessageType.Information;
            request.m_MSGBtn       = MessageBoxResquest.MessageBoxButton.YESNO;
            request.m_Title        = title;
            request.m_MessageInfor = msg;

            MessageBoxModel.GetInstance().ShowMessageBox(request, handle);
        }
Пример #17
0
 /// <summary>
 /// 显示一个水平拉伸提示框 无法操作并且会自动消失
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="despearTime">自动消失时间</param>
 /// <param name="parent">父节点</param>
 /// <param name="handle"></param>
 /// <param name="request"></param>
 /// <param name="msgParameter">消息显示区域的参数设置</param>
 public static void Tips(string msg, float dispearTime, Transform parent, MessageBoxCallback handle, MessageBoxResquest request, params object[] msgParameter)
 {
     if (request == null)
     {
         return;
     }
     request.m_MSGType      = MessageBoxResquest.MessageType.TipsBox;
     request.m_MessageInfor = msg;
     request.m_MsgParameter = msgParameter;
     request.m_DispearTime  = dispearTime;
     request.m_Parent       = parent;
     Show(request, handle);
 }
Пример #18
0
 void ShowMessageBox(string msg, MessageBoxCallback callback, MessageBoxCallback callbackCancel, bool flag)
 {
     ShowMsgflag       = true;
     isShowTimeTxtFlag = flag;
     if (isShowTimeTxtFlag)
     {
         timeCount = 59;
         timeCountxt.gameObject.SetActive(true);
     }
     messg               = msg;
     this.callback       = callback;
     this.callbackCancel = callbackCancel;
     timeCountxt.text    = "";
 }
Пример #19
0
 /// <summary>
 /// 显示系统公告板消息
 /// </summary>
 /// <param name="request">消息请求</param>
 /// <param name="handle">消息回调</param>
 public void ShowVRBrocardMessage(MessageBoxResquest request, MessageBoxCallback handle)
 {
     //if (m_AllVRBrocard.Count < 1)
     //{
     //    return;
     //}
     //for (int _index = 0; _index < m_AllVRBrocard.Count; _index++)
     //{
     //    if (m_AllVRBrocard[_index] != null)
     //    {
     //        m_AllVRBrocard[_index].Show(request, handle);
     //    }
     //}
 }
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			if (type == MessageBoxTypes.Ok)
			{
				MessageBoxShow(title, message, 0);
				if (callback != null) callback(MessageBoxResult.Ok);
			}
			else
			{
				int result = MessageBoxShow(title, message, 1);
				Debug.Log("VALUE: " + result);
				if (callback != null) callback(result == 1 ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
			}
		}
Пример #21
0
        public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
        {
            base.Show(_request, _listener, id);
            UITipMessageBox previous = null;

            if (CheckExitAndShowing(this, out previous))
            {  //There is one Tipe Exit
                if (previous != null)
                {
                    if (previous.gameObject.activeSelf)
                    {
                        previous.Hide();
                    }
                    else
                    {
                        allUITipMessageBoxList.Remove(previous);

                        if (MessageBox.MsgBoxPool != null)
                        {
                            MessageBox.MsgBoxPool.Recycle(previous, MessageBoxResquest.MessageType.TipsBox, (tips) => { tips.Reset(); });
                        }
                    }
                }//if
            }

            allUITipMessageBoxList.Add(this);

            if (gameObject.activeSelf == false)
            {
                gameObject.SetActive(true);
            }
            if (_request == null)
            {
                Hide();
                return;
            }
            ;
            m_TopCanvasTrans.SetParent(_request.m_Parent);                //父节点
            m_TopCanvasTrans.localScale       = _request.m_Scale;         //缩放
            m_TopCanvasTrans.localPosition    = _request.m_WorldPosition; //要显示的位置
            m_TopCanvasTrans.localEulerAngles = _request.m_Angle;         //要显示的位置

            if (_request.m_DispearTime >= 0)
            {
                StartCoroutine(AutoHide(_request.m_DispearTime));
            }

            ShowMsg();
        }
		private async void showAsync(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		#endif
		{
			#if WINDOWS_PHONE
			WinRTPlugin.Dispatcher.BeginInvoke(delegate()
			{
				// XNA method
				Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox(title, message,
				new System.Collections.Generic.List<string> {options.OkButtonName, options.CancelButtonText}, 0, Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.Error,
				asyncResult =>
				{
					int? result = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(asyncResult);
					ReignServices.InvokeOnUnityThread(delegate
					{
						if (callback != null) callback(result == 0 ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
					});
				}, null);

				// Silverlight method. (Doesn't support custom named buttons)
				//var result = MessageBox.Show(message, title, type == MessageBoxTypes.Ok ? MessageBoxButton.OK : MessageBoxButton.OKCancel);
				//if (callback != null) callback(result == System.Windows.MessageBoxResult.OK ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
			});
			#else
			await WinRTPlugin.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async delegate()
			{
				var msg = new MessageDialog(message, title);
				if (type == MessageBoxTypes.Ok)
				{
					await msg.ShowAsync();
					ReignServices.InvokeOnUnityThread(delegate
					{
						if (callback != null) callback(MessageBoxResult.Ok);
					});
				}
				else if (type == MessageBoxTypes.OkCancel)
				{
					bool result = false;
					msg.Commands.Add(new UICommand(options.OkButtonName, new UICommandInvokedHandler((cmd) => result = true)));
					msg.Commands.Add(new UICommand(options.CancelButtonText, new UICommandInvokedHandler((cmd) => result = false)));
					await msg.ShowAsync();
					ReignServices.InvokeOnUnityThread(delegate
					{
						if (callback != null) callback(result ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
					});
				}
			});
			#endif
		}
Пример #23
0
        public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
        {
            base.Show(_request, _listener, id);
            if (_request == null)
            {
                Hide(); return;
            }
            BoxLevel = _request.m_BoxLevel;

            m_Message.alignment = _request.m_MsgTextAnchor;

            SetButtonStateBaseOnType(_request.m_MSGBtn);
            if (_request.m_MSGBtn == MessageBoxResquest.MessageBoxButton.YES)
            {
                _request.m_IsModel = true;   //自动为模态
            }
            ShowMsg();

            #region AutoHide

            if (_request.m_DispearTime != 0)
            {
                duration = _request.m_DispearTime;       //持续时间
                InvokeRepeating("UpdateTickView", 1, 1); //自动更新
                m_UIEffect1Text.text += (int)(_request.m_DispearTime + 0.5f);
                gridLayout.cellSize   = new Vector2(306, 76);
                StartCoroutine(AutoHide(_request.m_DispearTime));
            }
            else
            {
                gridLayout.cellSize = new Vector2(214, 86);
            }
            #endregion

            transform.SetParent(EventCenter.GetInstance().m_UIRoot);
            if (_request.m_WorldPosition != ShowDefaultPosition)
            {
                transform.position = _request.m_WorldPosition;  //自定义位置
            }
            else
            {
                transform.localPosition = ShowDefaultPosition;
            }

            transform.localPosition = _request.m_WorldPosition;
            transform.localRotation = Quaternion.identity;
            EventCenter.GetInstance().AddUpdateEvent(FollowCamera, EventCenter.UpdateRate.NormalFrame);
        }
Пример #24
0
        /// <summary>
        /// 显示一个输入框 有两个按钮和一个输入框接口输入
        /// </summary>
        /// <param name="title"></param>
        /// <param name="msg"></param>
        /// <param name="handle"></param>
        /// <param name="request"></param>
        /// <param name="multiline">是否是多行文本框 默认是单行</param>
        /// <param name="defaultStr">输入框默认显示的文本</param>
        public static void GetInput(string title, string msg, MessageBoxCallback handle, MessageBoxResquest request, bool multiline = false, string defaultStr = "")
        {
            if (request == null)
            {
                return;
            }

            request.m_MSGType              = MessageBoxResquest.MessageType.InputBox;
            request.m_MSGBtn               = MessageBoxResquest.MessageBoxButton.YESNO;
            request.m_Title                = title;
            request.m_MessageInfor         = msg;
            request.m_multilineInpt        = multiline;  //是否多行
            request.m_InputFilePlaceholder = defaultStr; //默认显示的输入

            Show(request, handle);
        }
Пример #25
0
    public static void Show(string message, string buttontext, MessageBoxCallback callback)
    {
        Self.Text.text = message;
        Self.ButtonText.text = buttontext;

        Self.Button.onClick.RemoveAllListeners();
        Self.Button.onClick.AddListener(delegate {
            if (callback != null) {
                if (callback()) { //return true to close MessageBox
                    Self.SetVisible(false);
                }
            }
            else {
                Self.SetVisible(false); //if there is no callback, just close by default
            }
        });

        Self.SetVisible(true);
    }
Пример #26
0
 public void Show(string title, string message, MessageBoxTypes type, MessageBoxCallback callback)
 {
     if (type == MessageBoxTypes.Ok)
     {
         MessageBox(IntPtr.Zero, message, title, MB_OK);
         if (callback != null)
         {
             callback(MessageBoxResult.Ok);
         }
     }
     else
     {
         int result = MessageBox(IntPtr.Zero, message, title, MB_OKCANCEL);
         if (callback != null)
         {
             callback(result != IDCANCEL ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
         }
     }
 }
Пример #27
0
    //private void Awake()
    //{
    //    OnInit(null);
    //}

    protected override void OnInit(object userdata)
    {
        base.OnInit(userdata);
        lblContent = transform.Find("aniRoot/bg/content").GetComponent <UILabel>();
        btnMask    = transform.Find("mask").gameObject;
        spMask     = btnMask.GetComponent <UISprite>();
        btnYes     = transform.Find("aniRoot/Yes").gameObject;
        btnNo      = transform.Find("aniRoot/NO").gameObject;
        btnCancel  = transform.Find("aniRoot/Cancel").gameObject;
        aniRoot    = transform.Find("aniRoot").gameObject;
        object[] args = (object[])userdata;
        messageBoxType     = (MessageBoxType)args[0];
        content            = args[1].ToString();
        messageBoxCallback = (MessageBoxCallback)args[2];
        UIEventListener.Get(btnMask).onClick   = OnClick_Mask;
        UIEventListener.Get(btnYes).onClick    = OnClick_Yes;
        UIEventListener.Get(btnNo).onClick     = OnClick_No;
        UIEventListener.Get(btnCancel).onClick = OnClick_Cancel;
    }
Пример #28
0
        /// <summary>
        /// Post Request To Dic And Select The Special One To Show
        /// </summary>
        /// <param name="request"></param>
        /// <param name="callBack"></param>
        public void ShowMessageBox(MessageBoxResquest request, MessageBoxCallback callBack)
        {
            if (request == null)
            {
                return;
            }
            MsgBox _box = new MsgBox(request, callBack);

            if (AllPopMsgBoxCache.ContainsKey(request.m_BoxLevel) == false)
            {
                AllPopMsgBoxCache[request.m_BoxLevel] = new List <MsgBox>();
            }

            //***TopLevel Msg Need TODO
            AllPopMsgBoxCache[request.m_BoxLevel].Add(_box);

            ++TotalBoxWaitingCot;
            ++BoxIDRecord; //Idetify One Box
            GetMessageBoxToShow(_box);
        }
Пример #29
0
    public static void Show(string message, string buttontext, MessageBoxCallback callback)
    {
        Self.Text.text       = message;
        Self.ButtonText.text = buttontext;

        Self.Button.onClick.RemoveAllListeners();
        Self.Button.onClick.AddListener(delegate {
            if (callback != null)
            {
                if (callback())   //return true to close MessageBox
                {
                    Self.SetVisible(false);
                }
            }
            else
            {
                Self.SetVisible(false); //if there is no callback, just close by default
            }
        });

        Self.SetVisible(true);
    }
        public override void Show(MessageBoxResquest _request, MessageBoxCallback _listener, int id = -1)
        {
            base.Show(_request, _listener);
            if (gameObject.activeSelf == false)
            {
                gameObject.SetActive(true);
            }
            if (_request == null)
            {
                Hide();
                return;
            }
            ;
            m_TopCanvasTrans.SetParent(EventCenter.GetInstance().m_UIRoot); //父节点
            m_TopCanvasTrans.localScale       = Vector3.one / 1000;
            m_TopCanvasTrans.localPosition    = _request.m_WorldPosition;   //要显示的位置
            m_TopCanvasTrans.localEulerAngles = _request.m_Angle;           //要显示的位置

            if (_request.m_DispearTime == 0)
            {
                _request.m_DispearTime = 0;  //默认显示
            }
            if (isShowIng == false)
            {
                StartCoroutine(AutoHide(_request.m_DispearTime));
            }
            else
            {//正在显示
                StopCoroutine("AutoHide");
                StartCoroutine(AutoHide(_request.m_DispearTime));
            }
            m_TipMessage.text = _request.m_MessageInfor;


            EventCenter.GetInstance().AddUpdateEvent(AutoFillSize, EventCenter.UpdateRate.DelayOneFrame);
            EventCenter.GetInstance().AddUpdateEvent(FaceToCamera, EventCenter.UpdateRate.DelayOneFrame);
        }
 public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
 {
     Native.Show(title, message, type, options, callback);
 }
 private void showAsync(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
Пример #33
0
        public MyGuiScreenMessageBox(MyMessageBoxType type, MyMessageBoxButtonsType buttonType, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, bool enableCheckBox, Vector2 buttonSize)            
            : base(new Vector2(0.5f, 0.5f), null, null, true, null)
        {
            InstantClose = true;

            MyMessageBoxConfiguration config = m_typesConfiguration[(int)type];
            m_backgroundColor = config.BackgroundColor;
            m_backgroundTexture = config.Texture;
            m_textColor = config.TextColor;
            m_interferenceVideoColor = config.InterferenceVideoColor;

            m_enableBackgroundFade = true;

            m_buttonType = buttonType;
            m_okButtonText = okButtonText;
            m_yesButtonText = yesButtonText;
            m_noButtonText = noButtonText;
            m_callback = callback;            
            m_drawEvenWithoutFocus = true;
            m_screenCanHide = false;
            m_buttonSize = buttonSize;                    

            //  Recalculate heigh of message box screen, so it will auto-adapt to message size and maybe make split it on more lines
            Vector2 textSize = MyGuiManager.GetNormalizedSize(config.Font, messageText, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE);
            Vector2 captionSize = MyGuiManager.GetNormalizedSize(config.Font, messageCaption, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE);
            m_size = new Vector2(Math.Max(2f * m_buttonSize.X + 0.1f, textSize.X) + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_X, 
                                3 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y + captionSize.Y + textSize.Y + MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE.Y)+ new Vector2();

            //if (type == MyMessageBoxType.MESSAGE) m_size = m_size + new Vector2(0.1f, 0.1f);
            //m_size. =m_size.Value.Y * 1.1f;
            if (enableCheckBox)
            {
                m_size = new Vector2(m_size.Value.X, m_size.Value.Y + 0.05f);
            }

            //  Message box caption
            MyGuiControlLabel captionLabel = new MyGuiControlLabel(this, new Vector2(0, -m_size.Value.Y / 2.0f + captionSize.Y / 2.0f + MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y),
                null, messageCaption, m_textColor, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER,config.Font);
            Controls.Add(captionLabel);

            //  Message box text
            m_messageBoxText = new MyGuiControlLabel(this, new Vector2(0f, captionLabel.GetPosition().Y + textSize.Y / 2.0f + 1.0f * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y), null, messageText,
                m_textColor, MyGuiConstants.MESSAGE_BOX_TEXT_SCALE, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, config.Font);
            Controls.Add(m_messageBoxText);

            float deltaY = 0;

            if (enableCheckBox)
            {
                const float CHECKBOX_DELTA_Y = 0.01f;

                // CheckBox to not show again this message box
                m_showAgainCheckBox = new MyGuiControlCheckbox(this, new Vector2(-0.02f,
                    m_messageBoxText.GetPosition().Y + CHECKBOX_DELTA_Y + textSize.Y / 2.0f + 2 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y),
                    true, config.ButtonColor);
                Controls.Add(m_showAgainCheckBox);
                Controls.Add(new MyGuiControlLabel(this, new Vector2(0f, m_messageBoxText.GetPosition().Y + CHECKBOX_DELTA_Y + textSize.Y / 2.0f +
                    2 * MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y) + 0 * MyGuiConstants.CONTROLS_DELTA, null,
                    MyTextsWrapper.Get(MyTextsWrapperEnum.DecreaseVideoSettingsCheckBox), m_textColor,
                    MyGuiConstants.LABEL_TEXT_SCALE * 0.75f, MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_CENTER, config.Font));
            }

            //  Buttons
            Vector2 buttonDelta = new Vector2(0.05f, m_size.Value.Y / 2.0f - MyGuiConstants.MESSAGE_BOX_BORDER_AREA_Y - m_buttonSize.Y / 2.0f);
            if (m_buttonType == MyMessageBoxButtonsType.OK)
            {

                    //Controls.Add(new MyGuiControlButton(this, new Vector2(0, deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,
                    //null,null,null,
                    //m_okButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,
                    //true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));

                var okButton = new MyGuiControlButton(this, new Vector2(0, deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,
                    config.ButtonColor,
                    config.ButtonTexture, null, null, m_okButtonText.Value,
                    m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,
                    true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);
                Controls.Add(okButton);


            }
            else if ((m_buttonType == MyMessageBoxButtonsType.YES_NO) || (m_buttonType == MyMessageBoxButtonsType.YES_NO_TIMEOUT))
            {

                var okButton = new MyGuiControlButton(this, new Vector2(-(buttonDelta.X + m_buttonSize.X / 2f), deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,
                        config.ButtonColor,
                        config.ButtonTexture, null, null, m_yesButtonText.Value,
                        m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick,
                        true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);
                Controls.Add(okButton);

                var noButton = new MyGuiControlButton(this, new Vector2(+buttonDelta.X + m_buttonSize.X / 2f, deltaY + buttonDelta.Y), MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE_SMALL,
                    config.ButtonColor,
                    config.ButtonTexture, null, null, m_noButtonText.Value,
                    m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnNoClick,
                    true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true);
                Controls.Add(noButton);


                //Controls.Add(new MyGuiControlButton(this, new Vector2(-(buttonDelta.X + m_buttonSize.X / 2f), deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,
                //    null,null,null,
                //    m_yesButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnYesClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));

                //Controls.Add(new MyGuiControlButton(this, new Vector2(+buttonDelta.X + m_buttonSize.X / 2f, deltaY + buttonDelta.Y), m_buttonSize, config.ButtonColor,
                //    null,null,null,
                //    m_noButtonText.Value, m_textColor, MyGuiConstants.BUTTON_TEXT_SCALE, MyGuiControlButtonTextAlignment.CENTERED, OnNoClick, true, MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER, true, true));
            }
            else if (m_buttonType == MyMessageBoxButtonsType.NONE)
            {
            }
            else
            {
                throw new MyMwcExceptionApplicationShouldNotGetHere();
            }
        }                
Пример #34
0
        public void WarnOnClose(MessageBoxCallback onClose)
        {
            if (null != Project && CommandHistory.HasUnsavedChanges)
            {
                DialogService.Warn(Messages.Exit, Messages.UnsavedMessage, MessageBoxButton.YesNoCancel, r =>
                {
                    if (r == MessageBoxResult.Yes)
                    {
                        SaveProject();
                    }

                    if (null != onClose)
                    {
                        onClose(r);
                    }
                });
            }
        }
Пример #35
0
 //  Constructor for YES/NO message boxes and TIMEOUT
 public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, int timeoutInMiliseconds) :
     this(type, MyMessageBoxButtonsType.YES_NO_TIMEOUT, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, false)
 {
     m_timeoutStartedTimeInMiliseconds = MyMinerGame.TotalTimeInMilliseconds;
     m_timeoutInMiliseconds = timeoutInMiliseconds;
 }
Пример #36
0
 private MyGuiScreenMessageBox(MyMessageBoxType type, MyMessageBoxButtonsType buttonType, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, bool enableCheckBox)
     : this(type, buttonType, messageText, messageCaption, okButtonText, yesButtonText, noButtonText, callback, enableCheckBox, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE)
 {
 }
Пример #37
0
 //  Constructor for YES/NO message boxes - and text and caption defined by StringBuilder instead of enum
 public MyGuiScreenMessageBox(MyMessageBoxType type, StringBuilder messageText, StringBuilder messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback) :
     this(type, MyMessageBoxButtonsType.YES_NO, messageText, messageCaption, null, yesButtonText, noButtonText, callback, false)
 {
 }
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			this.callback = callback;
			ShowMessageBox(title, message, options.OkButtonName, options.CancelButtonText, type == MessageBoxTypes.Ok ? 0 : 1);
		}
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			Native.Show(title, message, type, options, callback);
		}
		/// <summary>
		/// 
		/// </summary>
		/// <param name="title">MessageBox Title.</param>
		/// <param name="message">MessageBox Message.</param>
		/// <param name="type">MessageBox Type.</param>
		/// <param name="options">MessageBox Options.</param>
		/// <param name="callback">The callback that fires when done.</param>
		public static void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			if (options == null) options = new MessageBoxOptions();
			plugin.Show(title, message, type, options, callback);
		}
		private void showAsync(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
Пример #42
0
 public static MessageBox Show(string text, MessageBoxCallback callback)
 {
     return(Show(text, _caption, MessageBoxButtonsEnum.Ok, MessageBoxIconEnum.Information, MessageBoxDefaultButtonEnum.Button1, callback));
 }
Пример #43
0
 public static MessageBox Show(string text, string caption, MessageBoxButtonsEnum buttons, MessageBoxIconEnum icon, MessageBoxCallback callback)
 {
     return(Show(text, caption, buttons, icon, MessageBoxDefaultButtonEnum.Button1, callback));
 }
        private async void showAsync(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
                #endif
        {
                        #if WINDOWS_PHONE
            WinRTPlugin.Dispatcher.BeginInvoke(delegate()
            {
                // XNA method
                Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox(title, message,
                                                                                new System.Collections.Generic.List <string> {
                    options.OkButtonName, options.CancelButtonText
                }, 0, Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.Error,
                                                                                asyncResult =>
                {
                    int?result = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(asyncResult);
                    ReignServices.InvokeOnUnityThread(delegate
                    {
                        if (callback != null)
                        {
                            callback(result == 0 ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
                        }
                    });
                }, null);

                // Silverlight method. (Doesn't support custom named buttons)
                //var result = MessageBox.Show(message, title, type == MessageBoxTypes.Ok ? MessageBoxButton.OK : MessageBoxButton.OKCancel);
                //if (callback != null) callback(result == System.Windows.MessageBoxResult.OK ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
            });
                        #else
            await WinRTPlugin.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async delegate()
            {
                var msg = new MessageDialog(message, title);
                if (type == MessageBoxTypes.Ok)
                {
                    await msg.ShowAsync();
                    ReignServices.InvokeOnUnityThread(delegate
                    {
                        if (callback != null)
                        {
                            callback(MessageBoxResult.Ok);
                        }
                    });
                }
                else if (type == MessageBoxTypes.OkCancel)
                {
                    bool result = false;
                    msg.Commands.Add(new UICommand(options.OkButtonName, new UICommandInvokedHandler((cmd) => result     = true)));
                    msg.Commands.Add(new UICommand(options.CancelButtonText, new UICommandInvokedHandler((cmd) => result = false)));
                    await msg.ShowAsync();
                    ReignServices.InvokeOnUnityThread(delegate
                    {
                        if (callback != null)
                        {
                            callback(result ? MessageBoxResult.Ok : MessageBoxResult.Cancel);
                        }
                    });
                }
            });
                        #endif
        }
Пример #45
0
 //  Constructor for YES/NO message boxes and checkBox
 public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum checkBoxMessage, MyTextsWrapperEnum? okButtonText, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback, out MyGuiControlCheckbox showAgainCheckBox) :
     this(type, MyMessageBoxButtonsType.YES_NO, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, true)
 {
     showAgainCheckBox = m_showAgainCheckBox;
 }
Пример #46
0
 //  Constructor for YES/NO message boxes
 public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? yesButtonText, MyTextsWrapperEnum? noButtonText, MessageBoxCallback callback) :
     this(type, MyMessageBoxButtonsType.YES_NO, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, yesButtonText, noButtonText, callback, false)
 {
 }
		/// <summary>
		/// Use to show an OK or OK/Cancel message box.
		/// </summary>
		/// <param name="title">MessageBox Title.</param>
		/// <param name="message">MessageBox Message.</param>
		/// <param name="type">MessageBox Type.</param>
		/// <param name="callback">The callback that fires when done.</param>
		public static void Show(string title, string message, MessageBoxTypes type, MessageBoxCallback callback)
		{
			plugin.Show(title, message, type, new MessageBoxOptions(), callback);
		}
Пример #48
0
 //  Constructor for no buttons message boxes
 public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MessageBoxCallback callback) :
     this(type, MyMessageBoxButtonsType.NONE, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), null, null, null, callback, false, MyGuiConstants.MESSAGE_BOX_BUTTON_SIZE)
 {
 }
			public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
			{
				if (callback != null) callback(MessageBoxResult.Cancel);
			}
Пример #50
0
 //  Constructor for OK message boxes
 public MyGuiScreenMessageBox(MyMessageBoxType type, MyTextsWrapperEnum messageText, MyTextsWrapperEnum messageCaption, MyTextsWrapperEnum? okButtonText, MessageBoxCallback callback) :
     this(type, MyMessageBoxButtonsType.OK, MyTextsWrapper.Get(messageText), MyTextsWrapper.Get(messageCaption), okButtonText, null, null, callback, false)
 {
 }
		public void Show(string title, string message, MessageBoxTypes type, MessageBoxOptions options, MessageBoxCallback callback)
		{
			const string okContextID = "okButton", cancelContextID = "cancelButton";
		
			dialog_request_events(0);
			if (dialog_create_alert(ref dialog) != 0) return;
			if (dialog_set_title_text(dialog, title) != 0)
			{
				dispose();
				return;
			}
			
			if (dialog_set_alert_message_text(dialog, message) != 0)
			{
				dispose();
				return;
			}
			
			if (dialog_add_button(dialog, options.OkButtonName, true, okContextID, true) != 0)
			{
				dispose();
				return;
			}
			
			if (type == MessageBoxTypes.OkCancel && dialog_add_button(dialog, options.CancelButtonText, true, cancelContextID, true) != 0)
			{
				dispose();
				return;
			}
			
			if (dialog_show(dialog) != 0)
			{
				dispose();
				return;
			}
			
			// wait for messge box event
			while (true)
			{
				IntPtr _event = IntPtr.Zero;
				Common.bps_get_event(ref _event, -1);// wait here for next event
				if (_event != IntPtr.Zero)
				{
					if (dialog_get_domain() == Common.bps_event_get_domain(_event))
					{
						var context = dialog_event_get_selected_context(_event);
						if (context != IntPtr.Zero)
						{
							if (Marshal.PtrToStringAnsi(context) == okContextID)
							{
								if (callback != null) callback(MessageBoxResult.Ok);
								break;
							}
							
							if (Marshal.PtrToStringAnsi(context) == cancelContextID)
							{
								if (callback != null) callback(MessageBoxResult.Cancel);
								break;
							}
						}
					}
				}
			}
			
			dispose();
		}