KiCad PCB EDA Suite
|
PROJECT_TREE_PANE Window to display the tree files. More...
#include <project_tree_pane.h>
Public Member Functions | |
PROJECT_TREE_PANE (KICAD_MANAGER_FRAME *parent) | |
The frame that shows the tree list of files and subdirectories inside the working directory. More... | |
~PROJECT_TREE_PANE () | |
void | ReCreateTreePrj () |
Create or modify the tree showing project file names. More... | |
void | FileWatcherReset () |
Reinit the watched paths Should be called after opening a new project to rebuild the list of watched paths. More... | |
void | EmptyTreePrj () |
Delete all m_TreeProject entries. More... | |
Public Attributes | |
KICAD_MANAGER_FRAME * | m_Parent |
PROJECT_TREE * | m_TreeProject |
Protected Member Functions | |
std::vector< PROJECT_TREE_ITEM * > | GetSelectedData () |
Function GetSelectedData return the item data from item currently selected (highlighted) Note this is not necessary the "clicked" item, because when expanding, collapsing an item this item is not selected. More... | |
PROJECT_TREE_ITEM * | GetItemIdData (wxTreeItemId aId) |
Function GetItemIdData return the item data corresponding to a wxTreeItemId identifier. More... | |
Static Protected Member Functions | |
static wxString | GetFileExt (TREE_FILE_TYPE type) |
Private Member Functions | |
void | onSelect (wxTreeEvent &Event) |
Called on a double click on an item. More... | |
void | onExpand (wxTreeEvent &Event) |
Called on a click on the + or - button of an item with children. More... | |
void | onRight (wxTreeEvent &Event) |
Called on a right click on an item. More... | |
void | onOpenSelectedFileWithTextEditor (wxCommandEvent &event) |
Function onOpenSelectedFileWithTextEditor Call the text editor to open the selected file in the tree project. More... | |
void | onDeleteFile (wxCommandEvent &event) |
Function onDeleteFile Delete the selected file or directory in the tree project. More... | |
void | onRenameFile (wxCommandEvent &event) |
Function onRenameFile Rename the selected file or directory in the tree project. More... | |
void | onOpenDirectory (wxCommandEvent &event) |
Function onOpenDirectory Handles the right-click menu for opening a directory in the current system file browser. More... | |
void | onCreateNewDirectory (wxCommandEvent &event) |
Function onCreateNewDirectory Creates a new subdirectory inside the current kicad project directory the user is prompted to enter a directory name. More... | |
void | onSwitchToSelectedProject (wxCommandEvent &event) |
Switch to a other project selected from the tree project (by selecting an other .pro file inside the current project folder) More... | |
void | onIdle (wxIdleEvent &aEvent) |
Idle event handler, used process the selected items at a point in time when all other events have been consumed. More... | |
void | onPaint (wxPaintEvent &aEvent) |
We don't have uniform borders so we have to draw them ourselves. More... | |
void | shutdownFileWatcher () |
Shutdown the file watcher. More... | |
wxTreeItemId | addItemToProjectTree (const wxString &aName, const wxTreeItemId &aParent, std::vector< wxString > *aProjectNames, bool aRecurse) |
Function addItemToProjectTree. More... | |
wxTreeItemId | findSubdirTreeItem (const wxString &aSubDir) |
Function findSubdirTreeItem searches for the item in tree project which is the node of the subdirectory aSubDir. More... | |
void | onFileSystemEvent (wxFileSystemWatcherEvent &event) |
called when a file or directory is modified/created/deleted The tree project is modified when a file or directory is created/deleted/renamed to reflect the file change More... | |
void | onThemeChanged (wxSysColourChangedEvent &aEvent) |
Private Attributes | |
bool | m_isRenaming |
wxTreeItemId | m_root |
std::vector< wxString > | m_filters |
wxFileSystemWatcher * | m_watcher |
PROJECT_TREE_ITEM * | m_selectedItem |
bool | m_watcherNeedReset |
Friends | |
class | PROJECT_TREE_ITEM |
PROJECT_TREE_PANE Window to display the tree files.
Definition at line 48 of file project_tree_pane.h.
PROJECT_TREE_PANE::PROJECT_TREE_PANE | ( | KICAD_MANAGER_FRAME * | parent | ) |
The frame that shows the tree list of files and subdirectories inside the working directory.
Files are filtered (see s_allowedExtensionsToList) so only useful files are shown.
Definition at line 134 of file project_tree_pane.cpp.
References onFileSystemEvent(), onThemeChanged(), and s_allowedExtensionsToList.
PROJECT_TREE_PANE::~PROJECT_TREE_PANE | ( | ) |
Definition at line 164 of file project_tree_pane.cpp.
References shutdownFileWatcher().
|
private |
Function addItemToProjectTree.
Add the file or directory aName to the project tree
aName | = the filename or the directory name to add in tree |
aParent | = the wxTreeItemId item where to add sub tree items |
aRecurse | = true to add file or subdir names to the current tree item false to stop file add. |
Definition at line 306 of file project_tree_pane.cpp.
References addItemToProjectTree(), alg::contains(), PROJECT_TREE_ITEM::GetDir(), GetFileExt(), PROJECT_TREE_ITEM::GetFileName(), GetItemIdData(), KICAD_MANAGER_FRAME::GetProjectFileName(), getProjects(), PROJECT_TREE_ITEM::GetType(), m_filters, m_Parent, m_TreeProject, m_watcherNeedReset, path, project, PROJECT_TREE_ITEM, PROJECT_TREE_ITEM::SetPopulated(), PROJECT_TREE_ITEM::SetRootFile(), and PROJECT_TREE_ITEM::SetState().
Referenced by addItemToProjectTree(), onCreateNewDirectory(), onExpand(), onFileSystemEvent(), and ReCreateTreePrj().
void PROJECT_TREE_PANE::EmptyTreePrj | ( | ) |
Delete all m_TreeProject entries.
Definition at line 1253 of file project_tree_pane.cpp.
References m_TreeProject, and shutdownFileWatcher().
Referenced by KICAD_MANAGER_FRAME::CloseProject().
void PROJECT_TREE_PANE::FileWatcherReset | ( | ) |
Reinit the watched paths Should be called after opening a new project to rebuild the list of watched paths.
Should be called after the main loop event handler is started
Definition at line 1139 of file project_tree_pane.cpp.
References _, PROJECT_TREE_ITEM::GetFileName(), GetItemIdData(), KICAD_MANAGER_FRAME::GetProjectFileName(), PROJECT_TREE_ITEM::GetType(), KIPLATFORM::ENV::IsNetworkPath(), PROJECT_TREE_ITEM::IsPopulated(), m_Parent, m_root, m_TreeProject, m_watcher, m_watcherNeedReset, path, TO_UTF8, and tracePathsAndFiles.
Referenced by KICAD_MANAGER_FRAME::OnChangeWatchedPaths(), and onIdle().
|
private |
Function findSubdirTreeItem searches for the item in tree project which is the node of the subdirectory aSubDir.
aSubDir | = the directory to find in tree |
Definition at line 970 of file project_tree_pane.cpp.
References PROJECT_TREE_ITEM::GetFileName(), GetItemIdData(), KICAD_MANAGER_FRAME::GetProjectFileName(), PROJECT_TREE_ITEM::GetType(), PROJECT_TREE_ITEM::IsPopulated(), m_Parent, m_root, and m_TreeProject.
Referenced by onFileSystemEvent().
|
staticprotected |
Definition at line 251 of file project_tree_pane.cpp.
References ArchiveFileExtension, DesignRulesFileExtension, DrawingSheetFileExtension, DrillFileExtension, FootprintAssignmentFileExtension, FootprintPlaceFileExtension, GerberFileExtensionsRegex, GerberJobFileExtension, HtmlFileExtension, KiCadFootprintFileExtension, KiCadPcbFileExtension, KiCadSchematicFileExtension, KiCadSymbolLibFileExtension, LegacyPcbFileExtension, LegacyProjectFileExtension, LegacySchematicFileExtension, LegacySymbolLibFileExtension, MarkdownFileExtension, NetlistFileExtension, PdfFileExtension, ProjectFileExtension, ReportFileExtension, SVGFileExtension, and TextFileExtension.
Referenced by addItemToProjectTree(), and PROJECT_TREE_ITEM::Rename().
|
protected |
Function GetItemIdData return the item data corresponding to a wxTreeItemId identifier.
aId | = the wxTreeItemId identifier. |
Definition at line 964 of file project_tree_pane.cpp.
References m_TreeProject.
Referenced by addItemToProjectTree(), FileWatcherReset(), findSubdirTreeItem(), GetSelectedData(), onExpand(), and onFileSystemEvent().
|
protected |
Function GetSelectedData return the item data from item currently selected (highlighted) Note this is not necessary the "clicked" item, because when expanding, collapsing an item this item is not selected.
Definition at line 941 of file project_tree_pane.cpp.
References GetItemIdData(), and m_TreeProject.
Referenced by onCreateNewDirectory(), onDeleteFile(), onOpenDirectory(), onOpenSelectedFileWithTextEditor(), onRenameFile(), onRight(), onSelect(), and onSwitchToSelectedProject().
|
private |
Function onCreateNewDirectory Creates a new subdirectory inside the current kicad project directory the user is prompted to enter a directory name.
Definition at line 223 of file project_tree_pane.cpp.
References _, addItemToProjectTree(), KICAD_MANAGER_FRAME::GetProjectFileName(), GetSelectedData(), and m_Parent.
|
private |
Function onDeleteFile Delete the selected file or directory in the tree project.
Definition at line 802 of file project_tree_pane.cpp.
References GetSelectedData().
|
private |
Called on a click on the + or - button of an item with children.
Definition at line 876 of file project_tree_pane.cpp.
References addItemToProjectTree(), PROJECT_TREE_ITEM::GetFileName(), GetItemIdData(), getProjects(), PROJECT_TREE_ITEM::GetType(), PROJECT_TREE_ITEM::IsPopulated(), m_TreeProject, m_watcherNeedReset, name, and PROJECT_TREE_ITEM::SetPopulated().
|
private |
called when a file or directory is modified/created/deleted The tree project is modified when a file or directory is created/deleted/renamed to reflect the file change
Definition at line 1028 of file project_tree_pane.cpp.
References addItemToProjectTree(), findSubdirTreeItem(), PROJECT_TREE_ITEM::GetFileName(), GetItemIdData(), m_isRenaming, m_TreeProject, and m_watcher.
Referenced by PROJECT_TREE_PANE().
|
private |
Idle event handler, used process the selected items at a point in time when all other events have been consumed.
Definition at line 854 of file project_tree_pane.cpp.
References PROJECT_TREE_ITEM::Activate(), FileWatcherReset(), m_selectedItem, and m_watcherNeedReset.
|
private |
Function onOpenDirectory Handles the right-click menu for opening a directory in the current system file browser.
Definition at line 195 of file project_tree_pane.cpp.
References PATHS::GetDefaultUserProjectsPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), GetSelectedData(), LaunchExternal(), and m_Parent.
|
private |
Function onOpenSelectedFileWithTextEditor Call the text editor to open the selected file in the tree project.
Definition at line 775 of file project_tree_pane.cpp.
References _, ExecuteFile(), GetSelectedData(), and Pgm().
|
private |
We don't have uniform borders so we have to draw them ourselves.
Definition at line 1272 of file project_tree_pane.cpp.
|
private |
Function onRenameFile Rename the selected file or directory in the tree project.
Definition at line 811 of file project_tree_pane.cpp.
References _, GetSelectedData(), m_isRenaming, and m_TreeProject.
|
private |
Called on a right click on an item.
Definition at line 600 of file project_tree_pane.cpp.
References _, AddMenuItem(), GetSelectedData(), ID_PROJECT_DELETE, ID_PROJECT_NEWDIR, ID_PROJECT_OPEN_DIR, ID_PROJECT_RENAME, ID_PROJECT_SWITCH_TO_OTHER, ID_PROJECT_TXTEDIT, KiBitmap(), m_TreeProject, and text.
|
private |
Called on a double click on an item.
Definition at line 840 of file project_tree_pane.cpp.
References GetSelectedData(), and m_selectedItem.
|
private |
Switch to a other project selected from the tree project (by selecting an other .pro file inside the current project folder)
Definition at line 182 of file project_tree_pane.cpp.
References GetSelectedData(), KICAD_MANAGER_FRAME::LoadProject(), and m_Parent.
|
private |
Definition at line 1262 of file project_tree_pane.cpp.
References GetBitmapStore(), PROJECT_TREE::LoadIcons(), m_TreeProject, and BITMAP_STORE::ThemeChanged().
Referenced by PROJECT_TREE_PANE().
void PROJECT_TREE_PANE::ReCreateTreePrj | ( | ) |
Create or modify the tree showing project file names.
Definition at line 516 of file project_tree_pane.cpp.
References addItemToProjectTree(), PATHS::GetDefaultUserProjectsPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), getProjects(), LegacyProjectFileExtension, m_Parent, m_root, m_TreeProject, name, NAMELESS_PROJECT, PROJECT_TREE_ITEM, and ProjectFileExtension.
Referenced by KICAD_MANAGER_FRAME::LoadProject(), KICAD_MANAGER_FRAME::ReCreateTreePrj(), and KICAD_MANAGER_FRAME::RefreshProjectTree().
|
private |
Shutdown the file watcher.
Used when closing to prevent post-free access into the project tree. (Using the destructor doesn't work as wxWidgets defers destruction in some cases.)
Definition at line 170 of file project_tree_pane.cpp.
References m_watcher.
Referenced by EmptyTreePrj(), and ~PROJECT_TREE_PANE().
|
friend |
Definition at line 50 of file project_tree_pane.h.
Referenced by addItemToProjectTree(), and ReCreateTreePrj().
|
private |
Definition at line 200 of file project_tree_pane.h.
Referenced by addItemToProjectTree().
|
private |
Definition at line 198 of file project_tree_pane.h.
Referenced by onFileSystemEvent(), and onRenameFile().
KICAD_MANAGER_FRAME* PROJECT_TREE_PANE::m_Parent |
Definition at line 194 of file project_tree_pane.h.
Referenced by PROJECT_TREE_ITEM::Activate(), addItemToProjectTree(), FileWatcherReset(), findSubdirTreeItem(), onCreateNewDirectory(), onOpenDirectory(), onSwitchToSelectedProject(), and ReCreateTreePrj().
|
private |
Definition at line 199 of file project_tree_pane.h.
Referenced by FileWatcherReset(), findSubdirTreeItem(), and ReCreateTreePrj().
|
private |
Definition at line 202 of file project_tree_pane.h.
Referenced by onIdle(), and onSelect().
PROJECT_TREE* PROJECT_TREE_PANE::m_TreeProject |
Definition at line 195 of file project_tree_pane.h.
Referenced by PROJECT_TREE_ITEM::Activate(), addItemToProjectTree(), EmptyTreePrj(), FileWatcherReset(), findSubdirTreeItem(), GetItemIdData(), GetSelectedData(), onExpand(), onFileSystemEvent(), onRenameFile(), onRight(), onThemeChanged(), and ReCreateTreePrj().
|
private |
Definition at line 201 of file project_tree_pane.h.
Referenced by FileWatcherReset(), onFileSystemEvent(), and shutdownFileWatcher().
|
private |
Definition at line 203 of file project_tree_pane.h.
Referenced by addItemToProjectTree(), FileWatcherReset(), onExpand(), and onIdle().