26#include <wx/filedlg.h>
28#include <wx/textctrl.h>
56 return Combo()->GetValue();
64#if defined( __WXMAC__ )
66#elif defined( __WXGTK__ )
76 Combo()->SetSize( rect, wxSIZE_ALLOW_MINUS_ONE );
90 wxTextEntry* textEntry =
static_cast<wxTextEntry*
>(
Combo() );
96 ch =
event.GetUnicodeKey();
103 ch =
event.GetKeyCode();
104 isPrintable = ch >= WXK_SPACE && ch < WXK_START;
111 textEntry->Remove( 0, 1 );
117 const long pos = textEntry->GetLastPosition();
118 textEntry->Remove( pos - 1, pos );
124 textEntry->WriteText(
static_cast<wxChar
>( ch ) );
132 auto evtHandler =
static_cast< wxGridCellEditorEvtHandler*
>( m_control->GetEventHandler() );
135 evtHandler->SetInSetFocus(
true );
137 m_value = aGrid->GetTable()->GetValue( aRow, aCol );
146 const wxString value =
Combo()->GetValue();
162 aGrid->GetTable()->SetValue( aRow, aCol,
m_value );
173void GRID_CELL_TEXT_BUTTON::SetValidator(
const wxValidator& validator )
175 m_validator.reset(
static_cast< wxValidator*
>( validator.Clone() ) );
184 const wxString& aPreselect ) :
185 wxComboCtrl( aParent ),
189 SetButtonBitmaps(
KiBitmap( BITMAPS::small_library ) );
192 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
204 wxString libName = aRawValue.BeforeFirst(
':', &itemName );
211 wxString rawValue = GetValue();
213 if( rawValue.IsEmpty() )
231 wxEvtHandler* aEventHandler )
235 wxGridCellEditor::Create( aParent, aId, aEventHandler );
243 const wxString& aSymbolNetlist,
const wxString& aPreselect ) :
244 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
245 wxTE_PROCESS_ENTER ),
250 SetButtonBitmaps(
KiBitmap( BITMAPS::small_library ) );
253 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
265 wxString fpid = GetValue();
298 wxEvtHandler* aEventHandler )
306 Combo()->SetValidator( *m_validator );
310 wxGridCellEditor::Create( aParent, aId, aEventHandler );
318 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
319 wxTE_PROCESS_ENTER ),
323 SetButtonBitmaps(
KiBitmap( BITMAPS::www ) );
326 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
337 wxString filename = GetValue();
339 if( !filename.IsEmpty() && filename != wxT(
"~" ) )
349 wxEvtHandler* aEventHandler )
357 Combo()->SetValidator( *m_validator );
361 wxGridCellEditor::Create( aParent, aId, aEventHandler );
369 wxString* aCurrentDir,
const wxString& aFileFilter = wxEmptyString,
370 bool aNormalize =
false,
371 const wxString& aNormalizeBasePath = wxEmptyString ) :
372 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
373 wxTE_PROCESS_ENTER ),
381 SetButtonBitmaps(
KiBitmap( BITMAPS::small_folder ) );
384 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
388 wxString* aCurrentDir,
389 std::function<wxString(
WX_GRID*
grid,
int row )> aFileFilterFn,
390 bool aNormalize =
false,
391 const wxString& aNormalizeBasePath = wxEmptyString ) :
392 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
393 wxTE_PROCESS_ENTER ),
401 SetButtonBitmaps(
KiBitmap( BITMAPS::small_folder ) );
404 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
419 wxFileName fn = GetValue();
428 wxFileDialog dlg(
m_dlg,
_(
"Select a File" ), fn.GetPath(), fn.GetFullName(),
431 if( dlg.ShowModal() == wxID_OK )
433 wxString filePath = dlg.GetPath();
434 wxString lastPath = dlg.GetDirectory();
435 wxString relPath = wxEmptyString;
441 lastPath =
NormalizePath( dlg.GetDirectory(), &
Pgm().GetLocalEnvVariables(),
460 wxDirDialog dlg(
m_dlg,
_(
"Select Path" ), fn.GetPath(),
461 wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
463 if( dlg.ShowModal() == wxID_OK )
465 wxString filePath = dlg.GetPath();
466 wxString relPath = wxEmptyString;
500 wxEvtHandler* aEventHandler )
513 Combo()->SetValidator( *m_validator );
517 wxGridCellEditor::Create( aParent, aId, aEventHandler );
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
void Create(wxWindow *aParent, wxWindowID aId, wxEvtHandler *aEventHandler) override
void Create(wxWindow *aParent, wxWindowID aId, wxEvtHandler *aEventHandler) override
std::function< wxString(WX_GRID *aGrid, int aRow)> m_fileFilterFn
wxString m_normalizeBasePath
void Create(wxWindow *aParent, wxWindowID aId, wxEvtHandler *aEventHandler) override
wxString GetValue() const override
wxComboCtrl * Combo() const
void StartingKey(wxKeyEvent &event) override
void BeginEdit(int aRow, int aCol, wxGrid *aGrid) override
bool EndEdit(int, int, const wxGrid *, const wxString &, wxString *aNewVal) override
void ApplyEdit(int aRow, int aCol, wxGrid *aGrid) override
void SetSize(const wxRect &aRect) override
SEARCH_STACK * m_searchStack
void Create(wxWindow *aParent, wxWindowID aId, wxEvtHandler *aEventHandler) override
Carry a payload from one KIWAY_PLAYER to another within a PROJECT.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
virtual bool ShowModal(wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until t...
virtual void KiwayMailIn(KIWAY_EXPRESS &aEvent)
Receive KIWAY_EXPRESS messages from other players.
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Look for files in a number of paths.
void OnButtonClick() override
void DoSetPopupControl(wxComboPopup *popup) override
std::function< wxString(WX_GRID *aGrid, int aRow)> m_fileFilterFn
wxString m_normalizeBasePath
TEXT_BUTTON_FILE_BROWSER(wxWindow *aParent, DIALOG_SHIM *aParentDlg, WX_GRID *aGrid, wxString *aCurrentDir, std::function< wxString(WX_GRID *grid, int row)> aFileFilterFn, bool aNormalize=false, const wxString &aNormalizeBasePath=wxEmptyString)
TEXT_BUTTON_FILE_BROWSER(wxWindow *aParent, DIALOG_SHIM *aParentDlg, WX_GRID *aGrid, wxString *aCurrentDir, const wxString &aFileFilter=wxEmptyString, bool aNormalize=false, const wxString &aNormalizeBasePath=wxEmptyString)
std::string m_symbolNetlist
void OnButtonClick() override
void DoSetPopupControl(wxComboPopup *popup) override
TEXT_BUTTON_FP_CHOOSER(wxWindow *aParent, DIALOG_SHIM *aParentDlg, const wxString &aSymbolNetlist, const wxString &aPreselect)
void DoSetPopupControl(wxComboPopup *popup) override
wxString escapeLibId(const wxString &aRawValue)
void OnButtonClick() override
TEXT_BUTTON_SYMBOL_CHOOSER(wxWindow *aParent, DIALOG_SHIM *aParentDlg, const wxString &aPreselect)
TEXT_BUTTON_URL(wxWindow *aParent, DIALOG_SHIM *aParentDlg, SEARCH_STACK *aSearchStack)
void OnButtonClick() override
void DoSetPopupControl(wxComboPopup *popup) override
SEARCH_STACK * m_searchStack
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
const wxString ExpandEnvVarSubstitutions(const wxString &aString, const PROJECT *aProject)
Replace any environment variable & text variable references with their values.
bool GetAssociatedDocument(wxWindow *aParent, const wxString &aDocName, PROJECT *aProject, SEARCH_STACK *aPaths)
Open a document (file) with the suitable browser.
This file is part of the common library.
wxString NormalizePath(const wxFileName &aFilePath, const ENV_VAR_MAP *aEnvVars, const wxString &aProjectPath)
Normalize a file path to an environmental variable, if possible.
@ FRAME_FOOTPRINT_CHOOSER
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
wxString UnescapeString(const wxString &aSource)
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...