Audacity  3.0.3
Public Member Functions | Private Member Functions | Private Attributes | List of all members
DirectoriesPrefs Class Referencefinal

A PrefsPanel used to select directories. More...

#include <DirectoriesPrefs.h>

Inheritance diagram for DirectoriesPrefs:
[legend]
Collaboration diagram for DirectoriesPrefs:
[legend]

Public Member Functions

 DirectoriesPrefs (wxWindow *parent, wxWindowID winid)
 
 ~DirectoriesPrefs ()
 
ComponentInterfaceSymbol GetSymbol () override
 
TranslatableString GetDescription () override
 
bool Commit () override
 
bool Validate () override
 
ManualPageID HelpPageName () override
 If not empty string, the Help button is added below the panel. More...
 
void PopulateOrExchange (ShuttleGui &S) override
 
- Public Member Functions inherited from PrefsPanel
 PrefsPanel (wxWindow *parent, wxWindowID winid, const TranslatableString &title)
 
virtual ~PrefsPanel ()
 
virtual void Preview ()
 
virtual PluginPath GetPath ()
 
virtual VendorSymbol GetVendor ()
 
virtual wxString GetVersion ()
 
virtual bool ShowsPreviewButton ()
 
virtual void PopulateOrExchange (ShuttleGui &WXUNUSED(S))
 
virtual void Cancel ()
 
- Public Member Functions inherited from wxPanelWrapper
 wxPanelWrapper ()
 
 wxPanelWrapper (wxWindow *parent, wxWindowID winid=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL|wxNO_BORDER, const TranslatableString &name=XO("Panel"))
 
bool Create (wxWindow *parent, wxWindowID winid=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL|wxNO_BORDER, const TranslatableString &name=XO("Panel"))
 
void SetLabel (const TranslatableString &label)
 
void SetName (const TranslatableString &name)
 
void SetToolTip (const TranslatableString &toolTip)
 
void SetName ()
 
- Public Member Functions inherited from wxTabTraversalWrapper< wxPanel >
 wxTabTraversalWrapper (Args &&... args)
 
 wxTabTraversalWrapper (const wxTabTraversalWrapper &)=delete
 
 wxTabTraversalWrapper (wxTabTraversalWrapper &&)=delete
 
wxTabTraversalWrapperoperator= (const wxTabTraversalWrapper &)=delete
 
wxTabTraversalWrapperoperator= (wxTabTraversalWrapper &&)=delete
 

Private Member Functions

void Populate ()
 Creates the dialog and its contents. More...
 
void OnTempText (wxCommandEvent &evt)
 
void OnTempBrowse (wxCommandEvent &evt)
 
void OnBrowse (wxCommandEvent &evt)
 
void OnText (wxCommandEvent &evt)
 

Private Attributes

ReadOnlyTextmFreeSpace
 
wxTextCtrl * mTempText
 
wxTextCtrl * mOpenText
 
wxTextCtrl * mSaveText
 
wxTextCtrl * mImportText
 
wxTextCtrl * mExportText
 
wxTextCtrl * mMacrosText
 

Additional Inherited Members

- Public Types inherited from PrefsPanel
using Factories = std::vector< PrefsPanel::PrefsNode >
 
using Factory = std::function< PrefsPanel *(wxWindow *parent, wxWindowID winid, AudacityProject *) >
 
- Static Public Member Functions inherited from PrefsPanel
static FactoriesDefaultFactories ()
 

Detailed Description

A PrefsPanel used to select directories.

Definition at line 24 of file DirectoriesPrefs.h.

Constructor & Destructor Documentation

◆ DirectoriesPrefs()

DirectoriesPrefs::DirectoriesPrefs ( wxWindow *  parent,
wxWindowID  winid 
)

Definition at line 144 of file DirectoriesPrefs.cpp.

146 : PrefsPanel(parent, winid, XO("Directories")),
147  mFreeSpace(NULL),
148  mTempText(NULL)
149 {
150  Populate();
151 }

◆ ~DirectoriesPrefs()

DirectoriesPrefs::~DirectoriesPrefs ( )

Definition at line 153 of file DirectoriesPrefs.cpp.

154 {
155 }

Member Function Documentation

◆ Commit()

bool DirectoriesPrefs::Commit ( )
overridevirtual

Implements PrefsPanel.

Definition at line 512 of file DirectoriesPrefs.cpp.

513 {
514  ShuttleGui S(this, eIsSavingToPrefs);
516 
517  return true;
518 }

References eIsSavingToPrefs.

◆ GetDescription()

TranslatableString DirectoriesPrefs::GetDescription ( )
overridevirtual

Implements ComponentInterface.

Definition at line 162 of file DirectoriesPrefs.cpp.

163 {
164  return XO("Preferences for Directories");
165 }

References XO.

◆ GetSymbol()

ComponentInterfaceSymbol DirectoriesPrefs::GetSymbol ( )
overridevirtual

Implements ComponentInterface.

Definition at line 157 of file DirectoriesPrefs.cpp.

158 {
160 }

References DIRECTORIES_PREFS_PLUGIN_SYMBOL.

◆ HelpPageName()

ManualPageID DirectoriesPrefs::HelpPageName ( )
overridevirtual

If not empty string, the Help button is added below the panel.

Default returns empty string.

Reimplemented from PrefsPanel.

Definition at line 167 of file DirectoriesPrefs.cpp.

168 {
169  return "Directories_Preferences";
170 }

◆ OnBrowse()

void DirectoriesPrefs::OnBrowse ( wxCommandEvent &  evt)
private

Definition at line 355 of file DirectoriesPrefs.cpp.

356 {
357  long id = evt.GetId() - ButtonsStart;
358  wxTextCtrl *tc = (wxTextCtrl *) FindWindow(id + TextsStart);
359 
360  wxString location = tc->GetValue();
361 
362  wxDirDialogWrapper dlog(this,
363  XO("Choose a location"),
364  location);
365  int retval = dlog.ShowModal();
366 
367  if (retval == wxID_CANCEL)
368  {
369  return;
370  }
371 
372  if (evt.GetId() == SaveButtonID)
373  {
374  if (FATFilesystemDenied(dlog.GetPath(),
375  XO("Projects cannot be saved to FAT drives.")))
376  {
377  return;
378  }
379  }
380 
381  //Checks if the location for Open,Save.Import,Export and Macro Output has write permissions(Browse Buttons)
382  if (!FileNames::WritableLocationCheck(dlog.GetPath(), XO("Cannot set the preference.")))
383  {
384  return;
385  }
386 
387  tc->SetValue(dlog.GetPath());
388 }

References TempDirectory::FATFilesystemDenied(), SaveButtonID, FileNames::WritableLocationCheck(), and XO.

Here is the call graph for this function:

◆ OnTempBrowse()

void DirectoriesPrefs::OnTempBrowse ( wxCommandEvent &  evt)
private

Definition at line 271 of file DirectoriesPrefs.cpp.

272 {
273  wxString oldTemp = gPrefs->Read(PreferenceKey(Operation::Open, PathType::_None),
274  DefaultTempDir());
275 
276  // Because we went through InitTemp() during initialisation,
277  // the old temp directory name in prefs should already be OK. Just in case there is
278  // some way we hadn't thought of for it to be not OK,
279  // we avoid prompting with it in that case and use the suggested default instead.
280  if (!IsTempDirectoryNameOK(oldTemp))
281  {
282  oldTemp = DefaultTempDir();
283  }
284 
285  wxDirDialogWrapper dlog(this,
286  XO("Choose a location to place the temporary directory"),
287  oldTemp);
288  int retval = dlog.ShowModal();
289  if (retval != wxID_CANCEL && !dlog.GetPath().empty())
290  {
291  wxFileName tmpDirPath;
292  tmpDirPath.AssignDir(dlog.GetPath());
293 
294  if (FATFilesystemDenied(tmpDirPath.GetFullPath(),
295  XO("Temporary files directory cannot be on a FAT drive."))) {
296  return;
297  }
298 
299  //Checks if the temporary directory has write permissions(via Browse Button)
300  if (!FileNames::WritableLocationCheck(dlog.GetPath(), XO("Cannot set the preference.")))
301  {
302  return;
303  }
304 
305  // Append an "audacity_temp" directory to this path if necessary (the
306  // default, the existing pref (as stored in the control), and any path
307  // ending in a directory with the same name as what we'd add should be OK
308  // already)
309  wxString newDirName;
310 #if defined(__WXMAC__)
311  newDirName = wxT("SessionData");
312 #elif defined(__WXMSW__)
313  // Clearing Bug 1271 residual issue. Let's NOT have temp in the name.
314  newDirName = wxT("SessionData");
315 #else
316  newDirName = wxT(".audacity_temp");
317 #endif
318  auto dirsInPath = tmpDirPath.GetDirs();
319 
320  // If the default temp dir or user's pref dir don't end in '/' they cause
321  // wxFileName's == operator to construct a wxFileName representing a file
322  // (that doesn't exist) -- hence the constructor calls
323  if (tmpDirPath != wxFileName(DefaultTempDir(), wxT("")) &&
324  tmpDirPath != wxFileName(mTempText->GetValue(), wxT("")) &&
325  (dirsInPath.size() == 0 ||
326  dirsInPath[dirsInPath.size()-1] != newDirName))
327  {
328  tmpDirPath.AppendDir(newDirName);
329  }
330 
331  mTempText->SetValue(tmpDirPath.GetPath(wxPATH_GET_VOLUME|wxPATH_GET_SEPARATOR));
332  OnTempText(evt);
333  }
334 }

References TempDirectory::DefaultTempDir(), TempDirectory::FATFilesystemDenied(), gPrefs, TempDirectory::IsTempDirectoryNameOK(), FileNames::PreferenceKey(), FileNames::WritableLocationCheck(), and XO.

Here is the call graph for this function:

◆ OnTempText()

void DirectoriesPrefs::OnTempText ( wxCommandEvent &  evt)
private

Definition at line 336 of file DirectoriesPrefs.cpp.

337 {
339 
340  if (mTempText && mFreeSpace)
341  {
342  FilePath path = mTempText->GetValue();
343 
344  wxLongLong space;
345  wxGetDiskSpace(path, NULL, &space);
346 
347  label = wxDirExists(path)
348  ? Internat::FormatSize(space)
349  : XO("unavailable - above location doesn't exist");
350 
352  }
353 }

References Internat::FormatSize(), label, TranslatableString::Translation(), and XO.

Here is the call graph for this function:

◆ OnText()

void DirectoriesPrefs::OnText ( wxCommandEvent &  evt)
private

◆ Populate()

void DirectoriesPrefs::Populate ( )
private

Creates the dialog and its contents.

Definition at line 173 of file DirectoriesPrefs.cpp.

174 {
175  //------------------------- Main section --------------------
176  // Now construct the GUI itself.
177  // Use 'eIsCreatingFromPrefs' so that the GUI is
178  // initialised with values from gPrefs.
181  // ----------------------- End of main section --------------
182 
183  wxCommandEvent e;
184  OnTempText(e);
185 }

References eIsCreatingFromPrefs.

◆ PopulateOrExchange()

void DirectoriesPrefs::PopulateOrExchange ( ShuttleGui S)
override

Definition at line 187 of file DirectoriesPrefs.cpp.

188 {
189  S.SetBorder(2);
190  S.StartScroller();
191 
192  S.StartStatic(XO("Default directories"));
193  {
194  S.AddSpace(1);
195  S.AddFixedText(XO("Leave a field empty to go to the last directory used for that operation.\n"
196  "Fill in a field to always go to that directory for that operation."), false, 450);
197  S.AddSpace(5);
198 
199  S.StartMultiColumn(3, wxEXPAND);
200  {
201  S.SetStretchyCol(1);
202 
203  S.Id(OpenTextID);
204  mOpenText = S.TieTextBox(XXO("O&pen:"),
205  {PreferenceKey(Operation::Open, PathType::User),
206  wxT("")},
207  30);
208  S.Id(OpenButtonID).AddButton(XXO("&Browse..."));
209 
210  S.Id(SaveTextID);
211  mSaveText = S.TieTextBox(XXO("S&ave:"),
212  {PreferenceKey(Operation::Save, PathType::User),
213  wxT("")},
214  30);
215  if( mSaveText )
216  mSaveText->SetValidator(FilesystemValidator(XO("Projects cannot be saved to FAT drives.")));
217  S.Id(SaveButtonID).AddButton(XXO("B&rowse..."));
218 
219  S.Id(ImportTextID);
220  mImportText = S.TieTextBox(XXO("&Import:"),
221  {PreferenceKey(Operation::Import, PathType::User),
222  wxT("")},
223  30);
224  S.Id(ImportButtonID).AddButton(XXO("Br&owse..."));
225 
226  S.Id(ExportTextID);
227  mExportText = S.TieTextBox(XXO("&Export:"),
228  {PreferenceKey(Operation::Export, PathType::User),
229  wxT("")},
230  30);
231  S.Id(ExportButtonID).AddButton(XXO("Bro&wse..."));
232 
233  S.Id(MacrosTextID);
234  mMacrosText = S.TieTextBox(XXO("&Macro output:"),
235  {PreferenceKey(Operation::MacrosOut, PathType::User),
236  wxT("")},
237  30);
238  S.Id(MacrosButtonID).AddButton(XXO("Bro&wse..."));
239 
240 
241  }
242  S.EndMultiColumn();
243  }
244  S.EndStatic();
245 
246  S.StartStatic(XO("Temporary files directory"));
247  {
248  S.StartMultiColumn(3, wxEXPAND);
249  {
250  S.SetStretchyCol(1);
251 
252  S.Id(TempTextID);
253  mTempText = S.TieTextBox(XXO("&Location:"),
254  {PreferenceKey(Operation::Temp, PathType::_None),
255  wxT("")},
256  30);
257  if( mTempText )
258  mTempText->SetValidator(FilesystemValidator(XO("Temporary files directory cannot be on a FAT drive.")));
259  S.Id(TempButtonID).AddButton(XXO("Brow&se..."));
260 
261  mFreeSpace = S
262  .AddReadOnlyText(XXO("&Free Space:"), "");
263  }
264  S.EndMultiColumn();
265  }
266  S.EndStatic();
267 
268  S.EndScroller();
269 }

References ShuttleGuiBase::AddButton(), ShuttleGuiBase::AddFixedText(), ShuttleGuiBase::AddReadOnlyText(), ShuttleGui::AddSpace(), ShuttleGuiBase::EndMultiColumn(), ShuttleGuiBase::EndScroller(), ShuttleGuiBase::EndStatic(), ExportButtonID, ShuttleGui::Id(), ImportButtonID, FileNames::PreferenceKey(), SaveButtonID, ShuttleGuiBase::SetBorder(), ShuttleGuiBase::SetStretchyCol(), ShuttleGuiBase::StartMultiColumn(), ShuttleGuiBase::StartScroller(), ShuttleGuiBase::StartStatic(), ShuttleGuiBase::TieTextBox(), XO, and XXO.

Here is the call graph for this function:

◆ Validate()

bool DirectoriesPrefs::Validate ( )
override

Definition at line 421 of file DirectoriesPrefs.cpp.

422 {
423  wxFileName Temp;
424  Temp.SetPath(mTempText->GetValue());
425 
426  wxString path{Temp.GetPath()};
427  if( !IsTempDirectoryNameOK( path ) ) {
429  XO("Directory %s is not suitable (at risk of being cleaned out)")
430  .Format( path ),
431  XO("Error"),
432  wxOK | wxICON_ERROR);
433  return false;
434  }
435 
436  if (!Temp.DirExists()) {
437  if(CreateDirectory(path, XO("'Temporary Directory' cannot be set.")) == false)
438  return false;
439  }
440  else {
441  /* If the directory already exists, make sure it is writable */
443  XO("'Temporary files' directory cannot be set.")))
444  {
445  return false;
446  }
447  wxLogNull logNo;
448  Temp.AppendDir(wxT("canicreate"));
449  path = Temp.GetPath();
450  if (!Temp.Mkdir(0755)) {
452  XO("Directory %s is not writable")
453  .Format( path ),
454  XO("Error"),
455  wxOK | wxICON_ERROR);
456  return false;
457  }
458  Temp.Rmdir();
459  Temp.RemoveLastDir();
460  }
461 
462  wxFileName oldDir;
463  oldDir.SetPath(TempDir());
464  if (Temp != oldDir) {
466  XO(
467 "Changes to temporary directory will not take effect until Audacity is restarted"),
468  XO("Temp Directory Update"),
469  wxOK | wxCENTRE | wxICON_INFORMATION);
470  }
471 
472  const wxString openPathString = mOpenText->GetValue();
473  const wxString savePathString = mSaveText->GetValue();
474  const wxString importPathString = mImportText->GetValue();
475  const wxString exportPathString = mExportText->GetValue();
476  const wxString macroPathString = mMacrosText->GetValue();
477  //error messages if the directories could not be set.
478  const std::initializer_list<TranslatableString> messagesPreference{
479  XO("'Open' directory cannot be set.") ,
480  XO("'Save' directory cannot be set.") ,
481  XO("'Import' directory cannot be set.") ,
482  XO("'Export' directory cannot be set.") ,
483  XO("'Macro Output' directory cannot be set.") ,
484  };
485 
486  //flag for checking if at least one directory write protected
487  //will not be 0 if any of the paths are not writable
488  int flag = 0;
489  //id for indexing error messages to the initializer_list.
490  int id = 0;
491  //Checks if the location for Open,Save,Import,Export and Macro Output has write permissions(When OK is clicked)
492  for (auto &string : { openPathString, savePathString, importPathString, exportPathString, macroPathString} ) {
493  const wxFileName currentPath { string };
494  const auto & message = *(messagesPreference.begin() + id);
495  if(!string.empty()){
496  if (currentPath.DirExists()){
497  if(!FileNames::WritableLocationCheck(string, message))
498  flag++;
499  }
500  else {
501  return CreateDirectory(string, message);
502  }
503  }
504  id++;
505  }
506  if (flag != 0)
507  return false;
508 
509  return true;
510 }

References AudacityMessageBox(), CreateDirectory(), flag, id, TempDirectory::IsTempDirectoryNameOK(), TempDirectory::TempDir(), FileNames::WritableLocationCheck(), and XO.

Here is the call graph for this function:

Member Data Documentation

◆ mExportText

wxTextCtrl* DirectoriesPrefs::mExportText
private

Definition at line 51 of file DirectoriesPrefs.h.

◆ mFreeSpace

ReadOnlyText* DirectoriesPrefs::mFreeSpace
private

Definition at line 46 of file DirectoriesPrefs.h.

◆ mImportText

wxTextCtrl* DirectoriesPrefs::mImportText
private

Definition at line 50 of file DirectoriesPrefs.h.

◆ mMacrosText

wxTextCtrl* DirectoriesPrefs::mMacrosText
private

Definition at line 52 of file DirectoriesPrefs.h.

◆ mOpenText

wxTextCtrl* DirectoriesPrefs::mOpenText
private

Definition at line 48 of file DirectoriesPrefs.h.

◆ mSaveText

wxTextCtrl* DirectoriesPrefs::mSaveText
private

Definition at line 49 of file DirectoriesPrefs.h.

◆ mTempText

wxTextCtrl* DirectoriesPrefs::mTempText
private

Definition at line 47 of file DirectoriesPrefs.h.


The documentation for this class was generated from the following files:
TranslatableString
Holds a msgid for the translation catalog; may also bind format arguments.
Definition: TranslatableString.h:32
TempDirectory::DefaultTempDir
FILES_API const FilePath & DefaultTempDir()
Definition: TempDirectory.cpp:58
AudacityMessageBox
int AudacityMessageBox(const TranslatableString &message, const TranslatableString &caption, long style, wxWindow *parent, int x, int y)
Definition: AudacityMessageBox.cpp:17
flag
static std::once_flag flag
Definition: WaveformView.cpp:1124
gPrefs
FileConfig * gPrefs
Definition: Prefs.cpp:70
Format
Abstract base class used in importing a file.
ReadOnlyText::SetValue
void SetValue(const wxString &value)
Definition: ReadOnlyText.h:125
DirectoriesPrefs::mImportText
wxTextCtrl * mImportText
Definition: DirectoriesPrefs.h:50
ShuttleGui::AddSpace
wxSizerItem * AddSpace(int width, int height, int prop=0)
Definition: ShuttleGui.cpp:2459
wxDirDialogWrapper
Definition: wxPanelWrapper.h:126
XO
#define XO(s)
Definition: Internat.h:31
ShuttleGuiBase::EndMultiColumn
void EndMultiColumn()
Definition: ShuttleGui.cpp:1238
DirectoriesPrefs::mExportText
wxTextCtrl * mExportText
Definition: DirectoriesPrefs.h:51
ExportButtonID
@ ExportButtonID
Definition: BatchProcessDialog.cpp:506
DirectoriesPrefs::mSaveText
wxTextCtrl * mSaveText
Definition: DirectoriesPrefs.h:49
FileNames::PreferenceKey
FILES_API wxString PreferenceKey(FileNames::Operation op, FileNames::PathType type)
ShuttleGui::Id
ShuttleGui & Id(int id)
Definition: ShuttleGui.cpp:2274
ShuttleGuiBase::TieTextBox
wxTextCtrl * TieTextBox(const TranslatableString &Caption, wxString &Value, const int nChars=0)
Definition: ShuttleGui.cpp:1652
DirectoriesPrefs::Populate
void Populate()
Creates the dialog and its contents.
Definition: DirectoriesPrefs.cpp:173
ShuttleGuiBase::EndScroller
void EndScroller()
Definition: ShuttleGui.cpp:971
DirectoriesPrefs::OnTempText
void OnTempText(wxCommandEvent &evt)
Definition: DirectoriesPrefs.cpp:336
DirectoriesPrefs::mFreeSpace
ReadOnlyText * mFreeSpace
Definition: DirectoriesPrefs.h:46
XXO
#define XXO(s)
Definition: Internat.h:44
ShuttleGuiBase::StartScroller
wxScrolledWindow * StartScroller(int iStyle=0)
Definition: ShuttleGui.cpp:938
FilePath
wxString FilePath
Definition: Project.h:20
DirectoriesPrefs::PopulateOrExchange
void PopulateOrExchange(ShuttleGui &S) override
Definition: DirectoriesPrefs.cpp:187
label
TranslatableString label
Definition: Tags.cpp:756
DirectoriesPrefs::mOpenText
wxTextCtrl * mOpenText
Definition: DirectoriesPrefs.h:48
ShuttleGuiBase::StartMultiColumn
void StartMultiColumn(int nCols, int PositionFlags=wxALIGN_LEFT)
Definition: ShuttleGui.cpp:1229
ImportButtonID
@ ImportButtonID
Definition: BatchProcessDialog.cpp:505
ShuttleGuiBase::AddFixedText
void AddFixedText(const TranslatableString &Str, bool bCenter=false, int wrapWidth=0)
Definition: ShuttleGui.cpp:440
CreateDirectory
bool CreateDirectory(const wxString pathString, const TranslatableString &message)
Definition: DirectoriesPrefs.cpp:392
Internat::FormatSize
static TranslatableString FormatSize(wxLongLong size)
Convert a number to a string while formatting it in bytes, KB, MB, GB.
Definition: Internat.cpp:203
DirectoriesPrefs::mMacrosText
wxTextCtrl * mMacrosText
Definition: DirectoriesPrefs.h:52
FilesystemValidator
Definition: DirectoriesPrefs.cpp:47
TempDirectory::IsTempDirectoryNameOK
FILES_API bool IsTempDirectoryNameOK(const FilePath &Name)
Definition: TempDirectory.cpp:70
ShuttleGuiBase::AddReadOnlyText
ReadOnlyText * AddReadOnlyText(const TranslatableString &Caption, const wxString &Value)
Definition: ShuttleGui.cpp:496
SaveButtonID
@ SaveButtonID
Definition: BatchProcessDialog.cpp:507
ShuttleGuiBase::AddButton
wxButton * AddButton(const TranslatableString &Text, int PositionFlags=wxALIGN_CENTRE, bool setDefault=false)
Definition: ShuttleGui.cpp:360
ShuttleGuiBase::StartStatic
wxStaticBox * StartStatic(const TranslatableString &Str, int iProp=0)
Definition: ShuttleGui.cpp:893
eIsSavingToPrefs
@ eIsSavingToPrefs
Definition: ShuttleGui.h:48
id
int id
Definition: WaveTrackControls.cpp:591
DIRECTORIES_PREFS_PLUGIN_SYMBOL
#define DIRECTORIES_PREFS_PLUGIN_SYMBOL
Definition: DirectoriesPrefs.h:22
FileNames::WritableLocationCheck
FILES_API bool WritableLocationCheck(const FilePath &path, const TranslatableString &message)
Check location on writable access and return true if checked successfully.
TempDirectory::FATFilesystemDenied
FILES_API bool FATFilesystemDenied(const FilePath &path, const TranslatableString &msg, const BasicUI::WindowPlacement &placement={})
Definition: TempDirectory.cpp:115
DirectoriesPrefs::mTempText
wxTextCtrl * mTempText
Definition: DirectoriesPrefs.h:47
TranslatableString::Translation
wxString Translation() const
Definition: TranslatableString.h:79
ShuttleGuiBase::SetBorder
void SetBorder(int Border)
Definition: ShuttleGui.h:489
eIsCreatingFromPrefs
@ eIsCreatingFromPrefs
Definition: ShuttleGui.h:47
ShuttleGuiBase::EndStatic
void EndStatic()
Definition: ShuttleGui.cpp:922
ShuttleGuiBase::SetStretchyCol
void SetStretchyCol(int i)
Used to modify an already placed FlexGridSizer to make a column stretchy.
Definition: ShuttleGui.cpp:202
ShuttleGui
Derived from ShuttleGuiBase, an Audacity specific class for shuttling data to and from GUI.
Definition: ShuttleGui.h:631
PrefsPanel::PrefsPanel
PrefsPanel(wxWindow *parent, wxWindowID winid, const TranslatableString &title)
Definition: PrefsPanel.h:90
TempDirectory::TempDir
FILES_API wxString TempDir()
Definition: TempDirectory.cpp:26