コード例 #1
0
        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;
        }
コード例 #2
0
        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;
            }
        }