/// <summary> /// handles the expression window gettign focus /// </summary> public void OnEnter() { ThemeManager.SetupTextEditor(AceTextEditor, Syntax.Json); ThemeManager.SetupTextEditor(LanguageTextEditor, Syntax.Json); ThemeManager.SetupTextEditor(CodeTextEditor, Syntax.Javascript); ThemeManager.SetupSearchPanel(acePanel, langPanel, codePanel); if (AddonManager.CurrentAddon != null) { _expressions = AddonManager.CurrentAddon.Expressions; ExpressionListBox.ItemsSource = _expressions; if (_expressions.Any()) { ExpressionListBox.SelectedIndex = 0; _selectedExpression = _expressions.Values.First(); AceTextEditor.Text = _selectedExpression.Ace; LanguageTextEditor.Text = _selectedExpression.Language; CodeTextEditor.Text = _selectedExpression.Code; Category.Text = _selectedExpression.Category; } } else { ExpressionListBox.ItemsSource = null; AceTextEditor.Text = string.Empty; LanguageTextEditor.Text = string.Empty; CodeTextEditor.Text = string.Empty; } folding.UpdateFoldings(aceFoldingManager, CodeTextEditor.Document); }
/// <summary> /// handles switching expression /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ExpressionListBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) { if (ExpressionListBox.SelectedIndex == -1) { //ignore return; } //save current selection if (_selectedExpression != null) { _selectedExpression.Ace = AceTextEditor.Text; _selectedExpression.Language = LanguageTextEditor.Text; _selectedExpression.Code = CodeTextEditor.Text; _selectedExpression.Category = Category.Text; _expressions[_selectedExpression.Id] = _selectedExpression; AddonManager.CurrentAddon.Expressions = _expressions; DataAccessFacade.Insatnce.AddonData.Upsert(AddonManager.CurrentAddon); } var selectedKey = ((KeyValuePair <string, Expression>)ExpressionListBox.SelectedItem).Key; _selectedExpression = _expressions[selectedKey]; Category.Text = _selectedExpression.Category; AceTextEditor.Text = _selectedExpression.Ace; LanguageTextEditor.Text = _selectedExpression.Language; CodeTextEditor.Text = _selectedExpression.Code; folding.UpdateFoldings(aceFoldingManager, CodeTextEditor.Document); }
/// <summary> /// handles the save button in add expression child window /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SaveExpressionButton_Click(object sender, RoutedEventArgs e) { var id = ExpressionIdText.Text.ToLower().Replace(" ", "-"); var category = ExpressionCategoryText.Text; var returntype = ReturnTypeDropdown.Text; var translatedname = TranslatedName.Text; var isvariadic = TranslatedName.Text; var desc = DescriptionText.Text.Replace("\"", "\\\""); if (_expressions.ContainsKey(id)) { NotificationManager.PublishErrorNotification("expression id already exists"); return; } var expression = new Expression { Id = id.Trim().ToLower(), Category = category.Trim().ToLower(), ReturnType = returntype, IsVariadicParameters = isvariadic, TranslatedName = translatedname, Description = desc }; expression.Ace = TemplateHelper.ExpAces(expression); expression.Language = TemplateCompiler.Insatnce.CompileTemplates(AddonManager.CurrentAddon.Template.ExpressionLanguage, expression); expression.Code = TemplateCompiler.Insatnce.CompileTemplates(AddonManager.CurrentAddon.Template.ActionCode, expression); _expressions.Add(id, expression); ExpressionListBox.Items.Refresh(); ExpressionListBox.SelectedIndex = _expressions.Count - 1; AddonManager.CurrentAddon.Expressions = _expressions; NewExpressionWindow.IsOpen = false; }
/// <summary> /// clears all inputs on expression window /// </summary> public void Clear() { _expressions = new Dictionary <string, Expression>(); _selectedExpression = null; ExpressionListBox.ItemsSource = null; AceTextEditor.Text = string.Empty; CodeTextEditor.Text = string.Empty; LanguageTextEditor.Text = string.Empty; Category.Text = string.Empty; }
/// <summary> /// removes selected expression /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RemoveExpression_OnClick(object sender, RoutedEventArgs e) { if (_selectedExpression != null) { _expressions.Remove(_selectedExpression.Id); ExpressionListBox.ItemsSource = _expressions; ExpressionListBox.Items.Refresh(); //clear editors AceTextEditor.Text = string.Empty; LanguageTextEditor.Text = string.Empty; CodeTextEditor.Text = string.Empty; _selectedExpression = null; } else { NotificationManager.PublishErrorNotification("failed to remove condition, no condition selected"); } }