示例#1
0
 public StartupSpecialHandler(Configuration.ConfigGallery gallerySettings, TagsModel tagsModel, MetadataKeywordLists metadataKeywordLists, SearchHandler searchHandler)
 {
     GallerySettings      = gallerySettings;
     TagsModel            = tagsModel;
     MetadataKeywordLists = metadataKeywordLists;
     SearchHandler        = searchHandler;
 }
示例#2
0
        public BookmarksTreeView(BookmarksFilter bookmarksFilter, BookmarksModel bookmarksModel, Configuration.ConfigBookmarksList bookmarksListSettings, WebBrowserTreeNodeToolTip webBrowserToolTip, IQueryParser queryParser, ICacheFileSystem cacheFileSystem, SearchHandler searchHandler)
        {
            InitializeComponent();

            BookmarksFilter       = bookmarksFilter;
            BookmarksModel        = bookmarksModel;
            BookmarksListSettings = bookmarksListSettings;
            WebBrowserToolTip     = webBrowserToolTip;
            QueryParser           = queryParser;
            CacheFileSystem       = cacheFileSystem;
            SearchHandler         = searchHandler;

            treeView            = new TreeViewEx();
            treeViewContextMenu = new ContextMenu();
            treeViewNodeSorter  = new BookmarksTreeViewNodeSorter();

            SuspendLayout();

            //
            //
            //
            treeViewContextMenu.Tag    = treeView;
            treeViewContextMenu.Popup += TreeViewContextMenu_Popup;

            //
            //
            //
            treeView.HideSelection = false;
            treeView.HotTracking   = true;
            treeView.Dock          = DockStyle.Fill;
            //treeView.TreeViewNodeSorter = new TreeViewNodeSorter();
            treeView.Sorted         = true;
            treeView.ContextMenu    = treeViewContextMenu;
            treeView.NodeActivated += TreeView_NodeActivated;
            treeView.NodeSelected  += TreeView_NodeSelected;
            treeView.AfterExpand   += TreeView_AfterExpand;
            treeView.AfterCollapse += TreeView_AfterCollapse;
            treeView.ItemDrag      += TreeView_ItemDrag;
            treeView.DragDrop      += TreeView_DragDrop;
            treeView.DragOver      += TreeView_DragOver;
            treeView.DragEnter     += TreeView_DragEnter;
            treeView.AllowDrop      = true;

            //
            // this
            //
            Controls.Add(treeView);

            BookmarksModel.FolderAdded  += BookmarksModel_FolderAdded;
            bookmarksFilter.TextChanged += BookmarksFilter_TextChanged;

            ResumeLayout(false);
        }
示例#3
0
 public SearchDoArg(SearchArg searchArg
                    , TagsModel tagsModel
                    , SearchHandler searchHandler
                    , GallerySortType sortType
                    , SortOrder sortOrder
                    , MetadataKeywordLists metadataKeywordLists)
 {
     SearchArg            = searchArg;
     TagsModel            = tagsModel;
     SearchHandler        = searchHandler;
     SortType             = sortType;
     SortOrder            = sortOrder;
     MetadataKeywordLists = metadataKeywordLists;
 }
示例#4
0
        private void TreeView_NodeActivated(object sender, TreeViewExEventArgs e)
        {
            AddBrowsingItemTask browsingRecord = e.Node.Tag as AddBrowsingItemTask;

            if (browsingRecord != null)
            {
                SearchHandler.ParseAndExecuteSearchText(browsingRecord.Uri);
            }
            else
            {
                if (e.Action == TreeViewAction.ByKeyboard)
                {
                    e.Node.ToggleCollapse();
                }
            }
        }
示例#5
0
        public BrowsingTreeView(BrowsingFilter browsingFilter, BrowsingModel browsingModel, Configuration.ConfigBrowsingList browsingListSettings, SearchHandler searchHandler, ISessionManager sessionManager, IQueryParser queryParser)
        {
            InitializeComponent();

            BrowsingFilter       = browsingFilter;
            BrowsingModel        = browsingModel;
            BrowsingListSettings = browsingListSettings;
            SearchHandler        = searchHandler;
            SessionManager       = sessionManager;
            QueryParser          = queryParser;

            treeView            = new TreeViewEx();
            treeViewContextMenu = new ContextMenu();

            SuspendLayout();

            //
            //
            //
            treeViewContextMenu.Tag    = treeView;
            treeViewContextMenu.Popup += TreeViewContextMenu_Popup;

            //
            //
            //
            treeView.ContextMenu        = treeViewContextMenu;
            treeView.HideSelection      = false;
            treeView.HotTracking        = true;
            treeView.Dock               = DockStyle.Fill;
            treeView.TreeViewNodeSorter = new BrowsingTreeViewNodeSorter(BrowsingSortType.LastAccessTime, SortOrder.Descending);
            treeView.NodeActivated     += TreeView_NodeActivated;
            treeView.NodeSelected      += TreeView_NodeSelected;
            treeView.AfterExpand       += TreeView_AfterExpand;
            treeView.AfterCollapse     += TreeView_AfterCollapse;

            //
            //
            //
            Controls.Add(treeView);

            BrowsingFilter.SortTypeChanged  += BrowsingFilter_SortTypeChanged;
            BrowsingFilter.SortOrderChanged += BrowsingFilter_SortOrderChanged;
            BrowsingFilter.TextChanged      += BrowsingFilter_TextChanged;

            ResumeLayout(false);
        }
示例#6
0
        public DetailsBrowserToolStrip(DetailsBrowserFilter detailsBrowserFilter, DetailsModel detailsModel, SearchHandler searchHandler)
        {
            InitializeComponent();

            DetailsBrowserFilter = detailsBrowserFilter;
            DetailsModel         = detailsModel;
            SearchHandler        = searchHandler;

            searchComboBox = new ToolStripSpringComboBox();
            toolStrip      = new ToolStrip();

            SuspendLayout();

            //
            // searchComboBox
            //
            searchComboBox.AutoCompleteMode   = AutoCompleteMode.SuggestAppend;
            searchComboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
            searchComboBox.DropDownStyle      = ComboBoxStyle.DropDown;
            // WORKAROUND: bug since win7 - selectedindex is wrong when a datasource is bound
//			searchComboBox.ComboBox.DataSource = DetailsModel.Searches;
//			searchComboBox.DataSource = DetailsModel.Searches;
            searchComboBox.Dock   = DockStyle.Fill;
            searchComboBox.Margin = new Padding(0, 0, 6, 0);
            searchComboBox.ComboBox.SelectionChangeCommitted += SearchComboBox_SelectionChangeCommitted;
            searchComboBox.KeyDown += SearchComboBox_KeyDown;
            searchComboBox.ComboBox.OverrideMouseWheelBehaviour();
            searchComboBox.OverrideUpDownKeys();

            //
            // toolStrip
            //
            toolStrip.Dock        = DockStyle.Fill;
            toolStrip.CanOverflow = false;
            toolStrip.Items.Add(searchComboBox);

            //
            // this
            //
            Controls.Add(toolStrip);

            //DetailsModel.Searches.ListChanged += Searches_ListChanged;
            DetailsModel.SearchesChanged += DetailsModel_SearchesChanged;

            ResumeLayout(false);
        }
示例#7
0
        public LibraryTreeView(LibraryFilter libraryFilter, LibraryModel libraryModel, List <IArchiveWriter> archiveWriters, WebBrowserTreeNodeToolTip webBrowserToolTip, SearchHandler searchHandler, ICacheFileSystem cacheFileSystem)
        {
            InitializeComponent();

            LibraryFilter     = libraryFilter;
            LibraryModel      = libraryModel;
            ArchiveWriters    = archiveWriters;
            SearchHandler     = searchHandler;
            CacheFileSystem   = cacheFileSystem as CacheFileSystem;             // lazy hack.
            WebBrowserToolTip = webBrowserToolTip;

            treeView = new TreeViewEx();

            SuspendLayout();

            //
            //
            //
            treeView.HideSelection             = false;
            treeView.HotTracking               = true;
            treeView.Dock                      = DockStyle.Fill;
            treeView.Sorted                    = true;
            treeView.TreeViewNodeSorter        = new LibraryTreeViewNodeSorter(LibrarySortType.CreationTime, SortOrder.Descending);
            treeView.AfterSelect              += TreeView_AfterSelect;
            treeView.NodeActivated            += TreeView_NodeActivated;
            treeView.NodeContextMenuRequested += TreeView_NodeContextMenuRequested;
            // TODO: add this once I have sorting options
            //treeViewContextMenu = new ContextMenu();
            //treeViewContextMenu.Popup += TreeViewContextMenu_Popup;
            //treeView.ContextMenu = treeViewContextMenu;

            //
            // this
            //
            Controls.Add(treeView);

            LibraryFilter.SortTypeChanged  += LibraryFilter_SortTypeChanged;
            LibraryFilter.SortOrderChanged += LibraryFilter_SortOrderChanged;
            LibraryFilter.TextChanged      += LibraryFilter_TextChanged;
            LibraryModel.Poll += LibraryModel_Poll;

            ResumeLayout(false);
        }
示例#8
0
        private void TreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            try
            {
                string fullName = e.Node.Tag as string;
                string fileName = Path.GetFileNameWithoutExtension(fullName);
                // HACK: expect filenames to be "{Id]"...
                // TODO: at least use a regexp to extract a number anywhere.
                int galleryId;

                if (int.TryParse(fileName, out galleryId))
                {
                    SearchHandler.ShowDetails(galleryId);
                }
            }
            catch
            {
            }
        }
示例#9
0
        public GalleryBrowserView(GalleryBrowserFilter galleryBrowserFilter, GalleryModel galleryModel, DocumentTemplate <ISearchProgressArg> searchCovergridTemplate, DocumentTemplate <ISearchArg> searchPreloadTemplate, IPathFormatter pathFormatter
                                  , Configuration.ConfigGalleryBrowserView galleryBrowserSettings
                                  , PageDownloader pageDownloader
                                  , CoverDownloader coverDownloader
                                  , MetadataKeywordLists metadataKeywordLists
                                  , TagsModel tagsModel
                                  , SearchHandler searchHandler)
        {
            InitializeComponent();

            GalleryBrowserFilter    = galleryBrowserFilter;
            GalleryModel            = galleryModel;
            PathFormatter           = pathFormatter;
            SearchCovergridTemplate = searchCovergridTemplate;
            SearchPreloadTemplate   = searchPreloadTemplate;
            GalleryBrowserSettings  = galleryBrowserSettings;
            PageDownloader          = pageDownloader;
            CoverDownloader         = coverDownloader;
            MetadataKeywordLists    = metadataKeywordLists;
            TagsModel     = tagsModel;
            SearchHandler = searchHandler;

            webBrowser           = new WebBrowserEx();
            listBackgroundWorker = new BackgroundWorker();

            SuspendLayout();

            webBrowser.AllowWebBrowserDrop = false;
            webBrowser.Dock = DockStyle.Fill;
            webBrowser.Name = "galleryWebBrowser";
            webBrowser.BeforeDocumentCompleted += WebBrowser_BeforeDocumentCompleted;
            webBrowser.DocumentCompleted       += WebBrowser_DocumentCompleted;

            listBackgroundWorker.WorkerReportsProgress      = true;
            listBackgroundWorker.WorkerSupportsCancellation = true;

            listBackgroundWorker.DoWork             += ListBackgroundWorker_DoWork;
            listBackgroundWorker.ProgressChanged    += ListBackgroundWorker_ProgressChanged;
            listBackgroundWorker.RunWorkerCompleted += ListBackgroundWorker_RunWorkerCompleted;

            PageDownloader.PageDownloadReportProgress += PageDownloader_PageDownloadReportProgress;
            PageDownloader.PagesDownloadStarted       += PageDownloader_PagesDownloadStarted;
            PageDownloader.PagesDownloadCancelled     += PageDownloader_PagesDownloadCancelled;
            PageDownloader.PagesDownloadCompleted     += PageDownloader_PagesDownloadCompleted;

            CoverDownloader.CoverDownloadReportProgress += CoverDownloader_CoverDownloadReportProgress;
            CoverDownloader.CoversDownloadStarted       += CoverDownloader_CoversDownloadStarted;
            CoverDownloader.CoversDownloadCancelled     += CoverDownloader_CoversDownloadCancelled;
            CoverDownloader.CoversDownloadCompleted     += CoverDownloader_CoversDownloadCompleted;

            MetadataKeywordLists.WhitelistChanged  += Form_WhiteListChanged;
            MetadataKeywordLists.BlacklistChanged  += Form_BlackListChanged;
            MetadataKeywordLists.IgnorelistChanged += Form_IgnoreListChanged;
            MetadataKeywordLists.HidelistChanged   += Form_HideListChanged;

            GalleryModel.SearchArgChanged         += GalleryModel_SearchArgChanged;
            GalleryModel.SearchProgressArgChanged += GalleryModel_SearchProgressArgChanged;

            galleryBrowserFilter.TextChanged += GalleryBrowserFilter_TextChanged;

            Controls.Add(webBrowser);

            ResumeLayout(false);
        }
示例#10
0
 public void Reload()
 {
     SearchHandler.ReloadGalleryBrowser();
 }
示例#11
0
文件: TagsTreeView.cs 项目: NHxD/NHxD
        public TagsTreeView(TagsFilter tagsFilter, TagsModel tagsModel, TagTextFormatter tagTextFormatter
                            , Configuration.ConfigTagsList tagsListSettings
                            , MetadataKeywordLists metadataKeywordLists
                            , SearchHandler searchHandler
                            , BookmarkPromptUtility bookmarkPromptUtility
                            , HttpClient httpClient)
        {
            InitializeComponent();

            TagsFilter            = tagsFilter;
            TagsModel             = tagsModel;
            TagTextFormatter      = tagTextFormatter;
            TagsListSettings      = tagsListSettings;
            MetadataKeywordLists  = metadataKeywordLists;
            SearchHandler         = searchHandler;
            BookmarkPromptUtility = bookmarkPromptUtility;
            HttpClient            = httpClient;

            treeView            = new TreeViewEx();
            treeViewContextMenu = new ContextMenu();

            SuspendLayout();

            //
            //
            //
            treeViewContextMenu.Popup += TreeViewContextMenu_Popup;
            treeViewContextMenu.Tag    = treeView;

            //
            //
            //
            treeView.ContextMenu   = treeViewContextMenu;
            treeView.HideSelection = false;
            treeView.HotTracking   = true;
            treeView.Dock          = DockStyle.Fill;
            //treeView.Sorted = true;
            treeView.TreeViewNodeSorter = new TagsTreeViewNodeSorter(TagSortType.Name, SortOrder.Ascending);
            treeView.NodeActivated     += TreeView_NodeActivated;
            treeView.NodeSelected      += TreeView_NodeSelected;
            treeView.AfterExpand       += TreeView_AfterExpand;
            treeView.AfterCollapse     += TreeView_AfterCollapse;

            //
            // this
            //
            Controls.Add(treeView);

            MetadataKeywordLists.WhitelistChanged  += Whitelist_Changed;
            MetadataKeywordLists.BlacklistChanged  += Blacklist_Changed;
            MetadataKeywordLists.IgnorelistChanged += Ignorelist_Changed;
            MetadataKeywordLists.HidelistChanged   += Hidelist_Changed;

            tagsFilter.TextChanged      += TagsFilter_TextChanged;
            tagsFilter.SortTypeChanged  += TagsFilter_SortTypeChanged;
            tagsFilter.SortOrderChanged += TagsFilter_SortOrderChanged;

            TagsModel.ItemAdded += TagsModel_ItemAdded;

            ResumeLayout(false);
        }
示例#12
0
文件: TagsTreeView.cs 项目: NHxD/NHxD
        private void TreeView_NodeActivated(object sender, TreeViewEventArgs e)
        {
            TagInfo tagInfo = e.Node.Tag as TagInfo;
            Enum    tagType = e.Node.Tag as Enum;

            if (tagInfo != null)
            {
                if (TagsListSettings.BlockActions != TagsFilters.None)
                {
                    bool isInWhitelist  = MetadataKeywordLists.Whitelist[tagInfo.Type].Any(x => x.Equals(tagInfo.Name, StringComparison.OrdinalIgnoreCase));
                    bool isInBlacklist  = MetadataKeywordLists.Blacklist[tagInfo.Type].Any(x => x.Equals(tagInfo.Name, StringComparison.OrdinalIgnoreCase));
                    bool isInIgnorelist = MetadataKeywordLists.Ignorelist[tagInfo.Type].Any(x => x.Equals(tagInfo.Name, StringComparison.OrdinalIgnoreCase));
                    bool isInHidelist   = MetadataKeywordLists.Hidelist[tagInfo.Type].Any(x => x.Equals(tagInfo.Name, StringComparison.OrdinalIgnoreCase));

                    if (TagsListSettings.BlockActions.HasFlag(TagsFilters.Blacklist) &&
                        isInBlacklist)
                    {
                        if (MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "The tag \"{0}\" is currently blacklisted. Are you sure you want to open this link?", tagInfo.Name), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                    else if (TagsListSettings.BlockActions.HasFlag(TagsFilters.Ignorelist) &&
                             isInIgnorelist)
                    {
                        if (MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "The tag \"{0}\" is currently ignored. Are you sure you want to open this link?", tagInfo.Name), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                    else if (TagsListSettings.BlockActions.HasFlag(TagsFilters.Hidelist) &&
                             isInHidelist)
                    {
                        if (MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "The tag \"{0}\" is currently hidden. Are you sure you want to open this link?", tagInfo.Name), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                    else if (TagsListSettings.BlockActions.HasFlag(TagsFilters.Other) &&
                             !isInWhitelist &&
                             !isInBlacklist &&
                             !isInIgnorelist &&
                             !isInHidelist)
                    {
                        if (MessageBox.Show(string.Format(CultureInfo.CurrentUICulture, "The tag \"{0}\" is currently unfiltered. Are you sure you want to open this link?", tagInfo.Name), "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
                        {
                            return;
                        }
                    }
                }

                SearchHandler.RunTaggedSearch(tagInfo.Id, 1);
            }
            else if (tagType.GetType() == typeof(TagType))
            {
                if (e.Action == TreeViewAction.ByKeyboard)
                {
                    e.Node.ToggleCollapse();
                }
            }
        }
示例#13
0
        public GalleryBrowserToolStrip(GalleryBrowserFilter galleryBrowserFilter, GalleryModel galleryModel, Configuration.ConfigGalleryBrowserView galleryBrowserSettings, SearchHandler searchHandler)
        {
            InitializeComponent();

            GalleryBrowserFilter   = galleryBrowserFilter;
            GalleryModel           = galleryModel;
            GalleryBrowserSettings = galleryBrowserSettings;
            SearchHandler          = searchHandler;

            toolStrip         = new ToolStrip();
            searchComboBox    = new ToolStripSpringComboBox();
            filterComboBox    = new ToolStripSpringComboBox();
            sortTypeComboBox  = new ToolStripComboBox();
            sortOrderComboBox = new ToolStripComboBox();

            SuspendLayout();

            //
            // searchComboBox
            //
            searchComboBox.AutoCompleteMode   = AutoCompleteMode.SuggestAppend;
            searchComboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
            searchComboBox.DropDownStyle      = ComboBoxStyle.DropDown;
            searchComboBox.Dock     = DockStyle.Fill;
            searchComboBox.Margin   = new Padding(0, 0, 6, 0);
            searchComboBox.KeyDown += SearchComboBox_KeyDown;
            searchComboBox.ComboBox.SelectionChangeCommitted += SearchComboBox_SelectionChangeCommitted;
            // WORKAROUND: bug since win7 - selectedindex is wrong when a datasource is bound
            //searchComboBox.ComboBox.DataSource = galleryModel.Searches;
            searchComboBox.ComboBox.OverrideMouseWheelBehaviour();
            searchComboBox.OverrideUpDownKeys();

            //
            // filterComboBox
            //
            filterComboBox.AutoCompleteMode   = AutoCompleteMode.SuggestAppend;
            filterComboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
            filterComboBox.DropDownStyle      = ComboBoxStyle.DropDown;
            filterComboBox.Dock     = DockStyle.Fill;
            filterComboBox.Margin   = new Padding(0, 0, 6, 0);
            filterComboBox.KeyDown += FilterComboBox_KeyDown;
            filterComboBox.ComboBox.SelectedIndexChanged     += ComboBox_SelectedIndexChanged;
            filterComboBox.ComboBox.SelectionChangeCommitted += FilterComboBox_SelectionChangeCommitted;
            filterComboBox.ComboBox.OverrideMouseWheelBehaviour();
            filterComboBox.EnableMiddleClickToClear();
            filterComboBox.OverrideUpDownKeys();

            //
            // sortTypeComboBox
            //
            sortTypeComboBox.Text          = "&Sort";
            sortTypeComboBox.FlatStyle     = FlatStyle.Flat;
            sortTypeComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            List <ComboBoxItem> sortTypeItems = new List <ComboBoxItem>
            {
                new ComboBoxItem("orderByNone", "None", SortTypeComboBox_None, GallerySortType.None),
                new ComboBoxItem("orderByTitle", "Title", SortTypeComboBox_Title, GallerySortType.Title),
                new ComboBoxItem("orderByLanguage", "Language", SortTypeComboBox_Language, GallerySortType.Language),
                new ComboBoxItem("orderByArtist", "Artist", SortTypeComboBox_Artist, GallerySortType.Artist),
                new ComboBoxItem("orderByGroup", "Group", SortTypeComboBox_Group, GallerySortType.Group),
                new ComboBoxItem("orderByTag", "Tag", SortTypeComboBox_Tag, GallerySortType.Tag),
                new ComboBoxItem("orderByParody", "Parody", SortTypeComboBox_Parody, GallerySortType.Parody),
                new ComboBoxItem("orderByCharacter", "Character", SortTypeComboBox_Character, GallerySortType.Character),
                new ComboBoxItem("orderByCategory", "Category", SortTypeComboBox_Category, GallerySortType.Category),
                new ComboBoxItem("orderByScanlator", "Scanlator", SortTypeComboBox_Scanlator, GallerySortType.Scanlator),
                new ComboBoxItem("orderByUploadDate", "Upload Date", SortTypeComboBox_UploadDate, GallerySortType.UploadDate),
                new ComboBoxItem("orderByNumPages", "Num Pages", SortTypeComboBox_NumPages, GallerySortType.NumPages),
                new ComboBoxItem("orderByNumFavorites", "Num Favorites", SortTypeComboBox_NumFavorites, GallerySortType.NumFavorites),
                new ComboBoxItem("orderById", "Id", SortTypeComboBox_Id, GallerySortType.Id),
                //new SortItem("orderByComiket", "Comiket", SortTypeComboBox_Comiket, GallerySortType.Comiket),
                //new SortItem("orderByVersion", "Version", SortTypeComboBox_Version, GallerySortType.Version),
                //new SortItem("orderByCensorship", "Censorship", SortTypeComboBox_Censorship, GallerySortType.Censorship),
            };

            sortTypeComboBox.Items.AddRange(sortTypeItems.Cast <object>().ToArray());
            sortTypeComboBox.ComboBox.SelectionChangeCommitted += SortTypeComboBox_SelectionChangeCommitted;
            sortTypeComboBox.SelectedItem = sortTypeItems.First(x => (GallerySortType)x.Tag == GalleryBrowserFilter.SortType);
            sortTypeComboBox.ComboBox.OverrideMouseWheelBehaviour();
            sortTypeComboBox.OverrideUpDownKeys();

            //
            // sortOrderComboBox
            //
            sortOrderComboBox.Text          = "&Sort";
            sortOrderComboBox.FlatStyle     = FlatStyle.Flat;
            sortOrderComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            List <ComboBoxItem> sortOrderItems = new List <ComboBoxItem>
            {
                new ComboBoxItem("orderByAscending", "Ascending", SortOrderComboBox_Ascending, SortOrder.Ascending),
                new ComboBoxItem("orderByDescending", "Descending", SortOrderComboBox_Descending, SortOrder.Descending)
            };

            sortOrderComboBox.Items.AddRange(sortOrderItems.Cast <object>().ToArray());
            sortOrderComboBox.ComboBox.SelectionChangeCommitted += SortOrderComboBox_SelectionChangeCommitted;
            sortOrderComboBox.SelectedItem = sortOrderItems.First(x => (SortOrder)x.Tag == GalleryBrowserFilter.SortOrder);
            sortOrderComboBox.ComboBox.OverrideMouseWheelBehaviour();
            sortOrderComboBox.Enabled = GalleryBrowserFilter.SortType != GallerySortType.None;
            sortOrderComboBox.OverrideUpDownKeys();

            //
            // toolStrip
            //
            toolStrip.Dock        = DockStyle.Fill;
            toolStrip.CanOverflow = false;
            toolStrip.Items.Add(searchComboBox);
            toolStrip.Items.Add(filterComboBox);
            toolStrip.Items.Add(sortTypeComboBox);
            toolStrip.Items.Add(sortOrderComboBox);

            //
            // this
            //
            Controls.Add(toolStrip);

            //GalleryModel.Searches.ListChanged += Searches_ListChanged;
            GalleryModel.SearchesChanged += GalleryModel_SearchesChanged;
            GalleryModel.FiltersChanged  += GalleryModel_FiltersChanged;

            galleryBrowserFilter.SortTypeChanged  += GalleryBrowserFilter_SortTypeChanged;
            galleryBrowserFilter.SortOrderChanged += GalleryBrowserFilter_SortOrderChanged;

            ResumeLayout(false);
        }
示例#14
0
文件: MainForm.cs 项目: NHxD/NHxD
        public MainForm()
        {
            InitializeComponent();
            ProcessCommandLine();

            staticHttpClient = new StaticHttpClient(Settings.Network);

            pathFormatter = new PathFormatter(Program.ApplicationPath, Program.SourcePath, Settings.PathFormatter.Custom, Settings.PathFormatter, Settings.Lists.Tags.LanguageNames, Settings.PathFormatter.IsEnabled);

            tagsModel         = new TagsModel();
            tokenModifiers    = TokenModifiers.All.Concat(new ITokenModifier[] { new TagTokenModifier(tagsModel) }).ToArray();
            bookmarkFormatter = new BookmarkFormatter(Settings.Lists.Bookmarks, Settings.Lists.Tags, tagsModel, pathFormatter, tokenModifiers);
            bookmarksModel    = new BookmarksModel(tagsModel, bookmarkFormatter);
            libraryModel      = new LibraryModel(pathFormatter.GetCacheDirectory(), new WinformsTimer(0, Settings.Polling.LibraryRefreshInterval));
            browsingModel     = new BrowsingModel();
            galleryModel      = new GalleryModel(tagsModel);
            detailsModel      = new DetailsModel();

            metadataKeywordLists = new MetadataKeywordLists();
            metadataProcessors   = new List <IMetadataProcessor>();
            metadataConverters   = new List <IMetadataConverter>();
            archiveWriters       = new List <IArchiveWriter>();
            queryParser          = new QueryParser(tagsModel);

            coreTextFormatter     = new CoreTextFormatter(pathFormatter, tokenModifiers);
            aboutTextFormatter    = new AboutTextFormatter(pathFormatter);
            tagTextFormatter      = new TagTextFormatter();
            metadataTextFormatter = new MetadataTextFormatter(pathFormatter, Settings.Lists.Tags.LanguageNames, metadataKeywordLists, tokenModifiers);

            documentTemplates                      = new DocumentTemplates();
            documentTemplates.About                = new DocumentTemplate <object>("about", Settings.Cache.Templates, pathFormatter, (x, context) => aboutTextFormatter.Format(x));
            documentTemplates.Details              = new DocumentTemplate <Metadata>("details", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.DetailsPreload       = new DocumentTemplate <Metadata>("details-preload", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.Download             = new DocumentTemplate <Metadata>("download", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.GalleryTooltip       = new DocumentTemplate <Metadata>("gallery-tooltip", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.LibraryCovergrid     = new DocumentTemplate <ISearchProgressArg>("library-covergrid", Settings.Cache.Templates, pathFormatter, (text, context) => searchProgressArgTextFormatter.Format(text, context, "library"));
            documentTemplates.LibraryCovergridItem = new DocumentTemplate <Metadata>("library-covergrid-item", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.SearchCovergrid      = new DocumentTemplate <ISearchProgressArg>("search-covergrid", Settings.Cache.Templates, pathFormatter, (text, context) => searchProgressArgTextFormatter.Format(text, context, "search"));
            documentTemplates.SearchCovergridItem  = new DocumentTemplate <Metadata>("search-covergrid-item", Settings.Cache.Templates, pathFormatter, (text, context) => metadataTextFormatter.Format(text, context));
            documentTemplates.SearchPreload        = new DocumentTemplate <ISearchArg>("search-preload", Settings.Cache.Templates, pathFormatter, (text, context) => searchArgTextFormatter.Format(text, context));
            documentTemplates.Startup              = new DocumentTemplate <object>("startup", Settings.Cache.Templates, pathFormatter, (text, context) => coreTextFormatter.Format(text, context));

            searchArgTextFormatter         = new SearchArgTextFormatter(pathFormatter, metadataKeywordLists, tagsModel, tokenModifiers);
            searchProgressArgTextFormatter = new SearchProgressArgTextFormatter(pathFormatter, metadataKeywordLists, tagsModel, metadataTextFormatter, tokenModifiers, documentTemplates.SearchCovergridItem, documentTemplates.LibraryCovergridItem);

            metadataCache     = new MetadataCache();
            searchResultCache = new SearchResultCache(metadataCache);
            sessionManager    = new SessionManager(pathFormatter, searchResultCache, Settings.Cache.Session.RecentLifeSpan, Settings.Cache.Session.SearchLifeSpan, Settings.Cache.Session.TaggedLifeSpan, Settings.Network);
            cacheFileSystem   = new CacheFileSystem(pathFormatter, searchResultCache, archiveWriters);
            pluginSystem      = new PluginSystem(Logger, pathFormatter, cacheFileSystem, archiveWriters, metadataConverters, metadataProcessors);

            backgroundTaskWorker = new BackgroundTaskWorker()
            {
                IdleWaitTime = Settings.BackgroundWorkers.BackgroundTaskWorker.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.BackgroundTaskWorker.MaxConcurrentJobCount
            };
            pageDownloader = new PageDownloader(staticHttpClient.Client, pathFormatter, searchResultCache, cacheFileSystem)
            {
                IdleWaitTime = Settings.BackgroundWorkers.PageDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.PageDownloader.MaxConcurrentJobCount
            };
            coverDownloader = new CoverDownloader(staticHttpClient.Client, pathFormatter, metadataKeywordLists)
            {
                IdleWaitTime = Settings.BackgroundWorkers.CoverDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.CoverDownloader.MaxConcurrentJobCount
            };
            coverLoader = new CoverDownloader(staticHttpClient.Client, pathFormatter, metadataKeywordLists)
            {
                IdleWaitTime = Settings.BackgroundWorkers.CoverLoader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.CoverLoader.MaxConcurrentJobCount
            };
            galleryDownloader = new GalleryDownloader(staticHttpClient.Client, pathFormatter, searchResultCache)
            {
                IdleWaitTime = Settings.BackgroundWorkers.GalleryDownloader.IdleWaitTime, MaxConcurrentJobCount = Settings.BackgroundWorkers.GalleryDownloader.MaxConcurrentJobCount
            };

            detailsTabControl         = new TabControlEx();
            detailsTabPage            = new TabPage();
            downloadTabPage           = new TabPage();
            listsTabControl           = new TabControlEx();
            tagsTabPage               = new TabPage();
            bookmarksTabPage          = new TabPage();
            libraryTabPage            = new TabPage();
            browsingTabPage           = new TabPage();
            mainViewTabControl        = new TabControlEx();
            galleryBrowserViewTabPage = new TabPage();
            libraryBrowserViewTabPage = new TabPage();
            downloadsListViewTabPage  = new TabPage();
            webBrowserToolTip         = new WebBrowserTreeNodeToolTip(pathFormatter, documentTemplates.GalleryTooltip);
            loadTimer = new Timer(components);

            searchHandler = new SearchHandler(
                libraryModel
                , mainViewTabControl
                , libraryBrowserViewTabPage
                , galleryBrowserViewTabPage
                , Settings.Cache
                , searchResultCache
                , Logger
                , browsingModel
                , pathFormatter
                , staticHttpClient.Client
                , queryParser
                , galleryModel
                , detailsModel
                , galleryDownloader
                , sessionManager
                , Settings.Network);

            bookmarkPromptUtility = new BookmarkPromptUtility(bookmarksModel, Settings.Lists.Bookmarks);

            tagsFilter           = new TagsFilter(Settings.Lists.Tags, metadataKeywordLists);
            bookmarksFilter      = new BookmarksFilter(Settings.Lists.Bookmarks);
            libraryFilter        = new LibraryFilter(Settings.Lists.Library);
            browsingFilter       = new BrowsingFilter(Settings.Lists.Browsing);
            libraryBrowserFilter = new LibraryBrowserFilter(Settings.Library.Browser);
            galleryBrowserFilter = new GalleryBrowserFilter(Settings.Gallery.Browser);
            detailsBrowserFilter = new DetailsBrowserFilter(Settings.Details.Browser);

            tagsTreeView       = new TagsTreeView(tagsFilter, tagsModel, tagTextFormatter, Settings.Lists.Tags, metadataKeywordLists, searchHandler, bookmarkPromptUtility, staticHttpClient.Client);
            tagsToolStrip      = new TagsToolStrip(tagsFilter, tagsModel, Settings.Lists.Tags, metadataKeywordLists, Settings.Polling.FilterDelay);
            bookmarksTreeView  = new BookmarksTreeView(bookmarksFilter, bookmarksModel, Settings.Lists.Bookmarks, webBrowserToolTip, queryParser, cacheFileSystem, searchHandler);
            bookmarksToolStrip = new BookmarksToolStrip(bookmarksFilter, bookmarksModel, Settings.Lists.Bookmarks, Settings.Polling.FilterDelay);
            libraryTreeView    = new LibraryTreeView(libraryFilter, libraryModel, archiveWriters, webBrowserToolTip, searchHandler, cacheFileSystem);
            libraryToolStrip   = new LibraryToolStrip(libraryFilter, libraryModel, Settings.Lists.Library, Settings.Polling.FilterDelay);
            browsingTreeView   = new BrowsingTreeView(browsingFilter, browsingModel, Settings.Lists.Browsing, searchHandler, sessionManager, queryParser);
            browsingToolStrip  = new BrowsingToolStrip(browsingFilter, browsingModel, Settings.Lists.Browsing, Settings.Polling.FilterDelay);

            galleryBrowserView      = new GalleryBrowserView(galleryBrowserFilter, galleryModel, documentTemplates.SearchCovergrid, documentTemplates.SearchPreload, pathFormatter, Settings.Gallery.Browser, pageDownloader, coverDownloader, metadataKeywordLists, tagsModel, searchHandler);
            galleryToolStrip        = new GalleryBrowserToolStrip(galleryBrowserFilter, galleryModel, Settings.Gallery.Browser, searchHandler);
            libraryBrowserView      = new LibraryBrowserView(libraryBrowserFilter, libraryModel, documentTemplates.LibraryCovergrid, documentTemplates.SearchPreload, documentTemplates.LibraryCovergridItem, pathFormatter, pageDownloader, coverLoader, metadataKeywordLists, Settings.Library.Browser, searchResultCache);
            libraryBrowserToolStrip = new LibraryBrowserToolStrip(libraryBrowserFilter, libraryModel, Settings.Library.Browser, searchHandler);
            detailsToolStrip        = new DetailsBrowserToolStrip(detailsBrowserFilter, detailsModel, searchHandler);
            detailsBrowserView      = new DetailsBrowserView(detailsBrowserFilter, detailsModel, documentTemplates.Details, documentTemplates.Download, documentTemplates.DetailsPreload, galleryDownloader, pageDownloader, coverDownloader, metadataKeywordLists, Settings.Details.Browser, searchResultCache, cacheFileSystem);
            theme                  = new Theme();
            applicationLoader      = new ApplicationLoader();
            fullScreenRestoreState = new FullScreenRestoreState();
            mainMenuStrip          = new MainMenuStrip(Settings);
            startupSpecialHandler  = new StartupSpecialHandler(Settings.Gallery, tagsModel, metadataKeywordLists, searchHandler);
            taskbar                = new Taskbar(coverDownloader, galleryDownloader, pageDownloader, searchResultCache, cacheFileSystem);

            publicApi = new PublicApi(staticHttpClient.Client
                                      , pathFormatter
                                      , cacheFileSystem
                                      , searchResultCache
                                      , searchHandler
                                      , bookmarkPromptUtility
                                      , pluginSystem
                                      , libraryBrowserToolStrip
                                      , Settings.Library
                                      , galleryToolStrip
                                      , Settings.Gallery
                                      , Settings.Details
                                      , galleryDownloader
                                      , coverDownloader
                                      , pageDownloader
                                      , Settings.Notifications
                                      , metadataKeywordLists
                                      , Settings
                                      );

            splitContainer1 = new SplitContainerEx();
            splitContainer2 = new SplitContainerEx();
            splitContainer3 = new SplitContainerEx();

            splitContainer1.BeginInit();
            splitContainer1.Panel2.SuspendLayout();
            splitContainer1.SuspendLayout();

            splitContainer2.BeginInit();
            splitContainer2.Panel1.SuspendLayout();
            splitContainer2.SuspendLayout();

            splitContainer3.BeginInit();
            splitContainer3.SuspendLayout();

            SuspendLayout();

            //
            //
            //
            loadTimer.Interval = 100;
            loadTimer.Tick    += LoadTimer_Tick;

            //
            //
            //
            tagsTabPage.Name     = "tagsTabPage";
            tagsTabPage.TabIndex = 0;
            tagsTabPage.Tag      = "tags";
            tagsTabPage.Text     = "Tags";
            tagsTabPage.UseVisualStyleBackColor = true;

            bookmarksTabPage.Name     = "bookmarksTabPage";
            bookmarksTabPage.TabIndex = 1;
            bookmarksTabPage.Tag      = "bookmarks";
            bookmarksTabPage.Text     = "Bookmarks";
            bookmarksTabPage.UseVisualStyleBackColor = true;

            libraryTabPage.Name     = "libraryTabPage";
            libraryTabPage.TabIndex = 2;
            libraryTabPage.Tag      = "library";
            libraryTabPage.Text     = "Library";
            libraryTabPage.UseVisualStyleBackColor = true;

            browsingTabPage.Name     = "browsingTabPage";
            browsingTabPage.TabIndex = 4;
            browsingTabPage.Tag      = "browsing";
            browsingTabPage.Text     = "Browsing";
            browsingTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            listsTabControl.Dock          = DockStyle.Fill;
            listsTabControl.Name          = "treeViewTabControl";
            listsTabControl.SelectedIndex = -1;
            listsTabControl.TabIndex      = 2;
            listsTabControl.TabPages.Add(tagsTabPage);
            listsTabControl.TabPages.Add(bookmarksTabPage);
            listsTabControl.TabPages.Add(libraryTabPage);
            listsTabControl.TabPages.Add(browsingTabPage);
            listsTabControl.Selected += TreeViewTabControl_Selected;

            splitContainer3.Panel1.Controls.Add(listsTabControl);

            //
            //
            //
            tagsTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            tagsToolStrip.Dock         = DockStyle.Top;
            tagsToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            tagsToolStrip.AutoSize     = true;

            //
            //
            //
            tagsTabPage.Controls.Add(tagsTreeView);
            tagsTabPage.Controls.Add(tagsToolStrip);

            //
            //
            //
            bookmarksModel.ItemAdded   += BookmarksModel_ItemAdded;
            bookmarksModel.ItemChanged += BookmarksModel_ItemChanged;

            //
            //
            //
            bookmarksTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            bookmarksToolStrip.Dock         = DockStyle.Top;
            bookmarksToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            bookmarksToolStrip.AutoSize     = true;

            //
            //
            //
            bookmarksTabPage.Controls.Add(bookmarksTreeView);
            bookmarksTabPage.Controls.Add(bookmarksToolStrip);

            //
            //
            //
            libraryTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            libraryToolStrip.Dock         = DockStyle.Top;
            libraryToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            libraryToolStrip.AutoSize     = true;

            //
            //
            //
            libraryTabPage.Controls.Add(libraryTreeView);
            libraryTabPage.Controls.Add(libraryToolStrip);

            //
            //
            //
            browsingModel.ItemAdded   += BrowsingModel_ItemAdded;
            browsingModel.ItemChanged += BrowsingModel_ItemChanged;

            //
            //
            //
            browsingToolStrip.Dock         = DockStyle.Top;
            browsingToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            browsingToolStrip.AutoSize     = true;

            //
            //
            //
            browsingTreeView.Dock = DockStyle.Fill;

            //
            //
            //
            browsingTabPage.Controls.Add(browsingTreeView);
            browsingTabPage.Controls.Add(browsingToolStrip);

            //
            //
            //
            galleryBrowserViewTabPage.Name     = "galleryBrowserViewTabPage";
            galleryBrowserViewTabPage.Padding  = Padding.Empty;
            galleryBrowserViewTabPage.TabIndex = 0;
            galleryBrowserViewTabPage.Text     = "Search";
            galleryBrowserViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            libraryBrowserViewTabPage.Name     = "libraryBrowserViewTabPage";
            libraryBrowserViewTabPage.TabIndex = 1;
            libraryBrowserViewTabPage.Text     = "Library";
            libraryBrowserViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            downloadsListViewTabPage.Name     = "downloadsListViewTabPage";
            downloadsListViewTabPage.TabIndex = 2;
            downloadsListViewTabPage.Text     = "Downloads";
            downloadsListViewTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            mainViewTabControl.Controls.Add(galleryBrowserViewTabPage);
            mainViewTabControl.Controls.Add(libraryBrowserViewTabPage);
            mainViewTabControl.Controls.Add(downloadsListViewTabPage);
            mainViewTabControl.Dock          = DockStyle.Fill;
            mainViewTabControl.Name          = "mainViewTabControl";
            mainViewTabControl.SelectedIndex = 0;
            mainViewTabControl.TabIndex      = 2;
            mainViewTabControl.Selected     += MainViewTabControl_Selected;

            splitContainer3.Panel2.Controls.Add(mainViewTabControl);
            splitContainer2.Panel2.Controls.Add(detailsTabControl);

            //
            // detailsTabControl
            //
            detailsTabControl.Controls.Add(detailsTabPage);
            detailsTabControl.Controls.Add(downloadTabPage);
            detailsTabControl.Dock          = DockStyle.Fill;
            detailsTabControl.Name          = "detailsTabControl";
            detailsTabControl.SelectedIndex = 0;
            detailsTabControl.TabIndex      = 2;

            //
            // detailsTabPage
            //
            detailsTabPage.Name     = "detailsTabPage";
            detailsTabPage.TabIndex = 0;
            detailsTabPage.Text     = "Details";
            detailsTabPage.UseVisualStyleBackColor = true;

            //
            // downloadTabPage
            //
            downloadTabPage.Name     = "downloadTabPage";
            downloadTabPage.TabIndex = 1;
            downloadTabPage.Text     = "Download";
            downloadTabPage.UseVisualStyleBackColor = true;

            //
            //
            //
            galleryBrowserView.Dock = DockStyle.Fill;
            galleryBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            galleryToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            galleryToolStrip.AutoSize     = true;
            galleryToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            galleryBrowserViewTabPage.Controls.Add(galleryBrowserView);
            galleryBrowserViewTabPage.Controls.Add(galleryToolStrip);

            //
            //
            //
            libraryBrowserView.Dock = DockStyle.Fill;
            libraryBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            libraryBrowserToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            libraryBrowserToolStrip.AutoSize     = true;
            libraryBrowserToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            libraryBrowserViewTabPage.Controls.Add(libraryBrowserView);
            libraryBrowserViewTabPage.Controls.Add(libraryBrowserToolStrip);

            //
            //
            //
            detailsToolStrip.AutoSizeMode = AutoSizeMode.GrowAndShrink;
            detailsToolStrip.AutoSize     = true;
            detailsToolStrip.Dock         = DockStyle.Top;

            //
            //
            //
            detailsBrowserView.Dock = DockStyle.Fill;
            detailsBrowserView.WebBrowser.ObjectForScripting = publicApi;

            //
            //
            //
            detailsTabPage.Controls.Add(detailsBrowserView);
            detailsTabPage.Controls.Add(detailsToolStrip);

            //
            // splitContainer1
            //
            splitContainer1.Dock          = DockStyle.Fill;
            splitContainer1.FixedPanel    = FixedPanel.Panel1;
            splitContainer1.Margin        = new Padding(0);
            splitContainer1.Name          = "splitContainer1";
            splitContainer1.Orientation   = Orientation.Horizontal;
            splitContainer1.Panel1MinSize = 22;

            //
            // splitContainer1.Panel2
            //
            splitContainer1.Panel2.Controls.Add(splitContainer2);
            splitContainer1.Size              = new Size(1364, 637);
            splitContainer1.SplitterDistance  = 25;
            splitContainer1.SplitterIncrement = 22;
            splitContainer1.SplitterWidth     = 7;
            splitContainer1.TabIndex          = 2;

            //
            // splitContainer2
            //
            splitContainer2.Dock       = DockStyle.Fill;
            splitContainer2.FixedPanel = FixedPanel.Panel2;
            splitContainer2.Margin     = new Padding(0);
            splitContainer2.Name       = "splitContainer2";

            //
            // splitContainer2.Panel1
            //
            splitContainer2.Panel1.Controls.Add(splitContainer3);
            splitContainer2.Size             = new Size(1364, 605);
            splitContainer2.SplitterDistance = 1214;
            splitContainer2.SplitterWidth    = 7;
            splitContainer2.TabIndex         = 1;

            //
            // splitContainer3
            //
            splitContainer3.Dock             = DockStyle.Fill;
            splitContainer3.FixedPanel       = FixedPanel.Panel1;
            splitContainer3.Margin           = new Padding(0);
            splitContainer3.Name             = "splitContainer3";
            splitContainer3.Size             = new Size(1214, 605);
            splitContainer3.SplitterDistance = 200;
            splitContainer3.SplitterWidth    = 7;
            splitContainer3.TabIndex         = 0;

            //
            // applicationMenuStrip
            //
            mainMenuStrip.Exit               += MainMenuStrip_Exit;
            mainMenuStrip.ToggleListsPanel   += MainMenuStrip_ToggleListsPanel;
            mainMenuStrip.ToggleDetailsPanel += MainMenuStrip_ToggleDetailsPanel;
            mainMenuStrip.ToggleFullScreen   += MainMenuStrip_ToggleFullScreen;
            mainMenuStrip.ShowAbout          += MainMenuStrip_ShowAbout;
            mainMenuStrip.ShowPlugins        += MainMenuStrip_ShowPlugins;

            //
            // this
            //
            Controls.Add(splitContainer1);
            Controls.Add(mainMenuStrip);
            Controls.Add(webBrowserToolTip);
            webBrowserToolTip.BringToFront();
            MainMenuStrip = mainMenuStrip;
            Padding       = new Padding(0);
            Text          = aboutTextFormatter.Format(Settings.Window.TextFormat);
            if (Settings.Network.Offline)
            {
                Text += " [OFFLINE]";
            }
            Enabled = false;

            //
            // splash screen
            //
            if (Settings.SplashScreen.IsVisible)
            {
                startupWebBrowser      = new StartupWebBrowserView(coreTextFormatter, documentTemplates.Startup, applicationLoader);
                startupWebBrowser.Name = "startupWebBrowserView";
                startupWebBrowser.Dock = DockStyle.Fill;
                startupWebBrowser.WebBrowser.DocumentCompleted += WebBrowser_DocumentCompleted;

                Controls.Add(startupWebBrowser);
                startupWebBrowser.BringToFront();

                // avoid flickering
                listsTabControl.Visible    = false;
                mainViewTabControl.Visible = false;
                detailsTabControl.Visible  = false;
            }

            backgroundTaskWorker.ProgressChanged += TaskBackgroundWorker_ProgressChanged;

            pageDownloader.PagesDownloadCompleted += PageDownloader_PagesDownloadCompleted;

            ReadTheme();
            ApplyTheme();
            ApplyVisualStyles();

            splitContainer1.Panel2.ResumeLayout(false);
            splitContainer1.EndInit();
            splitContainer1.ResumeLayout(false);

            splitContainer2.Panel1.ResumeLayout(false);
            splitContainer2.EndInit();
            splitContainer2.ResumeLayout(false);

            splitContainer3.EndInit();
            splitContainer3.ResumeLayout(false);

            ResumeLayout(false);
            PerformLayout();
        }