2001-05-02 20:59:28 +00:00
|
|
|
/****************************************************************************
|
|
|
|
*
|
2001-05-03 17:33:55 +00:00
|
|
|
* wxWindows HTML Applet Package
|
2001-05-02 20:59:28 +00:00
|
|
|
*
|
|
|
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
2001-06-12 18:52:03 +00:00
|
|
|
* ========================================================================
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* ========================================================================
|
2001-05-02 20:59:28 +00:00
|
|
|
*
|
2001-05-03 17:33:55 +00:00
|
|
|
* Language: ANSI C++
|
|
|
|
* Environment: Any
|
2001-05-02 20:59:28 +00:00
|
|
|
*
|
|
|
|
* Description: Main wxApplet class implementation
|
|
|
|
*
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
// For compilers that support precompilation
|
|
|
|
#include "wx/wxprec.h"
|
|
|
|
|
|
|
|
// Include private headers
|
2001-05-06 17:41:54 +00:00
|
|
|
#include "wx/wx.h"
|
2001-05-02 20:59:28 +00:00
|
|
|
#include "monitorapplet.h"
|
|
|
|
|
|
|
|
/*---------------------------- Global variables ---------------------------*/
|
|
|
|
|
|
|
|
// Implement the dynamic class so it can be constructed dynamically
|
|
|
|
IMPLEMENT_DYNAMIC_CLASS(MonitorApplet, wxApplet);
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
// Event handler table.
|
|
|
|
BEGIN_EVENT_TABLE(MonitorApplet, wxApplet)
|
2001-05-03 17:33:55 +00:00
|
|
|
EVT_LISTBOX(ID_LISTBOX_MFTR, MonitorApplet::OnChange)
|
|
|
|
EVT_LISTBOX(ID_LISTBOX_MDL, MonitorApplet::OnChange)
|
2001-05-02 20:59:28 +00:00
|
|
|
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.
|
2001-06-12 18:52:03 +00:00
|
|
|
#include "monitors.c"
|
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
/*------------------------- 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()
|
2001-06-12 18:52:03 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
m_Mfr = NULL;
|
|
|
|
m_Model = NULL;
|
|
|
|
m_Data = NULL;
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Psuedo virtual constructor for the MonitorApplet class.
|
|
|
|
****************************************************************************/
|
|
|
|
bool MonitorApplet::Create(
|
2001-05-03 17:33:55 +00:00
|
|
|
wxHtmlAppletWindow *parent,
|
|
|
|
const wxSize& size,
|
|
|
|
long style)
|
2001-05-02 20:59:28 +00:00
|
|
|
{
|
|
|
|
bool ret = wxApplet::Create(parent, size, style);
|
|
|
|
if (ret) {
|
2001-05-03 17:33:55 +00:00
|
|
|
// 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);
|
|
|
|
}
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-03 17:33:55 +00:00
|
|
|
// 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);
|
|
|
|
}
|
2001-05-02 20:59:28 +00:00
|
|
|
return ret;
|
|
|
|
}
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Destructor for the MonitorApplet class.
|
|
|
|
****************************************************************************/
|
|
|
|
MonitorApplet::~MonitorApplet()
|
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
delete m_Mfr;
|
|
|
|
delete m_Model;
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Save the current state for the applet to our cookie
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::SaveCurrentState()
|
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
// Read currently selected strings into cookie
|
2001-05-02 20:59:28 +00:00
|
|
|
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(
|
2001-06-12 18:52:03 +00:00
|
|
|
const wxHtmlLinkInfo&)
|
2001-05-02 20:59:28 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
SaveCurrentState();
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Handles user navigation away from the applet via the history forward command
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::OnHistoryForward()
|
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
SaveCurrentState();
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Handles user navigation away from the applet via the history back command
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::OnHistoryBack()
|
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
SaveCurrentState();
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-02 20:59:28 +00:00
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Handles inter applet communication messages
|
|
|
|
****************************************************************************/
|
2001-06-12 18:52:03 +00:00
|
|
|
void MonitorApplet::OnMessage(
|
2001-05-03 17:33:55 +00:00
|
|
|
wxEvent& msg)
|
2001-05-02 20:59:28 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
msg.Skip(true);
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::OnChange(
|
2001-05-03 17:33:55 +00:00
|
|
|
wxCommandEvent &evt)
|
2001-05-02 20:59:28 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
if (evt.GetId() == m_Mfr->GetListBoxId()) {
|
|
|
|
m_Mfr->OnChange(evt);
|
|
|
|
ReadModelList(true);
|
|
|
|
}
|
|
|
|
else if (evt.GetId() == m_Model->GetListBoxId()) {
|
2001-06-12 18:52:03 +00:00
|
|
|
m_Model->OnChange(evt);
|
2001-05-03 17:33:55 +00:00
|
|
|
}
|
2001-05-02 20:59:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Updates the manufacturer list for the dialog box from the database.
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::ReadMfrList()
|
2001-06-12 18:52:03 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
char buf[80] = "";
|
|
|
|
int i,selected = 0;
|
|
|
|
MonitorEntry *m;
|
2001-05-02 20:59:28 +00:00
|
|
|
|
|
|
|
m_Mfr->Clear();
|
2001-05-03 17:33:55 +00:00
|
|
|
for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) {
|
2001-05-06 17:41:54 +00:00
|
|
|
if (wxStricmp(buf,m->m_Mfr) != 0) {
|
2001-05-02 20:59:28 +00:00
|
|
|
m_Mfr->Append(m->m_Mfr);
|
2001-05-06 17:41:54 +00:00
|
|
|
if (wxStricmp(m_Data->m_Monitor.m_Mfr,m->m_Mfr) == 0)
|
2001-05-03 17:33:55 +00:00
|
|
|
selected = i;
|
|
|
|
strcpy(buf,m->m_Mfr);
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
2001-05-02 20:59:28 +00:00
|
|
|
m_Mfr->Select(selected);
|
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
REMARKS:
|
|
|
|
Updates the model list for the dialog box for the currently selected
|
|
|
|
manufacturer type.
|
|
|
|
****************************************************************************/
|
|
|
|
void MonitorApplet::ReadModelList(
|
|
|
|
bool selectCurrent)
|
2001-06-12 18:52:03 +00:00
|
|
|
{
|
2001-05-03 17:33:55 +00:00
|
|
|
int i,selected = 0;
|
|
|
|
MonitorEntry *m;
|
|
|
|
wxString mfrStr;
|
2001-06-12 18:52:03 +00:00
|
|
|
|
2001-05-03 17:33:55 +00:00
|
|
|
mfrStr = m_Mfr->GetStringSelection();
|
2001-05-02 20:59:28 +00:00
|
|
|
m_Model->Clear();
|
2001-05-03 17:33:55 +00:00
|
|
|
for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) {
|
2001-05-06 17:41:54 +00:00
|
|
|
if (wxStricmp(mfrStr,m->m_Mfr) == 0) {
|
2001-05-02 20:59:28 +00:00
|
|
|
m_Model->Append(m->m_Model);
|
2001-05-06 17:41:54 +00:00
|
|
|
if (selectCurrent && wxStricmp(m_Data->m_Monitor.m_Model,m->m_Model) == 0)
|
2001-05-03 17:33:55 +00:00
|
|
|
selected = i;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
}
|
2001-05-02 20:59:28 +00:00
|
|
|
m_Model->Select(selected);
|
|
|
|
}
|
|
|
|
|