public TCTab CreateTab(F_Base file = null, string tabNameOverride = "", FileProcessor.EditorTypes overriedEditor = FileProcessor.EditorTypes.NULL)
        {
            string tabName = tabNameOverride;

            if (file != null)
            {
                tabName = (file.FilePath == null) ? file.TempName : System.IO.Path.GetFileNameWithoutExtension(file.FilePath);
                if (tabNameOverride != "")
                {
                    tabName = CalculateTabName(file);
                }
            }

            TabPage TP = new TabPage(tabName);
            TCTab   tc = new TCTab {
                Name = tabName, owner = this, File = file, tabpage = TP
            };

            Tabs.Add(tc);

            //we have made the link between the tab and file, now we need to make the tab exist

            //we need add the correct controls to the tab
            //to put it in tl;dr land, here we see what type of file we are dealing with, and add an editor to the TCTab we made above
            //literally, we just register it inside the TCTab and then add it to it's associated tab page, take a look 0_0
            //tc's ImplementEditor function will automatically assign an editor for the tc based on the TCTab.File.FileType, however you can override it with the func(<param>)
            tc.ImplementEditor(overriedEditor);
            TabContainer.TabPages.Add(TP);
            return(tc);
        }
            /// <summary>
            /// Register an editor control with this tab.
            /// <para/>Note: This will add the editor control into the tabpage <seealso cref="Control.ControlCollection"/>
            /// </summary>
            /// <param name="editorControl">The <seealso cref="IEditor"/> control to add</param>
            public IEditor ImplementEditor(FileProcessor.EditorTypes editorControl = FileProcessor.EditorTypes.NULL)
            {
                //NOTE: FileProcessor.FileTypes == FileProcessor.EditorTypes
                //we assume that because no file was specified, we are using an editor that doesnt require a file, you better have manually specified the editorControl param!
                //NOTE V2: If you actually use the editorControl param, this func uses that regardless of the file type, so be warned!

                editor       = FileProcessor.returnEditorFromType(editorControl == FileProcessor.EditorTypes.NULL ? (FileProcessor.EditorTypes)(int) File.FileType : editorControl);
                editor.owner = this;

                //As long as you follow the EditorTemplate(visible in IEditor) your editor should contain an Init() func, for late initialization scenarios
                editor.Init(File);
                tabpage.Controls.Add(editor.main);
                return(editor);
            }