- Modify the way the the skin.xml is read and stored

- Added a bit of trace logging
    	- Modified the preferences dialogue so that changing the skin is a seperate action
    	  from changing local settings
    	- Fixed some bugs that were causing the BSG to crash

svn path=/trunk/boinc/; revision=11155
This commit is contained in:
Kevin Reed 2006-09-14 16:02:55 +00:00
parent aef50da4f1
commit a025d6621d
10 changed files with 187 additions and 288 deletions

View File

@ -10225,3 +10225,22 @@ David 12 Sept 2006
forum_sample_index.php (removed)
py/Boinc/
setup_project.py
Kevin 14 Sept 2006
- BSG
- Modify the way the the skin.xml is read and stored
- Added a bit of trace logging
- Modified the preferences dialogue so that changing the skin is a seperate action
from changing local settings
- Fixed some bugs that were causing the BSG to crash
clientgui/
sg_BoincSimpleGUI.cpp
sg_DlgPreferences.cpp/h
sg_ProgressBar.cpp
sg_ProjectsComponent.cpp
sg_SkinClass.cpp/h
sg_StaticLine.cpp/h
sg_SkinClass.cpp
sg_SkinClass.cpp

View File

@ -106,7 +106,7 @@ CSimpleFrame::~CSimpleFrame()
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::CSimpleFrame - Destructor Function Begin"));
wxString strBaseConfigLocation = wxString(wxT("/"));
wxConfigBase* pConfig = wxConfigBase::Get(FALSE);
wxConfigBase* pConfig = wxConfigBase::Get();
wxASSERT(m_pFrameRenderTimer);
@ -439,7 +439,7 @@ void CSimpleFrame::InitNotebook()
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::InitNotebook - Function End"));
}
void CSimpleFrame::LoadSkinImages(){
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::LoadSkinImages - Function Start"));
wxString dirPref = appSkin->GetSkinsFolder()+_T("/")+appSkin->GetSkinName()+_T("/");
fileImgBuf[0].LoadFile(dirPref + appSkin->GetAppBg(),wxBITMAP_TYPE_PNG);
@ -450,12 +450,14 @@ void CSimpleFrame::LoadSkinImages(){
/// work unit tabs icons
wxBitmap const workWUico = wxBitmap(g_icoWorkWU);
// push them in image list
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::LoadSkinImages - Time to push"));
m_ImageList.push_back(workWUico);
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::LoadSkinImages - Function End"));
}
///
///
void CSimpleFrame::ReskinAppGUI(){
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::ReskinAppGUI - Function Start"));
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::ReskinAppGUI - Function Start"));
//bg color
LoadSkinImages();
SetBackgroundColour(appSkin->GetAppBgCol());
@ -477,7 +479,7 @@ void CSimpleFrame::ReskinAppGUI(){
//reskin component
projComponent->ReskinInterface();
Refresh();
wxLogTrace(wxT("Function Start/End"), wxT("CAdvancedFrame::ReskinAppGUI - Function End"));
wxLogTrace(wxT("Function Start/End"), wxT("CSimpleFrame::ReskinAppGUI - Function End"));
}
void CSimpleFrame::OnBtnClick(wxCommandEvent& event){ //init function

View File

@ -25,17 +25,18 @@
#include "BOINCGUIApp.h"
#include "sg_DlgPreferences.h"
#include "sg_SkinClass.h"
//#include <wx/dir.h>
#include "sg_StaticLine.h"
enum
{
ID_OPENBUTTON = 10001,
ID_SAVEBUTTON = 10002,
ID_CANCELBUTTON = 10003,
ID_CLEARBUTTON = 10007,
ID_SKINPICKERCMBBOX = 10004,
ID_DOWORKONLYBGNCMBBOX = 10005,
ID_DOCONNECTONLYBGNCMBBOX = 10006,
ID_SAVESKINBUTTON = 10003,
ID_CANCELBUTTON = 10004,
ID_CLEARBUTTON = 10005,
ID_SKINPICKERCMBBOX = 10006,
ID_DOWORKONLYBGNCMBBOX = 10007,
ID_DOCONNECTONLYBGNCMBBOX = 10008,
};
BEGIN_EVENT_TABLE( CDlgPreferences,wxDialog)
@ -87,18 +88,29 @@ void CDlgPreferences::CreateDialog()
m_prefs = pDoc->state.global_prefs;
}
SetBackgroundColour(appSkin->GetAppBgCol());
cmbSkinPicker=new wxComboBox(this,ID_SKINPICKERCMBBOX,wxT(""),wxPoint(206,37),wxSize(140,21),m_skinNames,wxNO_BORDER | wxCB_READONLY);
cmbSkinPicker->SetValue(m_SkinName);
wxToolTip *ttSaveSkin = new wxToolTip(wxT("Change skin"));
btnSaveSkin=new wxBitmapButton(this,ID_SAVESKINBUTTON,btmpSave,wxPoint(187,82),wxSize(57,16),wxNO_BORDER);
btnSaveSkin->SetBitmapSelected(btmpSaveClick);
btnSaveSkin->SetToolTip(ttSaveSkin);
lnMyTop = new CStaticLine(this,wxPoint(16,113),wxSize(378,1));
lnMyTop->SetLineColor(appSkin->GetStaticLineCol());
wxString itmsHourIntervals[]={wxT("0:00"),wxT("1:00"),wxT("2:00"),wxT("3:00"),wxT("4:00"),wxT("5:00"),wxT("6:00"),wxT("7:00"),wxT("8:00"),wxT("9:00"),wxT("10:00"),wxT("11:00"),wxT("12:00"),
wxT("13:00"),wxT("14:00"),wxT("15:00"),wxT("16:00"),wxT("17:00"),wxT("18:00"),wxT("19:00"),wxT("20:00"),wxT("21:00"),wxT("22:00"),wxT("23:00")};
cmbDWBtwnBgn=new wxComboBox(this,ID_DOWORKONLYBGNCMBBOX,wxT(""),wxPoint(206,90),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
cmbDWBtwnBgn=new wxComboBox(this,ID_DOWORKONLYBGNCMBBOX,wxT(""),wxPoint(206,155),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
//
cmbDWBtwnEnd=new wxComboBox(this,-1,wxT(""),wxPoint(307,90),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
cmbDWBtwnEnd=new wxComboBox(this,-1,wxT(""),wxPoint(307,155),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
//
cmbCTIBtwnBgn=new wxComboBox(this,ID_DOCONNECTONLYBGNCMBBOX,wxT(""),wxPoint(206,125),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
cmbCTIBtwnBgn=new wxComboBox(this,ID_DOCONNECTONLYBGNCMBBOX,wxT(""),wxPoint(206,190),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
//
cmbCTIBtwnEnd=new wxComboBox(this,-1,wxT(""),wxPoint(307,125),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
cmbCTIBtwnEnd=new wxComboBox(this,-1,wxT(""),wxPoint(307,190),wxSize(75,21),24,itmsHourIntervals,wxNO_BORDER | wxCB_READONLY);
//
wxString userValMaxUsed;
if(m_prefs.disk_max_used_gb < 1){
@ -110,14 +122,14 @@ void CDlgPreferences::CreateDialog()
int itmUseNoMore = 6;
if(!this->CheckIfInArray(itmsUseNoMoreGB,userValMaxUsed,itmUseNoMore)){
wxString itmsUseNoMoreGBU[]={wxT("100MB"),wxT("200MB"),wxT("500MB"),wxT("1GB"),wxT("2GB"),wxT("5GB"),userValMaxUsed};
cmbUseNoMoreGB=new wxComboBox(this,-1,wxT(""),wxPoint(206,160),wxSize(75,21),itmUseNoMore+1,itmsUseNoMoreGBU,wxNO_BORDER | wxCB_READONLY);
cmbUseNoMoreGB=new wxComboBox(this,-1,wxT(""),wxPoint(206,225),wxSize(75,21),itmUseNoMore+1,itmsUseNoMoreGBU,wxNO_BORDER | wxCB_READONLY);
}else{
cmbUseNoMoreGB=new wxComboBox(this,-1,wxT(""),wxPoint(206,160),wxSize(75,21),itmUseNoMore,itmsUseNoMoreGB,wxNO_BORDER | wxCB_READONLY);
cmbUseNoMoreGB=new wxComboBox(this,-1,wxT(""),wxPoint(206,225),wxSize(75,21),itmUseNoMore,itmsUseNoMoreGB,wxNO_BORDER | wxCB_READONLY);
}
cmbUseNoMoreGB->SetValue(userValMaxUsed);
//
wxString itmsDWWCInUse[]={wxT("Yes"),wxT("No")};
cmbDWWCInUse=new wxComboBox(this,-1,wxT(""),wxPoint(206,195),wxSize(45,21),2,itmsDWWCInUse,wxNO_BORDER | wxCB_READONLY);
cmbDWWCInUse=new wxComboBox(this,-1,wxT(""),wxPoint(206,260),wxSize(45,21),2,itmsDWWCInUse,wxNO_BORDER | wxCB_READONLY);
if(m_prefs.run_if_user_active){
cmbDWWCInUse->SetValue(wxT("Yes"));
}else{
@ -130,27 +142,24 @@ void CDlgPreferences::CreateDialog()
int itmIdlCnt = 6;
if(!this->CheckIfInArray(itmsDWACIdleFor,userValIdleFor,itmIdlCnt)){
wxString itmsDWACIdleForU[]={wxString("1"),wxString("5"),wxString("10"),wxString("15"),wxString("30"),wxString("60"),userValIdleFor};
cmbDWACIdleFor=new wxComboBox(this,-1,wxT(""),wxPoint(206,230),wxSize(75,21),itmIdlCnt+1,itmsDWACIdleForU,wxNO_BORDER | wxCB_READONLY);
cmbDWACIdleFor=new wxComboBox(this,-1,wxT(""),wxPoint(206,295),wxSize(75,21),itmIdlCnt+1,itmsDWACIdleForU,wxNO_BORDER | wxCB_READONLY);
}else{
cmbDWACIdleFor=new wxComboBox(this,-1,wxT(""),wxPoint(206,230),wxSize(75,21),itmIdlCnt,itmsDWACIdleFor,wxNO_BORDER | wxCB_READONLY);
cmbDWACIdleFor=new wxComboBox(this,-1,wxT(""),wxPoint(206,295),wxSize(75,21),itmIdlCnt,itmsDWACIdleFor,wxNO_BORDER | wxCB_READONLY);
}
cmbDWACIdleFor->SetValue(userValIdleFor);
//
cmbSkinPicker=new wxComboBox(this,ID_SKINPICKERCMBBOX,wxT(""),wxPoint(206,265),wxSize(140,21),m_skinNames,wxNO_BORDER | wxCB_READONLY);
cmbSkinPicker->SetValue(m_SkinName);
// Btn Save and Cancel
wxToolTip *ttSave = new wxToolTip(wxT("Save preferences"));
btnSave=new wxBitmapButton(this,ID_SAVEBUTTON,btmpSave,wxPoint(120,325),wxSize(57,16),wxNO_BORDER);
wxToolTip *ttSave = new wxToolTip(wxT("Save preferences locally and close window"));
btnSave=new wxBitmapButton(this,ID_SAVEBUTTON,btmpSave,wxPoint(120,340),wxSize(57,16),wxNO_BORDER);
btnSave->SetBitmapSelected(btmpSaveClick);
btnSave->SetToolTip(ttSave);
wxToolTip *ttCancel = new wxToolTip(wxT("Cancel changes"));
btnCancel=new wxBitmapButton(this,ID_CANCELBUTTON,btmpCancel,wxPoint(187,325),wxSize(57,16),wxNO_BORDER);
wxToolTip *ttCancel = new wxToolTip(wxT("Cancel changes and close window"));
btnCancel=new wxBitmapButton(this,ID_CANCELBUTTON,btmpCancel,wxPoint(187,340),wxSize(57,16),wxNO_BORDER);
btnCancel->SetBitmapSelected(btmpCancelClick);
btnCancel->SetToolTip(ttCancel);
wxToolTip *ttClear = new wxToolTip(wxT("Clear saved preferences"));
btnClear=new wxBitmapButton(this,ID_CLEARBUTTON,btmpClear,wxPoint(254,325),wxSize(57,16),wxNO_BORDER);
wxToolTip *ttClear = new wxToolTip(wxT("Clear local preferences and use preferences from the web"));
btnClear=new wxBitmapButton(this,ID_CLEARBUTTON,btmpClear,wxPoint(254,340),wxSize(57,16),wxNO_BORDER);
btnClear->SetBitmapSelected(btmpClearClick);
btnClear->SetToolTip(ttClear);
@ -217,11 +226,11 @@ void CDlgPreferences::OnBtnClick(wxCommandEvent& event){ //init function
wxObject *m_wxDlgBtnObj = event.GetEventObject();
int btnID = event.GetId();
if(btnID==ID_SAVEBUTTON){
//wxMessageBox("OnBtnClick - btnSave");
WriteSettings();
EndModal(wxID_OK);
}
else if(btnID==ID_CLEARBUTTON){
} else if(btnID==ID_SAVESKINBUTTON){
EndModal(wxID_OK);
} else if(btnID==ID_CLEARBUTTON){
CMainDocument* pDoc = wxGetApp().GetDocument();
wxASSERT(pDoc);
std::string emptyS = "";
@ -283,7 +292,6 @@ void CDlgPreferences::WriteSettings(){
CMainDocument* pDoc = wxGetApp().GetDocument();
wxASSERT(pDoc);
bool valuesChanged = false;
m_prefs = pDoc->state.global_prefs;
int dwBtwnIntB = ConvertToNumber(cmbDWBtwnBgn->GetValue());
@ -360,26 +368,23 @@ void CDlgPreferences::initAfter(){
void CDlgPreferences::OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc(this);
//Project Name
dc.SetFont(wxFont(16,74,90,90,0,wxT("Arial")));
dc.DrawText(wxT("Preferences"), wxPoint(16,10));
dc.SetFont(wxFont(8,74,90,90,0,wxT("Arial")));
dc.DrawText(m_PrefIndicator, wxPoint(272,16));
//static: APPLICATION,MY PROGRESS,ELAPSED TIME,TIME REMAINING
dc.SetFont(wxFont(16,74,90,90,0,wxT("Arial")));
dc.DrawText(wxT("Skin"), wxPoint(16,10));
dc.SetFont(wxFont(9,74,90,90,0,wxT("Arial")));
dc.DrawText(wxT("Modify settings for this computer:"), wxPoint(26,60));
dc.DrawText(wxT("Do work only between:"), wxPoint(82,93));
dc.DrawText(wxT("and"), wxPoint(284,93));
dc.DrawText(wxT("Connect to internet only between:"), wxPoint(24,128));
dc.DrawText(wxT("and"), wxPoint(284,128));
dc.DrawText(wxT("Use no more than:"), wxPoint(103,163));
dc.DrawText(wxT("Do work while computer is in use?"), wxPoint(16,198));
dc.DrawText(wxT("Do work after computer is idle for:"), wxPoint(22,233));
dc.DrawText(wxT("minutes"), wxPoint(284,233));
dc.DrawText(wxT("Skin XML file:"), wxPoint(133,268));
dc.DrawText(wxT("Skin XML file:"), wxPoint(133,40));
dc.SetFont(wxFont(16,74,90,90,0,wxT("Arial")));
dc.DrawText(wxT("Preferences"), wxPoint(16,122));
dc.SetFont(wxFont(8,74,90,90,0,wxT("Arial")));
dc.DrawText(m_PrefIndicator, wxPoint(272,128));
dc.SetFont(wxFont(9,74,90,90,0,wxT("Arial")));
dc.DrawText(wxT("Do work only between:"), wxPoint(82,158));
dc.DrawText(wxT("and"), wxPoint(284,158));
dc.DrawText(wxT("Connect to internet only between:"), wxPoint(24,193));
dc.DrawText(wxT("and"), wxPoint(284,193));
dc.DrawText(wxT("Use no more than:"), wxPoint(103,228));
dc.DrawText(wxT("Do work while computer is in use?"), wxPoint(16,263));
dc.DrawText(wxT("Do work after computer is idle for:"), wxPoint(22,298));
dc.DrawText(wxT("minutes"), wxPoint(284,298));
}
//[evtFunc]end your code
wxDirTraverseResult DirTraverserSkins::OnFile(const wxString& filename)

View File

@ -26,6 +26,7 @@
#endif
#include <wx/dir.h>
#include "sg_StaticLine.h"
class SkinClass;
@ -61,6 +62,7 @@ public:
wxBitmap btmpClear;
wxBitmap btmpClearClick;
wxBitmapButton *btnSave;
wxBitmapButton *btnSaveSkin;
wxBitmapButton *btnCancel;
wxBitmapButton *btnClear;
// Pointer control
@ -116,6 +118,9 @@ protected:
void VwXEvOnEraseBackground(wxEraseEvent& event);
void VwXDrawBackImg(wxEraseEvent& event,wxWindow *win,wxBitmap & bitMap,int opz);
private:
CStaticLine *lnMyTop;
//[win]end your code
};

View File

@ -95,6 +95,7 @@ void CProgressBar::ReskinInterface()
}
void CProgressBar::ClearIndicators()
{
wxLogTrace(wxT("Function Start/End"), wxT("CProgressBar::ClearIndicators - Function Start"));
for(int indIndex = 0; indIndex < numOfProgressInd; indIndex++){
delete m_progInd.at(indIndex);
}
@ -102,6 +103,7 @@ void CProgressBar::ClearIndicators()
if(m_progInd.size() > 0){
m_progInd.clear();
}
wxLogTrace(wxT("Function Start/End"), wxT("CProgressBar::ClearIndicators - Function End"));
}
void CProgressBar::OnEraseBackground(wxEraseEvent& event){

View File

@ -586,6 +586,7 @@ void CProjectsComponent::OnBtnClick(wxCommandEvent& event){ //init function
}
}
pDlg->Destroy();
delete pDlg;
}else if(m_wxBtnObj==btnAdvancedView) {
wxGetApp().SetActiveGUI(BOINC_ADVANCEDGUI, true);
}

View File

@ -62,15 +62,17 @@ bool SkinClass::CheckSkin()
wxString dirPref = compute_skin_dir()+_T("/");
if ( skinImageArray->Count() != 35 ) {
if ( skinImageNames.size() != 35 ) {
return false;
}
for(unsigned int x = 0; x < skinImageArray->Count();x++){
wxString imgLoc = skinImageArray->Item(x);
wxBitmap skinImage = wxBitmap(dirPref + skinImageArray->Item(x),wxBITMAP_TYPE_PNG);
for( wxStringHashMap::iterator x = skinImageNames.begin(); x != skinImageNames.end();x++){
wxString imgLoc = x->second;
wxBitmap skinImage = wxBitmap(dirPref + imgLoc,wxBITMAP_TYPE_ANY);
if(!skinImage.Ok()){
return false;
} else {
skinImages[x->first] = skinImage;
}
}
@ -84,6 +86,18 @@ wxString SkinClass::compute_skin_dir() {
wxString SkinClass::compute_skin_path() {
return compute_skin_dir()+_T("/")+_T("skin.xml");
}
bool SkinClass::GetImageName(char* buf, const char* field) {
std::string val;
std::string start = "<";
if (parse_str(buf, start.append(field).c_str(),val)) {
skinImageNames[wxString(_T(field))]=wxString( val.c_str(), wxConvUTF8 );
return true;
} else {
return false;
}
}
int SkinClass::LoadSkinXML(){
// parse xml file
@ -97,117 +111,49 @@ int SkinClass::LoadSkinXML(){
char buf[256];
std::string val;
char val1[256];
// init skin image array
skinImageArray = new wxArrayString();
while (mf.fgets(buf, 256)) {
if (match_tag(buf, "<clientskin")) {
continue;
}else if (match_tag(buf, "<simple")) {
} else if (match_tag(buf, "<simple")) {
continue;
}else if (parse_str(buf, "<background",val)) {
SetAppBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (GetImageName(buf, "background")) {
parse_attr(buf,"background_color", val1, buf_size);
SetAppBgCol(wxString( val1, wxConvUTF8 ));
}else if (parse_str(buf, "<project_component_background",val)) {
SetProjCompBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<tab_area_background",val)) {
SetTabAreaBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<spacer_image",val)) {
SetSpacerImage(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<workunit_background",val)) {
SetWorkunitBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<preferences_dialogue",val)) {
SetDlgPrefBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<messages_dialogue",val)) {
SetDlgMessBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<static_line_color",val)) {
} else if (GetImageName(buf, "project_component_background")) {
} else if (GetImageName(buf, "tab_area_background")) {
} else if (GetImageName(buf, "spacer_image")) {
} else if (GetImageName(buf, "workunit_background")) {
} else if (GetImageName(buf, "preferences_dialogue")) {
} else if (GetImageName(buf, "messages_dialogue")) {
} else if (parse_str(buf, "<static_line_color",val)) {
SetStaticLineCol(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<gauge_background",val)) {
SetGaugeBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<gauge_progress",val)) {
SetGaugeProgressInd(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<state_indicator_background",val)) {
SetStateIndBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<connecting_indicator",val)) {
SetConnInd(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
}else if (parse_str(buf, "<error_indicator",val)) {
SetErrorInd(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<preferences_button", val)){
SetBtnPrefer(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<add_project_button", val)){
SetBtnAddProj(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<add_project_clicked_button", val)){
SetBtnAddProjClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<advanced_view_button", val)){
SetBtnAdvView(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<resume_button", val)){
SetBtnResume(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<pause_button", val)){
SetBtnPause(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<messages_button", val)){
SetBtnMessages(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<alert_messages_button", val)){
SetBtnAlertMessages(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<save_button", val)){
SetBtnSave(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<save_clicked_button", val)){
SetBtnSaveClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<cancel_button", val)){
SetBtnCancel(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<cancel_clicked_button", val)){
SetBtnCancelClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<close_button", val)){
SetBtnClose(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<close_clicked_button", val)){
SetBtnCloseClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<clear_button", val)){
SetBtnClear(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<clear_clicked_button", val)){
SetBtnClearClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<left_arrow_button", val)){
SetBtnLeftArr(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<left_arrow_clicked_button", val)){
SetBtnLeftArrClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<right_arrow_button", val)){
SetBtnRightArr(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<right_arrow_clicked_button", val)){
SetBtnRightArrClick(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (parse_str(buf, "<animation_background", val)){
SetAnimationBg(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
} else if (GetImageName(buf, "gauge_background")) {
} else if (GetImageName(buf, "gauge_progress")) {
} else if (GetImageName(buf, "state_indicator_background")) {
} else if (GetImageName(buf, "connecting_indicator")) {
} else if (GetImageName(buf, "error_indicator")) {
} else if (GetImageName(buf, "preferences_button")){
} else if (GetImageName(buf, "add_project_button")){
} else if (GetImageName(buf, "add_project_clicked_button")){
} else if (GetImageName(buf, "advanced_view_button")){
} else if (GetImageName(buf, "resume_button")){
} else if (GetImageName(buf, "pause_button")){
} else if (GetImageName(buf, "messages_button")){
} else if (GetImageName(buf, "alert_messages_button")){
} else if (GetImageName(buf, "save_button")){
} else if (GetImageName(buf, "save_clicked_button")){
} else if (GetImageName(buf, "cancel_button")){
} else if (GetImageName(buf, "cancel_clicked_button")){
} else if (GetImageName(buf, "close_button")){
} else if (GetImageName(buf, "close_clicked_button")){
} else if (GetImageName(buf, "clear_button")){
} else if (GetImageName(buf, "clear_clicked_button")){
} else if (GetImageName(buf, "left_arrow_button")){
} else if (GetImageName(buf, "left_arrow_clicked_button")){
} else if (GetImageName(buf, "right_arrow_button")){
} else if (GetImageName(buf, "right_arrow_clicked_button")){
} else if (GetImageName(buf, "animation_background")){
} else if (parse_str(buf, "<default_animation", val)){
SetAnimationFile(wxString( val.c_str(), wxConvUTF8 ));
} else if (match_tag(buf, "<icons")) {
@ -218,9 +164,8 @@ int SkinClass::LoadSkinXML(){
break;
}else if(match_tag(buf, "<workingWkUnit>")){
mf.fgets(buf, 256);
if (parse_str(buf, "<imgsrc>", val)) {
SetIcnWorkingWkUnit(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
if (parse_str(buf, "<imgsrc", val)) {
skinImageNames[wxString(_T("workingWkUnit"))]=wxString( val.c_str(), wxConvUTF8 );
}
mf.fgets(buf, 256);
if (parse_str(buf, "<frcol>", val)) {
@ -249,9 +194,8 @@ int SkinClass::LoadSkinXML(){
}
}else if(match_tag(buf, "<defaultStatIcon>")){
mf.fgets(buf, 256);
if (parse_str(buf, "<imgsrc>", val)) {
SetDefaultStatIcn(wxString( val.c_str(), wxConvUTF8 ));
skinImageArray->Add(wxString( val.c_str(), wxConvUTF8 ));
if (parse_str(buf, "<imgsrc", val)) {
skinImageNames[wxString(_T("defaultStatIcon"))]=wxString( val.c_str(), wxConvUTF8 );
}
}
}// end of while loop

View File

@ -34,45 +34,45 @@ public:
bool init_skin(const wxString& skin_name);
// Getters
wxString GetAppBg() { return m_appBg; }
wxString GetAppBg() { return skinImageNames[wxString(_T("background"))]; }
wxColour GetAppBgCol() { return GetColorFromStr(m_appBgCol); }
wxString GetProjCompBg() { return m_projCompBg; }
wxString GetSpacerImage() { return m_spacerImage; }
wxString GetWorkunitBg() { return m_workunitBg; }
wxString GetBtnPrefer() const { return m_btnPrefer; }
wxString GetBtnAddProj() const { return m_btnAddProj; }
wxString GetBtnAddProjClick() const { return m_btnAddProjClick; }
wxString GetBtnAdvView() const { return m_btnAdvView; }
wxString GetBtnResume() const { return m_btnResume; }
wxString GetBtnPause() const { return m_btnPause; }
wxString GetBtnMessages() const { return m_btnMessages; }
wxString GetBtnAlertMessages() const { return m_btnAlertMessages; }
wxString GetBtnSave() const { return m_btnSave; }
wxString GetBtnSaveClick() const { return m_btnSaveClick; }
wxString GetBtnCancel() const { return m_btnCancel; }
wxString GetBtnCancelClick() const { return m_btnCancelClick; }
wxString GetBtnClear() const { return m_btnClear; }
wxString GetBtnClearClick() const { return m_btnClearClick; }
wxString GetBtnClose() const { return m_btnClose; }
wxString GetBtnCloseClick() const { return m_btnCloseClick; }
wxString GetBtnLeftArr() const { return m_btnLeftArr; }
wxString GetBtnRightArr() const { return m_btnRightArr; }
wxString GetBtnLeftArrClick() const { return m_btnLeftArrClick; }
wxString GetBtnRightArrClick() const { return m_btnRightArrClick; }
wxString GetProjCompBg() { return skinImageNames[wxString(_T("project_component_background"))]; }
wxString GetSpacerImage() { return skinImageNames[wxString(_T("spacer_image"))]; }
wxString GetWorkunitBg() { return skinImageNames[wxString(_T("workunit_background"))]; }
wxString GetBtnPrefer() { return skinImageNames[wxString(_T("preferences_button"))]; }
wxString GetBtnAddProj() { return skinImageNames[wxString(_T("add_project_button"))]; }
wxString GetBtnAddProjClick() { return skinImageNames[wxString(_T("add_project_clicked_button"))]; }
wxString GetBtnAdvView() { return skinImageNames[wxString(_T("advanced_view_button"))]; }
wxString GetBtnResume() { return skinImageNames[wxString(_T("resume_button"))]; }
wxString GetBtnPause() { return skinImageNames[wxString(_T("pause_button"))]; }
wxString GetBtnMessages() { return skinImageNames[wxString(_T("messages_button"))]; }
wxString GetBtnAlertMessages() { return skinImageNames[wxString(_T("alert_messages_button"))]; }
wxString GetBtnSave() { return skinImageNames[wxString(_T("save_button"))]; }
wxString GetBtnSaveClick() { return skinImageNames[wxString(_T("save_clicked_button"))]; }
wxString GetBtnCancel() { return skinImageNames[wxString(_T("cancel_button"))]; }
wxString GetBtnCancelClick() { return skinImageNames[wxString(_T("cancel_clicked_button"))]; }
wxString GetBtnClear() { return skinImageNames[wxString(_T("clear_button"))]; }
wxString GetBtnClearClick() { return skinImageNames[wxString(_T("clear_clicked_button"))]; }
wxString GetBtnClose() { return skinImageNames[wxString(_T("close_button"))]; }
wxString GetBtnCloseClick() { return skinImageNames[wxString(_T("close_clicked_button"))]; }
wxString GetBtnLeftArr() { return skinImageNames[wxString(_T("left_arrow_button"))]; }
wxString GetBtnRightArr() { return skinImageNames[wxString(_T("right_arrow_button"))]; }
wxString GetBtnLeftArrClick() { return skinImageNames[wxString(_T("left_arrow_clicked_button"))]; }
wxString GetBtnRightArrClick() { return skinImageNames[wxString(_T("right_arrow_clicked_button"))]; }
wxString GetDlgPrefBg() { return m_dlgPrefBg; }
wxString GetDlgMessBg() { return m_dlgMessBg; }
wxString GetDlgPrefBg() { return skinImageNames[wxString(_T("preferences_dialogue"))]; }
wxString GetDlgMessBg() { return skinImageNames[wxString(_T("messages_dialogue"))]; }
wxColour GetStaticLineCol() { return GetColorFromStr(m_staticLineCol); }
wxString GetGaugeBg() { return m_gaugeBg; }
wxString GetGaugeProgressInd() { return m_gaugeProgressInd; }
wxString GetGaugeBg() { return skinImageNames[wxString(_T("gauge_background"))]; }
wxString GetGaugeProgressInd() { return skinImageNames[wxString(_T("gauge_progress"))]; }
wxString GetStateIndBg() { return m_stateIndBg; }
wxString GetConnInd() { return m_connInd; }
wxString GetErrorInd() { return m_errorInd; }
wxString GetStateIndBg() { return skinImageNames[wxString(_T("state_indicator_background"))]; }
wxString GetConnInd() { return skinImageNames[wxString(_T("connecting_indicator"))]; }
wxString GetErrorInd() { return skinImageNames[wxString(_T("error_indicator"))]; }
wxString GetTabAreaBg() const { return m_tabAreaBg; }
wxString GetTabAreaBg() { return skinImageNames[wxString(_T("tab_area_background"))]; }
wxColour GetTabFromColAc() { return GetColorFromStr(m_tabFromColAc); }
wxColour GetTabToColAc() { return GetColorFromStr(m_tabToColAc); }
wxColour GetTabBrdColAc() { return GetColorFromStr(m_tabBrdColAc); }
@ -80,9 +80,9 @@ public:
wxColour GetTabToColIn() { return GetColorFromStr(m_tabToColIn); }
wxColour GetTabBrdColIn() { return GetColorFromStr(m_tabBrdColIn); }
wxString GetIcnWorkingWkUnit() const { return m_icnWorkingWkUnit; }
wxString GetDefaultStatIcn() const { return m_defaultStatIcn; }
wxString GetAnimationBg() const { return m_animBg; }
wxString GetIcnWorkingWkUnit() { return skinImageNames[wxString(_T("workingWkUnit"))]; }
wxString GetDefaultStatIcn() { return skinImageNames[wxString(_T("defaultStatIcon"))]; }
wxString GetAnimationBg() { return skinImageNames[wxString(_T("animation_background"))]; }
wxString GetAnimationFile() const { return m_animFile; }
wxString GetSkinName() const { return m_skinName; }
@ -91,46 +91,10 @@ public:
wxBitmap &getFrameBG();
// Setters
void SetAppBg(const wxString imgsrc) { m_appBg = imgsrc; }
void SetAppBgCol(const wxString& clr) { m_appBgCol = clr; }
void SetProjCompBg(const wxString& imgsrc) { m_projCompBg = imgsrc; }
void SetSpacerImage(const wxString& imgsrc) { m_spacerImage = imgsrc; }
void SetWorkunitBg(const wxString& imgsrc) { m_workunitBg = imgsrc; }
void SetBtnPrefer(const wxString& imgsrc) { m_btnPrefer = imgsrc; }
void SetBtnAddProj(const wxString& imgsrc) { m_btnAddProj = imgsrc; }
void SetBtnAddProjClick(const wxString& imgsrc) { m_btnAddProjClick = imgsrc; }
void SetBtnAdvView(const wxString& imgsrc) { m_btnAdvView = imgsrc; }
void SetBtnResume(const wxString& imgsrc) { m_btnResume = imgsrc; }
void SetBtnPause(const wxString& imgsrc) { m_btnPause = imgsrc; }
void SetBtnMessages(const wxString& imgsrc) { m_btnMessages = imgsrc; }
void SetBtnAlertMessages(const wxString& imgsrc) { m_btnAlertMessages = imgsrc; }
void SetBtnOpen(const wxString& imgsrc) { m_btnOpen = imgsrc; }
void SetBtnSave(const wxString& imgsrc) { m_btnSave = imgsrc; }
void SetBtnSaveClick(const wxString& imgsrc) { m_btnSaveClick = imgsrc; }
void SetBtnCancel(const wxString& imgsrc) { m_btnCancel = imgsrc; }
void SetBtnCancelClick(const wxString& imgsrc) { m_btnCancelClick = imgsrc; }
void SetBtnClear(const wxString& imgsrc) { m_btnClear = imgsrc; }
void SetBtnClearClick(const wxString& imgsrc) { m_btnClearClick = imgsrc; }
void SetBtnClose(const wxString& imgsrc) { m_btnClose = imgsrc; }
void SetBtnCloseClick(const wxString& imgsrc) { m_btnCloseClick = imgsrc; }
void SetBtnLeftArr(const wxString& imgsrc) { m_btnLeftArr = imgsrc; }
void SetBtnRightArr(const wxString& imgsrc) { m_btnRightArr = imgsrc; }
void SetBtnLeftArrClick(const wxString& imgsrc) { m_btnLeftArrClick = imgsrc; }
void SetBtnRightArrClick(const wxString& imgsrc) { m_btnRightArrClick = imgsrc; }
void SetDlgPrefBg(const wxString& imgsrc) { m_dlgPrefBg = imgsrc; }
void SetDlgMessBg(const wxString& imgsrc) { m_dlgMessBg = imgsrc; }
void SetStaticLineCol(const wxString& clr) { m_staticLineCol = clr; }
void SetGaugeBg(const wxString& clr) { m_gaugeBg = clr; }
void SetGaugeProgressInd(const wxString& clr) { m_gaugeProgressInd = clr; }
void SetStateIndBg(const wxString& clr) { m_stateIndBg = clr; }
void SetConnInd(const wxString& clr) { m_connInd = clr; }
void SetErrorInd(const wxString& clr) { m_errorInd = clr; }
void SetTabAreaBg(const wxString& imgsrc) { m_tabAreaBg = imgsrc; }
void SetTabFromColAc(const wxString& clr) { m_tabFromColAc = clr; }
void SetTabToColAc(const wxString& clr) { m_tabToColAc = clr; }
void SetTabBrdColAc(const wxString& clr) { m_tabBrdColAc = clr; }
@ -138,9 +102,6 @@ public:
void SetTabToColIn(const wxString& clr) { m_tabToColIn = clr; }
void SetTabBrdColIn(const wxString& clr) { m_tabBrdColIn = clr; }
void SetIcnWorkingWkUnit(const wxString& imgsrc) { m_icnWorkingWkUnit = imgsrc; }
void SetDefaultStatIcn(const wxString& imgsrc) { m_defaultStatIcn = imgsrc; }
void SetAnimationBg(const wxString& imgsrc) { m_animBg = imgsrc; }
void SetAnimationFile(const wxString& imgsrc) { m_animFile = imgsrc; }
void SetSkinName(const wxString& name) { m_skinName = name; }
@ -153,30 +114,16 @@ private:
wxString compute_skin_path();
wxString compute_skin_dir();
bool GetImageName(char* buf, const char* field);
bool CheckSkin();
int LoadSkinXML();
// Bg
wxString m_appBg;
wxString m_appBgCol;
wxString m_projCompBg;
wxString m_spacerImage;
wxString m_workunitBg;
//Dialogs
wxString m_dlgPrefBg;
wxString m_dlgMessBg;
// Bg
wxString m_staticLineCol;
//gauge
wxString m_gaugeBg;
wxString m_gaugeProgressInd;
//state indicator
wxString m_stateIndBg;
wxString m_connInd;
wxString m_errorInd;
//notebook colors
//active tab
wxString m_tabAreaBg;
wxString m_tabFromColAc;
wxString m_tabToColAc;
wxString m_tabBrdColAc;
@ -184,42 +131,16 @@ private:
wxString m_tabFromColIn;
wxString m_tabToColIn;
wxString m_tabBrdColIn;
// Btns
wxString m_btnPrefer;
wxString m_btnAddProj;
wxString m_btnAddProjClick;
wxString m_btnAdvView;
wxString m_btnResume;
wxString m_btnPause;
wxString m_btnMessages;
wxString m_btnAlertMessages;
wxString m_btnOpen;
wxString m_btnSave;
wxString m_btnSaveClick;
wxString m_btnCancel;
wxString m_btnCancelClick;
wxString m_btnClear;
wxString m_btnClearClick;
wxString m_btnClose;
wxString m_btnCloseClick;
wxString m_btnLeftArr;
wxString m_btnRightArr;
wxString m_btnLeftArrClick;
wxString m_btnRightArrClick;
wxString m_btnExpand;
wxString m_btnExpandClick;
// Icons
wxString m_icnWorkingWkUnit;
wxString m_icnSleepingWkUnit;
wxString m_defaultStatIcn;// default stat icon
// animation
wxString m_animBg;
// annimiation
wxString m_animFile;
//skin info
wxString m_skinName;
wxString m_skinsFolder;
wxArrayString *skinImageArray;
WX_DECLARE_STRING_HASH_MAP( wxString, wxStringHashMap );
wxStringHashMap skinImageNames;
WX_DECLARE_STRING_HASH_MAP( wxBitmap, wxBitmapHashMap );
wxBitmapHashMap skinImages;
wxFlatNotebookImageList m_ImageList;

View File

@ -28,7 +28,7 @@ BEGIN_EVENT_TABLE(CStaticLine, wxWindow)
EVT_PAINT(CStaticLine::OnPaint)
END_EVENT_TABLE()
CStaticLine::CStaticLine(wxPanel* parent,wxPoint coord,wxSize size) : wxPanel(parent, wxID_ANY, coord, size, wxNO_BORDER)
CStaticLine::CStaticLine(wxWindow* parent,wxPoint coord,wxSize size) : wxPanel(parent, wxID_ANY, coord, size, wxNO_BORDER)
{
m_lineCol = wxColour(255,255,255);
}

View File

@ -28,7 +28,7 @@ class CStaticLine : public wxPanel
{
public:
/// Constructors
CStaticLine(wxPanel* parent,wxPoint coord,wxSize size);
CStaticLine(wxWindow* parent,wxPoint coord,wxSize size);
void OnPaint(wxPaintEvent& event);
void SetLineColor(wxColour col);
private: