25#include <wx/checkbox.h>
27#include <wx/filedlg.h>
29#include <wx/textctrl.h>
59 return Combo()->GetValue();
68 wxGridCellEditor::SetSize( rect );
82 wxTextEntry* textEntry =
static_cast<wxTextEntry*
>(
Combo() );
88 ch =
event.GetUnicodeKey();
95 ch =
event.GetKeyCode();
96 isPrintable = ch >= WXK_SPACE && ch < WXK_START;
103 textEntry->Remove( 0, 1 );
109 const long pos = textEntry->GetLastPosition();
110 textEntry->Remove( pos - 1, pos );
116 textEntry->WriteText(
static_cast<wxChar
>( ch ) );
125 auto evtHandler =
static_cast< wxGridCellEditorEvtHandler*
>( m_control->GetEventHandler() );
128 evtHandler->SetInSetFocus(
true );
130 m_value = aGrid->GetTable()->GetValue( aRow, aCol );
139 const wxString value =
Combo()->GetValue();
155 aGrid->GetTable()->SetValue( aRow, aCol,
m_value );
166void GRID_CELL_TEXT_BUTTON::SetValidator(
const wxValidator& validator )
168 m_validator.reset(
static_cast< wxValidator*
>( validator.Clone() ) );
177 const wxString& aPreselect ) :
178 wxComboCtrl( aParent ),
185 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
197 wxString libName = aRawValue.BeforeFirst(
':', &itemName );
204 wxString rawValue = GetValue();
206 if( rawValue.IsEmpty() )
213 if( frame->ShowModal( &symbolId,
m_dlg ) )
226 wxEvtHandler* aEventHandler )
231 wxGridCellEditor::Create( aParent, aId, aEventHandler );
239 const wxString& aSymbolNetlist,
const wxString& aPreselect ) :
240 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
241 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
250 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
271 wxString fpid = GetValue();
282 frame->KiwayMailIn( event );
285 if( frame->ShowModal( &fpid,
m_dlg ) )
313 wxEvtHandler* aEventHandler )
322 Combo()->SetValidator( *m_validator );
326 wxGridCellEditor::Create( aParent, aId, aEventHandler );
335 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
336 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
344 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
365 wxString filename = GetValue();
367 if( filename.IsEmpty() || filename == wxT(
"~" ) )
370 wxFileDialog openFileDialog(
this,
_(
"Open file" ),
"",
"",
"All files (*.*)|*.*",
371 wxFD_OPEN | wxFD_FILE_MUST_EXIST );
372 openFileDialog.SetCustomizeHook( customize );
374 if( openFileDialog.ShowModal() == wxID_OK )
376 filename = openFileDialog.GetPath();
377 wxFileName fn( filename );
386 SetValue(
"file://" + filename );
406 if( GetValue().IsEmpty() )
427 Combo()->SetValidator( *m_validator );
430 wxGridCellEditor::Create( aParent, aId, aEventHandler );
438 wxString* aCurrentDir,
const wxString& aFileFilter = wxEmptyString,
439 bool aNormalize =
false,
440 const wxString& aNormalizeBasePath = wxEmptyString ) :
441 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
442 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
453 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
457 wxString* aCurrentDir,
458 std::function<wxString(
WX_GRID*
grid,
int row )> aFileFilterFn,
459 bool aNormalize =
false,
460 const wxString& aNormalizeBasePath = wxEmptyString ) :
461 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
462 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
473 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
490 wxFileName fn = GetValue();
499 wxFileDialog dlg(
m_dlg,
_(
"Select a File" ), fn.GetPath(), fn.GetFullName(),
502 if( dlg.ShowModal() == wxID_OK )
504 wxString filePath = dlg.GetPath();
505 wxString lastPath = dlg.GetDirectory();
506 wxString relPath = wxEmptyString;
512 lastPath =
NormalizePath( dlg.GetDirectory(), &
Pgm().GetLocalEnvVariables(),
531 wxDirDialog dlg(
m_dlg,
_(
"Select Path" ), fn.GetPath(),
532 wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
534 if( dlg.ShowModal() == wxID_OK )
536 wxString filePath = dlg.GetPath();
537 wxString relPath = wxEmptyString;
574 wxEvtHandler* aEventHandler )
593 Combo()->SetValidator( *m_validator );
596 wxGridCellEditor::Create( aParent, aId, aEventHandler );
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap)
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
void CleanupAfterModalSubDialog()
void PrepareForModalSubDialog()
EMBEDDED_FILE * AddFile(const wxFileName &aName, bool aOverwrite)
Load a file from disk and adds it to the collection.
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 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
bool m_buttonFpChooserLock
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)
void UpdateButtonBitmaps()
void OnButtonClick() override
TEXT_BUTTON_URL(wxWindow *aParent, DIALOG_SHIM *aParentDlg, SEARCH_STACK *aSearchStack, EMBEDDED_FILES *aFiles)
void DoSetPopupControl(wxComboPopup *popup) override
void OnTextChange(wxCommandEvent &event)
SEARCH_STACK * m_searchStack
static void CellEditorSetMargins(wxTextEntryBase *aEntry)
A helper function to set OS-specific margins for text-based cell editors.
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
static void CellEditorTransformSizeRect(wxRect &aRect)
A helper function to tweak sizes of text-based cell editors depending on OS.
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, EMBEDDED_FILES *aFiles)
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.
Helper functions to substitute paths with environmental variables.
@ FRAME_FOOTPRINT_CHOOSER
PGM_BASE & Pgm()
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:...