public Grid TextSizeStepper(ICustomTextEdit editor) { Grid stepper = new Grid { RowSpacing = 0, Margin = 0 }; //stepper.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); //stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); //stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(3, GridUnitType.Star) }); //stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(3, GridUnitType.Star) }); //stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); //stepper.BackgroundColor = MainTabbedPage.secondBarColor; //stepper.Children.Add(TextDn(editor), 1, 0); //stepper.Children.Add(TextUp(editor), 2, 0); stepper.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); stepper.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); stepper.BackgroundColor = MainTabbedPage.secondBarColor; stepper.Children.Add(TextDn(editor), 0, 0); stepper.Children.Add(TextUp(editor), 1, 0); return(stepper); }
public ImageButton TextUp(ICustomTextEdit editor) { ImageButton button = new ImageButton() { Source = "icons8BigA40.png", HeightRequest = MainTabbedPage.buttonHeightRequest, WidthRequest = MainTabbedPage.buttonHeightRequest, HorizontalOptions = LayoutOptions.CenterAndExpand, BackgroundColor = MainTabbedPage.secondBarColor, }; button.Clicked += async(object sender, EventArgs e) => { float size = editor.GetFontSize(); if (size < 128) { editor.SetFontSize(size + 1); } }; return(button); }
public Button BtnInsertText(ICustomTextEdit editor, string title, int fontSize, string str) { Button button = new Button() { Margin = 0, BorderWidth = 0, Padding = 0, Text = title, HeightRequest = MainTabbedPage.buttonHeightRequest, HorizontalOptions = LayoutOptions.CenterAndExpand, BackgroundColor = MainTabbedPage.secondBarColor, FontSize = fontSize, }; button.Clicked += async(object sender, EventArgs e) => { editor.InsertText(str); if (Gui.platform != Kaemika.Platform.iOS) { editor.ShowInputMethod(); } }; return(button); }
public OutputPage() { Title = "Output"; IconImageSource = "icons8truefalse100.png"; outputActions = new Dictionary <string, OutputAction>(); foreach (OutputAction outputAction in outputActionsList()) { outputActions[outputAction.name] = outputAction; } // in iOS>Resource the images of the TitleBar buttons must be size 40, otherwise they will scale but still take the horizontal space of the original textOutputButton = TextOuputButton(); graphOutputButton = GraphOutputButton(); scoreOutputButton = ScoreOutputButton(); ToolbarItems.Add(scoreOutputButton); scoreOutputButton.IsEnabled = false; ToolbarItems.Add(graphOutputButton); graphOutputButton.IsEnabled = true; ToolbarItems.Add(textOutputButton); textOutputButton.IsEnabled = true; ToolbarItems.Add( new ToolbarItem("CopyAll", "icons8export96", async() => { string text = ""; if (currentOutputAction.kind == OutputKind.Text) { text = editor.GetText(); } if (currentOutputAction.kind == OutputKind.Graph) { var layout = GraphLayoutHandler.GraphLayout(); if (layout == null) { return; } var graph = layout.GRAPH; if (graph == null) { return; } text = Export.GraphViz(graph); } if (currentOutputAction.kind == OutputKind.Score) { // #### SVG } if (text != "") { await Clipboard.SetTextAsync(text); } })); editor = Kaemika.XMGui.TextEditor(); editor.SetEditable(false); plot = new GraphLayoutView(); score = new ScoreView(); var stepper = MainTabbedPage.theModelEntryPage.TextSizeStepper(editor); var startButton = MainTabbedPage.theModelEntryPage.StartButton(switchToChart: false, switchToOutput: false); // just needed to get its HightRequest outputPicker = OutputPicker(); int bottomBarPadding = 4; Grid bottomBar = new Grid { RowSpacing = 0, Padding = bottomBarPadding }; bottomBar.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); bottomBar.BackgroundColor = MainTabbedPage.secondBarColor; bottomBar.Children.Add(stepper, 0, 0); bottomBar.Children.Add(outputPicker, 1, 0); Grid.SetColumnSpan(outputPicker, 2); grid = new Grid { ColumnSpacing = 0 }; grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(startButton.HeightRequest + 2 * bottomBarPadding) }); grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); backdrop = new Label { Text = "", BackgroundColor = Color.White }; overlapping = new AbsoluteLayout(); AbsoluteLayout.SetLayoutBounds(score, new Rectangle(0, 0, 1, 1)); AbsoluteLayout.SetLayoutFlags(score, AbsoluteLayoutFlags.All); AbsoluteLayout.SetLayoutBounds(plot, new Rectangle(0, 0, 1, 1)); AbsoluteLayout.SetLayoutFlags(plot, AbsoluteLayoutFlags.All); AbsoluteLayout.SetLayoutBounds(backdrop, new Rectangle(0, 0, 1, 1)); AbsoluteLayout.SetLayoutFlags(backdrop, AbsoluteLayoutFlags.All); AbsoluteLayout.SetLayoutBounds(editor.AsView(), new Rectangle(0, 0, 1, 1)); AbsoluteLayout.SetLayoutFlags(editor.AsView(), AbsoluteLayoutFlags.All); overlapping.Children.Add(score); overlapping.Children.Add(plot); overlapping.Children.Add(backdrop); overlapping.Children.Add(editor.AsView()); grid.Children.Add(overlapping, 0, 0); grid.Children.Add(bottomBar, 0, 1); Content = grid; }
public ModelEntryPage() { modelInfo = new ModelInfo(); Title = modelInfo.title; IconImageSource = "icons8mindmap96.png"; // in iOS>Resource the images of the TitleBar buttons must be size 40, otherwise they will scale but still take the horizontal space of the original //ToolbarItems.Add(DeleteItem()); editItem = EditItem(); ToolbarItems.Add(editItem); pasteAllItem = PasteAllItem(); pasteAllItem.IsEnabled = false; ToolbarItems.Add(pasteAllItem); copyAllItem = CopyAllItem(); ToolbarItems.Add(copyAllItem); editor = Kaemika.XMGui.TextEditor(); editor.OnTextChanged( async(ICustomTextEdit textEdit) => { if (!modelInfo.modified) { modelInfo.modified = true; ResetCurrentModels(); } }); editor.OnFocusChange( async(ICustomTextEdit textEdit) => { if (modelInfo.modified) { SaveEditor(); } }); noisePicker = NoisePicker(); subPicker = SymbolPicker("Sub", 7, subscripts); supPicker = SymbolPicker("Sup", 7, superscripts); mathPicker = SymbolPicker(" ∑ ", 12, math); spamSpecies = BtnInsertText(editor, "species", 8, "species "); spamAt = BtnInsertText(editor, "@", 12, " @ "); spamNumber = BtnInsertText(editor, "number", 8, "number "); spamEq = BtnInsertText(editor, "=", 12, " = "); spamPlus = BtnInsertText(editor, "+", 12, " + "); spamArrow = BtnInsertText(editor, "->", 12, " -> "); spamBiArrow = BtnInsertText(editor, "<->", 12, " <-> "); spamSharp = BtnInsertText(editor, "Ø", 12, "Ø"); spamCatal = BtnInsertText(editor, ">>", 12, " >> "); spamBra = BtnInsertText(editor, "{", 12, "{"); spamKet = BtnInsertText(editor, "}", 12, "}"); spamReport = BtnInsertText(editor, "report", 8, "report "); //spamComma = BtnInsertText(editor, ",", 12, ", "); spamEquil = BtnInsertText(editor, "equilib.", 8, "equilibrate for "); startButton = StartButton(switchToChart: true, switchToOutput: false); deviceButton = DeviceButton(); stepper = TextSizeStepper(editor); int topBarPadding = 0; topBar = new Grid { RowSpacing = 0, ColumnSpacing = 0, Padding = topBarPadding }; topBar.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); topBar.BackgroundColor = MainTabbedPage.secondBarColor; topBar.IsVisible = false; topBar.Children.Add(spamSpecies, 0, 0); topBar.Children.Add(spamAt, 1, 0); topBar.Children.Add(spamNumber, 2, 0); topBar.Children.Add(spamEq, 3, 0); topBar.Children.Add(spamPlus, 4, 0); topBar.Children.Add(spamArrow, 5, 0); topBar.Children.Add(spamBiArrow, 6, 0); topBar.Children.Add(spamSharp, 7, 0); topBar.Children.Add(spamCatal, 8, 0); topBar.Children.Add(spamBra, 9, 0); topBar.Children.Add(spamKet, 10, 0); topBar.Children.Add(spamReport, 11, 0); topBar.Children.Add(spamEquil, 12, 0); topBar.Children.Add(subPicker, 13, 0); topBar.Children.Add(supPicker, 14, 0); topBar.Children.Add(mathPicker, 15, 0); //topBar.Children.Add(spamComma, xx, 0); int bottomBarPadding = 4; bottomBar = new Grid { RowSpacing = 0, Padding = bottomBarPadding }; bottomBar.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // stepper bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // noisePicker bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // deviceButton bottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); // startButton bottomBar.BackgroundColor = MainTabbedPage.secondBarColor; bottomBar.Children.Add(stepper, 0, 0); bottomBar.Children.Add(deviceButton, 1, 0); bottomBar.Children.Add(noisePicker, 2, 0); bottomBar.Children.Add(startButton, 3, 0); Grid grid = new Grid { ColumnSpacing = 0 }; grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(spamSpecies.HeightRequest + 2 * topBarPadding) }); // top bar grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) }); // editor grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(startButton.HeightRequest + 2 * bottomBarPadding) }); // bottom bar grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); grid.Children.Add(topBar, 0, 0); grid.Children.Add(editor.AsView(), 0, 1); grid.Children.Add(bottomBar, 0, 2); Content = grid; }