-/****************************************************************************
-*
-* wxWindows HTML Applet Package
-*
-* Copyright (C) 1991-2001 SciTech Software, Inc.
-* All rights reserved.
-*
-* ======================================================================
-* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
-* | |
-* |This copyrighted computer code is a proprietary trade secret of |
-* |SciTech Software, Inc., located at 505 Wall Street, Chico, CA 95928 |
-* |USA (www.scitechsoft.com). ANY UNAUTHORIZED POSSESSION, USE, |
-* |VIEWING, COPYING, MODIFICATION OR DISSEMINATION OF THIS CODE IS |
-* |STRICTLY PROHIBITED BY LAW. Unless you have current, express |
-* |written authorization from SciTech to possess or use this code, you |
-* |may be subject to civil and/or criminal penalties. |
-* | |
-* |If you received this code in error or you would like to report |
-* |improper use, please immediately contact SciTech Software, Inc. at |
-* |530-894-8400. |
-* | |
-* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW|
-* ======================================================================
-*
-* Language: ANSI C++
-* Environment: Any
-*
-* Description: Main wxApplet class implementation
-*
-****************************************************************************/
-
-// For compilers that support precompilation
-#include "wx/wxprec.h"
-
-// Include private headers
-#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 (stricmp(buf,m->m_Mfr) != 0) {
- m_Mfr->Append(m->m_Mfr);
- if (stricmp(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 (stricmp(mfrStr,m->m_Mfr) == 0) {
- m_Model->Append(m->m_Model);
- if (selectCurrent && stricmp(m_Data->m_Monitor.m_Model,m->m_Model) == 0)
- selected = i;
- i++;
- }
- }
- m_Model->Select(selected);
-}
-