Files correlati : Commento : Spostamento in libraries delle librerie esterne di Campo per una maggiore pulizia e organizzazione git-svn-id: svn://10.65.10.50/branches/R_10_00@24150 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			219 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /****************************************************************************
 | |
| *
 | |
| *                       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 dynamically
 | |
| IMPLEMENT_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 all
 | |
| internal values for the class so that it can be properly created later
 | |
| via 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 selected
 | |
| manufacturer 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);
 | |
| }
 | |
| 
 |