コード例 #1
0
        /// <summary>
        /// Sends a simple text message
        /// </summary>
        /// <param name="text"></param>
        /// <param name="buttons"></param>
        /// <param name="replyTo"></param>
        /// <param name="disableNotification"></param>
        /// <returns></returns>
        public async Task <Message> Send(String text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Default)
        {
            if (this.ActiveForm == null)
            {
                return(null);
            }

            InlineKeyboardMarkup markup = buttons;

            Message m = null;

            if (text.Length > Constants.Telegram.MaxMessageLength)
            {
                throw new MaxLengthException(text.Length);
            }

            try
            {
                m = await(this.Client.TelegramClient.SendTextMessageAsync(this.DeviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));

                OnMessageSent(new MessageSentEventArgs(m));
            }
            catch (ApiRequestException)
            {
                return(null);
            }
            catch
            {
                return(null);
            }

            return(m);
        }
コード例 #2
0
        public override async Task Render(MessageResult message)
        {
            Bitmap bmp = new Bitmap(800, 600);

            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height);

                g.DrawString("Test Image", new Font("Arial", 24, FontStyle.Bold, GraphicsUnit.Pixel), Brushes.Black, new PointF(50, 50));
            }

            await this.Device.SetAction(Telegram.Bot.Types.Enums.ChatAction.UploadPhoto);

            ButtonForm btn = new ButtonForm();

            //btn.AddButtonRow(new ButtonBase("Zum Testformular 1", CallbackData.Create("navigate", "testform1")), new ButtonBase("Zum Testformular 1", CallbackData.Create("navigate", "testform1")));

            btn.AddButtonRow(new ButtonBase("Information Prompt", CallbackData.Create("navigate", "alert")));

            btn.AddButtonRow(new ButtonBase("Confirmation Prompt with event", CallbackData.Create("navigate", "confirm")));

            btn.AddButtonRow(new ButtonBase("Request Prompt", CallbackData.Create("navigate", "prompt")));


            await this.Device.SendPhoto(bmp, "Test", "", btn);
        }
コード例 #3
0
        /// <summary>
        /// Sends an video
        /// </summary>
        /// <param name="file"></param>
        /// <param name="buttons"></param>
        /// <param name="replyTo"></param>
        /// <param name="disableNotification"></param>
        /// <returns></returns>
        public async Task <Message> SendVideo(String url, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Default)
        {
            if (this.ActiveForm == null)
            {
                return(null);
            }

            InlineKeyboardMarkup markup = buttons;

            Message m = null;

            try
            {
                m = await this.Client.TelegramClient.SendVideoAsync(this.DeviceId, new InputOnlineFile(url), parseMode : parseMode, replyToMessageId : replyTo, replyMarkup : markup, disableNotification : disableNotification);

                OnMessageSent(new MessageSentEventArgs(m));
            }
            catch (ApiRequestException)
            {
                return(null);
            }
            catch
            {
                return(null);
            }

            return(m);
        }
コード例 #4
0
ファイル: NewMapState.cs プロジェクト: Hengle/Fusion3D
        public override void InitState()
        {
            SUI = new UI();


            var bg = new ImageForm().Set(0, 0, AppInfo.W, AppInfo.H, "").SetImage(new Texture2D("FoomED/bg1.jpg", LoadMethod.Single, false));

            SUI.Root.Add(bg);

            var back = new ButtonForm().Set(5, 5, 80, 30, "Back");

            bg.Add(back);

            back.Click = (b) =>
            {
                FusionApp.PopState();
            };

            var lab = new LabelForm().Set(25, 80, 200, 30, "Map Title:");

            bg.Add(lab);

            TextBoxForm map_name = new TextBoxForm().Set(120, 75, 200, 30, "") as TextBoxForm;

            bg.Add(map_name);

            map_name.Enter = (txt) =>
            {
                Directory.CreateDirectory("Game/Maps/" + txt + "/");

                var edit_state = new EditMapState(txt);
                FusionApp.PushState(edit_state);
            };
        }
コード例 #5
0
        public override async Task Render(MessageResult result)
        {
            if (!RenderNecessary)
            {
                return;
            }

            var bf = new ButtonForm(this);

            ButtonBase bOn = new ButtonBase((this.Checked ? CheckedIcon : UncheckedIcon) + " " + CheckedString, "on");

            ButtonBase bOff = new ButtonBase((!this.Checked ? CheckedIcon : UncheckedIcon) + " " + UncheckedString, "off");

            bf.AddButtonRow(bOn, bOff);

            if (this.MessageId != null)
            {
                var m = await this.Device.Edit(this.MessageId.Value, this.Title, bf);
            }
            else
            {
                var m = await this.Device.Send(this.Title, bf, disableNotification : true);

                if (m != null)
                {
                    this.MessageId = m.MessageId;
                }
            }

            this.RenderNecessary = false;
        }
コード例 #6
0
        private async Task ButtonGridTagForm_Init(object sender, InitEventArgs e)
        {
            m_Buttons = new TaggedButtonGrid();

            m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.ReplyKeyboard;

            m_Buttons.EnablePaging = true;

            m_Buttons.HeadLayoutButtonRow = new List <ButtonBase>()
            {
                new ButtonBase("Back", "back")
            };

            var countries = CultureInfo.GetCultures(CultureTypes.SpecificCultures);

            ButtonForm bf = new ButtonForm();

            foreach (var c in countries)
            {
                bf.AddButtonRow(new TagButtonBase(c.EnglishName, c.EnglishName, c.Parent.EnglishName));
            }

            m_Buttons.Tags         = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList();
            m_Buttons.SelectedTags = countries.Select(a => a.Parent.EnglishName).Distinct().OrderBy(a => a).ToList();

            m_Buttons.ButtonsForm = bf;

            m_Buttons.ButtonClicked += Bg_ButtonClicked;

            this.AddControl(m_Buttons);
        }
コード例 #7
0
        public override async Task Render(MessageResult message)
        {
            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            var vkAccs = await api.GetVkAccs();

            int TotalLimit       = 0;
            int TotalAddedFrinds = 0;

            string text = $"У вас {vkAccs.Count} страниц:\n";

            int i = 1;

            foreach (var vkAcc in vkAccs)
            {
                text += $"{i++}) {vkAcc.FirstName} {vkAcc.LastName} {vkAcc.CountAddedFriends}/{vkAcc.FriendsLimit};\n";

                TotalLimit       += vkAcc.FriendsLimit;
                TotalAddedFrinds += vkAcc.CountAddedFriends;
            }

            text += $"\nОбщий лимит {TotalAddedFrinds}/{TotalLimit}";

            ButtonForm btn = new ButtonForm();

            btn.AddButtonRow(
                new ButtonBase("Начать работу", new CallbackData("GoTo", "WorkForm").Serialize()));
            btn.AddButtonRow(
                new ButtonBase("Список аккаунтов", new CallbackData("GoTo", "AccListForm").Serialize()));

            await this.Device.Send(text, btn);
        }
コード例 #8
0
        public override void InitState()
        {
            base.InitState();

            MenuSongSrc = new VSoundSource("Foom/Song/menu1.mp3");
            //e2
            MenuSongSound = MenuSongSrc.Play2D(true);


            SUI = new FusionEngine.Resonance.UI();

            var TitleBG = new ImageForm().Set(0, 0, AppInfo.W, AppInfo.H).SetImage(new Texture2D("Foom/Img/titlebg1.jpg", LoadMethod.Single, false));

            var foomLab = new ImageForm().Set(AppInfo.W / 2 - 350, 40, 700, 356).SetImage(new Texture2D("Foom/Img/foom1.png", LoadMethod.Single, true));

            TitleBG.Add(foomLab);

            var StartGame = new ButtonForm().Set(AppInfo.W / 2 - 120, 380, 260, 40, "Begin...");
            var ExitGame  = new ButtonForm().Set(AppInfo.W / 2 - 120, 430, 260, 40, "Leave...");

            TitleBG.Add(StartGame);
            TitleBG.Add(ExitGame);

            SUI.Root.Add(TitleBG);

            StartGame.Click = (b) =>
            {
                MenuSongSound.Stop();
                FusionApp.PushState(new IntroState(), true);
            };
        }
コード例 #9
0
        public override async Task Render(MessageResult message)
        {
            ButtonForm btn = new ButtonForm();

            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            var vkAcc = await api.GetVkAcc(_vkAccId);

            btn.AddButtonRow(
                new ButtonBase($"Город ({vkAcc.City})", new CallbackData("ChangeCity", "").Serialize()),
                new ButtonBase($"Страна ({vkAcc.Country})", new CallbackData("ChangeCountry", "").Serialize())
                );
            btn.AddButtonRow(
                new ButtonBase($"День ({vkAcc.BirthDay})", new CallbackData("ChangeBirthDay", "").Serialize()),
                new ButtonBase($"Месяц ({vkAcc.BirthMonth})", new CallbackData("ChangeBirthMonth", "").Serialize())
                );
            btn.AddButtonRow(
                new ButtonBase($"Возраст от ({vkAcc.AgeFrom})", new CallbackData("ChangeAgeFrom", "").Serialize()),
                new ButtonBase($"Возраст до ({vkAcc.AgeTo})", new CallbackData("ChangeAgeTo", "").Serialize()),
                new ButtonBase($"Пол ({vkAcc.Sex})", new CallbackData("ChangeSex", "").Serialize())
                );
            btn.AddButtonRow(
                new ButtonBase($"Лимит ({vkAcc.FriendsLimit})", new CallbackData("ChangeLimit", "").Serialize())
                );

            btn.AddButtonRow(
                new ButtonBase("Готово", new CallbackData("GoToCfgAccForm", "").Serialize()));

            this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnEveryCall;
            await this.Device.Send("Нажмите чтобы изменить", btn);
        }
コード例 #10
0
        public override async Task Render(MessageResult message)
        {
            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            var vkAccs = await api.GetVkAccs();

            string text =
                $"У вас {vkAccs.Count} страниц:\n" +
                $"Нажмите на аккаунт для настройки\n";

            ButtonForm btn = new ButtonForm();

            foreach (var vkAcc in vkAccs)
            {
                btn.AddButtonRow(
                    new ButtonBase(
                        $"{vkAcc.FirstName} {vkAcc.LastName} ({vkAcc.CountAddedFriends}/{vkAcc.FriendsLimit})",
                        new CallbackData("GoToCfgAccForm", vkAcc.VkAccId.ToString()).Serialize()));
            }

            btn.AddButtonRow(
                new ButtonBase("Добавить аккаунт", new CallbackData("GoToAddAccForm", "").Serialize()));
            btn.AddButtonRow(
                new ButtonBase("Назад", new CallbackData("GoToStartForm", "").Serialize()));

            this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnEveryCall;
            await this.Device.Send(text, btn);
        }
コード例 #11
0
        /// <summary>
        /// Sends a simple text message
        /// </summary>
        /// <param name="text"></param>
        /// <param name="buttons"></param>
        /// <param name="replyTo"></param>
        /// <param name="disableNotification"></param>
        /// <returns></returns>
        public async Task <Message> Send(long deviceId, String text, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false, ParseMode parseMode = ParseMode.Default, bool MarkdownV2AutoEscape = true)
        {
            if (this.ActiveForm == null)
            {
                return(null);
            }

            InlineKeyboardMarkup markup = buttons;

            if (text.Length > Constants.Telegram.MaxMessageLength)
            {
                throw new MaxLengthException(text.Length);
            }

            if (parseMode == ParseMode.MarkdownV2 && MarkdownV2AutoEscape)
            {
                text = text.MarkdownV2Escape();
            }

            try
            {
                var t = API(a => a.SendTextMessageAsync(deviceId, text, parseMode, replyToMessageId: replyTo, replyMarkup: markup, disableNotification: disableNotification));

                var o = GetOrigin(new StackTrace());
                OnMessageSent(new MessageSentEventArgs(await t, o));

                return(await t);
            }
            catch
            {
                return(null);
            }
        }
コード例 #12
0
        public override async Task Render(MessageResult message)
        {
            String s = "";

            s += "Selected Node: " + (this.view.SelectedNode?.Text ?? "(null)") + "\r\n";

            s += "Visible Node: " + (this.view.VisibleNode?.Text ?? "(top)") + "\r\n";

            s += "Visible Path: " + this.view.GetPath() + "\r\n";
            s += "Selected Path: " + (this.view.SelectedNode?.GetPath() ?? "(null)") + "\r\n";

            ButtonForm bf = new ButtonForm();

            bf.AddButtonRow(new ButtonBase("Back", "back"));

            if (MessageId != null)
            {
                await this.Device.Edit(this.MessageId.Value, s, bf);
            }
            else
            {
                var m = await this.Device.Send(s, bf);

                this.MessageId = m.MessageId;
            }
        }
コード例 #13
0
        public override async Task Render(MessageResult message)
        {
            ButtonForm btn = new ButtonForm();

            btn.AddButtonRow(new ButtonBase("#1 Simple Text", new CallbackData("a", "text").Serialize()), new ButtonBase("#2 Button Test", new CallbackData("a", "buttons").Serialize()));
            btn.AddButtonRow(new ButtonBase("#3 Progress Bar", new CallbackData("a", "progress").Serialize()));
            btn.AddButtonRow(new ButtonBase("#4 Registration Example", new CallbackData("a", "registration").Serialize()));

            btn.AddButtonRow(new ButtonBase("#5 Form1 Command", new CallbackData("a", "form1").Serialize()));

            btn.AddButtonRow(new ButtonBase("#6 Form2 Command", new CallbackData("a", "form2").Serialize()));

            btn.AddButtonRow(new ButtonBase("#7 Data Handling", new CallbackData("a", "data").Serialize()));
            btn.AddButtonRow(new ButtonBase("#8 Calendar Picker", new CallbackData("a", "calendar").Serialize()));
            btn.AddButtonRow(new ButtonBase("#9 Month Picker", new CallbackData("a", "month").Serialize()));

            btn.AddButtonRow(new ButtonBase("#10 TreeView", new CallbackData("a", "treeview").Serialize()));

            btn.AddButtonRow(new ButtonBase("#11 ToggleButtons", new CallbackData("a", "togglebuttons").Serialize()));

            btn.AddButtonRow(new ButtonBase("#12 ButtonGrid", new CallbackData("a", "buttongrid").Serialize()));

            btn.AddButtonRow(new ButtonBase("#13 ButtonGrid Paging & Filter", new CallbackData("a", "buttongridfilter").Serialize()));

            btn.AddButtonRow(new ButtonBase("#14 ButtonGrid Tags (Filter)", new CallbackData("a", "buttongridtags").Serialize()));

            btn.AddButtonRow(new ButtonBase("#15 MultiView", new CallbackData("a", "multiview").Serialize()));

            btn.AddButtonRow(new ButtonBase("#16 CheckedButtonList", new CallbackData("a", "checkedbuttonlist").Serialize()));

            await this.Device.Send("Choose your test:", btn);
        }
コード例 #14
0
        private ButtonForm GeneratePagingView(ButtonForm dataForm)
        {
            ButtonForm bf = new ButtonForm();

            bf = PrepareCheckableLayout(dataForm);

            //No Items
            if (this.ButtonsForm.Count == 0)
            {
                bf.AddButtonRow(new ButtonBase(NoItemsLabel, "$"));
            }

            if (this.IsNavigationBarVisible)
            {
                //🔍
                List <ButtonBase> lst = new List <ButtonBase>();
                lst.Add(new ButtonBase(PreviousPageLabel, "$previous$"));
                lst.Add(new ButtonBase(String.Format(Localizations.Default.Language["ButtonGrid_CurrentPage"], this.CurrentPageIndex + 1, this.PageCount), "$site$"));
                lst.Add(new ButtonBase(NextPageLabel, "$next$"));

                //if (this.EnableSearch)
                //{
                //    lst.Insert(2, new ButtonBase("🔍 " + (this.SearchQuery ?? ""), "$search$"));
                //}

                bf.InsertButtonRow(0, lst);

                bf.AddButtonRow(lst);
            }

            return(bf);
        }
コード例 #15
0
        /// <summary>
        /// Edits the text message
        /// </summary>
        /// <param name="messageId"></param>
        /// <param name="text"></param>
        /// <param name="buttons"></param>
        /// <returns></returns>
        public async Task <Message> Edit(Message message, ButtonForm buttons = null)
        {
            if (this.ActiveForm == null)
            {
                return(null);
            }

            InlineKeyboardMarkup markup = buttons;

            if (message.Text.Length > Constants.Telegram.MaxMessageLength)
            {
                throw new MaxLengthException(message.Text.Length);
            }

            try
            {
                return(await this.Client.TelegramClient.EditMessageTextAsync(this.DeviceId, message.MessageId, message.Text, replyMarkup : markup));
            }
            catch
            {
            }


            return(null);
        }
コード例 #16
0
        private async Task CheckedButtonListForm_Init(object sender, InitEventArgs e)
        {
            m_Buttons = new CheckedButtonList();

            m_Buttons.KeyboardType = TelegramBotBase.Enums.eKeyboardType.InlineKeyBoard;
            m_Buttons.EnablePaging = true;

            m_Buttons.HeadLayoutButtonRow = new List <ButtonBase>()
            {
                new ButtonBase("Back", "back"), new ButtonBase("Switch Keyboard", "switch")
            };

            m_Buttons.SubHeadLayoutButtonRow = new List <ButtonBase>()
            {
                new ButtonBase("No checked items", "$")
            };

            ButtonForm bf = new ButtonForm();

            for (int i = 0; i < 30; i++)
            {
                bf.AddButtonRow($"{i}. Item", i.ToString());
            }

            m_Buttons.ButtonsForm = bf;

            m_Buttons.ButtonClicked  += Bg_ButtonClicked;
            m_Buttons.CheckedChanged += M_Buttons_CheckedChanged;

            this.AddControl(m_Buttons);
        }
コード例 #17
0
        public override async Task Render(MessageResult message)
        {
            var bf = new ButtonForm();

            bf.AddButtonRow("Back", "back");

            await Device.Send($"Your current count is at: {counter}", bf, disableNotification : true);
        }
コード例 #18
0
        public override async Task Render(MessageResult message)
        {
            ButtonForm btn = new ButtonForm();

            btn.AddButtonRow(
                new ButtonBase("Отмена", new CallbackData("GoTo", "AccListForm").Serialize()));

            await this.Device.Send("Click a button", btn);
        }
コード例 #19
0
        public async override Task Render(MessageResult message)
        {
            ButtonForm bf = new ButtonForm();

            bf.AddButtonRow(new ButtonBase("Goto Step 1", "start"));
            bf.AddButtonRow(new ButtonBase("Back", "back"));

            await this.Device.Send("Register Steps", bf);
        }
コード例 #20
0
        /// <summary>
        /// Sends an image
        /// </summary>
        /// <param name="image"></param>
        /// <param name="name"></param>
        /// <param name="buttons"></param>
        /// <param name="replyTo"></param>
        /// <param name="disableNotification"></param>
        /// <returns></returns>
        public async Task <Message> SendPhoto(Bitmap image, String name, ButtonForm buttons = null, int replyTo = 0, bool disableNotification = false)
        {
            using (var fileStream = Tools.Images.ToStream(image, ImageFormat.Png))
            {
                InputOnlineFile fts = new InputOnlineFile(fileStream, name);

                return(await SendPhoto(fts, buttons, replyTo, disableNotification));
            }
        }
コード例 #21
0
        private void GotoScreen(ScreenType targetScreenType)
        {
            propMenuItem.Visible = false;
            currentScreenType    = targetScreenType;
            ReleaseCheckedMenu();
            switch (targetScreenType)
            {
            case ScreenType.Welcome:
                _ = new WelcomeForm {
                    panel1 = { Parent = panel1 }
                };
                break;

            case ScreenType.Button:
                _ = new ButtonForm {
                    panel1 = { Parent = panel1 }
                };
                break;

            case ScreenType.CheckBox:
                _ = new CheckBoxForm {
                    panel1 = { Parent = panel1 }
                };
                break;

            case ScreenType.RadioButton:
                _ = new RadioButtonForm {
                    panel1 = { Parent = panel1 }
                };
                break;

            case ScreenType.MessageBox:
                _ = new MessageBoxForm {
                    panel1 = { Parent = panel1 }
                };
                break;

            case ScreenType.ProgressBar:
                _ = new ProgressBarForm(propMenuItem)
                {
                    panel1 = { Parent = panel1 }
                };
                propMenuItem.Visible = true;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(targetScreenType), targetScreenType, null);
            }

            var element = controlsMenuItem.Items.Cast <MenuItem>().FirstOrDefault(x => (ScreenType)x.Tag == targetScreenType);

            if (element != null)
            {
                element.Checked = true;
            }
        }
コード例 #22
0
        private async Task LinkReplaceTest_Opened(object sender, EventArgs e)
        {
            ButtonForm bf = new ButtonForm();

            bf.AddButtonRow(new ButtonBase("Open GroupChange Test", "groupchange"));
            bf.AddButtonRow(new ButtonBase("Open WelcomeUser Test", "welcomeuser"));
            bf.AddButtonRow(new ButtonBase("Open LinkReplace Test", "linkreplace"));

            await this.Device.Send("LinkReplaceTest started, click to switch", bf);
        }
コード例 #23
0
        public async override Task Render(MessageResult message)
        {
            ButtonForm btn = new ButtonForm();

            btn.AddButtonRow(new ButtonBase("#4.1 Per Form", new CallbackData("a", "form").Serialize()));
            btn.AddButtonRow(new ButtonBase("#4.2 Per Step", new CallbackData("a", "step").Serialize()));
            btn.AddButtonRow(new ButtonBase("Back", new CallbackData("a", "backtodashboard").Serialize()));

            await this.Device.Send("Choose your test:", btn);
        }
コード例 #24
0
        public override async Task Render(MessageResult message)
        {
            var bf = new ButtonForm();

            bf.AddButtonRow("Open Async Form with AutoCleanupForm", "async_del");

            bf.AddButtonRow("Open Async Form with Edit", "async");

            await Device.Send("Choose your option", bf);
        }
コード例 #25
0
ファイル: DeviceSession.cs プロジェクト: Xilosof/ModelScout
        /// <summary>
        /// Edits the reply keyboard markup (buttons)
        /// </summary>
        /// <param name="messageId"></param>
        /// <param name="bf"></param>
        /// <returns></returns>
        public async Task <Message> EditReplyMarkup(int messageId, ButtonForm bf)
        {
            try
            {
                return(await this.Client.TelegramClient.EditMessageReplyMarkupAsync(this.DeviceId, messageId, bf));
            }
            catch
            {
            }

            return(null);
        }
コード例 #26
0
        public ProjectManagerForm()
        {
            AfterSet = () =>
            {
                Title.Text = "Vivid Project Manager";
                if (NewProject == null)
                {
                    LoadProject = new ButtonForm().Set(5, 35, 120, 25, "Edit Project") as ButtonForm;

                    NewProject = new ButtonForm().Set(5, 5, 120, 25, "New Project") as ButtonForm;

                    DeleteProject = new ButtonForm().Set(5, 65, 120, 25, "Delete Project") as ButtonForm;

                    var projGroup = new GroupForm().Set(5, 5, 250, 400) as GroupForm;

                    Body.Add(projGroup);

                    var projInfoGroup = new GroupForm().Set(260, 5, 405, 500) as GroupForm;

                    Body.Add(projInfoGroup);

                    projGroup.Add(NewProject);
                    projGroup.Add(LoadProject);
                    projGroup.Add(DeleteProject);


                    LoadProject.Click = (b) =>
                    {
                        var cp = ProjectTree.Selected;
                        Console.WriteLine("Editing Project:" + cp.TextData[0] + " Type:" + cp.TextData[2]);
                        switch (cp.TextData[2])
                        {
                        case "GameMap":
                            EditProject(cp.TextData[0], Vivid.Project.ProjectType.GameMap);
                            break;
                        }
                    };

                    NewProject.Click = (b) =>
                    {
                        var new_proj = new NewProjectForm().Set(AppInfo.W / 2 - 200, AppInfo.H / 2 - 150, 400, 300, "New Project") as NewProjectForm;

                        UI.CurUI.Top = new_proj;
                    };

                    ProjectTree = new TreeViewForm().Set(AppInfo.W - 350, 10, 320, 450, "") as TreeViewForm;

                    ProjectTree.Root = new TreeNode("Projets");

                    Body.Add(ProjectTree);
                }
            };
        }
コード例 #27
0
ファイル: WorkForm.cs プロジェクト: Xilosof/ModelScout
        public override async Task Render(MessageResult message)
        {
            if (message.Handled)
            {
                return;
            }

            int        Count = 20; //Need move count to User.Properties
            ButtonForm btn;

            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            await api.ClearCheckedClients();

            var clients = await api.GetUnchekedClientsForActivesVkAccs(Count);

            foreach (var client in clients)
            {
                btn = new ButtonForm();

                var photos = await api.GetVkProfilePhotosMaxSizesAsync(client);

                try {
                    var msgs = await this.Client.TelegramClient.SendMediaGroupAsync(photos, this.Device.DeviceId);

                    foreach (var msg in msgs)
                    {
                        this.OldMessages.Add(msg.MessageId);
                    }

                    string text = $"{client.ProfileVkId}";

                    btn.AddButtonRow(
                        new ButtonBase("Принять", new CallbackData("AcceptClient", $"{client.VkClientId}").Serialize()),
                        new ButtonBase("Отклонить", new CallbackData("DeclineClient", $"{client.VkClientId}").Serialize()));

                    await this.Device.Send(text, btn);

                    await Task.Delay(1000);
                } catch (Telegram.Bot.Exceptions.ApiRequestException) {
                    await api.SetClientStatusError(client.VkClientId);
                }
            }

            btn = new ButtonForm();

            btn.AddButtonRow(
                new ButtonBase("Следующая выборка", new CallbackData("NextSample", "").Serialize()));
            btn.AddButtonRow(
                new ButtonBase("Назад", new CallbackData("GoToStartForm", "").Serialize()));

            await this.Device.Send("Click a button", btn);
        }
コード例 #28
0
ファイル: TaskEditForm.cs プロジェクト: CherryRook9/TaskBot
        public override async Task Render(MessageResult message)
        {
            var task = await db.Tasks.Include(x => x.Responsible).FirstAsync(x => x.Id == editTaskId);

            switch (currentState)
            {
            case EditState.Watch:
                await Device.Send(
                    $"{task.Title}\n{task.Description}\n{task.Responsible.Login}\n" +
                    $"Приоритет: {task.Priority}\nДедлайн: {task.Deadline}");

                var buttons = new ButtonForm();

                buttons.AddButtonRow(
                    new ButtonBase("Название", new CallbackData("edit-title", "").Serialize()),
                    new ButtonBase("Описание", new CallbackData("edit-description", "").Serialize()),
                    new ButtonBase("Ответственный", new CallbackData("responsible", "").Serialize()));

                buttons.AddButtonRow(
                    new ButtonBase("Дата", new CallbackData("deadline", "").Serialize()),
                    new ButtonBase("Приоритет", new CallbackData("priority", "").Serialize()));

                buttons.AddButtonRow("Звершить редактирование", new CallbackData("back", "").Serialize());
                await Device.Send("Выберете, что редактировать", buttons);

                return;

            case EditState.Title:
                await Device.Send($"Введите новое название");

                return;

            case EditState.Description:
                await Device.Send($"Введите новое описание");

                return;

            case EditState.Responsible:
                await NavigateTo(DI.Resolve(new AssignTaskForm(this, editTaskId)));

                currentState = EditState.Watch;
                return;

            case EditState.Deadline:
                return;

            case EditState.Priority:
                return;

            default:
                return;
            }
        }
コード例 #29
0
        /// <summary>
        /// Edits the reply keyboard markup (buttons)
        /// </summary>
        /// <param name="messageId"></param>
        /// <param name="bf"></param>
        /// <returns></returns>
        public async Task <Message> EditReplyMarkup(int messageId, ButtonForm bf)
        {
            try
            {
                return(await API(a => a.EditMessageReplyMarkupAsync(this.DeviceId, messageId, bf)));
            }
            catch
            {
            }

            return(null);
        }
コード例 #30
0
ファイル: MenuForm.cs プロジェクト: CherryRook9/TaskBot
        public override async Task Render(MessageResult message)
        {
            await base.Render(message);

            var buttons = new ButtonForm();

            buttons.AddButtonRow(
                new ButtonBase("Создать задачу", new CallbackData("nav", "create").Serialize()),
                new ButtonBase("Созданные задачи", new CallbackData("nav", "list-created").Serialize()),
                new ButtonBase("Назначенные задачи", new CallbackData("nav", "list-assigned").Serialize()));
            await this.Device.Send("Выберите действие", buttons);
        }