summaryrefslogtreecommitdiff
path: root/kicad/tree_project_frame.h
diff options
context:
space:
mode:
authorsaurabhb172020-02-26 16:04:40 +0530
committersaurabhb172020-02-26 16:04:40 +0530
commit039ac92480a09266146fc5b0c9ec67a32a2565ad (patch)
tree7b6cef031a580680690a0f32410db940f7e7d7d5 /kicad/tree_project_frame.h
parentaa35045840b78d3f48212db45da59a2e5c69b223 (diff)
downloadKiCad-eSim-039ac92480a09266146fc5b0c9ec67a32a2565ad.tar.gz
KiCad-eSim-039ac92480a09266146fc5b0c9ec67a32a2565ad.tar.bz2
KiCad-eSim-039ac92480a09266146fc5b0c9ec67a32a2565ad.zip
Added secondary files
Diffstat (limited to 'kicad/tree_project_frame.h')
-rw-r--r--kicad/tree_project_frame.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/kicad/tree_project_frame.h b/kicad/tree_project_frame.h
new file mode 100644
index 0000000..908e8a3
--- /dev/null
+++ b/kicad/tree_project_frame.h
@@ -0,0 +1,184 @@
+/**
+ * @file tree_project_frame.h
+ */
+
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 1992-2012 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2012 KiCad Developers, see change_log.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef TREEPRJ_FRAME_H
+#define TREEPRJ_FRAME_H
+
+#include <kicad.h>
+#include <wx/fswatcher.h>
+
+
+class TREEPROJECT_ITEM;
+
+/** class TREE_PROJECT_FRAME
+ * Window to display the tree files
+ */
+class TREE_PROJECT_FRAME : public wxSashLayoutWindow
+{
+ friend class TREEPROJECT_ITEM;
+public:
+ KICAD_MANAGER_FRAME* m_Parent;
+ TREEPROJECTFILES* m_TreeProject;
+
+private:
+ wxTreeItemId m_root;
+ std::vector<wxString> m_filters;
+ wxFileSystemWatcher* m_watcher; // file system watcher (since wxWidgets 2.9.2)
+
+public:
+ TREE_PROJECT_FRAME( KICAD_MANAGER_FRAME* parent );
+ ~TREE_PROJECT_FRAME();
+
+ /**
+ * Create or modify the tree showing project file names
+ */
+ void ReCreateTreePrj();
+
+ /**
+ * Reinit the watched paths
+ * Should be called after opening a new project to
+ * rebuild the list of watched paths.
+ * Should be called *atfer* the main loop event handler is started
+ */
+ void FileWatcherReset();
+
+protected:
+ static wxString GetFileExt( TreeFileType type );
+ static wxString GetFileWildcard( TreeFileType type );
+
+ /**
+ * 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
+ */
+ TREEPROJECT_ITEM* GetSelectedData();
+
+ /**
+ * Function GetItemIdData
+ * return the item data corresponding to a wxTreeItemId identifier
+ * @param aId = the wxTreeItemId identifier.
+ * @return a TREEPROJECT_ITEM pointer correspondinfg to item id aId
+ */
+ TREEPROJECT_ITEM* GetItemIdData( wxTreeItemId aId );
+
+private:
+ /**
+ * Called on a double click on an item
+ */
+ void OnSelect( wxTreeEvent& Event );
+
+ /**
+ * Called on a click on the + or - button of an item with children
+ */
+ void OnExpand( wxTreeEvent& Event );
+
+ /**
+ * Called on a right click on an item
+ */
+ void OnRight( wxTreeEvent& Event );
+
+ /**
+ * Function OnOpenSelectedFileWithTextEditor
+ * Called via the popup menu, when right clicking on a file name
+ * Call the text editor to open the selected file
+ * in the tree project
+ */
+ void OnOpenSelectedFileWithTextEditor( wxCommandEvent& event );
+
+ /**
+ * Function OnDeleteFile
+ * Called via the popup menu, when right clicking on a file name
+ * or a directory name to delete the selected file or directory
+ * in the tree project
+ */
+ void OnDeleteFile( wxCommandEvent& event );
+
+ /**
+ * Function OnRenameFile
+ * Called via the popup menu, when right clicking on a file name
+ * or a directory name to rename the selected file or directory
+ * in the tree project
+ */
+ void OnRenameFile( wxCommandEvent& event );
+
+ /**
+ * Function OnCreateNewDirectory
+ * Creates a new subdirectory inside the current kicad project directory
+ * the user is prompted to enter a directory name
+ */
+ void OnCreateNewDirectory( wxCommandEvent& event );
+
+ void ClearFilters()
+ {
+ m_filters.clear();
+ }
+
+ const std::vector<wxString>& GetFilters()
+ {
+ return m_filters;
+ }
+
+ void RemoveFilter( const wxString& filter );
+
+ /**
+ * Function AddItemToTreeProject
+ * @brief Add the file or directory aName to the project tree
+ * @param aName = the filename or the directory name to add in tree
+ * @param aRoot = the wxTreeItemId item where to add sub tree items
+ * @param aRecurse = true to add file or subdir names to the current tree item
+ * false to stop file add.
+ * @return true if the file (or directory) is added.
+ */
+ bool AddItemToTreeProject( const wxString& aName,
+ wxTreeItemId& aRoot,
+ bool aRecurse = true );
+
+ /**
+ * Function findSubdirTreeItem
+ * searches for the item in tree project which is the
+ * node of the subdirectory aSubDir
+ * @param aSubDir = the directory to find in tree
+ * @return the opaque reference to the tree item.
+ * if not found, return an invalid tree item.
+ * therefore wxTreeItemId::IsOk should be used to test
+ * the returned value
+ */
+ wxTreeItemId findSubdirTreeItem( const wxString& aSubDir );
+
+ /**
+ * 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
+ */
+ void OnFileSystemEvent( wxFileSystemWatcherEvent& event );
+
+ DECLARE_EVENT_TABLE()
+};
+
+#endif // TREEPRJ_FRAME_H