📄 monitorapplet.cpp
字号:
/****************************************************************************** wxWindows HTML Applet Package** Copyright (C) 1991-2001 SciTech Software, Inc.* All rights reserved.** ========================================================================** The contents of this file are subject to the wxWindows License* Version 3.0 (the "License"); you may not use this file except in* compliance with the License. You may obtain a copy of the License at* http://www.wxwindows.org/licence3.txt** Software distributed under the License is distributed on an* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or* implied. See the License for the specific language governing* rights and limitations under the License.** ========================================================================** Language: ANSI C++* Environment: Any** Description: Main wxApplet class implementation*****************************************************************************/// For compilers that support precompilation#include "wx/wxprec.h"// Include private headers#include "wx/wx.h"#include "monitorapplet.h"/*---------------------------- Global variables ---------------------------*/// Implement the dynamic class so it can be constructed dynamicallyIMPLEMENT_DYNAMIC_CLASS(MonitorApplet, wxApplet)// Event handler table.BEGIN_EVENT_TABLE(MonitorApplet, wxApplet) EVT_LISTBOX(ID_LISTBOX_MFTR, MonitorApplet::OnChange) EVT_LISTBOX(ID_LISTBOX_MDL, MonitorApplet::OnChange)END_EVENT_TABLE()// Include database of known monitors. Normally this would come from a// real database on disk, but for this simple example we hard code all// the values into a table.#include "monitors.c"/*------------------------- Implementation --------------------------------*//****************************************************************************REMARKS:Constructor called during dynamic creation. Simple initialise allinternal values for the class so that it can be properly created latervia the virtual Create member function.****************************************************************************/MonitorApplet::MonitorApplet(){ m_Mfr = NULL; m_Model = NULL; m_Data = NULL;}/****************************************************************************REMARKS:Psuedo virtual constructor for the MonitorApplet class.****************************************************************************/bool MonitorApplet::Create( wxHtmlAppletWindow *parent, const wxSize& size, long style){ bool ret = wxApplet::Create(parent, size, style); if (ret) { // Read our cookie or create it if it does not exist if ((m_Data = (MonitorData*)parent->FindCookie(MONITOR_COOKIE_NAME)) == NULL) { m_Data = new MonitorData; memset(&m_Data->m_Monitor,0,sizeof(m_Data->m_Monitor)); parent->RegisterCookie(MONITOR_COOKIE_NAME,m_Data); } // Create all the controls and initialise them MonitorDialogFunc(this,true,true); if ((m_Mfr = new ComboBox(this , ID_LISTBOX_MFTR, ID_TEXTCTRL_MFTR)) == NULL) return false; if ((m_Model = new ComboBox(this , ID_LISTBOX_MDL, ID_TEXTCTRL_MDL)) == NULL) return false; ReadMfrList(); ReadModelList(true); } return ret;}/****************************************************************************REMARKS:Destructor for the MonitorApplet class.****************************************************************************/MonitorApplet::~MonitorApplet(){ delete m_Mfr; delete m_Model;}/****************************************************************************REMARKS:Save the current state for the applet to our cookie****************************************************************************/void MonitorApplet::SaveCurrentState(){ // Read currently selected strings into cookie strcpy(m_Data->m_Monitor.m_Mfr,m_Mfr->GetStringSelection()); strcpy(m_Data->m_Monitor.m_Model,m_Model->GetStringSelection());}/****************************************************************************REMARKS:Handles user navigation away from the applet via an HTML link****************************************************************************/void MonitorApplet::OnLinkClicked( const wxHtmlLinkInfo&){ SaveCurrentState();}/****************************************************************************REMARKS:Handles user navigation away from the applet via the history forward command****************************************************************************/void MonitorApplet::OnHistoryForward(){ SaveCurrentState();}/****************************************************************************REMARKS:Handles user navigation away from the applet via the history back command****************************************************************************/void MonitorApplet::OnHistoryBack(){ SaveCurrentState();}/****************************************************************************REMARKS:Handles inter applet communication messages****************************************************************************/void MonitorApplet::OnMessage( wxEvent& msg){ msg.Skip(true);}/****************************************************************************REMARKS:****************************************************************************/void MonitorApplet::OnChange( wxCommandEvent &evt){ if (evt.GetId() == m_Mfr->GetListBoxId()) { m_Mfr->OnChange(evt); ReadModelList(true); } else if (evt.GetId() == m_Model->GetListBoxId()) { m_Model->OnChange(evt); }}/****************************************************************************REMARKS:Updates the manufacturer list for the dialog box from the database.****************************************************************************/void MonitorApplet::ReadMfrList(){ char buf[80] = ""; int i,selected = 0; MonitorEntry *m; m_Mfr->Clear(); for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) { if (wxStricmp(buf,m->m_Mfr) != 0) { m_Mfr->Append(m->m_Mfr); if (wxStricmp(m_Data->m_Monitor.m_Mfr,m->m_Mfr) == 0) selected = i; strcpy(buf,m->m_Mfr); i++; } } m_Mfr->Select(selected);}/****************************************************************************REMARKS:Updates the model list for the dialog box for the currently selectedmanufacturer type.****************************************************************************/void MonitorApplet::ReadModelList( bool selectCurrent){ int i,selected = 0; MonitorEntry *m; wxString mfrStr; mfrStr = m_Mfr->GetStringSelection(); m_Model->Clear(); for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) { if (wxStricmp(mfrStr,m->m_Mfr) == 0) { m_Model->Append(m->m_Model); if (selectCurrent && wxStricmp(m_Data->m_Monitor.m_Model,m->m_Model) == 0) selected = i; i++; } } m_Model->Select(selected);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -