public ProgramTreeControl() { InitializeComponent(); this.hdrDescr.Content = Translate.fmt("lbl_descr"); this.hdrCat.Content = Translate.fmt("lbl_log_type"); this.hdrAccess.Content = Translate.fmt("lbl_access"); this.hdrRules.Content = Translate.fmt("lbl_rules"); this.hdrAllowed.Content = Translate.fmt("filter_recent_allowed"); this.hdrBlocked.Content = Translate.fmt("filter_recent_blocked"); this.hdrActivity.Content = Translate.fmt("sort_act"); this.hdrSockets.Content = Translate.fmt("lbl_socks"); this.hdrUpRate.Content = Translate.fmt("lbl_upload"); this.hdrDownRate.Content = Translate.fmt("lbl_download"); this.hdrUpTotal.Content = Translate.fmt("lbl_uploaded"); this.hdrDownTotal.Content = Translate.fmt("lbl_downloaded"); this.hdrProg.Content = Translate.fmt("lbl_program"); treeView.Loaded += (sender, e) => { headerPresenter = WpfFunc.FindChild <GridViewHeaderRowPresenter>(treeView); if (headerPresenter == null) { return; } allColumns = headerPresenter.Columns.Cast <GridViewColumn>().ToArray(); Restore(App.GetConfig("GUI", "progTree_Columns", "")); headerMenu = new ContextMenu(); ContextMenuService.SetContextMenu(headerPresenter, headerMenu); if (headerMenu.Items.Count == 0) { CreateHeaderMenu(); } }; treeView.Root = root = new ProgTreeRoot(""); treeView.ShowRoot = false; treeView.ShowLines = false; treeView.PreviewKeyDown += TreeView_KeyDown; var contextMenu = new ContextMenu(); menuAdd = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_add_prog"), null, TryFindResource("Icon_Plus")); menuAddSub = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_add_to_set"), null, TryFindResource("Icon_Plus")); contextMenu.Items.Add(new Separator()); menuRemove = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_del_progs"), null, TryFindResource("Icon_Remove")); contextMenu.Items.Add(new Separator()); menuMerge = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_merge_progs"), null, TryFindResource("Icon_Merge")); menuSplit = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_split_progs"), null, TryFindResource("Icon_Split")); contextMenu.Items.Add(new Separator()); menuAccess = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_access_prog"), null, TryFindResource("Icon_NetAccess")); menuAccessNone = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_none"), null, null, ProgramSet.Config.AccessLevels.Unconfigured); menuAccessAllow = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_allow"), null, null, ProgramSet.Config.AccessLevels.FullAccess); menuAccessCustom = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_edit"), null, null, ProgramSet.Config.AccessLevels.CustomConfig); //menuAccessIn = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_inbound"), null, null, ProgramSet.Config.AccessLevels.InBoundAccess); //menuAccessOut = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_outbound"), null, null, ProgramSet.Config.AccessLevels.OutBoundAccess); menuAccessLan = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_lan"), null, null, ProgramSet.Config.AccessLevels.LocalOnly); menuAccessBlock = WpfFunc.AddMenu(menuAccess, Translate.fmt("acl_block"), null, null, ProgramSet.Config.AccessLevels.BlockAccess); foreach (MenuItem item in menuAccess.Items) { item.Background = ProgramControl.GetAccessColor((ProgramSet.Config.AccessLevels)item.Tag); //item.IsCheckable = true; } menuNotify = WpfFunc.AddMenu(contextMenu, Translate.fmt("lbl_notify"), null); menuNotify.IsCheckable = true; contextMenu.Items.Add(new Separator()); menuRename = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_rename_prog"), null, TryFindResource("Icon_Rename")); menuSetIcon = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_icon_prog"), null, TryFindResource("Icon_SetIcon")); menuCategory = WpfFunc.AddMenu(contextMenu, Translate.fmt("btn_cat_prog"), null, TryFindResource("Icon_Category")); treeView.ContextMenu = contextMenu; }
private void CheckRules() { int SelectedCount = 0; int EnabledCount = 0; int DisabledCount = 0; int AllowingCount = 0; int BlockingCount = 0; int ChangedCount = 0; int ChangedWBack = 0; foreach (RuleItem item in rulesGrid.SelectedItems) { SelectedCount++; if (item.Rule.Enabled) { EnabledCount++; } else { DisabledCount++; } if (item.Rule.Action == FirewallRule.Actions.Allow) { AllowingCount++; } if (item.Rule.Action == FirewallRule.Actions.Block) { BlockingCount++; } if (item.Rule.State != FirewallRuleEx.States.Approved) { ChangedCount++; if (item.Rule.Backup != null) { ChangedWBack++; } } } menuEnableRule.IsEnabled = DisabledCount >= 1; menuDisableRule.IsEnabled = EnabledCount >= 1; menuRemoveRule.IsEnabled = SelectedCount >= 1; menuBlockRule.IsEnabled = AllowingCount >= 1; menuAllowRule.IsEnabled = BlockingCount >= 1; menuEditRule.IsEnabled = SelectedCount == 1; menuCloneRule.IsEnabled = SelectedCount >= 1; menuApproveRule.IsEnabled = ChangedCount >= 1; menuRestoreRule.IsEnabled = ChangedCount >= 1; menuRedoRule.IsEnabled = ChangedWBack >= 1; if (firewallPage == null) { return; } firewallPage.btnEnableRule.IsEnabled = DisabledCount >= 1; firewallPage.btnDisableRule.IsEnabled = EnabledCount >= 1; firewallPage.btnRemoveRule.IsEnabled = SelectedCount >= 1; firewallPage.btnBlockRule.IsEnabled = AllowingCount >= 1; firewallPage.btnAllowRule.IsEnabled = BlockingCount >= 1; firewallPage.btnEditRule.IsEnabled = SelectedCount == 1; firewallPage.btnCloneRule.IsEnabled = SelectedCount >= 1; var btnApprove = WpfFunc.FindChild <RibbonButton>(firewallPage.btnApprove); var btnRestore = WpfFunc.FindChild <RibbonButton>(firewallPage.btnRestore); var btnApply = WpfFunc.FindChild <RibbonButton>(firewallPage.btnApply); if (btnApprove != null && btnRestore != null && btnApply != null) { btnRestore.IsEnabled = btnApprove.IsEnabled = ChangedCount >= 1; btnApply.IsEnabled = ChangedWBack >= 1; } }