📄 filepicker.h
字号:
/////////////////////////////////////////////////////////////////////////////// Name: wx/gtk/filedirpicker.h// Purpose: wxFileButton, wxDirButton header// Author: Francesco Montorsi// Modified by:// Created: 14/4/2006// Copyright: (c) Francesco Montorsi// RCS-ID: $Id: filepicker.h,v 1.6 2006/12/07 07:22:53 PC Exp $// Licence: wxWindows Licence/////////////////////////////////////////////////////////////////////////////#ifndef _WX_GTK_FILEPICKER_H_#define _WX_GTK_FILEPICKER_H_// since GtkColorButton is available only for GTK+ >= 2.4,// we need to use generic versions if we detect (at runtime)// that GTK+ < 2.4#include "wx/generic/filepickerg.h"//-----------------------------------------------------------------------------// wxFileButton and wxDirButton shared code// (cannot be a base class since they need to derive from wxGenericFileButton// and from wxGenericDirButton classes !)//-----------------------------------------------------------------------------#define FILEDIRBTN_OVERRIDES \ /* NULL is because of a problem with destruction order which happens */ \ /* if we pass GetParent(): in fact, this GTK native implementation */ \ /* needs to create the dialog in ::Create() and not for each user */ \ /* request in response to the user click as the generic implementation */ \ /* does. */ \ virtual wxWindow *GetDialogParent() \ { \ return NULL; \ } \ \ virtual bool Destroy() \ { \ m_dialog->Destroy(); \ return wxButton::Destroy(); \ } \ \ /* even if wx derive from wxGenericFileButton, i.e. from wxButton, our */ \ /* native GTK+ widget does not derive from GtkButton thus *all* uses */ \ /* GTK_BUTTON(m_widget) macro done by wxButton must be bypassed to */ \ /* avoid bunch of GTK+ warnings like: */ \ /* invalid cast from `GtkFileChooserButton' to `GtkButton' */ \ /* so, override wxButton::GTKGetWindow and return NULL as GTK+ doesn't */ \ /* give us access to the internal GdkWindow of a GtkFileChooserButton */ \protected: \ virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const \ { return NULL; }//-----------------------------------------------------------------------------// wxFileButton//-----------------------------------------------------------------------------class WXDLLIMPEXP_CORE wxFileButton : public wxGenericFileButton{public: wxFileButton() { m_dialog = NULL; } wxFileButton(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString &path = wxEmptyString, const wxString &message = wxFileSelectorPromptStr, const wxString &wildcard = wxFileSelectorDefaultWildcardStr, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxFILEBTN_DEFAULT_STYLE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr) { m_dialog = NULL; Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } virtual ~wxFileButton();public: // overrides bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString &path = wxEmptyString, const wxString &message = wxFileSelectorPromptStr, const wxString &wildcard = wxFileSelectorDefaultWildcardStr, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr); // event handler for the click void OnDialogOK(wxCommandEvent &); // GtkFileChooserButton does not support GTK_FILE_CHOOSER_ACTION_SAVE // so we replace it with GTK_FILE_CHOOSER_ACTION_OPEN; since wxFD_SAVE // is not supported, wxFD_OVERWRITE_PROMPT isn't too... virtual long GetDialogStyle() const { return (wxGenericFileButton::GetDialogStyle() & ~(wxFD_SAVE | wxFD_OVERWRITE_PROMPT)) | wxFD_OPEN; } virtual void SetPath(const wxString &str); // see macro defined above FILEDIRBTN_OVERRIDESprotected: wxDialog *m_dialog; DECLARE_DYNAMIC_CLASS(wxFileButton)};//-----------------------------------------------------------------------------// wxDirButton//-----------------------------------------------------------------------------class WXDLLIMPEXP_CORE wxDirButton : public wxGenericDirButton{public: wxDirButton() { Init(); } wxDirButton(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString &path = wxEmptyString, const wxString &message = wxFileSelectorPromptStr, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDIRBTN_DEFAULT_STYLE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr) { Init(); Create(parent, id, label, path, message, wxEmptyString, pos, size, style, validator, name); } virtual ~wxDirButton();public: // overrides bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString &path = wxEmptyString, const wxString &message = wxFileSelectorPromptStr, const wxString &wildcard = wxFileSelectorDefaultWildcardStr, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr); // GtkFileChooserButton does not support GTK_FILE_CHOOSER_CREATE_FOLDER // thus we must ensure that the wxDD_DIR_MUST_EXIST style was given long GetDialogStyle() const { return (wxGenericDirButton::GetDialogStyle() | wxDD_DIR_MUST_EXIST); } virtual void SetPath(const wxString &str); // see macro defined above FILEDIRBTN_OVERRIDESprotected: // common part of all ctors void Init() { m_dialog = NULL; m_bIgnoreNextChange = false; } wxDialog *m_dialog;public: // used by the GTK callback only bool m_bIgnoreNextChange; void UpdatePath(const char *gtkpath) { m_path = wxString::FromAscii(gtkpath); }private: DECLARE_DYNAMIC_CLASS(wxDirButton)};#undef FILEDIRBTN_OVERRIDES#endif // _WX_GTK_FILEPICKER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -