class FilePanel{
public:
    static int OffSet;// Space in front of the buttons in FilePanel. OffSet * level is the total space
    GtkBuilder *builder;
    void init();
    GtkGrid *BaseGrid;
    GtkBox *FileTree;

    void AddNewRootFolder(FPFolderButton& folderbutton);

    FPFolderButton& NewFolder(GFile *file,GFile *ParentFolder,FPFolderButton& Parent);
    // Parent not nullable. The root folder will not be added with this function. See FPFolderButton::SetAsRoot()

    FPFileButton& NewFile(GFile *file, FPFolderButton& Parent);// Not nullable. File has to be under a folder
    void UnrefBuilder();
};

Offset indicates how backward will the child file/folder button be place compare to it's parent.

BaseGrid is the GtkWidget that is containing FileTree. The root folder's BaseBox is place inside FileTree. You can add many root folder in the file panel with AddNewRootFolder().

To create a FPFolderButton or FPFileButton, use NewFolder() and NewFile().

We will move NewFolder() and NewFile() out of the class in the future.