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, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 0, 0 ) ),
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, wxSize( 0, 0 ),
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, wxSize( 0, 0 ),
336 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
344 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
365 wxString filename = GetValue();
367 if( filename.IsEmpty() || filename == wxT(
"~" ) )
371 wxFileDialog openFileDialog(
this,
_(
"Open file" ),
"",
"",
372 _(
"All Files" ) + wxT(
" (*.*)|*.*" ),
373 wxFD_OPEN | wxFD_FILE_MUST_EXIST );
375 openFileDialog.SetCustomizeHook( customize );
377 if( openFileDialog.ShowModal() == wxID_OK )
379 filename = openFileDialog.GetPath();
380 wxFileName fn( filename );
389 SetValue(
"file://" + filename );
409 if( GetValue().IsEmpty() )
430 Combo()->SetValidator( *m_validator );
433 wxGridCellEditor::Create( aParent, aId, aEventHandler );
441 wxString* aCurrentDir,
const wxString& aFileFilter = wxEmptyString,
442 bool aNormalize =
false,
443 const wxString& aNormalizeBasePath = wxEmptyString ) :
444 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 0, 0 ),
445 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
456 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
460 wxString* aCurrentDir,
461 std::function<wxString(
WX_GRID*
grid,
int row )> aFileFilterFn,
462 bool aNormalize =
false,
463 const wxString& aNormalizeBasePath = wxEmptyString ) :
464 wxComboCtrl( aParent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 0, 0 ),
465 wxTE_PROCESS_ENTER | wxBORDER_NONE ),
476 Customize( wxCC_IFLAG_HAS_NONSTANDARD_BUTTON );
493 wxFileName fn = GetValue();
502 wxFileDialog dlg(
m_dlg,
_(
"Select a File" ), fn.GetPath(), fn.GetFullName(),
505 if( dlg.ShowModal() == wxID_OK )
507 wxString filePath = dlg.GetPath();
508 wxString lastPath = dlg.GetDirectory();
509 wxString relPath = wxEmptyString;
515 lastPath =
NormalizePath( dlg.GetDirectory(), &
Pgm().GetLocalEnvVariables(),
534 wxDirDialog dlg(
m_dlg,
_(
"Select Path" ), fn.GetPath(),
535 wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST );
537 if( dlg.ShowModal() == wxID_OK )
539 wxString filePath = dlg.GetPath();
540 wxString relPath = wxEmptyString;
577 wxEvtHandler* aEventHandler )
596 Combo()->SetValidator( *m_validator );
599 wxGridCellEditor::Create( aParent, aId, aEventHandler );
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
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:...