diff options
author | Jorgen Bodde <jorgb@xs4all.nl> | 2005-06-30 19:54:14 (GMT) |
---|---|---|
committer | Jorgen Bodde <jorgb@xs4all.nl> | 2005-06-30 19:54:14 (GMT) |
commit | 8c28e4e9f0b82ec96b4b68c370a8fc50333b093c (patch) | |
tree | ad8c3ff74a3ef384d0c1df3f2b2f7781b9de42bd /Source/WXDialog/CMakeSetupFrame.h | |
parent | 099587c4ee40f05e99666eeab92a0357cd932a38 (diff) | |
download | CMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.zip CMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.tar.gz CMake-8c28e4e9f0b82ec96b4b68c370a8fc50333b093c.tar.bz2 |
Initial checkin new wx dialog
Diffstat (limited to 'Source/WXDialog/CMakeSetupFrame.h')
-rw-r--r-- | Source/WXDialog/CMakeSetupFrame.h | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/Source/WXDialog/CMakeSetupFrame.h b/Source/WXDialog/CMakeSetupFrame.h new file mode 100644 index 0000000..accadae --- /dev/null +++ b/Source/WXDialog/CMakeSetupFrame.h @@ -0,0 +1,360 @@ +/*========================================================================= + + Program: WXDialog - wxWidgets X-platform GUI Front-End for CMake + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Author: Jorgen Bodde + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#ifndef _CMAKESETUPFRAME_H_ +#define _CMAKESETUPFRAME_H_ + +#if defined(__GNUG__) && !defined(__APPLE__) +#pragma interface "CMakeSetupFrame.cpp" +#endif + +/*! + * Includes + */ + +////@begin includes +#include "wx/frame.h" +#include "wx/splitter.h" +#include "wx/grid.h" +#include "wx/statline.h" +#include "wx/statusbr.h" +////@end includes + +#include <wx/config.h> +#include <wx/dataobj.h> +#include <wx/dnd.h> + + +#include "../cmake.h" +#include "progressdlg.h" +#include "optionsdlg.h" +#include "CommandLineInfo.h" +#include "config.h" + +// this ID should be taken as base to make sure they are unique +// NOTE: DialogBlocks starts at 10100 so 10000 to 10099 are free +#define CM_NEXT_USABLEID CM_RECENT_BUILD_ITEM + CM_MAX_RECENT_PATHS + +/*! + * Forward declarations + */ + +////@begin forward declarations +class wxSplitterWindow; +class wxPropertyList; +////@end forward declarations + +/*! + * Control identifiers + */ + +////@begin control identifiers +#define ID_FRAME 10100 +#define SYMBOL_CMAKESETUPFRM_STYLE wxDEFAULT_FRAME_STYLE|wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_BOX|wxSUNKEN_BORDER +#define SYMBOL_CMAKESETUPFRM_TITLE _("CMake Setup v2.0.x") +#define SYMBOL_CMAKESETUPFRM_IDNAME ID_FRAME +#define SYMBOL_CMAKESETUPFRM_SIZE wxSize(600, 550) +#define SYMBOL_CMAKESETUPFRM_POSITION wxDefaultPosition +#define ID_SPLITTERWINDOW 10101 +#define ID_MAINPANEL 10102 +#define ID_PROJECT_PATH 10103 +#define ID_BROWSE_PROJECT 10104 +#define ID_SOURCE_BUILD_PATH 10105 +#define ID_BROWSE_BUILD 10106 +#define ID_CHOOSE_GENERATOR 10107 +#define ID_SEARCHQUERY 10109 +#define ID_SHOW_ADVANCED 10108 +#define ID_OPTIONS 10110 +#define ID_LOGPANEL 10111 +#define ID_LOG_AREA 10112 +#define ID_DESCRIPTION 10113 +#define ID_DO_CONFIGURE 10114 +#define ID_DO_OK 10115 +#define ID_DO_CANCEL 10116 +#define ID_DO_DELETE_CACHE 10117 +#define ID_CLEAR_LOG 10118 +#define ID_BROWSE_GRID 10119 +#define ID_STATUSBAR 10120 +#define ID_MENU_RELOAD_CACHE 10122 +#define ID_MENU_DELETE_CACHE 10123 +#define ID_MENU_QUIT 10125 +#define ID_MENU_CONFIGURE 10126 +#define ID_MENU_EXITGENERATE 10127 +#define ID_MENU_TOGGLE_ADVANCED 10128 +#define ID_CMAKE_OPTIONS 10124 +#define ID_ABOUTDLG 10121 +////@end control identifiers + +/*! + * Compatibility + */ + +#ifndef wxCLOSE_BOX +#define wxCLOSE_BOX 0x1000 +#endif +#ifndef wxFIXED_MINSIZE +#define wxFIXED_MINSIZE 0 +#endif + +class DnDFile : public wxFileDropTarget +{ +public: + DnDFile(wxTextCtrl *pOwner) + : m_pOwner(pOwner) + { + }; + + virtual bool OnDropFiles(wxCoord x, wxCoord y, + const wxArrayString& filenames); + +private: + wxTextCtrl *m_pOwner; +}; + + +/*! + * CMakeSetupFrm class declaration + */ + +class CMakeSetupFrm: public wxFrame +{ + DECLARE_CLASS( CMakeSetupFrm ) + DECLARE_EVENT_TABLE() + +public: + /// Constructors + CMakeSetupFrm( ); + CMakeSetupFrm( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE ); + + // Destructor + virtual ~CMakeSetupFrm(); + + bool Create( wxWindow* parent, wxWindowID id = SYMBOL_CMAKESETUPFRM_IDNAME, const wxString& caption = SYMBOL_CMAKESETUPFRM_TITLE, const wxPoint& pos = SYMBOL_CMAKESETUPFRM_POSITION, const wxSize& size = SYMBOL_CMAKESETUPFRM_SIZE, long style = SYMBOL_CMAKESETUPFRM_STYLE ); + + /// Creates the controls and sizers + void CreateControls(); + + /** Logs a message. For the kind parameter use; + 1 - neutral message + 0 - warning message (blue text) + -1 - error message (red text) + */ + void LogMessage(int logkind, const char *msg); + + void UpdateProgress(float progress) { + if(m_progressDlg) + m_progressDlg->SetProgress(progress); + + // also show in the tiny field + wxStatusBar *bar = GetStatusBar(); + if(bar) + { + wxString str; + str.Printf("%2.1f %%", (progress * 100)); + bar->SetStatusText(str, 1); + } + }; + + void IssueUpdate(); + + /** Initialise all crap in the frame, like listing the make generators, + selecting the best one to use, and loading the cache for the first time + when the build paths were set */ + void DoInitFrame(cmCommandLineInfo &cm, const wxString &fn); + +////@begin CMakeSetupFrm event handler declarations + + /// wxEVT_CLOSE_WINDOW event handler for ID_FRAME + void OnCloseWindow( wxCloseEvent& event ); + + /// wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING event handler for ID_SPLITTERWINDOW + void OnSplitterPosChanging( wxSplitterEvent& event ); + + /// wxEVT_COMMAND_SPLITTER_DOUBLECLICKED event handler for ID_SPLITTERWINDOW + void OnSplitterwindowSashDClick( wxSplitterEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_PROJECT + void OnButtonBrowseProject( wxCommandEvent& event ); + + /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SOURCE_BUILD_PATH + void OnSourceBuildPathUpdated( wxCommandEvent& event ); + + /// wxEVT_COMMAND_TEXT_ENTER event handler for ID_SOURCE_BUILD_PATH + void OnSourceBuildPathEnter( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_BUILD + void OnButtonBrowseBuild( wxCommandEvent& event ); + + /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_SEARCHQUERY + void OnSearchquerySelected( wxCommandEvent& event ); + + /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SEARCHQUERY + void OnSearchqueryUpdated( wxCommandEvent& event ); + + /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_SHOW_ADVANCED + void OnShowAdvancedValues( wxCommandEvent& event ); + + /// wxEVT_GRID_CELL_CHANGE event handler for ID_OPTIONS + void OnCellChange( wxGridEvent& event ); + + /// wxEVT_GRID_SELECT_CELL event handler for ID_OPTIONS + void OnGridSelectCell( wxGridEvent& event ); + + /// wxEVT_MOTION event handler for ID_OPTIONS + void OnPropertyMotion( wxMouseEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CONFIGURE + void OnButtonConfigure( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_OK + void OnButtonOk( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_CANCEL + void OnButtonCancel( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_DO_DELETE_CACHE + void OnButtonDeleteCache( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_CLEAR_LOG + void OnClearLogClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BROWSE_GRID + void OnBrowseGridClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_RELOAD_CACHE + void OnMenuReloadCacheClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_DELETE_CACHE + void OnMenuDeleteCacheClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_QUIT + void OnMenuQuitClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_CONFIGURE + void OnMenuConfigureClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_EXITGENERATE + void OnMenuGenerateClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_MENU_TOGGLE_ADVANCED + void OnMenuToggleAdvancedClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_CMAKE_OPTIONS + void OnOptionsClick( wxCommandEvent& event ); + + /// wxEVT_COMMAND_MENU_SELECTED event handler for ID_ABOUTDLG + void OnAboutClick( wxCommandEvent& event ); + +////@end CMakeSetupFrm event handler declarations + + void OnRecentFileMenu( wxCommandEvent &event ); + + void OnAddQuery ( wxCommandEvent &event ); + +////@begin CMakeSetupFrm member function declarations + + /// Retrieves bitmap resources + wxBitmap GetBitmapResource( const wxString& name ); + + /// Retrieves icon resources + wxIcon GetIconResource( const wxString& name ); +////@end CMakeSetupFrm member function declarations + + /// Should we show tooltips? + static bool ShowToolTips(); + + /** Load cache for the CMakeLists to the GUI */ + void LoadCacheFromDiskToGUI(); + + /** Display the grid with the loaded cache. */ + void FillCacheGUIFromCacheManager(); + + int RunCMake(bool generateProjectFiles); + + /** Save cache to disk from the GUI */ + void SaveCacheFromGUI(); + + void FillCacheManagerFromCacheGUI(); + + /** Update the cache and mark all the new items as old */ + bool PerformCacheRun(); + + /** Shows the property matched by the row in the description area + or nothing when the row is not correct */ + void ShowPropertyDescription(int row); + + /** Disable or enable controls based upon the internal state of the + program */ + void UpdateWindowState(); + + void AppendPathToRecentList(const wxString &p); + + /** Used to synchonise any options that have immediate effect on the GUI + form, like clearing a search list, resetting a spitter perhaps, etc */ + void SyncFormOptions(CMOptionsDlg *dlg); + + void DoCancelButton(); + + void DoReloadCache(); + + void DoDeleteCache(); + + void DoConfigure(); + + void DoGenerate(); + + void OnExitTimer(wxTimerEvent &event); + +////@begin CMakeSetupFrm member variables + wxSplitterWindow* m_splitter; + wxTextCtrl* m_cmProjectPath; + wxButton* m_BrowseProjectPathButton; + wxTextCtrl* m_cmBuildPath; + wxButton* m_BrowseSourcePathButton; + wxComboBox* m_cmGeneratorChoice; + wxComboBox* m_cmSearchQuery; + wxCheckBox* m_cmShowAdvanced; + wxPropertyList* m_cmOptions; + wxTextCtrl* m_cmLog; + wxTextCtrl* m_cmDescription; + wxButton* m_ConfigureButton; + wxButton* m_OkButton; + wxButton* m_CancelButton; + wxButton* m_DeleteCacheButton; + wxButton* m_ClearLogButton; + wxButton* m_cmBrowseCell; +////@end CMakeSetupFrm member variables + + // this is the cmake instance with which we will communicate + // to generate our stuff, and get the info from. + cmake *m_cmake; + + // the config class for project build dir and source path + wxTimer *m_ExitTimer; + wxConfig *m_config; + wxString m_PathToExecutable; + wxArrayString m_recentPaths; + CMProgressDialog *m_progressDlg; + bool m_RunningConfigure; + bool m_noRefresh; + bool m_quitAfterGenerating; +}; + +#endif + // _CMAKESETUPFRAME_H_ |