Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
GNEFileSelector.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2025 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
18// widget used for file selection
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <vector>
25
26#include "GNEFileDialog.h"
27
28// ===========================================================================
29// class declaration
30// ===========================================================================
31
32class MFXComboBoxIcon;
35
36// ===========================================================================
37// class definitions
38// ===========================================================================
39
40class GNEFileSelector : public FXVerticalFrame {
42 FXDECLARE(GNEFileSelector)
43
44public:
46 GNEFileSelector(GNEFileDialog* fileDialog, const std::vector<std::string>& extensions,
48
50 virtual ~GNEFileSelector();
51
53 void setPath(const std::string& path);
54
56 void setFilter(const int index);
57
59 void setFilename(const FXString& path);
60
62 std::string getFilename() const;
63
65 std::vector<std::string> getFilenames() const;
66
68 std::string getDirectory() const;
69
71 const std::vector<std::string>& getFileExtension() const;
72
74 void setDirectory(const FXString& path);
75
77 void setItemSpace(FXint s);
78
80 FXint getItemSpace() const;
81
83 void setFileBoxStyle(FXuint style);
84
86 FXuint getFileBoxStyle() const;
87
89 void setMatchMode(FXuint mode);
90
92 FXuint getMatchMode() const;
93
95 FXbool showHiddenFiles() const;
96
98 void showHiddenFiles(FXbool showing);
99
101 FXbool showImages() const;
102
104 void showImages(FXbool showing);
105
107 FXint getImageSize() const;
108
110 void setImageSize(FXint size);
111
114
117
119 long onCmdAccept(FXObject*, FXSelector, void*);
120
122 long onCmdFilter(FXObject*, FXSelector, void*);
123
125 long onCmdItemDoubleClicked(FXObject* obj, FXSelector sel, void* ptr);
126
128 long onCmdItemSelected(FXObject*, FXSelector, void*);
129
131 long onCmdItemDeselected(FXObject*, FXSelector, void*);
132
134 long onCmdDirectoryUp(FXObject*, FXSelector, void*);
135
137 long onUpdDirectoryUp(FXObject*, FXSelector, void*);
138
140 long onCmdDirTree(FXObject*, FXSelector, void*);
141
143 long onCmdHomeFolder(FXObject*, FXSelector, void*);
144
146 long onCmdWorkFolder(FXObject*, FXSelector, void*);
147
149 long onCmdConfigFolder(FXObject*, FXSelector, void*);
150
152 long onCmdBookmark(FXObject*, FXSelector, void*);
153
155 long onCmdVisit(FXObject*, FXSelector, void*);
156
158 long onCmdNewFolder(FXObject*, FXSelector, void*);
159
161 long onUpdNewFolder(FXObject*, FXSelector, void*);
162
164 long onCmdMove(FXObject*, FXSelector, void*);
165
167 long onCmdCopy(FXObject*, FXSelector, void*);
168
170 long onCmdDelete(FXObject*, FXSelector, void*);
171
173 long onUpdSelected(FXObject*, FXSelector, void*);
174
176 long onPopupMenu(FXObject*, FXSelector, void*);
177
179 long onCmdImageSize(FXObject*, FXSelector, void*);
180
182 long onUpdImageSize(FXObject*, FXSelector, void*);
183
185 long onKeyPress(FXObject* obj, FXSelector sel, void* ptr);
186
188
189protected:
191 FOX_CONSTRUCTOR(GNEFileSelector)
192
193
195
197 const GNEFileDialog::OpenMode myOpenMode = GNEFileDialog::OpenMode::SAVE;
198
200 const GNEFileDialog::ConfigType myConfigType = GNEFileDialog::ConfigType::NETEDIT;
201
203 FXFileList* myFileSelector = nullptr;
204
207
210
212 FXMenuPane* myBookmarkMenuPane = nullptr;
213
215 FXDirBox* myDirBox = nullptr;
216
218 FXRecentFiles myBookmarksRecentFiles = nullptr;
219
221 std::vector<std::vector<std::string> > myExtensions;
222
223private:
225 std::vector<std::string> getSelectedFiles() const;
226
228 std::vector<std::string> getSelectedFilesOnly() const;
229
231 void buildBookmarkMenuPane(FXHorizontalFrame* navigatorHorizontalFrame);
232
234 void buildButtons(FXHorizontalFrame* navigatorHorizontalFrame, MFXStaticToolTip* staticTooltipMenu);
235
237 void buildShortcuts();
238
240 void parseExtensions(const std::vector<std::string>& extensions);
241
244
246 GNEFileSelector& operator=(const GNEFileSelector&) = delete;
247};
248
249/****************************************************************************/
OpenMode
file open mode
ConfigType
config type
void parseExtensions(const std::vector< std::string > &extensions)
parse extensions from pattern text
std::string getFilename() const
Return file name, if any.
void setFilename(const FXString &path)
Change file name.
long onCmdVisit(FXObject *, FXSelector, void *)
Handler for visiting a bookmarked location.
long onKeyPress(FXObject *obj, FXSelector sel, void *ptr)
called when user press a key
void setFileBoxStyle(FXuint style)
Change file list style.
FXint getImageSize() const
Return images preview size.
std::string getDirectory() const
Return directory.
GNEFileDialog * myFileDialog
FOX needs this.
FXDirBox * myDirBox
Directory hierarchy list.
long onCmdDelete(FXObject *, FXSelector, void *)
Handler for deleting an item.
long onCmdFilter(FXObject *, FXSelector, void *)
Handler for filtering items.
const std::vector< std::string > & getFileExtension() const
get file extension
long onCmdDirTree(FXObject *, FXSelector, void *)
Handler for directory tree navigation.
long onUpdImageSize(FXObject *, FXSelector, void *)
Update handler for enabling/disabling image size command.
long onCmdItemSelected(FXObject *, FXSelector, void *)
Handler for selecting an item.
std::vector< std::string > getSelectedFiles() const
get selected files
const GNEFileDialog::ConfigType myConfigType
config type
std::vector< std::vector< std::string > > myExtensions
extensions
std::vector< std::string > getFilenames() const
get file names
FXint getItemSpace() const
Return the inter-item spacing (in pixels)
const GNEFileDialog::OpenMode myOpenMode
open mode
virtual ~GNEFileSelector()
Destructor.
MFXComboBoxIcon * myFileFilterComboBox
Combobox for pattern list.
long onCmdDirectoryUp(FXObject *, FXSelector, void *)
Handler for moving up one directory.
void setDirectory(const FXString &path)
Change directory.
long onCmdNewFolder(FXObject *, FXSelector, void *)
Handler for creating a new item or directory.
FXFileList * myFileSelector
File list widget.
void buildShortcuts()
build shortcuts
MFXTextFieldIcon * getFilenameTextField() const
get file name entry field
long onCmdItemDoubleClicked(FXObject *obj, FXSelector sel, void *ptr)
Handler for double-clicking an item.
long onCmdCopy(FXObject *, FXSelector, void *)
Handler for copying an item.
void setPath(const std::string &path)
set path (either file or directory, used for testing)
FXbool showHiddenFiles() const
Return TRUE if showing hidden files.
long onCmdMove(FXObject *, FXSelector, void *)
Handler for moving an item.
FXuint getFileBoxStyle() const
Return file list style.
long onUpdDirectoryUp(FXObject *, FXSelector, void *)
Update handler for enabling/disabling directory up command.
long onCmdHomeFolder(FXObject *, FXSelector, void *)
Handler for navigating to the home directory.
long onCmdWorkFolder(FXObject *, FXSelector, void *)
Handler for navigating to the work directory.
long onCmdItemDeselected(FXObject *, FXSelector, void *)
Handler for deselecting an item.
long onCmdAccept(FXObject *, FXSelector, void *)
Handler for accepting a command.
std::vector< std::string > getSelectedFilesOnly() const
get selected files that are not directories
void setMatchMode(FXuint mode)
Change wildcard matching mode.
long onPopupMenu(FXObject *, FXSelector, void *)
Handler for showing the popup menu.
MFXTextFieldIcon * myFilenameTextField
File name entry field.
FXMenuPane * myBookmarkMenuPane
Menu for myBookmarksRecentFiles.
long onCmdConfigFolder(FXObject *, FXSelector, void *)
Handler for navigating to the sumo/netedit config directory.
FXbool showImages() const
Return TRUE if image preview on.
long onUpdNewFolder(FXObject *, FXSelector, void *)
Update handler for enabling/disabling new command.
long onUpdSelected(FXObject *, FXSelector, void *)
Update handler for enabling/disabling commands based on selection.
void setImageSize(FXint size)
Change images preview size.
long onCmdBookmark(FXObject *, FXSelector, void *)
Handler for opening myBookmarksRecentFiles.
void buildBookmarkMenuPane(FXHorizontalFrame *navigatorHorizontalFrame)
build bookmarks menu
void setItemSpace(FXint s)
Set the inter-item spacing (in pixels)
long onCmdImageSize(FXObject *, FXSelector, void *)
Handler for showing or calculating image size.
FXuint getMatchMode() const
Return wildcard matching mode.
void buildButtons(FXHorizontalFrame *navigatorHorizontalFrame, MFXStaticToolTip *staticTooltipMenu)
build buttons
FXRecentFiles myBookmarksRecentFiles
Bookmarked places.
void setFilter(const int index)
set file filter (used for testing)
MFXStaticToolTip (based on FXToolTip)
Definition json.hpp:4471