rocrail-commits Mailing List for Rocrail Model Railroad Control System
Brought to you by:
robvrs
You can subscribe to this list here.
| 2005 |
Jan
|
Feb
(185) |
Mar
(71) |
Apr
(31) |
May
(61) |
Jun
(37) |
Jul
(49) |
Aug
|
Sep
(53) |
Oct
(163) |
Nov
(185) |
Dec
(6) |
|---|
|
From: rob v. <ro...@us...> - 2005-12-02 10:22:35
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10889 Modified Files: item.cpp Log Message: Index: item.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/item.cpp,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** item.cpp 30 Nov 2005 20:46:00 -0000 1.32 --- item.cpp 2 Dec 2005 10:22:28 -0000 1.33 *************** *** 449,452 **** --- 449,458 ---- menu.Append( ME_UnLoc, "Reset LocId"); } + else if( StrOp.equals( wTurntable.name(), NodeOp.getName( m_Props ) ) ) { + menu.Append( -1, "Next track"); + menu.Append( -1, "Previous track"); + menu.AppendSeparator(); + menu.Append( -1, "Turn 180"); + } //menu.AppendSeparator(); |
|
From: rob v. <ro...@us...> - 2005-12-01 22:00:10
|
Update of /cvsroot/rojav/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17500 Modified Files: neustadt.xml Log Message: Index: neustadt.xml =================================================================== RCS file: /cvsroot/rojav/bin/neustadt.xml,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** neustadt.xml 30 Nov 2005 20:37:47 -0000 1.45 --- neustadt.xml 1 Dec 2005 21:59:58 -0000 1.46 *************** *** 888,892 **** </lclist> <ttlist> ! <tt id="TT01" x="18" y="11" z="1" ori="north" type="m6082"> <track posfb="FB300" nr="12" locfb="FB49" block="BL18"/> <track posfb="FB305" nr="42" locfb="FB310"/> --- 888,892 ---- </lclist> <ttlist> ! <tt id="TT01" addr="80" x="18" y="11" z="1" type="m6082" desc="Bahnwerk Neustadt"> <track posfb="FB300" nr="12" locfb="FB49" block="BL18"/> <track posfb="FB305" nr="42" locfb="FB310"/> |
|
From: rob v. <ro...@us...> - 2005-12-01 20:45:12
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1827 Modified Files: guiapp.cpp planpanel.cpp Log Message: modified initialization Index: planpanel.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/planpanel.cpp,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** planpanel.cpp 30 Nov 2005 20:46:00 -0000 1.22 --- planpanel.cpp 1 Dec 2005 20:44:58 -0000 1.23 *************** *** 503,507 **** CRjGuiFrame* frame = wxGetApp().getFrame(); TraceOp.trc( "plan", TRCLEVEL_INFO, __LINE__, 9999, "Title = %s", wPlan.gettitle( model ) ); - frame->setPlanTitle( wPlan.gettitle( model ) ); //o->setShow(false); o->addItems( wPlan.gettklist( model ) ); --- 503,506 ---- Index: guiapp.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/guiapp.cpp,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** guiapp.cpp 28 Nov 2005 20:22:07 -0000 1.44 --- guiapp.cpp 1 Dec 2005 20:44:58 -0000 1.45 *************** *** 544,547 **** --- 544,549 ---- iONode model = wxGetApp().getModel(); + setPlanTitle( wPlan.gettitle(model) ); + wxGrid* l_ActiveLocs = wxGetApp().getActiveLocsGrid(); if( model != NULL ) { *************** *** 817,822 **** void CRjGuiFrame::setPlanTitle( const char* title ) { ! const char* prefix = "RocRail: %s"; ! SetTitle( StrOp.fmt( prefix, title ) ); } --- 819,825 ---- void CRjGuiFrame::setPlanTitle( const char* title ) { ! char* l_title = StrOp.fmt( "RocRail: %s", title ); ! SetTitle( l_title ); ! StrOp.free( l_title ); } |
|
From: rob v. <ro...@us...> - 2005-12-01 20:44:45
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1493 Modified Files: rocgui-dialogs.pjd turntabledialog.cpp turntabledialog.h Log Message: turntabledialog modified Index: turntabledialog.h =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/turntabledialog.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** turntabledialog.h 30 Nov 2005 20:45:24 -0000 1.2 --- turntabledialog.h 1 Dec 2005 20:44:18 -0000 1.3 *************** *** 51,56 **** #define wxID_STATIC_TT_ID 10001 #define ID_TEXTCTRL_TT_ID 10002 ! #define wxID_STATIC_TT_TYPE 10004 ! #define ID_COMBOBOX_TT_TYPE 10005 #define ID_PANEL_TT_LOCATION 10006 #define wxID_STATIC_TT_X 10010 --- 51,56 ---- #define wxID_STATIC_TT_ID 10001 #define ID_TEXTCTRL_TT_ID 10002 ! #define wxID_STATIC_TT_DESC 10133 ! #define ID_TEXTCTRL_TT_DESC 10129 #define ID_PANEL_TT_LOCATION 10006 #define wxID_STATIC_TT_X 10010 *************** *** 60,65 **** #define wxID_STATIC_TT_Z 10014 #define ID_TEXTCTRL_TT_Z 10015 ! #define ID_PANEL_TT_TRACKS 10127 ! #define ID_GRID 10128 ////@end control identifiers --- 60,72 ---- #define wxID_STATIC_TT_Z 10014 #define ID_TEXTCTRL_TT_Z 10015 ! #define ID_PANEL_TT_INTERFACE 10130 ! #define wxID_STATIC_TT_IID 10127 ! #define ID_TEXTCTRL_TT_IID 10128 ! #define wxID_STATIC_TT_ADDRESS 10131 ! #define ID_TEXTCTRL_TT_ADDRESS 10132 ! #define wxID_STATIC_TT_TYPE 10004 ! #define ID_COMBOBOX_TT_TYPE 10005 ! #define ID_PANEL_TT_TRACKS 10007 ! #define ID_GRID 10008 ////@end control identifiers *************** *** 135,140 **** wxStaticText* m_LabelID; wxTextCtrl* m_ID; ! wxStaticText* m_LabelType; ! wxComboBox* m_Type; wxPanel* m_LocationPanel; wxStaticText* m_LabelX; --- 142,147 ---- wxStaticText* m_LabelID; wxTextCtrl* m_ID; ! wxStaticText* m_LabelDesc; ! wxTextCtrl* m_Desc; wxPanel* m_LocationPanel; wxStaticText* m_LabelX; *************** *** 144,147 **** --- 151,161 ---- wxStaticText* m_LabelZ; wxTextCtrl* m_z; + wxPanel* m_Interface; + wxStaticText* m_Labeliid; + wxTextCtrl* m_IID; + wxStaticText* m_LabelAddress; + wxTextCtrl* m_Address; + wxStaticText* m_LabelType; + wxComboBox* m_Type; wxPanel* m_TracksPanel; wxGrid* m_TracksGrid; Index: turntabledialog.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/turntabledialog.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** turntabledialog.cpp 30 Nov 2005 20:45:24 -0000 1.2 --- turntabledialog.cpp 1 Dec 2005 20:44:18 -0000 1.3 *************** *** 96,102 **** // General m_ID->SetValue( wTurntable.getid( m_Props ) ); ! m_Type->Append( wTurntable.m6082 ); ! m_Type->Append( wTurntable.m7687 ); ! m_Type->SetStringSelection( wTurntable.gettype( m_Props ) ); // Location --- 96,100 ---- // General m_ID->SetValue( wTurntable.getid( m_Props ) ); ! m_Desc->SetValue( wTurntable.getdesc( m_Props ) ); // Location *************** *** 108,111 **** --- 106,118 ---- m_z->SetValue( str ); StrOp.free( str ); + // Interface + m_IID->SetValue( wTurntable.getiid( m_Props ) ); + str = StrOp.fmt( "%d", wTurntable.getaddr( m_Props ) ); + m_Address->SetValue( str ); + StrOp.free( str ); + m_Type->Append( wTurntable.m6082 ); + m_Type->Append( wTurntable.m7687 ); + m_Type->SetStringSelection( wTurntable.gettype( m_Props ) ); + // Tracks m_TracksGrid->DeleteRows(0,m_TracksGrid->GetNumberRows()); *************** *** 135,139 **** // General wTurntable.setid( m_Props, m_ID->GetValue() ); ! wTurntable.settype( m_Props, m_Type->GetStringSelection() ); // Location --- 142,146 ---- // General wTurntable.setid( m_Props, m_ID->GetValue() ); ! wTurntable.setdesc( m_Props, m_Desc->GetValue() ); // Location *************** *** 142,145 **** --- 149,156 ---- wTurntable.setz( m_Props, atoi( m_z->GetValue() ) ); + // Interface + wTurntable.setiid( m_Props, m_IID->GetValue() ); + wTurntable.setaddr( m_Props, atoi( m_Address->GetValue() ) ); + wTurntable.settype( m_Props, m_Type->GetStringSelection() ); } *************** *** 156,161 **** m_LabelID = NULL; m_ID = NULL; ! m_LabelType = NULL; ! m_Type = NULL; m_LocationPanel = NULL; m_LabelX = NULL; --- 167,172 ---- m_LabelID = NULL; m_ID = NULL; ! m_LabelDesc = NULL; ! m_Desc = NULL; m_LocationPanel = NULL; m_LabelX = NULL; *************** *** 165,168 **** --- 176,186 ---- m_LabelZ = NULL; m_z = NULL; + m_Interface = NULL; + m_Labeliid = NULL; + m_IID = NULL; + m_LabelAddress = NULL; + m_Address = NULL; + m_LabelType = NULL; + m_Type = NULL; m_TracksPanel = NULL; m_TracksGrid = NULL; *************** *** 206,217 **** m_ID = new wxTextCtrl( m_GeneralPanel, ID_TEXTCTRL_TT_ID, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); ! itemFlexGridSizer5->Add(m_ID, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); ! m_LabelType = new wxStaticText( m_GeneralPanel, wxID_STATIC_TT_TYPE, _("type"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemFlexGridSizer5->Add(m_LabelType, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); ! wxString* m_TypeStrings = NULL; ! m_Type = new wxComboBox( m_GeneralPanel, ID_COMBOBOX_TT_TYPE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_TypeStrings, wxCB_DROPDOWN ); ! itemFlexGridSizer5->Add(m_Type, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_Notebook->AddPage(m_GeneralPanel, _("General")); --- 224,234 ---- m_ID = new wxTextCtrl( m_GeneralPanel, ID_TEXTCTRL_TT_ID, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); ! itemFlexGridSizer5->Add(m_ID, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); ! m_LabelDesc = new wxStaticText( m_GeneralPanel, wxID_STATIC_TT_DESC, _("Desc."), wxDefaultPosition, wxDefaultSize, 0 ); ! itemFlexGridSizer5->Add(m_LabelDesc, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); ! m_Desc = new wxTextCtrl( m_GeneralPanel, ID_TEXTCTRL_TT_DESC, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); ! itemFlexGridSizer5->Add(m_Desc, 0, wxALIGN_LEFT|wxGROW|wxALL, 5); m_Notebook->AddPage(m_GeneralPanel, _("General")); *************** *** 243,249 **** m_Notebook->AddPage(m_LocationPanel, _("Location")); m_TracksPanel = new wxPanel( m_Notebook, ID_PANEL_TT_TRACKS, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); ! wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL); ! m_TracksPanel->SetSizer(itemBoxSizer20); m_TracksGrid = new wxGrid( m_TracksPanel, ID_GRID, wxDefaultPosition, wxSize(220, 200), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); --- 260,292 ---- m_Notebook->AddPage(m_LocationPanel, _("Location")); + m_Interface = new wxPanel( m_Notebook, ID_PANEL_TT_INTERFACE, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); + wxFlexGridSizer* itemFlexGridSizer20 = new wxFlexGridSizer(2, 2, 0, 0); + itemFlexGridSizer20->AddGrowableCol(1); + m_Interface->SetSizer(itemFlexGridSizer20); + + m_Labeliid = new wxStaticText( m_Interface, wxID_STATIC_TT_IID, _("iid"), wxDefaultPosition, wxDefaultSize, 0 ); + itemFlexGridSizer20->Add(m_Labeliid, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); + + m_IID = new wxTextCtrl( m_Interface, ID_TEXTCTRL_TT_IID, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); + itemFlexGridSizer20->Add(m_IID, 0, wxALIGN_LEFT|wxGROW|wxALL, 5); + + m_LabelAddress = new wxStaticText( m_Interface, wxID_STATIC_TT_ADDRESS, _("address"), wxDefaultPosition, wxDefaultSize, 0 ); + itemFlexGridSizer20->Add(m_LabelAddress, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); + + m_Address = new wxTextCtrl( m_Interface, ID_TEXTCTRL_TT_ADDRESS, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); + itemFlexGridSizer20->Add(m_Address, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); + + m_LabelType = new wxStaticText( m_Interface, wxID_STATIC_TT_TYPE, _("type"), wxDefaultPosition, wxDefaultSize, 0 ); + itemFlexGridSizer20->Add(m_LabelType, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); + + wxString* m_TypeStrings = NULL; + m_Type = new wxComboBox( m_Interface, ID_COMBOBOX_TT_TYPE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_TypeStrings, wxCB_DROPDOWN ); + itemFlexGridSizer20->Add(m_Type, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); + + m_Notebook->AddPage(m_Interface, _("Interface")); + m_TracksPanel = new wxPanel( m_Notebook, ID_PANEL_TT_TRACKS, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); ! wxBoxSizer* itemBoxSizer28 = new wxBoxSizer(wxVERTICAL); ! m_TracksPanel->SetSizer(itemBoxSizer28); m_TracksGrid = new wxGrid( m_TracksPanel, ID_GRID, wxDefaultPosition, wxSize(220, 200), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); *************** *** 253,257 **** m_TracksGrid->SetRowLabelSize(0); m_TracksGrid->CreateGrid(1, 4, wxGrid::wxGridSelectRows); ! itemBoxSizer20->Add(m_TracksGrid, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 2); m_Notebook->AddPage(m_TracksPanel, _("Tracks")); --- 296,300 ---- m_TracksGrid->SetRowLabelSize(0); m_TracksGrid->CreateGrid(1, 4, wxGrid::wxGridSelectRows); ! itemBoxSizer28->Add(m_TracksGrid, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 2); m_Notebook->AddPage(m_TracksPanel, _("Tracks")); *************** *** 259,272 **** itemBoxSizer2->Add(m_Notebook, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); ! wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy22 = new wxStdDialogButtonSizer; ! itemBoxSizer2->Add(itemStdDialogButtonSizerProxy22, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy22->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy22->AddButton(m_Cancel); ! itemStdDialogButtonSizerProxy22->Realize(); ////@end TurntableDialog content construction --- 302,315 ---- itemBoxSizer2->Add(m_Notebook, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); ! wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy30 = new wxStdDialogButtonSizer; ! itemBoxSizer2->Add(itemStdDialogButtonSizerProxy30, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy30->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy30->AddButton(m_Cancel); ! itemStdDialogButtonSizerProxy30->Realize(); ////@end TurntableDialog content construction Index: rocgui-dialogs.pjd =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/rocgui-dialogs.pjd,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** rocgui-dialogs.pjd 30 Nov 2005 20:45:24 -0000 1.25 --- rocgui-dialogs.pjd 1 Dec 2005 20:44:18 -0000 1.26 *************** *** 13,17 **** <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">261</value> <value name="xrc_filename" type="string"></value> <value name="convert_images_to_xpm" type="bool">FALSE</value> --- 13,17 ---- <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">269</value> <value name="xrc_filename" type="string"></value> [...7449 lines suppressed...] <value name="proxy-Custom ctor arguments" type="string"></value> </path> ! <path name="ID00010c"> <value name="title" type="string">wxButton: wxID_CANCEL</value> ! <value name="id" type="Integer">193883160</value> <value name="type" type="string">dialog-control-document</value> <value name="filename" type="string"></value> *************** *** 14311,14315 **** <value name="owns-file" type="Integer">1</value> <value name="title-mode" type="Integer">0</value> ! <value name="parent" type="Integer">179023224</value> <value name="locked" type="Integer">1</value> <value name="created" type="string">28/10/2005</value> --- 14783,14787 ---- <value name="owns-file" type="Integer">1</value> <value name="title-mode" type="Integer">0</value> ! <value name="parent" type="Integer">193860400</value> <value name="locked" type="Integer">1</value> <value name="created" type="string">28/10/2005</value> |
|
From: rob v. <ro...@us...> - 2005-12-01 20:40:02
|
Update of /cvsroot/rojav/rocrail/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv785 Modified Files: block.c fback.c model.c tt.c Log Message: changed fbcallback Index: fback.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/fback.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** fback.c 30 Nov 2005 20:42:25 -0000 1.23 --- fback.c 1 Dec 2005 20:38:56 -0000 1.24 *************** *** 111,115 **** /* Call listener. */ if( data->listenerFun != NULL ) { ! data->listenerFun( data->listenerObj, data->state ); } else { --- 111,115 ---- /* Call listener. */ if( data->listenerFun != NULL ) { ! data->listenerFun( data->listenerObj, data->state, FBackOp.getId( inst ) ); } else { Index: block.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/block.c,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** block.c 11 Nov 2005 20:42:43 -0000 1.48 --- block.c 1 Dec 2005 20:38:56 -0000 1.49 *************** *** 187,191 **** } ! static void __fbEventA( obj inst, Boolean puls ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbA=%s ", --- 187,191 ---- } ! static void __fbEventA( obj inst, Boolean puls, const char* id ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbA=%s ", *************** *** 209,213 **** ! static void __fbEventB( obj inst, Boolean puls ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbB=%s ", --- 209,213 ---- ! static void __fbEventB( obj inst, Boolean puls, const char* id ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbB=%s ", *************** *** 233,237 **** ! static void __fbEventI( obj inst, Boolean puls ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbI=%s ", --- 233,237 ---- ! static void __fbEventI( obj inst, Boolean puls, const char* id ) { iOBlockData data = Data(inst); TraceOp.trc( name, TRCLEVEL_USER1, __LINE__, 9999, "Block:%s: fbI=%s ", Index: tt.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/tt.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** tt.c 30 Jan 2005 20:18:38 -0000 1.7 --- tt.c 1 Dec 2005 20:38:56 -0000 1.8 *************** *** 25,28 **** --- 25,29 ---- #include "rocrail/wrapper/public/Turntable.h" + #include "rocrail/wrapper/public/TTTrack.h" static int instCnt = 0; *************** *** 102,108 **** --- 103,111 ---- if( StrOp.equals( wTurntable.next, cmdStr ) ) { ok = True; /* ToDo! */ + TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "TODO %s", cmdStr ); } else if( StrOp.equals( wTurntable.prev, cmdStr ) ) { ok = True; /* ToDo! */ + TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "TODO %s", cmdStr ); } *************** *** 113,116 **** --- 116,165 ---- + static void __fbEvent( obj inst, Boolean puls, const char* id ) { + iOTTData data = Data(inst); + TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "fbEvent for Turntable \"%s\" fb=\"%s\" state=%s ", + TTOp.getId( (iOTT)inst ), id, puls?"true":"false" ); + } + + + static void __initCallback( iOTT inst ) { + iOTTData data = Data(inst); + iOModel model = AppOp.getModel(); + iONode track = wTurntable.gettrack( data->props ); + + if( track == NULL ) + TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "No tracks defined for TT %s", TTOp.getId(inst) ); + + while( track != NULL ) { + const char* posfbid = wTTTrack.getposfb( track ); + const char* locfbid = wTTTrack.getlocfb( track ); + + TraceOp.trc( name, TRCLEVEL_DEBUG, __LINE__, 9999, "track %d", wTTTrack.getnr( track ) ); + + if( posfbid != NULL && StrOp.len( posfbid ) > 0 ) { + iOFBack posfb = ModelOp.getFBack( model, posfbid ); + if( posfb != NULL ) { + TraceOp.trc( name, TRCLEVEL_DEBUG, __LINE__, 9999, "Setting listener \"%s\"", posfbid ); + FBackOp.setListener( posfb, (obj)inst, &__fbEvent ); + } + else + TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "posfb \"%s\" not found!", posfbid ); + } + + if( locfbid != NULL && StrOp.len( locfbid ) > 0 ) { + iOFBack locfb = ModelOp.getFBack( model, locfbid ); + if( locfb != NULL ) { + TraceOp.trc( name, TRCLEVEL_DEBUG, __LINE__, 9999, "Setting listener \"%s\"", locfbid ); + FBackOp.setListener( locfb, (obj)inst, &__fbEvent ); + } + else + TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "locfb \"%s\" not found!", locfbid ); + } + + track = wTurntable.nexttrack( data->props, track ); + } + } + + static iOTT _inst( iONode props ) { iOTT tt = allocMem( sizeof( struct OTT ) ); *************** *** 121,126 **** data->props = props; ! ! TraceOp.trc( name, TRCLEVEL_DEBUG, __LINE__, 9999, "inst for %s", _getId(tt) ); instCnt++; --- 170,175 ---- data->props = props; ! __initCallback( tt ); ! TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "Turntable \"%s\" initialized.", _getId(tt) ); instCnt++; Index: model.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/model.c,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** model.c 7 Nov 2005 20:17:07 -0000 1.52 --- model.c 1 Dec 2005 20:38:56 -0000 1.53 *************** *** 670,678 **** TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "init creatingMaps..." ); _createMap( o, o->trackMap , wTrackList.name(), wTrack.name(), (item_inst)TrackOp.inst ); - _createMap( o, o->ttMap , wTurntableList.name(), wTurntable.name(), (item_inst)TTOp.inst ); _createMap( o, o->feedbackMap, wFeedbackList.name(), wFeedback.name(), (item_inst)FBackOp.inst ); _createMap( o, o->switchMap , wSwitchList.name(), wSwitch.name(), (item_inst)SwitchOp.inst ); _createMap( o, o->streetMap , wStreetList.name(), wStreet.name(), (item_inst)StreetOp.inst ); _createMap( o, o->blockMap , wBlockList.name(), wBlock.name(), (item_inst)BlockOp.inst ); _createMap( o, o->locMap , wLocList.name(), wLoc.name(), (item_inst)LocOp.inst ); --- 670,678 ---- TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "init creatingMaps..." ); _createMap( o, o->trackMap , wTrackList.name(), wTrack.name(), (item_inst)TrackOp.inst ); _createMap( o, o->feedbackMap, wFeedbackList.name(), wFeedback.name(), (item_inst)FBackOp.inst ); _createMap( o, o->switchMap , wSwitchList.name(), wSwitch.name(), (item_inst)SwitchOp.inst ); _createMap( o, o->streetMap , wStreetList.name(), wStreet.name(), (item_inst)StreetOp.inst ); _createMap( o, o->blockMap , wBlockList.name(), wBlock.name(), (item_inst)BlockOp.inst ); + _createMap( o, o->ttMap , wTurntableList.name(), wTurntable.name(), (item_inst)TTOp.inst ); _createMap( o, o->locMap , wLocList.name(), wLoc.name(), (item_inst)LocOp.inst ); |
|
From: rob v. <ro...@us...> - 2005-12-01 20:38:51
|
Update of /cvsroot/rojav/rocrail In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv746 Modified Files: rocrail.xml Log Message: changed fbcallback Index: rocrail.xml =================================================================== RCS file: /cvsroot/rojav/rocrail/rocrail.xml,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** rocrail.xml 7 Nov 2005 20:16:56 -0000 1.44 --- rocrail.xml 1 Dec 2005 20:38:44 -0000 1.45 *************** *** 206,210 **** <object name="FBack" interface="HtmlInt" use="node" include="htmlint" remark="Feedback object"> ! <typedef def="void (*fback_listener)(obj,Boolean)"/> <fun name="inst" vt="this"> <param name="ini" vt="iONode" remark="Feedback node"/> --- 206,210 ---- <object name="FBack" interface="HtmlInt" use="node" include="htmlint" remark="Feedback object"> ! <typedef def="void (*fback_listener)(obj,Boolean,const char*)"/> <fun name="inst" vt="this"> <param name="ini" vt="iONode" remark="Feedback node"/> |
|
From: rob v. <ro...@us...> - 2005-11-30 21:42:25
|
Update of /cvsroot/rojav/rocgui/xpm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8904 Removed Files: splash.xpm Log Message: --- splash.xpm DELETED --- |
|
From: rob v. <ro...@us...> - 2005-11-30 21:38:48
|
Update of /cvsroot/rojav/rocgui/xpm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7873 Modified Files: rocrail_splash.xpm Log Message: Index: rocrail_splash.xpm =================================================================== RCS file: /cvsroot/rojav/rocgui/xpm/rocrail_splash.xpm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rocrail_splash.xpm 26 Nov 2005 16:00:41 -0000 1.3 --- rocrail_splash.xpm 30 Nov 2005 21:38:39 -0000 1.4 *************** *** 1,320 **** /* XPM */ static char * rocrail_splash_xpm[] = { ! "384 300 17 1", " c None", ! ". c #343637", ! "+ c #AC201A", ! "@ c #247826", ! "# c #595A5C", ! "$ c #6A757C", ! "% c #848683", ! "& c #708BA1", ! "* c #72B21C", ! "= c #8DA4B5", ! "- c #B5B1A9", ! "; c #8AEB39", ! "> c #D5CDC5", ! ", c #E5E1DB", ! "' c #FFFF01", ! ") c #F0EFEC", ! "! c #FCFFFB", ! " ", ! " ", ! " .................................................................................................................................................................................................................................................................................................................................................................................... ", ! " =)))))))))================================================================================================================================================================================================================================================================================================================================================&===&========&=======&===&=&. ", ! " $-=--,=))!!&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&&&&&&&&&&&&&&&&&=&&&&&=&&=$ ", ! " .=&%%=%%%=)!&&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&&=&$=======&=&======&&$====&==&&&. ", ! " .=>)-=---%-!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&===&&&&&&&&&===&&&&&-&)&&&&&=&&=&&&&&&&&&&&&&&&&&&==&&&&&&&&=&&==&&=&=&&=&&&&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&=&=&=&$&$=-)),==&$&=)==,&&&&. ", ! " .==%#&.#&%$-&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&=)=,&&==&&===)=,&&==&=&,#=&&=)===&==&=&=&===,===&&=)%,=&&==&&=$=)%&&,&)-==&==&-$===&===,======&==&===&==&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$&=&&=&&&&&&,==-=&$&=&-)!=&$&&. ", ! " .&-####%%%#-&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&=,--$,=-,)=%&,--$==,&,#)$-&&=,>=%=-)&,$)$)&$)%=-==,=%)=$&=--&==--=&&-=--=%=-)&)&)-,&,&$)$)=&%)&,=$)=%=-)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$&&&&&=&$&&&==&==&$&&==!!==$&$. ", ! " #=$##.#....%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&=,&-&,#&))#$&,=-&=-)#)$,#$$&==-)%)-=$,&,$=>=,&->--=-&-%$&)=--&-==%&&=)=)>#,-=$)#,$>&=,=,$,$-=,$=-==--)--#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$==)))=&$&&&,==,=&$$&&!-=,&&&$. ", ! " .&&%#+.+...%&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&$&&-&>==>==-=-=,$-=,=,$)#,&>&&=-&,&=>-&,-,&-,=--)=,&))%=-&&,-,=$=),%&&=,$=-$=--&,&,&>$=>%,&)#)=,%=)%=-)&-=$&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&&&&&&&$&&$&&$&&=&==&$&&&&==&&&&$&&&&&=&$&&. ", ! " .&##.....###&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&$$&$$$&&&#&#$&#$$&$##$&#&#&$&.&#&#$&#$&#$&##&###$#$$&$#$#&#$&$#&&$#-#&#$#$$&&#&#&&&##&####$$$#&#$#&$#$$$#&$#&&$#&&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&&$$$$$&$&$$&$&$&&&&$&$&$&$&&&&&$$&$&&&$&&$&$. ", ! " .=-->>->>>>-$&&&$&$$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$&$$&&&&$$$&$&$&$&$&$&&$$&$&$$&&$$&&$&&$&$&$&&$&&&$&$&$&$&$&$&&$&$&$&&$&$&&&$&#&$&$$&$&$&&&&&$&$&$&$&$&&$&$$&$$$&$$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$$&$&&$$&$&&$&$&$$$$$&$$&$&$&#&$$&$&&$&$&$$$&$. ", ! " .&#$#&#####$###$#$#$#$##$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$#$$####$###############$.$.&.################################################$##############################$##$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$##$#$#$###$#$#$##$###$#$##$####$###$##########$####. ", ! " #,),>,,,,),,,)=),,,,,=))=),,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,,=),)=!=))=!,=!,=!,=),=!)=),)=!=),)=))=))=))=)=)=)=,,,=),,=!,)=!,=!,=!=))=),,=))=!,=!=)=)=))=)=)=!=),=!,=!=)=),=),,,=)),,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,=!,,,,,=),),=),,,,,=))=!=),,=)>)=)=))=)=))=),,=)=),=!># ", ! " #))>)),),,)>))),,!=))))))),,)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=)>)))>),),),),)),))),)))),,,),,)))!=))),),)),))))!)))),,)),)),,)),))))))),,)),,)),),)))),!))),)))!))),)),)))))))),!=,))!=),!,!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=)))!=),)),!=))),!=))),,,,)),)))),),),,)))),,),)),),,)))),))),,# ", ! " #)),,,,>),,,,,,,,,))>,,>,,,,)>,),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),>),),,,,,,,,,,,,,,,,,,,,,,,,),,,,),,,,,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,,,,,,,),,),,,,,,,,,,,,,)),,,,),,,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,)),,,>),),,,)),,,,=!=),,,,,,,,,,,,,),,,),,,,,,,,,,,,,,,,,># ", ! " #),,,>),,,,,,,,,,,,),,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,),,,,,,)>),,,),,,,,,,,,,),,),,,,)),,,,,),))),,),,,,,),,,,,,,,,,,,,,,,,,,,),,),,),),,,,,,,),),,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)))),,,,,,,,),,)),,,,,,,,),,,),),,),,,),,,# ", ! " #))>),)-->>>=),,,,,,,,,,-=-,,)=,>,,,,,),,,>-=,,),,,,,,,,),,,-,,,,,,,--=>>,),,,,,,,,),,,,,-),,,,,,,,,,),,,,,>>,,>-),,,,,,,,,,,,),>>)>,,,,>>,,),,,),,,,,),,,,,,,,),,,,,,),,,,,,,,,,,,,,,,,,,),),,,,),),,),,,,,,,,,,,,,,,,,,,,,,,)),,),,,,,,,),,,,,,,,,,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,>,,,,,,,,),,,,,,,,,,,,,,,,,,,# ", ! " #))>,,,#==>-#,,,,,,,,,,,#-=-,,$->=,,,,,,,,$%--,,,,,,)->,,,,)%=,,,),)>%#->,,,,,)->,,,,,,),#%,),,,=,,,,,,,,,)-$,>%=,,,,,,,,,,,,,,)-%,%=,,)=%,,,,),,),,,,,,,),,,,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,),),),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,># ", ! " #)),,,,#>,>%#)%$-,,,),,,#>,,-%#%-#%,,,,,,-%,,,>$%-$$-#%%%%%%%>,,,,,,,>$,>%%-%%-#%,,,,,,,-%#,%>%-#-%$-,,,,,,,#,%-%,$$--=%=>,,),,,=$-$->$%-%%%%>,,>,,,),,,,,,,,,,,,,,,,,),,,,,,,,,,,,)>,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,>,,# ", ! " #),>),>#%%>%#-$%%,,,,,,,.%%,#,$%-%,,,,,,,-%,,)%--%#-#%>%-$,%#-,,,,,,)-$,%$%%$%,%-,,,,,,,%%#-%-%-$-%>$,,,,,,,%-%>%%$%%$%%$,,>,,,>-%-#-#-#-%$-%-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,># ", ! " #))>>,,#>,>%#-%->,,,,,,,#,,>#>#%-#>,,,,,,-#-,--=-%#)#%-$>#>%#-,,,,,,,>%,-%>>>%%%>,,,,,,,$-%%%-#-$-%-$,,,,,,,>#%,$-%->#%#%,,,,,,,-%,%-%%>-%$-%-,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# ", ! " #)),,,,%>,>-%,%%-,,>,,,>$%%--%%----,,,,,,,-%%->%%>%)%-%->>%%->,,,,,,,>%,>%%-%%>-%,,,>,,--))%>%%>%>%%-,,,,,,,>%>,%>%%-%>--,,>,,,,>-,-->%%--%$->,,,,,>>,,,,,,,,,>,,,,,>,,,,,,,>,,,,,,,,,,,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>,,,,,>,,,,,,,,,,,,,,,,,,>,,,,,,>,,,,,,,,,,>,,,,,,>,,,,,,,,,,>,,,,,,>,,,,,,,,,,>,,,,,,>,,,,,,,,,,,,,,,>,,,,,>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,>,># ", ! " #))>,,,-%$-,,,,,,>,,,,>,%%%%,,,,,,,,,,,,,-$%%%,,,,,,,),,,,,,,,,>,,,,-%%%>,,,),,),,,,,,,>%#%%,,,,),,,,,,,,>,-%%#%,,,,,,>>,,,,,>,>>%%%-,,,>,%>,>,,>,,,,,>,>,,,,>,,,>,,>,,>,,,,,>,,,>,,>,,,>,,,,,,,,,,,,>,,,,,,>,,,>,,,,>,,,>,,>,,,,,,>,,,,>,,,,,,,,,,>,,,>,,,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,,>,,>,,,,>,>,,,,>,,>,,,,,,,,,,>,,,,,,,,,,,,,,,,,,,,>,,>,,,,,# ", ! " #),>,>,>,,>,,,>,,,,,,,,,>>>,,,,,>,,,,,>,,>,,,,,,,,,>,,,,>,,,,,,,,,>>,,>,,>,,,,>,,,>,>,,,,,,>,,>,,,,,>,,>,,,>,,),,,,,,,,,>,,,,,,,,>,>,,,,,,,>,,,,,,,,>,,,,,,,,,,,,,,,,,,,,,>,,,,,,,,,,,,,>,,,>,,>,>,,,,,,>,,,,>,,,,>,,,,,,,,,,,,,,>,,,,,,,,,>,,>,,,>,>,,,,,>,>,,,,,,,,>,,,,,,,,>,,,,,,,,>,,,,,,,,>,,,,,,,,>,,,,,,,,>,,,,,,,,>,,,,,,,>,>,,,,,,,,,,,,>,>,,,,,,,,,,>,,,,>,,,,,,,,,>,,,,,,,>,># ", ! " #)),,,,,,,,>,,,>,,>,>,,,,,,>,,>,,,>>,,,,,,,>,,>,,,,,>,,,>,>,>,>,,,>,>,,>,,,,>,,>,,,,,>,,,,,,>,,>,>,,,>,,,>,,>,,>,,>,,,,,,>,>,,,>,>,,,,>,>,,>,,,>,>,,,,>,,>>,>,>,>,>,>,>,,,,,,>,>,>,>,>,,,>,,,>,,,,>,>,>,,>>,,,>,,,,>,>,>,,>,>,>>,,,,>,>,>,,,>,,>,,,,,>,>,,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,>,>,>,,,,,>,>,>,,,>,,,,,,>,>>,,,>,,,>,>,,>>,>,>,,,>,>,>,,,,,,# ", ! " #),>,>>>>,>,>>,>,>>,>>>,>>>,>>,>,>,,>>>>>,>>,>,>>>,>,>>,>,>>,>,>>,>,>,>,>,>>>,>,>>,>,>>>,>>>,>,>,>,>,>,>,>,>,>,>,>,>,>>,>,>>,>>,>,>>>>>,>,>,>>>,>,>,>>,>,>,>,>,>,>,,>>,>>>>,>,>,>,>,>,>,>,>,>,>,>>,>,>,>>,>,>>,>>>>,>,>,>>,>,>,>,>>>,>,,>,>,>,>>>,>,>,>,>>>,>,>,>,>>,>,>,>,>>,>,>,>,>>,>,>,>,>>,>,>,>,>>,>,>,>,>>,>,>,>,>>,>,>,>,>>>,>,>,>,>>>,>,>>,>>>,>>>>,>>>>,>>>,>>,>>>>,>,>,>>,>>,># ", ! " #!),))))))))!))))!))!!)))!,!)))))))))!,!,)))),!!!,)))))))!)!)))))!)))))))))!)!))!)!,!))),)))))))!)))!)!)!,))),)),!)))!)!))!))))))))))!)),)))!))))))!))))))))))))!)))!)))!))))))))))))),)))))))))!))))))!)))!)))!!))),)))))))))))))!))))!)))!))!!)!))))))!))!)!))),!))))))),!)))!))),!))))))),!)))!))),!))))))),!)))!))),!)))))))))!)!)!)))!!!))))!))!))))))!,!,!,!)!)))),!),!))))),))!)),# ", ! " #))),)))),),,))),),),,,))),,)),),)),)),,!,)))),,,))))))),,),),,,),)),))),,),,),)),),))))))),),),,),),),,,),),!,))),)),),)),)),))),)))),))),),)!,)),),),,),!,),),),),),),),),),),,),),))),),,),),,),),,),,),),)),)),)),),),),,)),))),,),,),),),),,),),),),),),,),!,),),,),!,),),,),!,),),,),!,),),,),!,),),,),!,),),,),!,,),!,)),!,,,),),),,),),),,),),!,)),),)),)),,),))),)),),),!),),,)># ", ! " #),))),))))),),)),),)),),)!,))),)),)),)),),),),)),),,),),),))!)))),)),))))))),),)),),),))),))),)),)),)!,)!)),)),),),)),)),),,)),),),,)))))),),,),),)),)))),)),),),)),),)),),),))),),)),))))!,),))))))))))),)),),,)),),!,)!))!,)),),)),!,,))),),)),),),))),))))),))))))!,),!,)))),),!,)))!,),!,)))),),!,)))!,),!,)))),!,))),))),!,),)),,),!,,),!,)),),)),)))),,))),)))),))),),),!,),)),),,# ", ! " #)),)),),),))),)),)!,)),,),),)),)),)),)),))),)))),!,))),!,),),),),),)),)),),),)),))),)),,))),)),)),)),)),,,)),),)),),),)),)))),)),))),),),)),)),),)))),)))),!,)))),),),),,))!,),!)),),),),),))),),),),),),),)),!),))),!,),),)),),),))),)),)),)),)))))),),,),),!,),),),),)),),),)))),),),),)),),),)))),),),),)),),),)),),)),))),),!),))))),)!),),)))),))),),))),),),),!),)),))),!,),)!,))># ", ! " #!)),)),),)),))))),),))!,),),!,),)),))))),),)),),,)!,),!,),))),),!,))))),!,))),)),),!,)),),)),)),!),),),)),),!))),)),)),))),),),)),),)),)),)),!,),))))),)),),!,),)))))),!))),),),),))),!)))))),))),))))),),)),),),!,),,!,)),),),!,!,),),),),!),)),),),!,)),),,)))),))))),),))))),,),)))))),),))))),,),)))))),),))))),!,!,))),),)),),),),)),),),!,),),),)),!,),),!))),,))))),),),!)),)),,,# ", ! " #))),,%=@%-%-,)),),)),),))!),)),),!,),),))),)!,)),,),!,,),--,))))))>!,,),!,)!!!!!)),)),)),),!),)),),)))),))),),)))))),!,),)))))),),)),)),!,))),)!,),),),)!,),),!,),),)),,),))),!,)))))),,),),),),!,),))))!,)),),)),),!,),)))!,!,!,,))),!),)),),),),))),!,),!)),),),!,)),!,),),)),!,),),)),!,),),)),!,),),)),!,),),))),),),))))),),)))),),),),)),,!,))))))),)!,),),),!,),),!,)))),))),)))># ", ! " #!,))--,,,>-@!),!,,),))),,),),))),)))),!,),),))),)),),))-+++#,,,),),))),,-%--%>!!),)),!,))),),),))))),),!,),)),),),),),!))),),,)),)),)),),),),!,,!,)),!,),)))),),),)))))),)))),)),),),)))))))),)),)),))),,)),!),),))),),)),,),),,)))),),)!,)))))),)),)))),),),),!,),),),)!))),),),!))),),),!))),),),!))),),),!),)),,),)),),),),))),),)))),)))),!,,))),),),),)))),),),))),),))),),)),),,),# ", ! " #!)),->=,=,=%)),)),!,)))))-%#%>))),),,%%%,#-),,)),),),)=+-+++#),!,),!,)),,--%>%%!)),)),),),))))),,),)))),)),),!))),)))),,),))),))),)),))),))))))),))))),),),)))))!,),),),),),!,!,),!,)),),),),),))),),,)))))),!,))))))!,)!,)))),),)))))),,),),),!,)),),,)),))))),)!,)),),,,)!,)))),,)!,)))),,)!,)))),,)!,!,),,))))))),),!)),),),)))!,),)),),)!,))),))))))),)),,),!,),)))),),))))),),),,,,# ", ! " #),))-=@,=,@=!)))),),),)-#&=$&#-),)))%=&%%#$-)),),)))),$+-,!++>,),),),),))$#$$%#>),)),),!))),),)))),)),,!,))),),)),,),))),)),,),)))),)))))),),),))>!,),)),!),,),,)),))))))),),)))),)),))),))),!,),))),),),),,),)),)),,),),))))))),)),),))),!,)),)),)))))),)),),))),)),!)))),)!),),!),))),),!),)!),),!),)),),!)),),),))),),)),)!,),),!,!),!),),),),),,),),))),!))),!))),),)))),),),),))!,,# ", ! " #!)!>)!@=@==%),),),)!),).#=&#&#.,),)%#=&#$.&-!,)),),)),%++!!++>)))),)))))-.$#%%$-),))))),,))),!,),!,))!,),)),)),),)),),),),),),),)))),),),!,))),))),)))),),)))))))),),),),))))),)),!,),)),),)))))),)))),))))),),)),)!,)))),),),))),))),,)),),)),!,),),),!,),)),),)),)),,),),),,),),),),)),),!,),!,),)!,),!),!>)))),),)),)!,),),))),),),)),)))))),!,)))))),)),,)))),,))),),),))),))!,),),># ", ! " #))),=,=,,@=@!)),),),)))$.&&.&$%)))),#&&%%.$-,)),)),),,-+-+-+#>,),,,),),)%#.....#,),),),!),),!,)),))),,))),))),))),!)))))),)))))),),)))),,)),!,),)),),),!,),,),),),)))))))),),),),)))),),))),),),))),),!,),),)),),),,)),,)),))),),)))),!,))))),!))))),),))))),!,),),))))))),))),),!,))))),),)),),)),,,)),,))))),)))))))),)!,)))),)),))))),!,),),)))),),),)),!,)),))),),!,!,)),))),),)),),# ", ! " #!,!!=,==!@=%))))),)),,,))+...>,),))),#..>.#),))),)))),,-++++>),))),!,)),-#..+.#%,))))),,)),),),!,),))),))),),),!,),),),)),),),),)),),,!),))),)),),)),),),)!,!,),),),),),),)),!,)),),))),),)))))),))))),),)!,)))))))),))))),))),),!>,!,),),),)),,),),))),),)),)),!,)),,),))),),)!,)),),),))),))),))))),),),)),),),),),),),),),))),),),),)),)!,))),)!,)),),)),),)),)))))),)),)),)))),),),># ", ! " #))>!,=@,===,,)),),,))),))=)),))))),)),),,))),),),),)),),=%%,))),),,)))),>>--%-->)),)),),))!,)),)),!),))),)),)))))),)),),))))))))),)))),),))))),!))),!))))),)))!)),),)))),!),)))),)),)),))),),),))),),))))),))),)),),),),),),)))),)!),)),))),),))),!,)),!,),))),))),,!,))),)))),,)),),!,!,,),),))),),)),))),)))),),),!,),)))))),)))),)),)),),),),),))),)))),))))),),),),),),),),),),))),,# ", ! " #!!,!!!!,!,,,,)!,),)),))))))))),),))))),),),)),)),),,))))))))))),)),)),)),,,),),),),)!,))),),))),!,),),))),),),),)),)))))),),,),),)),)))))),),),),),),,,),),),),),),),),)),)))),),),),!,),!,),))),)))),),)),),),,))),!,)))))),)))))),),!,),),!,),)),),)),)!,)),),)))),)),!,),)))),),!,,,))),))),),)!,!)),))),)))!)))),)!,),))),),))))),),,)))!,)),)),),),))),),,!,)),)!,)),)))!,),),),),># ", ! " #)),),)))),))),))),)))),)),),)),,),),),))),),))),),))),))),))))),))),)),)))))),,)),),,!,),)),)),),),)),),)),)!,)),),),,)),)))),!,!,))),),),),)))),))))),!),)),))))),))))),!,),)))))),!,)),)),!,),),),),)),)),),!),)))),)),,)),),),),)),))))),)),!,)),!),!,)),),)),),))),),)))),))),),!),),))),)))),,),,),))))),),)),)),,))),),),!,),),!,!),>!,)),),)),))),),),),))),!,)),),),),))))),!),,# ", ! " #!),))),)))))),),),,,))),)),),),))))),),))))),)),))))),)),)),),),),))))),,)))))),),),)),),),),!,)),),),)!,),)),),)),))),)),,!))),)),)))),)),),,)),),),!),),),),),)),),)),)),),),),)),),)!,),),),)))))),)))),),),),),)),),!,)!,))),),)),))),),))),),!),),),)!,!,)))),),)),),),),),))),),),),))),),))),!),),!>,),),,)),)!,),!,)!),,)),))),,))),),!,)),))))))))))!,),))),,))),),),),),)),,)># ", ! " #)))),)),)))>!,),)))),)),)))))))),),))))),),),),)),,)))))),),)),)),),),))),),),))))),),!,)!,)),),!)),)),,))),)))),,)),),),),),))),),),),),)))))),),))),,))),))))),),)),),),!,),)))))))),,)),))))),)),))),),)))))),)),))))),),),),!))),),),)),),!),),),),)),,)))),),)))),)),)))),!,)))))))))),))))),),)))),)!))!,!),))),),),!),))),)),,))),))),),),!,),),),),),,)),),))),),))))),),),!))),# ", ! " #!,,),,),),),),),),),,),)),,),,,),,,,,,,,,,),,),,),,,,,,,,,),),,,),)),,),),,,),,,,),,),),,),,),,,,,),),,,,,),,),,),,,),),),,,),,,,,),)),),,,,,)),,,),,),,,),,,,,),),,),),),,,),,,)>,,,,),,),,,,,,),,,,,),,),,,,),,),,,,,,,,,,),),,,,,,),),,),),,),,,),),,,),),,,,),,,),,,),,,,),,),,,,),,,),)>,,,,,),),,,,,)>),,,),,,,,),),,,,,),),,),,,),),,),),,),),),,,),)),,,),,,,),,,,,,),,),,,,,,,># ", ! " #!,,>>>->>>>>>>>>>>>>>->>>>->>>>>>>>>>->>>>>,,,,,,,,),,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,>,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,),,,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,),,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,),,,,,,,,,,,,),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),),,,,),,,),,,,,,,,,,# ", ! " #!)-&&&&&&&&&&&$&$&&&&&&&&&&&&&&&&&$&&&&&&&=,,)),))),),),)),)),),),,)),)),)),)),))),),))),)),)),)),),),!,)),)),)),)))),,),),,>,>>>>>>>>>>>>>,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=&&&&&&&&&$&&&$&%&&$&&$&&&&$&&&&$&&%&&=$&&$&&=,),,)),,)))),,),))),,),))),,))))),))),)!,)),),)),))),,)),,),)),)))),))))))),))),),))),),)),)),),)),)),)),),)),))),))),),))),)),)),),,))!,),),),)),)),)))># ", ! " #!,-,,,,,,,,,,,,),,,,),>,,,,,,,,,,),,),,,,,>>)),))),))))),)),,)))),)))),),,))))),,),),),),),)),),),),),),),),))),)),,))),),)->>>,>>,>>,>,>,>>,>,>>,>,>>>,>>>,>>,>,>,>>,>,>>,>>>,>>-,,,,,,,,,,,,,)),,,,,,,,,,,,,,,,),,),,,,,,,,,->)))),),),),)),)),))),!,),),),),)),),),)),)))),)),),),)),,))),))),,)),,)),)),),),!),),)),)),),),),),),),),)),),),),),),)),,),)))),),),,)))),),),))),),),,# ", ! " #!)-)))),)),))))),))),))))))),)),)))),),)),>>,),,)),,)),))),)),),),),,,)))),),),)))))),!,))),),)))),))),)))))),),),),),),,),-)>,,,,,,>,,,>,,,,,,)>,,,),,,),,,)>,,,,,,,,,,,,,,)>,,,>)),),)))))))),)))!))))))))))))))))),)))!))))>,,),)),))))))),))),))),)),!,),),),)),),)),),))),),))),))!,)),),)))),)),))),)),)),),),)))),))),))))))))),!,)))),),),)))),))))),),))),))),),)),))),)))))))># ", ! " #))-!)))))))))))))),))),)),))),))),)))),)))>>,))),)))),)),))),)),),)))),,)),))))),),),),)),),))))),))))),),),)))),),))))),),>,,,,>,,,,,,,)>,>,,,,)>>,>)>,>,,,,,,,>,>,,>)>,,,>,,,>>>,)))))))))))))))))))))))))))))))))))))))))))>>,),),)),),),))),),),))),),)))))))),)))),)))),))),)),),),),)),),),),),)),,),))),)),))),),)),)))),),),),),),),))),)),),),),),),))))))),)),),),),),)),),,,,# ", ! " #!)-)))))))))),))),)))),))),))),)))))))))))>>,),),)),),),)),!,,))))))),))),),),)))),)))),)),),,)),)),),))))),),))),),),)),),->,,,,>,,>,,,>,,,,>,>,,),>,)>,,>,>,,,,,,,,,>,,,,,>,,,>>))))))))))))))))))))))))))))))))))))))))))),>,))),),)),))),)))))))),))),),),),),)),))),)),),),),!,)),)),))))),),)!,)),),),)),)),),))),)),!,,)))))))))))),),)),),))!,))),)),)),),),),)))))))))),))))))># ", ! " #))-),)))-,))))))>,,))))),))>,))),,))))),),,>),)),),)))),),),!)),),),))),),)))),),),)),),),))))))),)),)),),))))),),))))),)),>,>,,>,,,>,>,,,>>,,,>,>,,>,>,,,,,>>,>,,>,,,,>>,,,,,,,>>)))>-)>>),))))))))))),)),)-))))-,)-)%%-)>-),>>,,)))))),)),),),),),),),),))),)))))),),)),)),)))),)))),,)))),),)),),),)))))))),),))),),))),))),,),,),),),))))),!,),),),),!),),),))))))),),),),),),),),),# ", ! " #))>!,)),.%),))>-,,,),,))),,#),)))),),),),,>>),)),),),,)),)),,),))),),,)),),,)))),),)))))),),),),)),),,),),),),)),),),))))),>,,,-##%>,,,$>>))>,>,>>,>,,,,-%>,,,,%-),>,>$,,>>,>#=,>>,))-.>->))),),),),>>)),)),$-,,,$,,$,#,#>%>),>>)!,,,),)),)))),)))))),!))),)))),),),)),)),)),),)),),)))),),),!,),,)))),),),,)))),),)))),)),)))!,)),),)),),),))),))),)!,),))),),),),),))),)))),)),))),,)># ", ! " #!,-)),)--#,-$%-#%-$)%>%#,,,$))%%%>#%,#->))>>,),)),)))),),),)),)),,)))),),))),),,!),),),),!),)),)),)),),),)))))),)))))),))),-,,>%%,>,-$-$%%>$%-.%.-=%>%%%-$$>-$-$%%>%%-#%->%%-.-,>>)))-$$---$$>$>$%%-%#>%#,#-##%))#$%#,#,#,#%),>>),))),),)),)),)),,),),)),),),),!)))),)),))),))),)))),),))),)),)))),),))))))),),)))),)),),),!,,))),)),)))))))),)),))),))),)>!))),))))),),),),))),)),))),,# ", ! " #))-))),$%.,#,)>%%>#->#%#>,,#),#,%#>))#%,,,>>)),,)),),))))),),),),),),)),),),),)),))))))),)),),),),),))))),!,,)),),)),),),),->,,>$#$-#>,#%#->%=#,#-#-#$%#-#%#>-$$%#-.-$#-#%%-%#>,>>,))--#$>#%%>#,%%$---,-#-%>%%,),%>,#,#%%>%,,)->!,),!,),),),!,),!))),),)),))),))),,!,)),,))),)),),)),),)),),!,)),)),),),),,!,)),,),),))),))),,)),),!,),)),),),))),),)),),)),))),),),)))))))),))),),),),># ", ! " #!,-)),>%,-%#>>>$---#>%>>,,,#,,%>#%->,>-%,)>>,))),),)),)))))))),))),))),))))),),))),,),),)))),!,)),))),),),))),)))),)),),)),>,>,>>>#-#>>%>$-$#-#>#-#%-$>#-%-$#%#%-$-#>##>#$-=##,>,>,))-->.>%->>#-%>>$-%$-#-$-#%>,,#,)#,#>%%%>))>>,))),))))),),!,,)),),))),),!),),))),),))),),),)))),)))),),)),),))))))),!,),)),))),!,),))),)))),),),)))),))))),),)),)))),!)))),)))),)),),))),)),),)))))),# ", ! " #)!-)),>>,,>)%-)->>>-,>--,,,-%->%>,%->--,,,>>,),)),)),),,),),)),)),),)),),),)))),))))),),),))),)))))),),),)),),),),),),)),),=>>,-#%#>$#-$-%%#%#%-#-#$-#>%%#$>###%-%-$>%$>$-##-#>>>>)),>>)->>>%>----%>,->-->--->-))>,)-,-%-,-,,,>,,),)),),)))),)),),)),))),),),),),),)),),),),!,),),),),)))),!,!,),),),))),),))),))),)),),),),))),))),),)),),),)),)),),!),,,))),),)))),),,),)),),),),),),,# ", ! " #!)>))))),),,),,),)))),,,),,,,,)),),,,,,),)>>),)),),),))),),)),)),))))),!,))),),),),),),),)))))),),),)))),))),!,))))),),))))>>>,>>>,>>,>>>>>>,>>>,,>>>>>>>>>>,>>>,>>>>>>>>,,,,,>,>>,,)))))),,)),))))),,),,,,,,),,,,,,)),)),)),)>>)))),),),)),),)))),,!),))),)),),!,),!,),)),),))),))))),),),)),!,))),)),,)))),),),))>!,)),),)),))))))))),))),)),),))),),)!,),),)))),)))),)),))))),)),),,,# ", ! " #),-),,,),,,),),,,,,,,),),),)),,),,),),),,,>,)),)),),),))),))),)),),!>)),),)),)))))))),)),,),)),)),!,),)),),))))),))))))),),>,>,>,>>,>>,>,,>>>,>,>,>,>,>,,>,>,>,>>,>,>>>,>>>>>>,>>>,),),,,))),,,),),,),),,))),,,)),,),,,,,,,,,,>>)),),),)),))!),),))),)),))),)!)),)),),),)))),),),),),))))),,)),),)),))))),)))))),)!,,)))),)))),),)),),),)))),!,!,),)),),),)),),),),),)),),),))!,)),),),># ", ! " #!)>)),,),),,),,),),),,),,),,,)),,),,,,,),,>>),)),),))),)))),))),)),))!,))),)),),),),),)))))),),),),))))))))),,),,),),)),,),=>>,>,>>,>>,>>>,>>>,>>>>>,>>>>>>>>,>>>>>>,,>>>,>>>,>>>>,),,,,,,,,),,,,,,,),,),,,,,),,,),,)),),),),)>,,))),),),),,),)),)),!),)),))),)))),),)),),),))),))))),),),))),)),)),),)),),),),),),!),),))),),)),),),))))),),)))),)),)),))),)))))),),),!,)),),)),),!),),# ", ! " #),>),),,,,,,),,,),,,),,,),,),,,),,),)),),,,>>,,>,>,,>,>,>,,>,,>>,,>,>,,,>,>,,>,,>,,,,>,>,>,>,,,>,>,>,>,>,>,>,,,>,,,,>,>,,))->->>->>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>->>>>>>=->>>>,,,,,,,,),,,,),),),,,,,,),,,),,,),,,),,,,,,,>>,>,>,,,>,,>,,>,,>,>,>,,>,,>>,>>,>,,,,>,,,,>,>,,>,>,>,>,,,>,>,,,,>,>,,>,,,>,,>,,,,,>,>,,>>,>,>,,>,>,>,>,,>,,>,>,>>,,>,,,>,,>,,>,>,>,>,,>,,>,>,>,,,>,>>,)># ", ! " #),>,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>->>>->>->>>->>>->>>->>->>,->->->->>>>->>-->>->>,>>->->>->>->->>>>->->>>>->>>>,>,)>>>>>>>>>>>>>>>>>>>->>>>>>>>>>>>>->>>>>>>>>>>>>>,,,>>>,>,,,>,>,>>,>,>,>>,>,,>,,>,>,>,>,>>,>>,,>,,,>>>>>,,>>,>>>,>>>,>,>,>>>>,>>,>,>,>>>>>>,>>>>,>,>,>,>,>>,>>,>,>>>>>,>,>>,>>>,>>,>>>>,>>>,>,>,>,>>>,>,>>>,>>>,>,>>>,>>,>>>,>>,>>>,>,>,>>>,>>>,>,>,>>->>>,>,,# ", ! " #))>>>>,>>,>>>,>>>,,>,>,>>,>,>>>,>>>,>,,>,>,>>,,,,,>>,,,>,>,>,,>,,,--,,,,,,,,>>,,,,,,,,,,-->>,,,>,,,>,,,>>,,,,,,>->,>>>>>>),>>>>,>>>>>>>>>>>>>,>>>>>>>>>>>>>,>,>>>>>>>>>>>>>>>>>>>,>>>,>>>>,>>,>>,>>,>>,>>>,>,>>,>>,>>,>>,>>>>>>>,>>>>>>>,>>,>>>>>>>>>,>>>,>>>>>,>,>>>>,>,>>>>>>>>>>>>>,>>>>>>>,>>>>>>,>>>,>>>,>>>>,>>>>>>>>>>,>>>>,>>>>>>>>>>,>>>>>,>>>>>>>,>>>>>>>,>>>>>>>>>->,,>>>--,># ", ! " #),>>,,)),))),))),,),),),,),))),)),,),,,)),)),,),),)),),)),,)),,)),->,),,),,,),,,,),,,),)>-,)),)),),)),),,,),),,>-,,,,>>--,)>>))))))))))))))),))))))))))))))))))))))))))))))),)!)))),)))))),))))))),)))))))>)))))))))))))),))))))),)!)!)))))))!)!,))))))!-%-%-%-%%-%%-%%%-%-%-%%--%%--%%>))!)))),)!)))!,))!)))!>!))))!),))!)))),)!)))!,)))))))>!)!))!),)))))))))))!)!>!)))!)!>-,,,,,>>-),# ", ! " #),>>))))),))),))),),))))))),)))))),,)),,,),)),,)),,),,),,),)))),,,->,,),),)),))),),))),,>-)),,,)),,))),))),,,),>%),$-,>->),>>)!!!!!))!!!!!!))!!!!!!!,!!!!!)))&-%==>,!!!!!!)))!!)!)))!)!!)))))))))),)))!!!),))))!)))!)!!!!,!!!!!!!,!!!!!!!)!!!!!!))!!!!!)%,,,,,,),,),,),,,,,,,),,,,,,,,--!!!!!!))!!!!!!))!!!!!!)!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!)!!!!!!,)!!!!!!,!!!!!!!>-),>#>>->,># ", ! " #),>>,,,,),),,),,,),,,,,,,,,,,,,,->-%%,),,),,,),,,,),),),),,,,,,),,->,,,->,,)-%>)%%,,,,),>-,,>%%%>%-,,,,,),%-,,,,-,%..->--,)>>)!!!!!!,!!!!!!!,!!!!!!!))!!!!!))%%&%-&,!!!!!!!))!!!!!))!!!!!!)!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!)!!!!!!!%->,),>>>!!!!!!!!!!!!!!!!!!!!!--!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!),!!!!!!))!!!!!!,!!!!!!!>-,-..%>--),# ", ! " #),>>,),,,,,,,,,),,),,,),),,),),,.-.-##,),,),,,)),),,,,,,,))),,),,,->,,-.%)>-#%>-.%-->,,>->,,%#>.-.->%-,-%>#%-,>>-)>>>>>->),>>)!!!!!,.%%%$%$%.%%$%$$$.%$%%%%#$-@;;$%.%%%%%%&.%%%%%%$#%%%%%%#$%%%%%%.%%%%%%%.%%%%%%#$%%%%%%.%%%%%%%.%%%%%%##%%%%%%#$%%%%%%#=%->!=%-,!!!!!!!!!!!!!!!!!!!!-.%%%%%%$#%%%%%%#$%%%%%%.%%%%%%%.%%%%%%%#%%%%%%.%%%%%%%.%%%%%%%#%%%%%%#%)!!!!!,!!!!!!!>-,,,>>>--,># ", ! " #))>>,,),),,,,,,,),,,),,,,,,,,,,,.-.>>.>,),,,),,,,,),,,,,,,,,,,),,,->>,#-.>-.%#%##%##>,,)--,,%.#.>#%.-#..->###,,>%,),,,>->,,>>,!!!!>=%%%%%%%%$%%%%%%-$%%%%%%$%#@@@%#$%%%%%%%$%%%%%%%%%%%%%%$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$%%%%%%%$%%%%%%%%%%%%%%%%%%%%%%#%-==%--$)!!!!!!!!!!!!!!!!!!!!-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%%%%%%%%%%%%%$%%%%%%%#%%%%%%#-%)!!!!,!!!!!!!>->),,>>>-),# ", ! " #),>>,,,,,,,,,),,,,,,,,,,,,,,,,,,.-.--.,,,,,,,,,,,,,,,,,,,,,,,,,,,,->,>##.%%#%#%#%%#-,>,>>>,,%%>.-#%.>%.#>>%.#,,>%------=>))>>)!!)>>%,!!!!!!!,!!!!!!!,!!!!!)),#%%%%%,!)!!)!!,!)!!)),,!)!!)!,!!)!!!),!!)!!!),)!!!!),))!!!!!,!)!!!!!,!!!!!!!,)!)!)),)!!)!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--!)!!!)),)!!!)),)!)!!)!,)!!)!!!,!)!!!),))!!!!!,!!!!!!!,!)!!)!!,!!!!!!)>-%)!!!,!!!!!!!>-------->,># ", ! " #),>>,,,,,,,,,,,,,,,,,,,,,,,,,,,,.>.#.->,,,,,,,,,,,,,,,,,,,,,,,,,,,->,%->-#>.#%-.#%#--#>,>->,%.#.>#-###%##-%%#->,%),,,>,--,,>>)!!>-=),!!!!!!!,!!!!!!!,!!!!!!))!!)!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!)!!!!!!))!!!!!!,!!!!!!!,!)!!!!))!!!!!!))!!!!!!$%%%%%%%%%%%%%%%%%%%%%%%$%%%%%#-!!!!!!!)!!!!!!))!!!!!!)!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!)),-%!!!))!!!!)!>-,,,,>>--,,# ", ! " #),>>,,>,>,,>,,,>,,,,>,,,,,,,,,>,>>,>>,,>,,,>,,>,,>,,,,,,,,,>,>,,>,->>,,,,,>>>,>>>,,>>,,>>>,>,>>>>>>,>,>>>>,>,>,>>),,,>>->))>>>,)=->)>,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)>,,,,,,)>,,,,,,,>,,,,,,>,,,,,,)>,,,,,,,>,,,,,,,,,,,,,)>,,,,,,,,,,,,,,)>,,,,,,>,,,,),,>,),,,,,,,,),,,,,),,,),),),,),,,,,,,,,)>,,,,,,>,,,,,,,>,,,,,,,>,,,,,,)>,,,,,,>,,,,,,)>,,,,,,,,,,,,,,),)-$$),,,,,,,,,>-),,,,>->)># ", ! " #))>>,,,,,,,>>,>,,>>,,>,>,>,>,,,,,,>,,>,,,>,,,,>,,,,,>>,>,>,,,>,,,>>>>,>,>,,,,>,,,>,,,>,>>-,,>,,,,>,,,,,,,,>>,,,--,),,,>--),>>)!!!!!!))!!!!!!,!!!!!!!,!!!!!!),!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!!!!!)!!!!!!!,!!!!!!))!!!!!!)!!!!!!!,!!!!!!))!!!!!!))!!!!!!%&%$%%$%%$%$%$%$%%$%$%%%%$%%&$$-!!!!!!))!!!!!!))!!!!!!,!!!!!!!,!!!!!)))!!!!!!,!!!!!!!)!!!!!!),)!!!!!,)!!%%))))!!!!!!>-,),,,>--),# ", ! " #),>,$-$-%%-%-%-%-=+-%=+-%-%%-%%-%%-%-%-%%-%-%-%-%-%%--%-%-%-%-%-%%->>->>>>>>>>->>>->>>->>>>>>>>>>>>>>>>->>>>>>->>),,,,>--))>>)!!!!!),!!!!!!!,!!!!!!!,!!!!!!))%%%%%=,!!!!!!!,!!!!!!))!!!!!!,!!!!!)!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!)!!!!!!!%)!!!!!!!!!!!!!!)!!!!)))!!))!!--!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!)!!!!!!!,!!!!!!!)!!!!!)))!)%$!!,!!!!!!)>-),,,,>->,># ", ! " #),>#..+..#.+..#+...#.#...+..#..#.....#...........#..........#.....#)!))),),)))))))))))!),))))))))),)))))))))))),-,,,,>>>>,,>>)!!!!!!,!!!!!!)=->=>->=-=>->----&%@@=#-->->>=>=>>=>>---=>->---->=>->=-->->>->&>>-=--=->=>>=-=->->>=>=>->>->=-->->----->->->$--=))->-)!!!!!!!!!!!!!!!!!!!!-$->=>-=-=->->---->=>>=>=>>->>---=>->=>-=->=>->&>>=>>=>=>>->=>=-!!!!!!))!!%%!!)!!!!!!!>-,),,,>--,,# ", ! " #),>#>)))))))))))))))))))))))))))))),),)),)))),)),))),))))),),))))%%!!!!!)!!!!!!!!!!!!!!)))!!)!)!)!!!!!!!!)))!!),-),,>,>=>,)>>)!!!!!!))!!!!)-#%%$$%&%.%%$&%&##-@;;%%.%$%$$%%.$%%&$%$#%%&$&%.$%%&%&%.$%$$&%%.$&%%&%$#%%$$%%.%$%$$%%.$%$%$&%.$&%&$$#&%&$$$$#%-->)-!-)!!!!!!!!!!!!!!!!!!!!-.%%&%$%&.%%$&$&#$%%%$%$.$$%%$&%.&$%%%&##%%&%$%.$%%%$%$.$$%%%%%$-!!!!!))!)%%!),!!!!!!!>-,,>>>,->,># ", ! " #),>.-=>,,=-))))>))>)!,>!!>)))>))))))))!!!!!!!!))))))!!!!!)))!!!!!%#!>>)!!!!!!!!!!!!!!!!!)),--)>!!)>,!>>)!!!!!!!)-),,,,>--,,>>))!!!!!)!!!!)=-=>>>,>>>=,>>>>>--%%@%-$->-,,>>>->->>>->-,->>>,->>>>-,>->-,>>-,-,>>>>>--,-,,>,--,-,>-,->->-,>>-,>>>>>-->>>>>-$-=--=-)=,!!!!!!!!!!!!!!!!!!!!-$,>>,>,>-,>>>>>-->-,>>,-,-,->>,->>-,>>>->>>>-,->->>>>,-,-,->>-%-=!!!!))!!%%!!,!!!!!!!>-,,,>>,--),# ", ! " #),>#%=>%=>,$))-=%)--!$----%!-#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)%$!,--!!!!!!!!!!!!!!!!!))=---%)!)>%,)%,!!!!!!))-),,,>>->))>>)!!!!!)))!!)-=>,!!!))!!,)!)!)!))%%%%%-)!!)!)!!,!!!!!!))!!!)!!,)!!!!!!)!!!!)!)))!!!!!))!!!)!!)!!!!)!))!!!!!!))!)!!!!)!!!!!!!$!!!!)!!!!!!!!!!!!!!!!!!!!!!!!-=!)!)!!))!)!)!!)!!!)!)!))!!!!)!,!!!!)!))!!)!!!,!!!!)!!,!!!!!!!)---!!!))!!%$!!,!!!!!!!>-),,,,>->,># ", ! " #),>.%%%--%$>))-#>)->)%,=#)$,-%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%#!)->!!!!!!!!!!!!!!!!!))-%$)%,!!>=))%)!!!!!!!)-,),>,>->,,>>)!!!!!!))!!%->),!!!!!!!,!!!!!!))!!!)!!,!!!!!!!,!!!!!!))!!!!!!))!!!!!)))!!!!!!,!!!!!!))!!!!!!))!!!!!!,!!!!!!))!!!!!!))!!!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%>)!!!!!))!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!=-=!!))!!%%!!))!!!!!!>-),>>>>--,,# ", ! " #),>.$-,%=>--!!%,$!--)&>-%,%>%#>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%#!=>!!!!!!!!!!!!!!!!!!))=>>%%)!>-)!%)!!!!!!!))-,,,,,>--),,-,,,,,,)>),,,>,)>,,,,,,,,,,,,,),,,,,),),,),),,,),,,,,),,,,),,)>,,),,,,,,,,,,,)>,,,,,),,,,,,,)>),,,,,)>,,),,,)>),,),,>),,,,,)>,),,,,,>),,,),,,,,,,,)>,,,,,),>,,),),)>,,,,,,>),,,)),,,,,,,,)>,),,),)>,,,,,,,,),,,,)>),,,,,)>,)##,,>),,#$,)>),,,,,,>-,),,,>->,># ", ! " #))>.-&%>>,)-)!,->)==)>=))%,!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%$!=%>!!!!!!!!!!!!!!!!!))>=%)-%=-%-)%%)!!!!!!!)>,,,,,>--),>>))!!!!!,)!!!!!!))!!!!!!))!!!!!-$%$%$%$%%%$%%$%$%%%$%$%%%$%$%$$)!)!!!!)!!!!!!!)!!!!!)))!!!!!!,!!!!!!!))!)!!!)))!!)!!))!!!!!!)!!!!!!),!!!)!!))!!!!!!,!!!!!!))!)!))!))!!!!!!))!!!))!,)!!!!!!,)!!!!)))!!!!!!,))!!!!)))!!!!!),!!%%!!)))!%$)!,!!!!!!!>-,),,>,--),# ", ! " #))>.>))))!!!!!))!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%#)!!!!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!))-),,>>,->))>>)!!!!!))!!!)!!),!!!!!!!,%%%$$$->!!!!!!!!!!!!!!!)!!!!!!!!!!!!!$!.$%$$=,!!!!!!),!!!!!)))!!!!!))!!!!!!!,!!!!!!))!!!!!))!!!!!!))!!!!!!!)!!!!)!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!!,!!!!!!))!!!!!!!,!!%$!!))!)&%!))!!!!!!)>-),,,>>->,># ", ! " #),>.>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%)!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>--,,>>)!!!!!!,)!!!!!!)!!!!!!!$#$++.$#&%--)----)>%-$%)>%>%>-%--%!!!!.%=@@@%#$%$%$%$$$$%$%%%&$$%&%&$$$$%$%$$$%%$%$%$$%%$%$&$$%$%$%%$%$%&%%$&$&%%%$&$%%$=$%$%%%$%$%$%$%%%%%$%$%$%&$%$%$%%&#%%$%$&%$)!!!!!))!!!!!!)!!!!!!!))!!!!!!))!%%!!))!!%%!!))!!!!!!>-),,,,>--,,# ", ! " #))>.#%#%#%$$$#%$#$$$%#%$$$#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%#$#$.#!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!))-),,,>,%>))>>)!!!!!!))!!!!!!,!!!!!!,#%#+++%#%--%)=)=)),%--%))--%-,#>$%)!!).#-@;*%%.%%%%%$..%%%%%%#$%%%%%%.%%%%%&%.%%%%%%$#%&%%%%#%%%%%%%.%%%%%%%#%%%%%%#$$%%%%%.%&%%%%%.%%%%%%$#%%&%%%#$%%%%%%.%%%%%%%$&)!!!!))!!!!!),!!!!!!))!!!!!!))!!%$!!))!!%%!),!!!!!!!>-,>,>>>->,># ", ! " #))>-#%%$%%#%%%%#%%%#%%%#%%%%#%%%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%%%#%-,,,,),),),),),),),,,,)>,,,,,,,,,),,,,),,),,,,>,),,,>>-,,>>,!!!!!!)!!!!!!!))!!!!!!,%-%%%$>--)---,=)))->,)))-)=)-)-!,!!!!#)%%%%%-)!!!!-..)!!!!!!))!!)!!!)!!!!!!!)!!!!!!!)!!!!!!,)!!!!!!))!!)!)),)!!!!!))!!))!!)!!!!!!!)!!!!)!))!!!!!!))!!!!!!)!!!!!!)--%)!!!)))!!!!!))!!!!!!,!!!)!!!,!!%%!!))!!%%!!,!!!!!!!>-->------),# ", ! " #))>!!!)))!!))!!!!)!!))!!)))!)))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!,!!!!))!)))!)))!))!!!)))!!!!!!!!!!!!!)!!)!!!),-,,,,>,%>))>>)!!!!!))!!!!!!))!!!!!!),>%---=-=))),),,)>,))>,,,),),),)>)>>)>$)-%%--),!!!-.#),!!!!!!))!!!!!!,!!!!!!!,!!!!!!),!!!!!!)!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,,>%)!!))!!!!!!,!!!!!!))!!!!!!),!!%$!!))!)%$!!,!!!!!!)>->->-->->,># ", ! " #),>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-),,,,>>-,,>>))))))))))))))),))))))),)))))),%=%==%=%=%=%=&=%===%=%=%=--%-%-))!))))>))>..)),)))))))))))))),))))))),))))))),)))))),))))))),))))))),))))))),)))))),))))))),))))))),)))))),))))))),)))))))>)>-$)))))))))))))))))))))))))))))%$))))))$%))))))))))>->>>>>>--,,# ", ! " #),>!)>>))>>)!!,>!!>,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!>)!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!))-,,,,>,%>)),=)))))),,)))))))>)))))))>)))))),-**+***-**-*****-***-**-**-***,),))))))),$#,))>)))))),,)))))),))))))),)))))))>))))))>)))))))>)))))))>)))))),,))))))>)))))))>)))))))>)))))))))))))),))))))),))$#)),,))))))>)))))))>)))))))>))#$)),)))#$))>)))))))>-->->>>->,># ", ! " #))>!-%-%%>-%!!,%>,%%,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!--)!!!!!!!!!!!!!!!!!))!!!!!!!!)!!!!!!!!!!!!)>,),,,>>-,,>>))!!!!!)))!!!!!,!!!!!!!)>----,-->,,>>>>>>>>>>>>->>>>>>->->>->#)--=-=),)=->)!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!)!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!)))%%!!))!!)!!!))!!!!!)))!!!!!!,!!%%)!))!!%%)!,!!!!!!!>>>>>>>>->,,# ", ! " #!,>!-$%-%-=-!!)%,)%$)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)))$%-!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!),-,,,,,>->))>>)!!!)!)))!!!!!!))!!!!!!,&-&%&$-->),)>,>,,,>>>>,>,>,),),),))))$!$%$%%=>=->!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!)!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!)!))!!!!!!,!!!!!)!,!!%$!!))!!!!!),!!!!!!!,!!!!!!))!!%%!)))!)%%!!,!!!!!!)>->>>>>>->,># ", ! " #),>!--)=%-%-!!!--=-%,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))%)$!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-),,>,>--,,>>)!!!!!!)!!!!!!!))!!!!!!#$%*;@%#%=--)>>->,,&-$->$%>-)!!!!))))!.%-@;*%$#->)!!!!,!!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!,!!!!!!!))!!!!!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!!!!!,!!%%!!))!!!!!!))!!!!!!,!!!!!!!,!!%%!!))!!%%)!,!!!!!!!>-->>->>->,,# ", ! " #!)>!,&%,-))-!!-=))--)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!)%>!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!),>),,,>>->))>>)!!!!!!,)!!!!!))!!!!!),%##**#%#%%-&>&>>>,>-%-->-%--!!!!!!!!!!.%#@;@%%#>!!!!!!,!!!!!!))!!!!!!,!!!!!)!,!!!!!!!)!!!!!))!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!!!)!,!!!!!!!,!!%$!!))!!!!!))!!!!!!!,!!!!!!),!)%%!!))!)%%!!,!!!!!!),-->>>>>->,># ", ! " #),>!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!)!!!!!)))!!!!!!!!!!!!!!)!!!!!!)-,,,,,,--,,>>))!!!!!)!!!!!!!,!!!!!!!,%%#%%#>>))),)),))),),)))))!!!!!!!!!!!#!###$#->!!!!!!!,!!!!!!))!!!!!!))!!!!!!,!!!!!!)))!!!!!)))!!!!!,!!!!!!!)!!!!!!))!!!!!!))!!!!!!))!!!!!!,!!!!!!)!!!!!!!,!!!!!!!))!%%!!))!!!!!!,!!)!!!!))!!!!!!)!!%%)!))!!%%!!,!!!!!!!>->>->>>--,,# ", ! " #))>!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!,!!!!!!!!!!!!!!!!!!!!!)!!!!)!!!!)!!!!!!!!!!!),>),,,>>->))>>)!!!!!)))!!!!!!,!!!!!!!,!),),,-&%%-%&-%-%%-&-%%%-%%%%%%%%%%%%#))))))),!!!!!!))!!!!!!))!!!!)!,!!!!!!!,!!!!!)!)!!!!!))!!!!!!!,!!!!!)!,!!!!!!))!!!!!),!!!!!!),!!!!!!))!!!!!)))!!!!!!,!!!!!!!,!!%%!!))!!!!!!)!!!!!)!,!!!!!!),!)%%!!))!)%$!!,!!!!!!)>>->>>>>->)># ", ! " #),>)!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!)!!!!)!!!!)!!!!)!!!!)!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,>>--,,>>>),,)))>),,),,)>,,,),,,>,,,,))>*'>'>'-'>'>'>'>'>'*>'*'>'*,'*',>,,),))>),,,),,,,,,),,)>),)),)>),,,),)>),,),),>,,,),,,,,),),,,,),),,)>,,),,,,,,,),))>),),)))>),,),),>),,),),>,),),)>),,,),)>,)$#,,)>),,),,>),,,,),,,,,,)),>),##,,,,,,#$,,,,,),,,,>->>>->>->,,# ", ! " #!)>),,),,,,,,,,,,),,,),,),),),,),)),),),,),)),),),,),),,),,),,),,)>,,,),),),),,,,),,,),,>),,,,),,,),,,),,,,,,,,>>),,,,>->))>>)!!!)))))))!!)!)!!)!!!),!!!!!))),),,),>,,,,,,,>))!!))))))!))!,!!!!!!),!!!!!!),!!)!!))&++++$%=!!!!)!))!!)!!))$%$%$%$$%$$$%$$$$$$$%$$%$$%$%%&))!))!))!)!)))!,!!)!!)))!!)!!))!!)!)!))!!!!)!)))--%!)))!!)!!!,!!!!!!))!!!!!!))!!%%!)))!!%$!))!)!!!!!>-->>>>>--,># ", ! " #))>)!!!!!!!!!!!!!!!!!)!!))!)!!!)!)!)!)!!!)!)!)!)!!!)!!!!)!)!!!!!!)))!!)))!))!!!!!)!!!!!!))!!!!!!!!!!!!!!!!!!!!!,-,,,,,>--,,>>))!!!!!)!!!!!!!,)!!!!!!)!!!!!!)))!!!!!,!!!!!!!))!!!!!))!!!!!!,)!!!!!!))!!!!!!)=%$%$-)=++++#%#!!!!!!!,)!!!!!)-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$)!!!!!!,!!!!!!!)>&$$%&),)!!!!!))!!!!!!,)!!!!!!)--=)!!))!!!!!)))!!!!!!,)!!)!!!,!!%%!!))!!%%!!,!!!!!!!,->>>>>>->,,# ", ! " #),>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!,!!!!!!!!!!!!!!!!!)!!)))!!!!!!!!!!!!!!!!!!!!))-),,,,>->))>>)!!!!!))!!!!!!))!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!)!!!!!!)>)))))))>%-%%%%>-$$#$,)>)))))))>))))))>$-->!>)->!!!!!!!!!!!!!!!!!!!!)%>))))))>)),))),,%-%%$$)>))))))>,))))))>)))))))=-%!!!!))!!!!!!)!!!!!!))!!!!!!),!)%%!!))!)%%!))!!!!!!!>->>->>>->,># ", ! " #),>)),))))!))),)!!!),)),)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!,)!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)>,,,>,,--),>>)!!!!!!,)!!!!!!)!!!!!!!))!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!!!)=.$$$$$$$.%%;;@-##%%%%$%.$$$$$&$.$%$$$$$%%--)>,)>,!!!!!!!!!!!!!!!!!!!!##%#$$$$.$%$%$$&.%%;;@>$.$$$$$$#........$$$$$$$$%!!!!!))!!!!!))!!!!!!!)!!!!!!!)!!%%!!))!!%%!!,)!!!!!!>-->->>>->,,# ", ! " #!)>!-$=,%$)=%%=%=!!#-=>-#)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!--%!!!!!!!!!!!!!!!!!))!!!!!!!!!)!!!!!!!!!!),-),,>,>%>),>>)!!!!!!,!!!!!!),!!!!!!))!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!!)>-%---%-=-%#%@@#$%-%-%-%-%----%--%-%--%-=%%-=-=-%,,!!!!!!!!!!!!!!!!!!!)#=----=-%-%-=-%-%#%@@@%-%----=%%.#%%%%=%-%--%---)!!!!!))!!!!!),!!!!!!),!!!!!!),!)%$!!))!!%$)!)!!!!!!!>>>>,->>--,># ", ! " #))>!-%%)%$)%%%))$!!#%>)>-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!-$-!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,,->,,>>))!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!)!)!!!!=-=)))!!!!!,%%%%%%,)!!!!!!,))!!!)!,!!)!!!)%!!!!!!)!!!!!!!!!!!!!!!!!!!!!!$,)!)!)!,!!)!!!!,-%%%$#!))))!!!),-%!!!!)!!!!!!)))!!!!!))!!!!!!))!!!!!!))!!!!!!)!!%%!!))!!%%!!,!!!!!!!>-->>>->>>,,# ", ! " #))>!--!!--#--%),%!!%!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!,!%>$!!!!!!!!!!!!!!!!!))!!!!)!!!!!!!)!!!!!!!),>),,>,>--))>>)!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!!))!!=--!,!!!!!!!)!!!!!!))!!!!!!,!!!!!!!,!!!!!!)#%%%%%%%$%$%%%%%%%%%%%%%%%%%%%%)!!!!!!,!!!!!!!)!!!!!!),!!!!!!)),--,!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!)%%!!))!)%%!!,!!!!!!!>->>>>>>->,># ", ! " #),>!,$=--)=)-=%%)!!%!!>-!!!!!!!!!!!!!)!!!!!!!!!!!)!!!!!!!!!!!!!!!!)!---!!!!)!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>->,)>>>),,),)>),),),)>),,)),)>),,,,,)>),,,),>),,,,),>),,,,),>),,),,,,)-#&),>,,,,,,,>,,,,,,)>,,,,),>,,,,,,,>),,,,),,,,,,,),),,),),,,),,,),),,,,,,,>,,,,,,>,,,,,,,>,,,,,,,,,,,,,,,,,=.#,,>),,,,,)>),,,,,,,,),),,,,,),),)>),,),,,>),##,,,,,)##),>,),,))>>->>>>>>->>,# ", ! " #))>!!!!)!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!,!!)!!!!!!!!!)!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))-),,>,>--),>>)!!!)!))!)!))!)))!)))!),!!!!!)))!!!)!))!!!!)!))!!!!!!))!!)!!),),--))!,!!!!!!!)!!!!!!))!!!!!))!!!!!!!,!!!!)))#$%$%%$&%%%$%$%$%$%$%$%$%%%%$%$)!!!!!!)!!!!!!!)!!!!!!))!!!!!!))!!%.$))!!!!!!),!!!!!)))))))!))!)!)!)!,!!!)!!),!!%%!)))!!%$!!)!!))!!!>-->>>>>->,># ", ! " #),>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!)!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)>,,,,>>->,,>>))!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!))))!!!!!)>&=,!!!,>$%%$#),!!!!!!))!!!!!!,!!!!!!!)!!!!!!,-!!!!!!)!!!!!!!!!!!!!!!!)!)!!)$)!!!!!!)!!!!!!!))!!!!!))$%$%&$))!!!%.$,)!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!!))!%%!!))!!%%!!))!!!!!!>->->>->->,,# ", ! " #!)>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!)!!!!!!!!!!!!!!),>,),,,>--))>>)!!!!!))!!!!!!))!!!!!)!,!!!!!!))!!!!!!,!!!!!!),!!!!!!))!!!!!!%##%-%--%$%@@@%%%-=-%-=-%%-=-=-%=-%-==%%-%--%-%%%--!-)->)!!!!!!!!!!!!!!!!!!!!#%-%-=-=%%-=%-==%-%-=-=-%$%@@#%%%--%%..#)!!!!!!,!!!!!!))!!!!!))!!!!!!))!!!!!!))!)%%!!))!!%$!),!!!!!!!>->>>>>>->,># ", ! " #))>,,),,)),),,),,),)),,),,),)),)),)),,)),)),),,),,),)),,),,),,))),>),),,),,),,),,),))),,),)),),)),,),))),),)),),-,,,,>>>-),>>)!!!!!!,)!!!!!!)!!!!!!!))!!!!!))!!!!!!))!!!!!!)!!!!!!))!!!!!-%........%%*;;&$.$%&$%%##%%#%#%.%%$%$%%.$%$%$&#%%-=!>,>-)!!!!!!!!!!!!!!!!!!!!##$%#%$%.$%%$%#$.$%#%#$$#%@;;@=##$$%%$..%))!!!!))!!!!!))!!!!!!,)!!!!!!))!!!!!!,!!%%)!))!!%%!!))!!!!!!>>->>>>>->>,# ", ! " #),>!!)!!))!)!!)!!)!!)!!)!!)!))))))!)!))!)))!)!!)!!))!)!!)!!)!))))))!)!!!)!!)!!)!!))))!)),)!)!)!!)!!))))!)))!))),>,),,,,%>),>>)!!!!!!))!!!!!!,!!!!!!!,!!!!!!))!!!!!))!!!!!!),!!!!!!))!!!!%-%,,,,,,)>--%%$%)>,,,,,),,))))))>))),,)),)),),))%--->=,=,,!!!!!!!!!!!!!!!!!!!)$,))),),,),))))),))!))),>%-%%-%,)),),,,-%=)!)!!,!!!!!!))!!!!!))!!!!!!!,!!!!!!),!)%%!!))!!$%)!,!!!!!!)>->>->>>->)># ", ! " #),>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,>,->,,>>))!!!!!)!!!!!!!)!!!!!!!,!!!!!!))!!!!!!)!!!!!!!))!!!!!))!!!---,!!)!!!!,,$%%%%))!!!!!!))!!!!!!,!!!!!!)))!!!!!,=!!)!)!!!!!!!!!!!!!!!!!!!!!!!!$)!!!!!!,!!!!!!!,!!!!!!!)-%%%%-,)!!!!!!))%-,!!!))!!!!!))!!!!!!,!!!!!!!)!!!!!!!)!!%%!!))!!%%!!,!!!!!!!>-->>->>->,,# ", ! " #!)>!!))!!!!!!!)!!!!!!)!!)!!!)!)>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!),!!)!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!!))-),>>,>->))=>)!!!!!)))!!!!)))!!!!!!!,!!!!!)))!!!!)),!!!!!!),!!!!!!))!)-==!,)!!!!!!,!!))!!!,!!!!)!))!!!!!),)!!!!!),!!!!!))$%%%%%%%%%%$%%%%%%%%%%%%%%%%%%%)!!!!!),!!!!!!!,!!!!!!),!!!!))))!)!!)!,!,-&))!,!!!!!!))!!!!!!)!!!!!!),!!!!!!),!)%%!!))!!%$!!)!!!!!!,>>->>>>>--,># ", ! " #))>!-$--%%)%%%%$-!!#=-=%#)!%%->%!))!!))-))!)!!)))!!)!,=-!!!!))!!!!))-$#!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,>>,>--))>>>),),),),),))))=),),)),,,),,),)>),))))>),,),),,,,),,),>)=%%,)>),,,,))>,,,,,,,>),)),),,,,),,),,),,),,,,),,),,-,>>>>>>>>,>>>>>>>>>>>>>>>>>>,>,,,),,)>),,,,,)>),,),),>,,,,),),,),)),>),=.#,)>),,,,,)>,,,)),>,),))),,,),,)),>))..,,),,-.#,)>,,,,,),>->>->>>->,,# ", ! " #),>!-$=)%$)%%%))$!)$%-!,-!!$%-)$-%%)$=-$$--%%-%$%>=%%>%$->-=%%)!!),!!->!!!!!!!!!!!!!!!!!))!!!)!!!!!!!!!!!!!!!!))-),,,>>->,,,>))!)!)))))!))!!)!)))!))))!)!!)))!)!))),!!!)!!))!)!!)!),,--))!,))))),),!!!!!!)))!)!))))!)!)!!,)!!)!!)))!!!!!)#=%==%=%%=%==%=%==%=%==%=%=%=%$)!)!!!),!!!!!!),)!)!)!))!!!!!)))),),)))!))#.$!,!!!!!!))!!)!))))!)))))))!!)!!),!)#.)))!=%.%)))!!!!!!)>-->>>>>--,># ", ! " #!)>)--)!%>$-=%))%!!%!!!$!!!%)!)%=%>,%!,%$)%)%->%>-%)$,%%,$-%%-)!!!)!)%!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>--,,>>)!!!!!!))!!!!!!,)!!!!!!))!!!!!))!!!!!!))!!!!!!)!!!!!!)-=%))!!))#&#$&%)!!!!!!!,!!!!!!))!!!!!!)!!!!!!!,!!!!!!)%)))))!)!))))!)))))!)!)!!)!!!)$,!!!!!!)!!!!!!!))!!!!!!,!!!!!!))$#&#&%)!!!!$.#)!!!!!!))!!!!!!))!!!!!)))!!!!!!,!!#.!!)--=.$!!))!!!!!!,>>>->->>>,,# ", ! " #),>!,%%--)&)-=%%>!!%)!>-!!!%=->=,%-)%%,%%!-==->&,-,%=)%%!$,)%-)!!!,!--!!!!!!!!!!!!!!!!!)))!!!!!)!!!!!!!!!!!!!!))>,,,,>,->))>>)!!!!!)))!!!!!!)!!!!!!=#%%$%%$$$%%%%$&#%$%$%$$#$$%%%$%...####.%$@;*%##%%%%%$%#$%$%$%$$%%$%$&#%%%$%%$$%$&%&%$%$--!-,%),)-->>%%--!!!!!!!!!!!#$%$%%%$#$%$%$%&#%%%%$%%$%%$%$&#$$@;*%##%%%$$..#$%$%&%$$)!!!)!,!!!!!!))!!!!!!),!!#.!)$--,.%!!,!!!!!!)>->>>>>>->,># ", ! " #),>!!!!!!!!!))!!!!!!!!!!!!!!))!)!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!,!!!!!!)!!)!!!!)!!!!!!))!!!!!!!!!)!!!!!!!!!!!)-),,,,>--,,>>))!!!!!))!!!!!!,!!!!!--#%%%%%%$#%%%%%%#%%%%%&%..#%%%%&........%%@*;$$#%%%%%&%#%%%%%%#%%%%%%%#%%%%%%%#%%%%%%#%%=%)=-%>)!%>,%=%>=!!!!!!!!!!!##%%%%%%#%%%%%%%#%%%%%&%#%%%%%%#%-@**$$#%%%%%%.#%%%%%%$--)!!!!)!!!!!!!))!!!!!!)!!#.)-%&)).$!!))!!!!!!>->>>>>>->,,# ", ! " #!)>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!),>),,,>>->),>>)!!!!!!,!!!!!!!,!!!!=--,!!!!!!)!!)!!!!,!!!!!))-..,!!!),!!!!!!))####%-,)!!!!!!)!!!!!!))!!!!!!,!!!!!!!))!!)!!)%>,>)>))!)!))),)),,!!!!!!!!!!!$!!!!!!!,!!!!!!!,!!!)))!,!!!!!!,,##$$%=,!)!)!)),!!!!!!,-=-)!!),!!!!!!))!!!!!!),!!..=--)!).$)!,!!!!!!!>-->>>>>--,># ", ! " #))>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!)!!!!!)-,,,,,>->,)>>)!!!!!!))!!!!!!))!!->=!,!!!!!!,)!!!!!!,!!!!!!!,,..,!!))!!!!!!))>-,->),!!!!!!!,!!!!!!))!!!!!!)!!!!!!!,!!!!!!)&----=----=-=---=-------------#)!!!!!!,!!!!!!!,!!!!!!))!!!!!!))>->->),!!!!!!!,!!!!!!))--=)!!,!!!!!!!,!!!!!!!,!!#.->))!!.%!!))!!!!!!,-->->>>->,,# ", ! " #),>)))))))))))))))))))))))))))))),))))))))))))))))))))))))))))))))>))))))))))))))))))))),,))))))))))))))))))),)>>),,>,>=>),>>,))))))>)))))))>))-%=,)>)))))),,))))))>)))))))>)>..))),))))),,)))))))>)),))))>)),))),,),))))>))),)))>))))))>->=-->=>=>->->=>-->=>=>=>=>=---,))))))>)))))))>))))))),,))))),)))))),,,))))))>,))))),))-%%))>)))))))>)))))))>))..=,,))>.$))>))))),,>>>>->>>->,># ", ! " #))>))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))),)))))))))))))))))))))))))))))))))))))))))))))-,,,,,>--,,>>))))))))))))))))))%#,)),)))))))))))))),'''''''>),$#,)),)))))))))))))))))))))),)))))))))))))),)))))))%-%-%-=%=--===-=--&-&-=-=-%--%-,!!!!!))))))))),)))))))))))))))))))))),)!))))),))))))))))))))))))$%)))))))))))))))))),)-..,),)))#%)),)))))!,,->>>>->->,,# ", ! " #))>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!)),>),,,>>->),>>)!!!!!)))!!!!)!,!!-$)!!)!!!!!!))!!!!!!>''''''',!!%%!!))!!!!!!))-==%=),!!!!!!!,!!!!!!))!!!!!),!!!!!!)&,,,>)>,,>))>,>,,,,,,,>,,),,,)$>!!!!!!))!!!!!!)!!!!!!!,!!!!!!),!!!!!)))=-=%=,,!!!!!!!,!!!!!!))!)%&!))!!!!!!)))!!!!!!)--..!!))!!%$!!,!!!!!))>->>>>>>--,># ", ! " #))>)!!!!!!!!!))!!!!!!!!!!!!!>!!))!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!)!!!!!!!!!!)-,,,,,>->,)>=)!!!!!!))!)!!!!))!-$,!!,!!!!!!))!!!!!!,'''''''>!!%%!!)))!!!!!))&$$%-%)!!!!!!!,!!!!!!))!!!!!!)!!!!!!!%-=))))->))!!!!)!)!))!!)))!!)!&,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!)!!!!!!))$%$%-%,!!!!!!!))!!!!!))!!%%)!,)!!!!!!))!!!!!)=-%..!!))!!%%!!))!!!!!!>-->>>>>->,,# ", ! " #!,>!>$%%!!!!-,=!!!!!)$%=!!!!%!!-,!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!)!>$))%$,!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!)),>),,,,>--))>,)!!!!!!))!!!!!!,!!-$)!))!!!!!,#$%$%$%%.........%%%%%%#.#%%$$$#%-@;*%%.%%%%%%%#%%%%%$#$%%%%%$#%%%%%%%$&%=))=--)!!!!!)!!!!!!!!!!!!!!%.%%%%%%$#%$%%$%#$%$%$%$#%$%%$%$#%$%%%%#$-@;;$$.........>!!!!!))!)%%!))!!!!!!!,!!!!!!%%%!#.!!))!)%$!!,!!!!!!!>->>>>>>->)># ", ! " #))>)--)%)$%)$,#%-$%%=>!)!$%>$)%$>!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!,!!$))$%!!!!!!)!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,>,>->,,>>,!!!!!!)!!!!!!!))!-$)!!,)!!!,-%%%%%%%$#..*****.%%..%%%..#%%%%#%%@@@%#$%%%%%$%#%%%%%%$%%%%%%%#%%%%%%%$%%-->%)=))!!!!!!!!!!!!!!!!!!!%$%&%%%$%%%%%%%%$%%%%%%%$%%%%%%%$%%%%%$%%%@@@%##%$%$%..#=-!!!!))!!%%!!,!!!!!!!))!!!!%>&!!#.!!))!!%%!!)!!!!!!!>->->->>->>,# ", ! " #))>!-$$,>$->&>->-%)%%>)#,&,-%--->!!!)!!!)!!!)!!!!!!!!!!!!!!!!!!!!!,!!%),-$,!!!!!!!!!!!!)))!!!)!!!!!!!!!!!!!!!!),>),,,,>->),>>)!)!!!!,)!!!!!!,!)-$)!))!!!,-=>)!!!!!!>*-+'''',!!%%!))>..,!!!),#%%%$-,!)!!!!!)!!!!!!)))!!!!!))!!)!!!%!!)!!!)!!!!!!!!!!!!!!!!!!!!!!%>!)!!!!))!!!!)!,!!!!!)!,!!!!!!))!!!)!!,,.%%%#-,!)!)%--)%->!!!))!)%$!))!!!!!)!,!!!)%->)!!#.!!))!!%$!!,!!!!!!!>->>>>>>->,># ", ! " #))>!>-)&,%%,%,=>=-)=,%%%)%$,&)$$>!!!!!!!!!!!!!!)!!!)!!!!!!!!!!!!!!)!>#-,&%))!!!!!!!)!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,>,--,,>>)!!!!)!)!!!!!!!,!!-$,!!,!!,&-,))!!!!!!,'*--'''>!!%%!!),,..,!!))!)!)!!,!!!!!!!,!!!!!!))!!!!!!,!!!!!)!#%%%%%%%%%%%%%%%%%%%%%%%$%%%%%#,!!!!!!))!!!!!!,!!!!!!!,!!!!!!!,)!!!!!))!!!!!!,)!)---!)!%-=!!))!!%%!!,)!!!!!!)!!)=--),!)#.)!))!!%%!!,!!!!!!!>->>>>>>->,,# ", ! " #),>)!!))!!))!)!!))!!!!)!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!,!!!!!!)!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))-),,,>>->))>>>,),),)>,),,,),>),-->,)>,,-,-,>,,,,,,,>>'%.*-',,,&.,,),,>..,,>,,,,,,)>,,,,,,,>,,,,,,>,,,,,,,,,,,,,,,>,),,,),,,,,,,,,,,,),),),),,,,,,,,,,,,,,,,,,,)>,,,,,,,>,,,,,,,,,,,,,,>,,,,,,,>,)%$=,,>),%#,,)>,,#$,)>),,,),,>,,%#=,)>,,#.,,>,,,#$,,,,,,,,,,>->>>->>->,># ", ! " #!)>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-),,>,,--,,>>)!)!!!!,))!!!)!))!!!)!!,!!)!!!))!!!!!!>,)>%-,),)!%%!!)))!--=),)!!!!!!)!!!!!!!,!!!!!!))!!!!!!,!!!!!!!%%%$%&$%%%$%%$%%%$%%$%%%%%$%&$$>!!!!!!))!!!!!!,!!!!!!!,!!!!!!!,!!!!!!))!!!!!!,!,--,!!,!!%%!!))!!%%)!,!!)!!!!))-..)!)))!%%!!))!!%%)!,)!!!!!!>->->>>>->>,# ", ! " #))>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!),!!!!!!!!!!!!!!!!!!!!)))!!!!)!!!!!!)!!!!!!!!),>),,,,>->))>>)!!!!!))!!!!!!!,!!!!!!!)!!!!!!))!!!!!!,))>%-!!,!!%$!!))!!!---,!!!!!!),,$$%%$),!!!!!!))!!!!!!,!!!!!!!%!!!)!!)!!!!!!!!!!)!!!)!)!!)!!=,!!!!!!))!!!!!!,!!!!!!!)!!!!!!),-%%%%%,!!!!!!!,,%-)!!!)!)%$!!))!)%&!))!!!!!!!)-..%)!!)!!%%!!))!)%&!))!!!!!!)>-->>>>>--)># ", ! " #))>))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))),)))))))))))))))))))))))))))))))))))))))))))))-,,,>,>--,)>>))!!!!!,!!!!!!!))!!!!!!,)!!!!!))!!!!!!,!!>%-!!,!!%%!!))!!!!--%-,>->=,=%-%@$%-=-,>>>--=>>>>=>=-,>>>->$-%>))>->)!>,->-----,!!!!!!!!!%-->>>>=-=>>>>=,--,-,->=->>>>>>=-&%@%%$-->-,=,-=-=,!!!!,!!%$!!))!!%%!!))!!!!!)&.#$$)!),!!%%!!))!!%%!!)!!!!!!!>>>->>>>->,,# ", ! " #),>)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))>))))))))))))))))))))),))))))))))))))))))))))>>),,,,>->),>>)!!!!!!))!!!!!))!!!!!!!,!!!!!!))!!!!!!,!),%-!!,!!%$!!))!!!!!-#.#&%%$$##%;;*-%.%#$&%%##%$&%$%.$%$$$%$$%%-))-%-),$-=%-=>.)-!!!!!!!!!%.$$$%%&##&$$%$$.%$%$%$%.$&$&$&$.-@;;@%$$$%%$$..=)!!!!!,!!%%!!))!)%$!),!!!!!)&.#,-%)!!)!)%%!!))!!%%!),!!!!!!,>->>->>>->,># ", ! " #))>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!)))-,,,,>>--),>>)!!!!!!))!!!!!!)!!!!!!!)!!!!!!))!!!!!!,!!-&>!!)!!%%!!))!!!!!!-..-->>>=%%@@#&---,->-,--->>>>>->-,->>>%%--=--=-))>--,--=>-)!!!!!!!!!%=>>->>>-->>>>>>-->-,>>-->->->>>-#%@%%$-->-,-..#,!!!!!!)!!%%!!))!!%%!!)!!!!)--%)!%$)!),!!%$!!))!!%%!!)!!!!!!!>>->>>->->,,# ", ! " #))>!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!!),>),,,>,->),>>)!!!!!))!!!!!!),!!!!!!),!!!!!!))!!!!!!,!)>$-!!,!!%%!!))!!!!!),,..,!!!),$&%%$))!!!!!!!)!!)!)!,)!!!!)!%!!!!!!!!!!!!!!!!!!)!!!!!!!!!!%>!)!)!!))!))!!!)!!!)!!!)))!!!)))=-%%%%)!!!!#.-)!!)!!!),!!%%!!))!!%$!!,!!!)=--)!)-%)!!)!)%%!!))!)%$!!,!!!!!!!>-->->>>->,># ", ! " #),>)>-!!!!!!!%!!!!!-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!>%))%%!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>--,,>>))!!!!!))!!!!!!)!!!!!!!))!!!!!))!!!!!!,!!>%-!!,!!%%!!))!!!!!!)),..,!!,!!)!!!!,!!!!!!))!!!!!!)!!!!!!!%%%%%%%%%%%%%$%%%%%%%%%%%%%%%%$,!!!!!!))!!!!!!,!!!!!!!)!!!!!!))!!!!!!))!!$.%),!!!!!!!,!!%%!!))!!%%!!,)!)%--!,!!=$)!),!!%%)!))!!%%!!,!!!!!!!>>>>>>>>->,,# ", ! " #))>!--!!%)%>-#->$>>%>-$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!%)->%,!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!),>),,>,>->))-,>,),,))>,),,),)>,),,,,,,,),,),>,,,,,),>,,)>),)>,,>>,,)>,,,,,,>,,>.$))>,,,,,,,>,),,,)>),,,,),>,,,,,,,>,,,,,,,,,,),,,,,,,),,,,,,),,),,,,,,,,,,,,),,)>,,),,,,>,,,,,,,>,,,,,,>),-##),>,,,,,,)>,)##,,)>,,#$,,,,)>#%,,>,,%.>,)>,)##,,>,,).$,)>),,,,)>>->->>>>--,># ", ! " #),>!-=!)%!%%)$-%%%,%%,%)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!%!)=$>!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,),,>>->,)>>)!)!!)))))!!))!)))!!!!),)!!!!!))!!!!!!)!)!!)!!,!!!!!!))!!!!!!))!)--%!,!!!!!!!,!)!!!!))!!!!)!,!!!!!!!$$&%$%$%$%$%%%%%%&$%$%$%%$&%$%#>!!!!!!))!!)!!)))!)!!!!)!!!!!!),!!!!!!))>-%)!!,!!!!!!!,!!%%)!))!!%%)!,)=%$#-!,!-#%$>!,!!%%!!))!!%%)!,)!!!!!!>>->>>>>->,,# ", ! " #!)>!>%%)%%$-&#)#>$)&-%#!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!,#-)=%)!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))-),,,,>--,>>,)!!!!!))!!!!!!))!!!!!!!)!!!!!!))!!!!!))!!!!!!!,!!!!!!))!!!!!))!!!!--=)!!!!!!))%$%$$#))!!!!!!)!!!!!!)%!!!!!!!!!!!)!)!)!)!!!!!!!)!))=>!!!!!!))!!!!!!,!!!!!!))-$%%%#!)!!!!!!,,=%)!!!)!!!!!!),!!$%!!))!)%$!!)!%-&%%!,)&%%-&),!!%%!!))!!%%!))!!!!!!!>->>->>>--,># ", ! " #))>)!!!))!!!)!!!))!!>-%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,>,>->>>>=)!!!!!!,)!!!!!!))!!!!!!))!)!!!))!!!!!!,)!!!!!!))!!!!!)))!!!!!,)!!!!-=$%$%$%%$$#%@@@$$$%$%$%$$$%$%$%%$%%-)>--%,!!!!!!!!!!!!!!!!!!!!%$%$%$%%$$%%%$%$$%%%$$%$$#$@@@$%$%%$%&%$-%!!!!!))!!!!!!))!%%!!))!!%%!!,!%%;@&!)!%@;%%!,!!%%!!))!!%%!!))!!!!!!>-->>>>>->,,# ", ! " #),>!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!)!))!!!!!!!!!!!!!!!!!!!!),>),,>,>--,,>,)!!!!!!))!!!!!!,!!!!!!))!!!!!!))!!!)!!,!!)!!!))!!!!!!))!!!!!!)!!!!!!-.........%%;;@-##%%%%%%.%%%%%%%#%%-))-,>!!!!!!!!!!!!!!!!!!!!!%.%%%%%%$........%%%%%&%.%%;;@-##%%%%%%#$)!!!!))!!!!!!!,!!%%!!))!!%$!!,!%%;@%),!%@;%$))!)%%!!))!)%$!!,!!!!!!!,->>>>>>->)># ", ! " #),>!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!)!!!!)!!!!!!!)!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!)!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>-->>>>,!!!!!!)!!!!!!!)!!!!!!!))!!!!!))!!!!!!)!!!!!!!,!!!!)!))!!!!!!))!!!!!)-%%,,))),%-%%%$!!!!!!!!)!!!!!!!%--,=)-,))!!!!!!!!!!!!!!!!!!!!%,!!!!!!),))),%=%!!!!!!!,-%%#%%!)!!!!!!))!!!!!!,!!!!!!!)!!%%!!))!!%%!!))%%;.%!,!%@@%%!,!!%$!!))!!%%!!,!!!!!!!>-->->>>->>,# ", ! " #!)>)!))!))!))!))!)!))))!))!))!))!))!))!))!))!))!))!))!))!))!)!)))),)))!))!))!))!))!)!))),)))!))!))!))!))!))!))),>)),>,>->)>>>)!!!!!))!!!!!!)))!!!!!),!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!)!))!!!!!!),-=,!!!,>%%-=-))!!!!!!,!!!!!!!&,),,),,),,,,,,,,,,,,,,,,,>,))$,!!!!!!))!!)=->)!!!!!!),,--%%-),!!!!!!))!!!!!!,!!!!!!),!)%%!!))!!%$!),!%#-%$!,!#%-%%!)!)%%!!))!!%$!!,!!!!!!!>>>>>>>>->)># ", ! " #),,,)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))),)))))))))))))))))))))),))))))))))))))))))))),-,,,,>,--,>>>,))))))))))))))))))))))))))))))))))))),))))))),))))))),)))))))))))))),)>-%,)),)!)))))))))))),)))))))%%=%=%&=%=%%=%%=%%=%%=%%=%-%%-%>))))))))))%--),))))))),),)!))),)))))),))))))))))))))))))%#!)))))$%))))),#-)),))-%))),))%%!)))))%-))))))))))>->>>->>--,,# ", ! " #),>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!),!!!!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!)))-),,,,>->>>>>))))))),))))))),)))))))>))))))),)))))),)))))))>))))))))))))))>)))))))>))-$%)),)))))),,)))))),))))))!->=--------------------->-=>=--))))))),,)$.$))>))))))),))))))),)))))),)))))))>)))))))>))$#)),,))#$))>)),#%))----------->---------=-=-=----->-->>>->>>,># ", ! " #!)>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-),,>,>--,>>=)!!!!!)))!!!!)!,)!!!!!!))!!!)!))!!!!!)))!!!!!!,!!!!!))))!!!!!,!!!!!!!,!!)--=),!!!!!!))>-,=>,,!!!!!!!$->-=>=>=>=>>->=>>>=>>=>---->=$>!!!!!!))=..)!!,!->->=),)!!!!!)))!!!!!)))!!!!!))!)!!!!)!!%%!!))!!%%!!,!!,$-)!$--=>=>=>=-=>=>=>=>=>->->->->>%-->>>>>>--),# ", ! " #),>!>%%-!!!!=-)-=,)=-!!)$)!--!=%>!)=%!!!!!!)!!!!!!!!!!!!!!!!!!!!!!,!=%,)-=))!!!!!!!!!!!!))!!!!!)!!!)!!!!!!!!!!))-),,,,>->>,>,)!!!!!))))!!!!))!!!!!!!,!!!!!)))!!!!!!,!!!!!!!)!!!!!!))!!!!!!))!!!!!!,!!!!--=,!!!!!!))$&%$%$,!!!!!!!%>))!))))!!,,!)!,,),),,)))!!!!&,!!!!!!)%.#)!!!))$$&%$=,!!!!!)!)!!!!!!))!!!)!))!!!!!!!,!!%$!!))!!%$!!,!!,%-!!%)))!),!)!!!!!!!!!!)!!)!!!!!),->-->->>>->,># ", ! " #))>!-&-=--)!,%!)--=>$))!%)!)%!%)%!!,%!!!!!!!!)!!!!!!!!!!!!!!!!!!!!,!!-=--%)!!)!!!!!!!!!!))!!!!!!!!!!!)!!!)!!!!!)>,,,,,>--,>>>))!!!!!)!!!!!!!,!!!!!!!)!!!!!!))!!!!!!))!!!!!!,)!!!!!))!!!!!!)!!!!!!!,!!!!!--#&%%%%%$$%@;*%$#%$%%%%%$%%-))=%-,,-))=>-)&=,&-=--!!!!%..........#%%%$$%%@;*%%#>!!!!!))!!!!!!)!!!!!!!,!!!!!!!,!!%%!!))!!%%!!,!!,$-)!%&%-))=--,!!!!!!!!!!!!!!!!!!!!--->>>->>--,,# ", ! " #),>)>=--%,!!)%),-)=>%,!!&)),-!-%%!!)$)!!!!!!!!!!!)!!!)!!!!!!!!!!!!,!)-)--=>!!!!!)!!!!!!!)!!!!!!!!!!!!!!!!!!!!!),-),,>,>->,>>>)!!!!!!,)!!!!!))!)!!!!))!!!!!!))!!!!!))!!!!!)!,!!!!!!))!!!!!!,)!!!!!))!!!!!!-#%%%%%$#%$@*;%##%%%%%$%$%$=>,%-%))=>!%=----=-->&-!!!!%.####....$%%%%%#%$@;@%$$->!!!!!,!!!!!!))!!!!!))!!!!!!!,!)%%!!))!!%$!!,!!)$-!)%%=---=-%)!!!!!!!!!!!!!!!!!!),--->>>>>>->)># ", ! " #!)>!-%%-%)!!-$,$%)>%-)-,#-!=$,)%-,>-$)!!!!!!!!!!!!!!!!!!!!)!!!!!!!))$=,)&%)!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!!!)-),,,,>->>>>>)!!!!!!)!!!!!!!))!!!!!!,)!!!!!))!!!!!!,!!!!!!!)!!!!!!)))!!!!!)!!!!!!!,!!!!!!!,!!)!!!),#$##%%)!!!!!!!%)))))))))))))))))),,)))))!!!!%))!!)=--,!!)!)!,)###%#-,%->!!!!)!!!!!)))!!!!!!,)!!!!!!)!!%%!!))!!%%!!))!)$-!!%,,)),))))!!!!!!!!!!!!!!!!!!!!--->>>->>->>,# ", ! " #),>!),)))!!)),))))!))))!)))),!)!)))))!!!!!!!!!!!!!!!!!!!!!!!!!!!!),),))!))!!!!!!!!)!!!!!))!!!!!!!!!!!!!!!!!!!!),>),,,>>--,>>>)!!!!!!,)!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!)))!!!!!))!!!!!!,)!!!!!!,!!!!!!!,!!!!!!)))))))),!!!!!!!#%%=%%%=%%=%%=%%=%=%=%%-%%%%-%#>!!)%--))!!!!!!,!),,)))))=->!!),!!!!!!)!!!!!!))!!!!!)!,!)%%!!))!!%$!))!),%-!!#=%%%==%-%%%%=%%%%%%%%%%%%%%%%#--->>>>>->)># ", ! " #))>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!!)-,,,,,>--,>>>,,),),),,,),,),>,,),)),>,),),)),),,),,>),,),))>)),,),)>),,),),,),,),,,,,,),,)>,,,,,),,,,,,,,>,,,,,,)>,,>,,,,,,,,,,,>,>,>,,>,),,,>,-),)$%-))>,,,,,,>,),,,),,,,$.)),>),),,,>),,,),,>,),)),)>))$#,,,>,)#$),>),>%-,)>>)>,>>,,,,)>>),,),,),,),,),,>>>->>>>>>->,,# ", ! " #),>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!)!)!!!!!!!!!!!!!!!!!!!),>,,,,,>->,>>>)))!)!))!)!)!!!)!)!))!)))!!))))))!)!!))!!)!)!),!)!)!)))!!)!))))!!)!!),!!!!!!),!!!!!)))!)!)!!)!!!!!!),)!))))))))))!)))!)!))),)!)!)!!,!->%!)))!!!!!!))!!!!)),!!%$)!))))!!!)))!!!!!!))!)))!),))%%!)))!)%$)!=%$&%$%$%&%$%&%&$$%%%&%%$$%%%&%-)!)!!!)>->>>->>--,># ", ! " #!)>)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!!!)))!!!!!!!!!!!!!!!!!!!)))!!!!!!!!!!!!!!!!!!!!!)-),,,>>->,=,>)!!!!!!,!!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!)!!!!!!)))!!!!!))!!!!!!))!!!!!!,!!!!!!))!!!!!!)!!!!!!!)!!!!)!))!!!!)!))!!!!!!))!!!!!!,-=%!!!))!!!!!!)!!!!!!!,!#%-&$!)!!!!!!))!!!!!!))!!!!!!)!!%$!!))!!%%!!%!!!!!)!)))!))!!!!)!))!!!!!)!))&)!!!!!!>>->>>>>->,,# ", ! " #))>),,),,,,,,,,,,,,),,,,,,),),,,,,,),,,),,),,),,),),,),,),),),,,))>),,,,,,,),,),,,,,),,)>,,,),),),,),),,),,,,,,,-,>>>>>--,>>>)!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!!,!!!!!!))!!!!!!!>))))))),))))))>)))))))>)))))))>)))))),)))))))>)),))))=>%!!!!))!!!!!),!!!!!!!,!$.+%$))!!!!!)))!!!!!!,!!!!!)!,!)%%!!))!!%%!!%-->>)-,-)!!!!!!!!!!!!!!!!!!!!,%!!!!!!)>-->>>>>--,># ", ! " #),>)!!!!!!!!!!!!!!!)!!!!!!)!!!!!!!!)!!!)!)!)!)!!))!)!)!!)!!!)!!!))))!!!!!!!)!!!!!!!!)!!!))!!)))!)!!)!)!)!!!!!!))--->-----,>>>))!!!!!)!!!!!!!))!!!!!!,!!!!!!))!!!!!!))!!!!!!))!!!!!))!!!!!!))!!!!!!))!!!!!!.%$%$%&.#$$$$&#.$%$%#&%.%%$$%&#.%$%$%$.$%#%$$$........#%!!!!!))!!!!!!))!!!!!!))%++%%!)!!!!!!))!!!!!!)!!!!!!!)!!%%!!))!!%%!!%--=>!->=))!!!!!!!!!!!!!!!!!!!)$!!!!!!!>->>->>>->,,# ", ! " #))>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!!!!!!!!!!!!!!!!!!!!!))!!!!!!!!!!!!!!!!!!!!),->>->->->,>>>)!!!!!)))!!!!!))!!!!!!))!!!!!)))!!!!!!,!!!!!!),!!!!!... [truncated message content] |
|
From: rob v. <ro...@us...> - 2005-11-30 20:46:15
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28830 Modified Files: item.cpp planpanel.cpp Log Message: turntable modifications Index: item.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/item.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** item.cpp 29 Nov 2005 20:39:17 -0000 1.31 --- item.cpp 30 Nov 2005 20:46:00 -0000 1.32 *************** *** 55,58 **** --- 55,59 ---- #include "rocrail/wrapper/public/Track.h" #include "rocrail/wrapper/public/Turntable.h" + #include "rocrail/wrapper/public/TTTrack.h" #include "rocrail/wrapper/public/Loc.h" #include "rocrail/wrapper/public/Feedback.h" *************** *** 61,64 **** --- 62,67 ---- + static double PI25DT = 3.141592653589793238462643; + enum { // menu items *************** *** 159,162 **** --- 162,172 ---- cx = 5; cy = 5; + bridgepos = 0.0; + iONode track = wTurntable.gettrack( m_Props ); + while( track != NULL ) { + m_PlanPanel->addItem( wTTTrack.getposfb( track ), this ); + track = wTurntable.nexttrack( m_Props, track ); + } + } *************** *** 719,722 **** --- 729,751 ---- } + const char* id = wItem.getid( node ); + if( !StrOp.equals( id, wItem.getid( m_Props ) ) ) { + if( StrOp.equals( wTurntable.name(), NodeOp.getName( m_Props ) ) ) { + // Could be a turntable (invisible) feedback... + iONode track = wTurntable.gettrack( m_Props ); + while( track != NULL ) { + if( StrOp.equals( id, wTTTrack.getposfb( track ) ) ) { + TraceOp.trc( "item", TRCLEVEL_INFO, __LINE__, 9999, "posfb \"%s\" for nr %d = %s", + id, wTTTrack.getnr( track ), + wFeedback.isstate( node ) ? "ON":"OFF" ); + wTTTrack.setstate( track, wFeedback.isstate( node ) ); + } + track = wTurntable.nexttrack( m_Props, track ); + } + } + Refresh(); + return; + } + const char* type = wItem.gettype( node ); if( type != NULL ) { *************** *** 1067,1073 **** } else if( StrOp.equals( wTurntable.name(), nodeName ) ) { - wxPoint bridge[] = { - wxPoint( 64+12,16+32),wxPoint(64+12,16+96),wxPoint(64+19,16+96),wxPoint( 64+19,16+32) - }; wxPen* pen = wxLIGHT_GREY_PEN; --- 1096,1099 ---- *************** *** 1078,1111 **** pen->SetStyle(wxSOLID); ! pen = wxGREY_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! ! double PI25DT = 3.141592653589793238462643; ! double a = (60.0*2*PI25DT)/360; ! double xa = cos(a) * 79.0; ! double ya = sin(a) * 79.0; ! int x = 79 + (int)xa; ! int y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); ! a = (120.0*2*PI25DT)/360; ! xa = cos(a) * 79.0; ! ya = sin(a) * 79.0; ! x = 79 + (int)xa; ! y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); ! pen = wxBLACK_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! a = (90.0*2*PI25DT)/360; ! xa = cos(a) * 79.0; ! ya = sin(a) * 79.0; ! x = 79 + (int)xa; ! y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); pen->SetWidth(1); dc.SetPen(*pen); --- 1104,1134 ---- pen->SetStyle(wxSOLID); ! iONode track = wTurntable.gettrack( m_Props ); ! while( track != NULL ) { ! double degr = 7.5 * wTTTrack.getnr( track ); ! double a = (degr*2*PI25DT)/360; ! double xa = cos(a) * 79.0; ! double ya = sin(a) * 79.0; ! int x = 79 + (int)xa; ! int y = 79 - (int)ya; ! if( wTTTrack.isstate( track ) ) { ! pen = wxBLACK_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! bridgepos = degr; ! } ! else { ! pen = wxGREY_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! } ! dc.DrawLine( 79, 79, x, y ); ! track = wTurntable.nexttrack( m_Props, track ); ! } + pen = wxBLACK_PEN; pen->SetWidth(1); dc.SetPen(*pen); *************** *** 1113,1117 **** dc.DrawCircle( 79, 79, 36 ); dc.DrawCircle( 79, 79, 32 ); ! dc.DrawPolygon( 4, bridge ); } --- 1136,1140 ---- dc.DrawCircle( 79, 79, 36 ); dc.DrawCircle( 79, 79, 32 ); ! dc.DrawPolygon( 5, rotateBridge( bridgepos ) ); } *************** *** 1120,1121 **** --- 1143,1167 ---- } + wxPoint* ARjItem::rotateBridge( double ori ) { + static wxPoint p[5]; + double bp[4] = { 10.0, 170.0, 190.0, 350.0 }; + + for( int i = 0; i < 4; i++ ) { + double angle = ori+bp[i]; + if( angle > 360.0 ) + angle = angle -360.0; + double a = (angle*2*PI25DT)/360; + double xa = cos(a) * 32.0; + double ya = sin(a) * 32.0; + p[i].x = 79 + (int)xa; + p[i].y = 79 - (int)ya; + if( i == 0 ) { + // end point to close the polygon + p[4].x = p[i].x; + p[4].y = p[i].y; + } + } + return p; + } + + Index: planpanel.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/planpanel.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** planpanel.cpp 29 Nov 2005 20:39:17 -0000 1.21 --- planpanel.cpp 30 Nov 2005 20:46:00 -0000 1.22 *************** *** 359,366 **** ARjItem* item = new ARjItem( (CRjPlanPanel*)this, child ); m_ChildTable->Put( wItem.getid( child ), item ); ! char* text = StrOp.fmt( "%d items", m_ChildTable->GetCount() ); ! wxGetApp().getFrame()->setInfoText( text ); ! freeMem( text ); } } --- 359,370 ---- ARjItem* item = new ARjItem( (CRjPlanPanel*)this, child ); m_ChildTable->Put( wItem.getid( child ), item ); + } + } + } ! void CRjPlanPanel::addItem( const char* id, wxWindow* item ) { ! if( id != NULL ) { ! if( m_ChildTable->Get( id ) == NULL ) { ! m_ChildTable->Put( id, item ); } } *************** *** 369,372 **** --- 373,383 ---- void CRjPlanPanel::addMultipleItem(wxCommandEvent& event) { iONode node = (iONode)event.GetClientData(); + + if( StrOp.equals( NodeOp.getName( node ), wModelCmd.name() ) ) { + wxGetApp().sendToRocrail( node ); + NodeOp.base.del( node ); + return; + } + int cnt = NodeOp.getChildCnt( node ); for( int i = 0; i < cnt; i++ ) { *************** *** 374,377 **** --- 385,391 ---- addItem( child ); } + char* text = StrOp.fmt( "%d items", m_ChildTable->GetCount() ); + wxGetApp().getFrame()->setInfoText( text ); + freeMem( text ); } *************** *** 450,453 **** --- 464,473 ---- } else { + if( StrOp.equals( NodeOp.getName( node ), wModelCmd.name() ) ) { + wxGetApp().sendToRocrail( node ); + NodeOp.base.del( node ); + return; + } + int cnt = NodeOp.getChildCnt( node ); for( int i = 0; i < cnt; i++ ) { *************** *** 494,500 **** iONode cmd = NodeOp.inst( wModelCmd.name(), NULL, ELEMENT_NODE ); wModelCmd.setcmd( cmd, wModelCmd.fstat ); ! ThreadOp.sleep( 1000 ); ! wxGetApp().sendToRocrail( cmd ); ! cmd->base.del( cmd ); } --- 514,518 ---- iONode cmd = NodeOp.inst( wModelCmd.name(), NULL, ELEMENT_NODE ); wModelCmd.setcmd( cmd, wModelCmd.fstat ); ! o->addItems( cmd ); } |
|
From: rob v. <ro...@us...> - 2005-11-30 20:45:58
|
Update of /cvsroot/rojav/rocgui/public In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28789 Modified Files: item.h planpanel.h Log Message: turntable modifications Index: planpanel.h =================================================================== RCS file: /cvsroot/rojav/rocgui/public/planpanel.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** planpanel.h 19 Nov 2005 13:44:06 -0000 1.7 --- planpanel.h 30 Nov 2005 20:45:49 -0000 1.8 *************** *** 28,31 **** --- 28,32 ---- void updateItemCmd(wxCommandEvent& event); void addItem(iONode child); + void addItem(const char* id, wxWindow* item); void addMultipleItem(wxCommandEvent& event); void addTrack(wxCommandEvent& event); Index: item.h =================================================================== RCS file: /cvsroot/rojav/rocgui/public/item.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** item.h 3 Oct 2005 15:40:24 -0000 1.4 --- item.h 30 Nov 2005 20:45:49 -0000 1.5 *************** *** 52,57 **** --- 52,59 ---- void updateLabel(); wxPoint* rotateShape( wxPoint* poly, int cnt, const char* ori ); + wxPoint* rotateBridge( double ori ); wxWindow* m_Parent; iONode m_Props; + double bridgepos; DECLARE_EVENT_TABLE() |
|
From: rob v. <ro...@us...> - 2005-11-30 20:45:45
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28553 Modified Files: rocgui-dialogs.pjd turntabledialog.cpp turntabledialog.h Log Message: turntable modifications Index: turntabledialog.h =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/turntabledialog.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** turntabledialog.h 28 Nov 2005 20:19:58 -0000 1.1 --- turntabledialog.h 30 Nov 2005 20:45:24 -0000 1.2 *************** *** 60,64 **** #define wxID_STATIC_TT_Z 10014 #define ID_TEXTCTRL_TT_Z 10015 - #define ID_RADIOBOX_TT_ORI 10016 #define ID_PANEL_TT_TRACKS 10127 #define ID_GRID 10128 --- 60,63 ---- *************** *** 145,149 **** wxStaticText* m_LabelZ; wxTextCtrl* m_z; - wxRadioBox* m_ori; wxPanel* m_TracksPanel; wxGrid* m_TracksGrid; --- 144,147 ---- Index: turntabledialog.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/turntabledialog.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** turntabledialog.cpp 28 Nov 2005 20:19:29 -0000 1.1 --- turntabledialog.cpp 30 Nov 2005 20:45:24 -0000 1.2 *************** *** 107,118 **** str = StrOp.fmt( "%d", wTurntable.getz( m_Props ) ); m_z->SetValue( str ); StrOp.free( str ); - if( StrOp.equals( wItem.north, wTurntable.getori( m_Props ) ) ) - m_ori->SetSelection( 0 ); - else if( StrOp.equals( wItem.east, wTurntable.getori( m_Props ) ) || wTurntable.getori( m_Props ) == NULL ) - m_ori->SetSelection( 1 ); - else if( StrOp.equals( wItem.south, wTurntable.getori( m_Props ) ) ) - m_ori->SetSelection( 2 ); - else if( StrOp.equals( wItem.west, wTurntable.getori( m_Props ) ) ) - m_ori->SetSelection( 3 ); // Tracks --- 107,110 ---- *************** *** 149,161 **** wTurntable.sety( m_Props, atoi( m_y->GetValue() ) ); wTurntable.setz( m_Props, atoi( m_z->GetValue() ) ); - int ori = m_ori->GetSelection(); - if( ori == 0 ) - wTurntable.setori( m_Props, wItem.north ); - else if( ori == 1 ) - wTurntable.setori( m_Props, wItem.east ); - else if( ori == 2 ) - wTurntable.setori( m_Props, wItem.south ); - else if( ori == 3 ) - wTurntable.setori( m_Props, wItem.west ); } --- 141,144 ---- *************** *** 182,186 **** m_LabelZ = NULL; m_z = NULL; - m_ori = NULL; m_TracksPanel = NULL; m_TracksGrid = NULL; --- 165,168 ---- *************** *** 259,276 **** itemFlexGridSizer12->Add(m_z, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); - wxString m_oriStrings[] = { - _("&north"), - _("&east"), - _("&south"), - _("&west") - }; - m_ori = new wxRadioBox( m_LocationPanel, ID_RADIOBOX_TT_ORI, _("Orientation"), wxDefaultPosition, wxDefaultSize, 4, m_oriStrings, 1, wxRA_SPECIFY_COLS ); - itemBoxSizer11->Add(m_ori, 0, wxALIGN_TOP|wxALL, 5); - m_Notebook->AddPage(m_LocationPanel, _("Location")); m_TracksPanel = new wxPanel( m_Notebook, ID_PANEL_TT_TRACKS, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); ! wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL); ! m_TracksPanel->SetSizer(itemBoxSizer21); m_TracksGrid = new wxGrid( m_TracksPanel, ID_GRID, wxDefaultPosition, wxSize(220, 200), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); --- 241,249 ---- itemFlexGridSizer12->Add(m_z, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_Notebook->AddPage(m_LocationPanel, _("Location")); m_TracksPanel = new wxPanel( m_Notebook, ID_PANEL_TT_TRACKS, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); ! wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL); ! m_TracksPanel->SetSizer(itemBoxSizer20); m_TracksGrid = new wxGrid( m_TracksPanel, ID_GRID, wxDefaultPosition, wxSize(220, 200), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); *************** *** 280,284 **** m_TracksGrid->SetRowLabelSize(0); m_TracksGrid->CreateGrid(1, 4, wxGrid::wxGridSelectRows); ! itemBoxSizer21->Add(m_TracksGrid, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 2); m_Notebook->AddPage(m_TracksPanel, _("Tracks")); --- 253,257 ---- m_TracksGrid->SetRowLabelSize(0); m_TracksGrid->CreateGrid(1, 4, wxGrid::wxGridSelectRows); ! itemBoxSizer20->Add(m_TracksGrid, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 2); m_Notebook->AddPage(m_TracksPanel, _("Tracks")); *************** *** 286,299 **** itemBoxSizer2->Add(m_Notebook, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); ! wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy23 = new wxStdDialogButtonSizer; ! itemBoxSizer2->Add(itemStdDialogButtonSizerProxy23, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy23->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy23->AddButton(m_Cancel); ! itemStdDialogButtonSizerProxy23->Realize(); ////@end TurntableDialog content construction --- 259,272 ---- itemBoxSizer2->Add(m_Notebook, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); ! wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy22 = new wxStdDialogButtonSizer; ! itemBoxSizer2->Add(itemStdDialogButtonSizerProxy22, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy22->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); ! itemStdDialogButtonSizerProxy22->AddButton(m_Cancel); ! itemStdDialogButtonSizerProxy22->Realize(); ////@end TurntableDialog content construction *************** *** 362,366 **** ////@begin wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. // Before editing this code, remove the block markers. ! event.Skip(true); ////@end wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. } --- 335,339 ---- ////@begin wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. // Before editing this code, remove the block markers. ! event.Skip(); ////@end wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. } Index: rocgui-dialogs.pjd =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/rocgui-dialogs.pjd,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** rocgui-dialogs.pjd 28 Nov 2005 20:21:34 -0000 1.24 --- rocgui-dialogs.pjd 30 Nov 2005 20:45:24 -0000 1.25 *************** *** 13,17 **** <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">262</value> <value name="xrc_filename" type="string"></value> <value name="convert_images_to_xpm" type="bool">FALSE</value> --- 13,17 ---- <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">261</value> <value name="xrc_filename" type="string"></value> [...6857 lines suppressed...] <value name="proxy-Custom ctor arguments" type="string"></value> </path> ! <path name="ID000104"> <value name="title" type="string">wxButton: wxID_CANCEL</value> ! <value name="id" type="Integer">179086032</value> <value name="type" type="string">dialog-control-document</value> <value name="filename" type="string"></value> *************** *** 14355,14359 **** <value name="owns-file" type="Integer">1</value> <value name="title-mode" type="Integer">0</value> ! <value name="parent" type="Integer">187490944</value> <value name="locked" type="Integer">1</value> <value name="created" type="string">28/10/2005</value> --- 14311,14315 ---- <value name="owns-file" type="Integer">1</value> <value name="title-mode" type="Integer">0</value> ! <value name="parent" type="Integer">179023224</value> <value name="locked" type="Integer">1</value> <value name="created" type="string">28/10/2005</value> |
|
From: rob v. <ro...@us...> - 2005-11-30 20:42:34
|
Update of /cvsroot/rojav/rocrail/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28207 Modified Files: fback.c Log Message: turntable modifications Index: fback.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/fback.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** fback.c 7 May 2005 10:20:06 -0000 1.22 --- fback.c 30 Nov 2005 20:42:25 -0000 1.23 *************** *** 114,122 **** } else { ! TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "fb \"%s\" has no listener...", FBackOp.getId(inst) ); } /* Broadcast to clients. Node4 */ ! if( wFeedback.isshow( data->props ) ) { iONode nodeD = NodeOp.inst( wFeedback.name(), NULL, ELEMENT_NODE ); wFeedback.setid( nodeD, FBackOp.getId( inst ) ); --- 114,123 ---- } else { ! TraceOp.trc( name, TRCLEVEL_WARNING, __LINE__, 9999, "fb \"%s\"(%s) has no listener...", ! FBackOp.getId(inst), data->state?"ON":"OFF" ); } /* Broadcast to clients. Node4 */ ! { iONode nodeD = NodeOp.inst( wFeedback.name(), NULL, ELEMENT_NODE ); wFeedback.setid( nodeD, FBackOp.getId( inst ) ); |
|
From: rob v. <ro...@us...> - 2005-11-30 20:42:19
|
Update of /cvsroot/rojav/rocrail/public In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28118 Modified Files: wrapper.xml Log Message: turntable modifications Index: wrapper.xml =================================================================== RCS file: /cvsroot/rojav/rocrail/public/wrapper.xml,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** wrapper.xml 29 Nov 2005 20:37:32 -0000 1.67 --- wrapper.xml 30 Nov 2005 20:42:11 -0000 1.68 *************** *** 334,342 **** <tt cardinality="n" wrappername="Turntable" remark="Turntable definition."> <var name="id" vt="string" defval="" range="*" required="true"/> <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="x" vt="int" defval="0" range="0-*"/> <var name="y" vt="int" defval="0" range="0-*"/> <var name="z" vt="int" defval="0" range="0-*"/> - <var name="ori" vt="string" defval="NULL" range="north,south,west,east"/> <const name="next" vt="string" val="next" remark="Go to next track."/> <const name="prev" vt="string" val="prev" remark="Go to previous track."/> --- 334,343 ---- <tt cardinality="n" wrappername="Turntable" remark="Turntable definition."> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="iid" vt="string" defval="NULL" range="*" remark="Interface ID."/> + <var name="addr" vt="int" defval="0" range="0-255" required="true" remark="Digital address."/> <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="x" vt="int" defval="0" range="0-*"/> <var name="y" vt="int" defval="0" range="0-*"/> <var name="z" vt="int" defval="0" range="0-*"/> <const name="next" vt="string" val="next" remark="Go to next track."/> <const name="prev" vt="string" val="prev" remark="Go to previous track."/> *************** *** 344,348 **** <const name="m7687" vt="string" val="m7687" remark="The original Maerklin turntable device."/> <const name="m6082" vt="string" val="m6082" remark="Modified analog turntable."/> ! <var name="type" vt="string" defval="m7687" range="m7687,m6082"/> <track cardinality="n" wrappername="TTTrack" remark="Turntable track."> <var name="posfb" vt="string" defval="" range="*" required="true" remark="Feedback ID for positioning the TT."/> --- 345,349 ---- <const name="m7687" vt="string" val="m7687" remark="The original Maerklin turntable device."/> <const name="m6082" vt="string" val="m6082" remark="Modified analog turntable."/> ! <var name="type" vt="string" defval="m6082" range="m7687,m6082"/> <track cardinality="n" wrappername="TTTrack" remark="Turntable track."> <var name="posfb" vt="string" defval="" range="*" required="true" remark="Feedback ID for positioning the TT."/> *************** *** 350,353 **** --- 351,355 ---- <var name="nr" vt="int" defval="0" range="0-*" required="true" remark="Track number."/> <var name="block" vt="string" defval="NULL" range="*" remark="Connected to block."/> + <var name="state" vt="bool" defval="false" remark="pos feedback state."/> </track> </tt> |
|
From: rob v. <ro...@us...> - 2005-11-30 20:37:56
|
Update of /cvsroot/rojav/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26927 Modified Files: neustadt.xml Log Message: Index: neustadt.xml =================================================================== RCS file: /cvsroot/rojav/bin/neustadt.xml,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** neustadt.xml 27 Nov 2005 19:38:37 -0000 1.44 --- neustadt.xml 30 Nov 2005 20:37:47 -0000 1.45 *************** *** 27,31 **** <sw id="SW23" pin="1" unit="4" inv="true" x="22" y="8" z="1" ori="west" type="left" state="turnout"/> <sw id="SW24" pin="2" unit="4" inv="false" x="23" y="7" z="1" type="left" state="straight"/> ! <sw id="SW25" fbG="FB209" fbR="FB210" pin="3" unit="4" inv="false" x="23" y="6" z="1" ori="east" type="right" state="turnout"/> <sw id="SW26" fbG="FB208" fbR="FB207" pin="4" unit="4" inv="false" x="22" y="5" z="1" ori="east" type="right" state="turnout"/> <sw id="SW27" pin="2" unit="7" inv="true" x="22" y="4" z="1" type="right" state="straight"/> --- 27,31 ---- <sw id="SW23" pin="1" unit="4" inv="true" x="22" y="8" z="1" ori="west" type="left" state="turnout"/> <sw id="SW24" pin="2" unit="4" inv="false" x="23" y="7" z="1" type="left" state="straight"/> ! <sw id="SW25" fbG="FB209" fbR="FB210" pin="3" unit="4" inv="false" x="23" y="6" z="1" ori="east" type="right" state="straight"/> <sw id="SW26" fbG="FB208" fbR="FB207" pin="4" unit="4" inv="false" x="22" y="5" z="1" ori="east" type="right" state="turnout"/> <sw id="SW27" pin="2" unit="7" inv="true" x="22" y="4" z="1" type="right" state="straight"/> *************** *** 140,154 **** <fb id="FB226" iid="hsi88_1" unit="3" pin="14" show="false"/> <fb id="FB227" iid="hsi88_1" unit="3" pin="15" show="false"/> ! <fb id="FB300" iid="hsi88_1" x="20" y="11" z="1" ori="north" unit="5" pin="15" state="true" show="true"/> ! <fb id="FB305" iid="hsi88_1" x="22" y="13" z="1" ori="north" unit="5" pin="2"/> ! <fb id="FB304" iid="hsi88_1" x="21" y="13" z="1" ori="north" unit="5" pin="3"/> ! <fb id="FB303" iid="hsi88_1" x="20" y="13" z="1" ori="north" unit="5" pin="14"/> ! <fb id="FB302" iid="hsi88_1" x="19" y="13" z="1" ori="north" unit="5" pin="13"/> ! <fb id="FB301" iid="hsi88_1" x="18" y="13" z="1" ori="north" unit="5" pin="1" state="true" show="true"/> ! <fb id="FB306" iid="hsi88_1" x="18" y="14" z="1" ori="north" unit="5" pin="4"/> ! <fb id="FB307" iid="hsi88_1" x="19" y="14" z="1" ori="north" unit="5" pin="5"/> ! <fb id="FB308" iid="hsi88_1" x="20" y="14" z="1" ori="north" unit="5" pin="11"/> ! <fb id="FB309" iid="hsi88_1" x="21" y="14" z="1" ori="north" unit="5" pin="9"/> ! <fb id="FB310" iid="hsi88_1" x="22" y="14" z="1" ori="north" unit="5" pin="12"/> </fblist> <bklist> --- 140,154 ---- <fb id="FB226" iid="hsi88_1" unit="3" pin="14" show="false"/> <fb id="FB227" iid="hsi88_1" unit="3" pin="15" show="false"/> ! <fb id="FB300" iid="hsi88_1" x="20" y="11" z="1" ori="north" unit="5" pin="15" show="false" remark="turntable"/> ! <fb id="FB305" iid="hsi88_1" x="22" y="13" z="1" ori="north" unit="5" pin="2" show="false"/> ! <fb id="FB304" iid="hsi88_1" x="21" y="13" z="1" ori="north" unit="5" pin="3" show="false"/> ! <fb id="FB303" iid="hsi88_1" x="20" y="13" z="1" ori="north" unit="5" pin="14" show="false"/> ! <fb id="FB302" iid="hsi88_1" x="19" y="13" z="1" ori="north" unit="5" pin="13" show="false"/> ! <fb id="FB301" iid="hsi88_1" x="18" y="13" z="1" ori="north" unit="5" pin="1" show="false"/> ! <fb id="FB306" iid="hsi88_1" x="18" y="14" z="1" ori="north" unit="5" pin="4" show="false"/> ! <fb id="FB307" iid="hsi88_1" x="19" y="14" z="1" ori="north" unit="5" pin="5" show="false"/> ! <fb id="FB308" iid="hsi88_1" x="20" y="14" z="1" ori="north" unit="5" pin="11" show="false"/> ! <fb id="FB309" iid="hsi88_1" x="21" y="14" z="1" ori="north" unit="5" pin="9" show="false"/> ! <fb id="FB310" iid="hsi88_1" x="22" y="14" z="1" ori="north" unit="5" pin="12" show="false"/> </fblist> <bklist> *************** *** 888,898 **** </lclist> <ttlist> ! <tt id="TT01" x="20" y="12" z="1" ori="north" type="m6082"> ! <track posfb="FB300" nr="0" locfb="FB49" block="BL18"/> ! <track posfb="FB305" nr="18" locfb="FB310"/> ! <track posfb="FB304" nr="19" locfb="FB309"/> ! <track posfb="FB303" nr="20" locfb="FB308"/> ! <track posfb="FB302" nr="21" locfb="FB307"/> ! <track posfb="FB301" nr="24" locfb="FB306"/> </tt> </ttlist> --- 888,898 ---- </lclist> <ttlist> ! <tt id="TT01" x="18" y="11" z="1" ori="north" type="m6082"> ! <track posfb="FB300" nr="12" locfb="FB49" block="BL18"/> ! <track posfb="FB305" nr="42" locfb="FB310"/> ! <track posfb="FB304" nr="41" locfb="FB309"/> ! <track posfb="FB303" nr="40" locfb="FB308"/> ! <track posfb="FB302" nr="39" locfb="FB307"/> ! <track posfb="FB301" nr="36" locfb="FB306"/> </tt> </ttlist> |
|
From: rob v. <ro...@us...> - 2005-11-30 06:11:27
|
Update of /cvsroot/rojav/rocs/gen In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15326 Modified Files: wgen.c Log Message: external description files Index: wgen.c =================================================================== RCS file: /cvsroot/rojav/rocs/gen/wgen.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** wgen.c 17 Nov 2005 17:03:46 -0000 1.23 --- wgen.c 30 Nov 2005 06:11:18 -0000 1.24 *************** *** 36,41 **** --- 36,45 ---- #include "rocs/public/map.h" #include "rocs/public/thread.h" + #include "rocs/public/cmdln.h" static iOMap nodeMap = NULL; + static iOMap descMap = NULL; + + static int __fillDescMap( const char* descfile, const char* lang ); static int __gConstHdr( iONode node, const char* fileName, Boolean docAll ); *************** *** 61,64 **** --- 65,71 ---- int rc = 0; Boolean docAll = False; + iOCmdLn arg = NULL; + const char* lang = NULL; + const char* descfile = NULL; iOTrace trc = TraceOp.inst( TRCLEVEL_INFO, "wgen", True ); *************** *** 79,86 **** MemOp.resetDump(); ! if( argc > 2 ) { ! if( StrOp.equalsi( "-all", argv[2] ) ) ! docAll = True; } /* Read const.xml */ if( argc > 1 ) { --- 86,102 ---- MemOp.resetDump(); ! /* Check commandline arguments. */ ! arg = CmdLnOp.inst( argc, argv ); ! ! lang = CmdLnOp.getStrDef( arg, "-lang", "en" ); ! descfile = CmdLnOp.getStrDef( arg, "-desc", NULL ); ! descMap = MapOp.inst(); ! ! if( descfile != NULL ) { ! __fillDescMap( descfile, lang ); } + + docAll = CmdLnOp.hasKey( arg, "-all" ); + /* Read const.xml */ if( argc > 1 ) { *************** *** 149,152 **** --- 165,236 ---- + static const char* __getRemark( iONode node ) { + if( StrOp.equalsi( "var", NodeOp.getName( node ) ) || StrOp.equalsi( "const", NodeOp.getName( node ) ) ) { + iONode parent = NodeOp.getParent( node ); + char* id = NULL; + const char* desc = NULL; + + if( parent == NULL ) + return NodeOp.getStr( node, "remark", "" ); + id = StrOp.fmt( "%s.%s", NodeOp.getName( parent ), NodeOp.getStr( node, "name", "" ) ); + desc = (const char*)MapOp.get( descMap, StrOp.strlwr( id ) ); + StrOp.free( id ); + return desc == NULL ? NodeOp.getStr( node, "remark", "" ):desc; + } + else { + char* nodename = StrOp.dup( NodeOp.getName( node ) ); + const char* desc = (const char*)MapOp.get( descMap, StrOp.strlwr( nodename ) ); + StrOp.free( nodename ); + if( desc != NULL ) + return desc; + return NodeOp.getStr( node, "remark", "" ); + } + } + + static int __fillDescMap( const char* descfile, const char* lang ) { + + iOFile descXml = FileOp.inst( descfile, OPEN_READONLY ); + char* xmlStr = allocMem( FileOp.size( descXml ) + 1 ); + iODoc doc = NULL; + iONode root = NULL; + + TraceOp.println( "Reading %s...", descfile ); + FileOp.read( descXml, xmlStr, FileOp.size( descXml ) ); + FileOp.close( descXml ); + FileOp.base.del( descXml ); + + TraceOp.println( "Parsing %s...", descfile ); + doc = DocOp.parse( xmlStr ); + freeMem( xmlStr ); + if( doc == NULL ) + return 0; + root = DocOp.getRootNode( doc ); + + if( root == NULL ) + return 0; + + { + int childCnt = NodeOp.getChildCnt( root ); + int i = 0; + TraceOp.println( "Processing %d childs.", childCnt ); + for( i = 0; i < childCnt; i++ ) { + iONode child = NodeOp.getChild( root, i ); + if( NodeOp.getType( child ) == ELEMENT_NODE && StrOp.equalsi( NodeOp.getName(child), "description") ) { + iONode langnode = NodeOp.findNode( child, lang ); + if( langnode != NULL ) { + const char* id = NodeOp.getStr( child, "id", NULL ); + const char* text = NodeOp.getStr( langnode, "text", NULL ); + if( id != NULL && text != NULL ) { + MapOp.put( descMap, StrOp.strlwr( id ), (obj)StrOp.dup(text) ); + TraceOp.println( "descMap: %s, [%-20.20s...] added." ); + } + } + } + } + } + + } + + static int __processPrefix( iOFile fHdr, iOFile fImpl, iOFile fDoc, iOFile fIndex, const char* modulename, const char* title, const char* docname ) { *************** *** 516,520 **** FileOp.fmt( fImplC, "static struct __attrdef __%s = {\n", attrName ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "name", "?" ) ); ! FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "remark", "" ) ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "unit", "" ) ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "vt", "string" ) ); --- 600,604 ---- FileOp.fmt( fImplC, "static struct __attrdef __%s = {\n", attrName ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "name", "?" ) ); ! FileOp.fmt( fImplC, " \"%s\",", __getRemark(var) ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "unit", "" ) ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( var, "vt", "string" ) ); *************** *** 569,573 **** FileOp.fmt( fImplC, "static struct __nodedef __%s = {\n", nodeName ); FileOp.fmt( fImplC, " \"%s\",", nodeName ); ! FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( node, "remark", "" ) ); FileOp.fmt( fImplC, " %s,", NodeOp.getBool( node, "required", False )?"True":"False" ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( node, "cardinality", "1" ) ); --- 653,657 ---- FileOp.fmt( fImplC, "static struct __nodedef __%s = {\n", nodeName ); FileOp.fmt( fImplC, " \"%s\",", nodeName ); ! FileOp.fmt( fImplC, " \"%s\",", __getRemark(node) ); FileOp.fmt( fImplC, " %s,", NodeOp.getBool( node, "required", False )?"True":"False" ); FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( node, "cardinality", "1" ) ); *************** *** 656,660 **** FileOp.fmt( fImplC, "static struct __nodedef __%s = {\n", nodeName ); FileOp.fmt( fImplC, " \"%s\",", xmlName ); ! FileOp.fmt( fImplC, " \"%s\",", NodeOp.getStr( node, "remark", "" ) ); FileOp.fmt( fImplC, " %s,", NodeOp.getBool( node, "required", False )?"True":"False" ); FileOp.fmt( fImplC, " \"%s\",\n", NodeOp.getStr( node, "cardinality", "1" ) ); --- 740,744 ---- FileOp.fmt( fImplC, "static struct __nodedef __%s = {\n", nodeName ); FileOp.fmt( fImplC, " \"%s\",", xmlName ); ! FileOp.fmt( fImplC, " \"%s\",", __getRemark(node) ); FileOp.fmt( fImplC, " %s,", NodeOp.getBool( node, "required", False )?"True":"False" ); FileOp.fmt( fImplC, " \"%s\",\n", NodeOp.getStr( node, "cardinality", "1" ) ); *************** *** 868,872 **** level==0?"*root*":parent, "", ! NodeOp.getStr( child, "remark", "-" ), "", "", --- 952,956 ---- level==0?"*root*":parent, "", ! __getRemark(child), "", "", *************** *** 882,886 **** level==0?"*root*":parent, "", ! NodeOp.getStr( child, "remark", "-" ), "", "", --- 966,970 ---- level==0?"*root*":parent, "", ! __getRemark(child), "", "", *************** *** 904,908 **** NodeOp.getBool( var, "deprecated", False )?"</s>":"", NodeOp.getStr( var, "vt", "?" ), ! NodeOp.getStr( var, "remark", "-" ), NodeOp.getStr( var, "unit", "-" ), NodeOp.getStr( var, "val", "-" ), --- 988,992 ---- NodeOp.getBool( var, "deprecated", False )?"</s>":"", NodeOp.getStr( var, "vt", "?" ), ! __getRemark(var), NodeOp.getStr( var, "unit", "-" ), NodeOp.getStr( var, "val", "-" ), *************** *** 925,929 **** sizeAttr ? sizeAttr:"", sizeAttr ? "]":"", ! NodeOp.getStr( var, "remark", "-" ), NodeOp.getStr( var, "unit", "-" ), NodeOp.getStr( var, "defval", "-" ), --- 1009,1013 ---- sizeAttr ? sizeAttr:"", sizeAttr ? "]":"", ! __getRemark(var), NodeOp.getStr( var, "unit", "-" ), NodeOp.getStr( var, "defval", "-" ), |
|
From: rob v. <ro...@us...> - 2005-11-29 20:39:26
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17089 Modified Files: item.cpp planpanel.cpp Log Message: turntable in progress Index: item.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/item.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** item.cpp 28 Nov 2005 20:22:07 -0000 1.30 --- item.cpp 29 Nov 2005 20:39:17 -0000 1.31 *************** *** 58,61 **** --- 58,63 ---- #include "rocrail/wrapper/public/Feedback.h" + #include <math.h> + enum { *************** *** 125,128 **** --- 127,131 ---- int c = getSize(); int cx = 1; + int cy = 1; if( StrOp.equals( wBlock.name(), NodeOp.getName( m_Props ) ) ) { *************** *** 153,160 **** updateLabel(); } ! else if( StrOp.equals( wSwitch.name(), NodeOp.getName( m_Props ) ) ) { } ! SetSize( x*c, y*c, c*cx, c ); SetBackgroundColour( *wxWHITE ); --- 156,165 ---- updateLabel(); } ! else if( StrOp.equals( wTurntable.name(), NodeOp.getName( m_Props ) ) ) { ! cx = 5; ! cy = 5; } ! SetSize( x*c, y*c, c*cx, c*cy ); SetBackgroundColour( *wxWHITE ); *************** *** 214,223 **** int c = getSize(); int cx = 1; if( StrOp.equals( wBlock.name(), NodeOp.getName( m_Props ) ) ) { cx = 4; } dc.DrawLine( 0, 0, c*cx, 0 ); ! dc.DrawLine( 0, 0, 0, c ); dc.SetUserScale( m_PlanPanel->getScale(), m_PlanPanel->getScale() ); --- 219,233 ---- int c = getSize(); int cx = 1; + int cy = 1; if( StrOp.equals( wBlock.name(), NodeOp.getName( m_Props ) ) ) { cx = 4; } + else if( StrOp.equals( wTurntable.name(), NodeOp.getName( m_Props ) ) ) { + cx = 5; + cy = 5; + } dc.DrawLine( 0, 0, c*cx, 0 ); ! dc.DrawLine( 0, 0, 0, c*cy ); dc.SetUserScale( m_PlanPanel->getScale(), m_PlanPanel->getScale() ); *************** *** 328,333 **** wxCursor cursor = wxCursor(wxCURSOR_HAND); SetCursor( cursor ); ! SetBackgroundColour( CRjBase::getYellow() ); ! Refresh(); } else if( StrOp.equals( wBlock.name(), NodeOp.getName( m_Props ) ) ) { --- 338,343 ---- wxCursor cursor = wxCursor(wxCURSOR_HAND); SetCursor( cursor ); ! //SetBackgroundColour( CRjBase::getYellow() ); ! //Refresh(); } else if( StrOp.equals( wBlock.name(), NodeOp.getName( m_Props ) ) ) { *************** *** 338,343 **** wxCursor cursor = wxCursor(wxCURSOR_HAND); SetCursor( cursor ); ! SetBackgroundColour( CRjBase::getYellow() ); ! Refresh(); } } --- 348,353 ---- wxCursor cursor = wxCursor(wxCURSOR_HAND); SetCursor( cursor ); ! //SetBackgroundColour( CRjBase::getYellow() ); ! //Refresh(); } } *************** *** 793,798 **** wxPoint* ARjItem::rotateShape( wxPoint* poly, int cnt, const char* oriStr ) { static wxPoint p[32]; ! double cos[3] = {0,-1,0}; ! double sin[3] = {1,0,-1}; enum { north=0, east, south }; int ori = east; --- 803,808 ---- wxPoint* ARjItem::rotateShape( wxPoint* poly, int cnt, const char* oriStr ) { static wxPoint p[32]; ! double __cos[3] = {0,-1,0}; ! double __sin[3] = {1,0,-1}; enum { north=0, east, south }; int ori = east; *************** *** 819,824 **** x = x - 15.5; y = 15.5 - y; ! x1 = (x * cos[ori]) - (y * sin[ori]); ! y1 = (x * sin[ori]) + (y * cos[ori]); p[i].x = (int)(x1 + 15.5); p[i].y = (int)(15.5 - y1); --- 829,834 ---- x = x - 15.5; y = 15.5 - y; ! x1 = (x * __cos[ori]) - (y * __sin[ori]); ! y1 = (x * __sin[ori]) + (y * __cos[ori]); p[i].x = (int)(x1 + 15.5); p[i].y = (int)(15.5 - y1); *************** *** 830,843 **** void ARjItem::drawShape( wxPaintDC& dc ) { - // TurnTable - static wxPoint tt1[] = { - wxPoint( 0,13),wxPoint(31,13),wxPoint(31,18),wxPoint( 0,18) - }; - static wxPoint tt2[] = { - wxPoint( 0,5),wxPoint(5,10),wxPoint(26,10),wxPoint(31,5) - }; - static wxPoint tt3[] = { - wxPoint( 0,26),wxPoint( 5,21),wxPoint(26,21),wxPoint(31,26) - }; // Track: straight static wxPoint tk_straight[] = { --- 840,843 ---- *************** *** 1067,1073 **** } else if( StrOp.equals( wTurntable.name(), nodeName ) ) { ! dc.DrawPolygon( 4, rotateShape( tt1, 4, ori ) ); ! dc.DrawPolygon( 4, rotateShape( tt2, 4, ori ) ); ! dc.DrawPolygon( 4, rotateShape( tt3, 4, ori ) ); } --- 1067,1118 ---- } else if( StrOp.equals( wTurntable.name(), nodeName ) ) { ! wxPoint bridge[] = { ! wxPoint( 64+12,16+32),wxPoint(64+12,16+96),wxPoint(64+19,16+96),wxPoint( 64+19,16+32) ! }; ! ! wxPen* pen = wxLIGHT_GREY_PEN; ! pen->SetStyle(wxSHORT_DASH); ! dc.SetPen( *pen ); ! ! dc.DrawCircle( 79, 79, 79 ); ! pen->SetStyle(wxSOLID); ! ! pen = wxGREY_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! ! double PI25DT = 3.141592653589793238462643; ! double a = (60.0*2*PI25DT)/360; ! double xa = cos(a) * 79.0; ! double ya = sin(a) * 79.0; ! int x = 79 + (int)xa; ! int y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); ! ! a = (120.0*2*PI25DT)/360; ! xa = cos(a) * 79.0; ! ya = sin(a) * 79.0; ! x = 79 + (int)xa; ! y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); ! ! pen = wxBLACK_PEN; ! pen->SetWidth(5); ! dc.SetPen(*pen); ! ! a = (90.0*2*PI25DT)/360; ! xa = cos(a) * 79.0; ! ya = sin(a) * 79.0; ! x = 79 + (int)xa; ! y = 79 - (int)ya; ! dc.DrawLine( 79, 79, x, y ); ! ! pen->SetWidth(1); ! dc.SetPen(*pen); ! ! dc.DrawCircle( 79, 79, 36 ); ! dc.DrawCircle( 79, 79, 32 ); ! dc.DrawPolygon( 4, bridge ); ! } Index: planpanel.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/planpanel.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** planpanel.cpp 23 Nov 2005 20:33:56 -0000 1.20 --- planpanel.cpp 29 Nov 2005 20:39:17 -0000 1.21 *************** *** 408,413 **** TraceOp.trc( "plan", TRCLEVEL_INFO, __LINE__, 9999, "removing item id=%s from table...", id ); m_ChildTable->Delete( id ); ! //item->Show( false ); ! //item->Destroy(); Refresh(); char* text = StrOp.fmt( "%d items", m_ChildTable->GetCount() ); --- 408,413 ---- TraceOp.trc( "plan", TRCLEVEL_INFO, __LINE__, 9999, "removing item id=%s from table...", id ); m_ChildTable->Delete( id ); ! item->Show( false ); ! item->Destroy(); Refresh(); char* text = StrOp.fmt( "%d items", m_ChildTable->GetCount() ); |
|
From: rob v. <ro...@us...> - 2005-11-29 20:37:51
|
Update of /cvsroot/rojav/rocrail/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16709 Modified Files: clntcon.c Log Message: <No Comment Entered> Index: clntcon.c =================================================================== RCS file: /cvsroot/rojav/rocrail/impl/clntcon.c,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** clntcon.c 15 Sep 2005 05:32:43 -0000 1.36 --- clntcon.c 29 Nov 2005 20:37:41 -0000 1.37 *************** *** 194,205 **** if( StrOp.len( cmd ) > 0 ) { iODoc doc = DocOp.parse( cmd ); ! iONode nodeA = DocOp.getRootNode( doc ); ! TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "cmdReader() %s.", cmd ); ! if( nodeA != NULL ) { ! const char* thName = ThreadOp.getName( infoWriter ); ! wCommand.setserver( nodeA, thName ); ! Data(o->ClntCon)->callback( Data(o->ClntCon)->callbackObj, nodeA ); } - doc->base.del( doc ); } } --- 194,207 ---- if( StrOp.len( cmd ) > 0 ) { iODoc doc = DocOp.parse( cmd ); ! if( doc != NULL ) { ! iONode nodeA = DocOp.getRootNode( doc ); ! TraceOp.trc( name, TRCLEVEL_INFO, __LINE__, 9999, "cmdReader() %s.", cmd ); ! if( nodeA != NULL ) { ! const char* thName = ThreadOp.getName( infoWriter ); ! wCommand.setserver( nodeA, thName ); ! Data(o->ClntCon)->callback( Data(o->ClntCon)->callbackObj, nodeA ); ! } ! doc->base.del( doc ); } } } |
|
From: rob v. <ro...@us...> - 2005-11-29 20:37:43
|
Update of /cvsroot/rojav/rocrail/public In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16681 Modified Files: wrapper.xml Log Message: <No Comment Entered> Index: wrapper.xml =================================================================== RCS file: /cvsroot/rojav/rocrail/public/wrapper.xml,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** wrapper.xml 23 Nov 2005 20:26:47 -0000 1.66 --- wrapper.xml 29 Nov 2005 20:37:32 -0000 1.67 *************** *** 200,203 **** --- 200,204 ---- <sw cardinality="n" wrappername="Switch" remark="Switch definition."> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="iid" vt="string" defval="NULL" range="*" remark="Interface ID"/> <var name="unit" vt="int" defval="0" range="1-*" required="true" remark="Switch unit number. (e.g. k83)"/> *************** *** 236,239 **** --- 237,241 ---- <fb cardinality="n" wrappername="Feedback"> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="iid" vt="string" defval="NULL" range="*" remark="Interface ID."/> <var name="unit" vt="int" defval="0" range="1-*" required="true" remark="Feedback unit number. (e.g. s88)"/> *************** *** 303,306 **** --- 305,309 ---- <st cardinality="n" wrappername="Street" remark="A street defines a destination fromone block to another including switch positions."> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="bka" vt="string" defval="NULL" range="*" required="true" remark="From block ID."/> <var name="bkb" vt="string" defval="NULL" range="*" required="true" remark="To block ID"/> *************** *** 318,321 **** --- 321,325 ---- <tk cardinality="n" wrappername="Track" remark="None active piece of plan."> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="x" vt="int" defval="0" range="0-*"/> <var name="y" vt="int" defval="0" range="0-*"/> *************** *** 330,333 **** --- 334,338 ---- <tt cardinality="n" wrappername="Turntable" remark="Turntable definition."> <var name="id" vt="string" defval="" range="*" required="true"/> + <var name="desc" vt="string" defval="" range="*" remark="description"/> <var name="x" vt="int" defval="0" range="0-*"/> <var name="y" vt="int" defval="0" range="0-*"/> |
|
From: rob v. <ro...@us...> - 2005-11-29 17:42:19
|
Update of /cvsroot/rojav/rocs/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5193 Modified Files: mem.c node.c Log Message: bugfix! Index: node.c =================================================================== RCS file: /cvsroot/rojav/rocs/impl/node.c,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** node.c 24 Nov 2005 09:26:22 -0000 1.32 --- node.c 29 Nov 2005 17:42:10 -0000 1.33 *************** *** 151,155 **** if( data->childs[i] == child ) { data->childs[i] = 0; ! memcpy( &data->childs[i], &data->childs[i+1], data->childCnt - (i + 1) ); data->childCnt--; data->childs = reallocMem( data->childs, (data->childCnt+1) * sizeof( iONode ) ); --- 151,155 ---- if( data->childs[i] == child ) { data->childs[i] = 0; ! memcpy( &data->childs[i], &data->childs[i+1], ( data->childCnt - (i + 1) )* sizeof( iONode ) ); data->childCnt--; data->childs = reallocMem( data->childs, (data->childCnt+1) * sizeof( iONode ) ); Index: mem.c =================================================================== RCS file: /cvsroot/rojav/rocs/impl/mem.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** mem.c 27 Jul 2004 09:09:24 -0000 1.17 --- mem.c 29 Nov 2005 17:42:10 -0000 1.18 *************** *** 114,118 **** mt.p = p; if( newP != NULL ) { ! memcpy( newP, p, m->size ); __mem_free_magic( p, file, line ); return newP; --- 114,118 ---- mt.p = p; if( newP != NULL ) { ! memcpy( newP, p, newsize ); __mem_free_magic( p, file, line ); return newP; |
|
From: rob v. <ro...@us...> - 2005-11-28 20:22:18
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9773 Modified Files: guiapp.cpp item.cpp Log Message: <No Comment Entered> Index: item.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/item.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** item.cpp 28 Nov 2005 17:05:40 -0000 1.29 --- item.cpp 28 Nov 2005 20:22:07 -0000 1.30 *************** *** 44,47 **** --- 44,48 ---- #include "rocgui/dialogs/locdialog.h" #include "rocgui/dialogs/trackdialog.h" + #include "rocgui/dialogs/turntabledialog.h" #include "rocrail/wrapper/public/AutoCmd.h" *************** *** 589,592 **** --- 590,606 ---- tkDlg->Destroy(); } + else if( StrOp.equals( wTurntable.name(), name ) ) { + TurntableDialog* ttDlg = new TurntableDialog( this, m_Props ); + if( wxID_OK == ttDlg->ShowModal() ) { + /* Notify RocRail. */ + iONode cmd = NodeOp.inst( wModelCmd.name(), NULL, ELEMENT_NODE ); + wModelCmd.setcmd( cmd, wModelCmd.modify ); + NodeOp.addChild( cmd, (iONode)m_Props->base.clone( m_Props ) ); + wxGetApp().sendToRocrail( cmd ); + cmd->base.del(cmd); + } + Refresh(); + ttDlg->Destroy(); + } else { CRjPropDlg* propDlg = new CRjPropDlg(this, m_Props ); Index: guiapp.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/guiapp.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** guiapp.cpp 27 Nov 2005 21:45:33 -0000 1.43 --- guiapp.cpp 28 Nov 2005 20:22:07 -0000 1.44 *************** *** 563,569 **** --- 563,571 ---- */ l_ActiveLocs->SetCellValue(l_ActiveLocs->GetNumberRows()-1, 0, id ); + l_ActiveLocs->SetReadOnly( l_ActiveLocs->GetNumberRows()-1, 0, true ); char* val = StrOp.fmt( "%d", wLoc.getaddr( lc ) ); l_ActiveLocs->SetCellValue(l_ActiveLocs->GetNumberRows()-1, 1, val ); + l_ActiveLocs->SetReadOnly( l_ActiveLocs->GetNumberRows()-1, 1, true ); StrOp.free( val ); iONode bk = findBlock4Loc(id); *************** *** 571,574 **** --- 573,577 ---- l_ActiveLocs->SetCellValue(l_ActiveLocs->GetNumberRows()-1, 2, wBlock.getid( bk ) ); } + l_ActiveLocs->SetReadOnly( l_ActiveLocs->GetNumberRows()-1, 2, true ); } } |
|
From: rob v. <ro...@us...> - 2005-11-28 20:21:48
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9471 Modified Files: rocgui-dialogs.pjd trackdialog.cpp trackdialog.h Log Message: <No Comment Entered> Index: trackdialog.h =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/trackdialog.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** trackdialog.h 28 Nov 2005 17:06:57 -0000 1.1 --- trackdialog.h 28 Nov 2005 20:21:34 -0000 1.2 *************** *** 47,51 **** #define ID_NOTEBOOK_TRACK 10125 #define ID_PANEL_TK_GENERAL 10000 ! #define wxID_STATIC_SW_ID 10001 #define ID_TEXTCTRL_TK_ID 10002 #define wxID_STATIC_TK_TYPE 10007 --- 47,51 ---- #define ID_NOTEBOOK_TRACK 10125 #define ID_PANEL_TK_GENERAL 10000 ! #define wxID_STATIC_TK_ID 10001 #define ID_TEXTCTRL_TK_ID 10002 #define wxID_STATIC_TK_TYPE 10007 Index: trackdialog.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/trackdialog.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** trackdialog.cpp 28 Nov 2005 17:06:57 -0000 1.1 --- trackdialog.cpp 28 Nov 2005 20:21:34 -0000 1.2 *************** *** 178,182 **** m_GeneralPanel->SetSizer(itemFlexGridSizer5); ! m_LabelID = new wxStaticText( m_GeneralPanel, wxID_STATIC_SW_ID, _("id"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelID, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); --- 178,182 ---- m_GeneralPanel->SetSizer(itemFlexGridSizer5); ! m_LabelID = new wxStaticText( m_GeneralPanel, wxID_STATIC_TK_ID, _("id"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelID, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); *************** *** 260,264 **** void TrackDialog::OnCancelClick( wxCommandEvent& event ) { ! EndModal( wxID_OK ); } --- 260,264 ---- void TrackDialog::OnCancelClick( wxCommandEvent& event ) { ! EndModal( 0 ); } Index: rocgui-dialogs.pjd =================================================================== RCS file: /cvsroot/rojav/rocgui/dialogs/rocgui-dialogs.pjd,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** rocgui-dialogs.pjd 28 Nov 2005 17:04:58 -0000 1.23 --- rocgui-dialogs.pjd 28 Nov 2005 20:21:34 -0000 1.24 *************** *** 13,17 **** <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">237</value> <value name="xrc_filename" type="string"></value> <value name="convert_images_to_xpm" type="bool">FALSE</value> --- 13,17 ---- <value name="author" type="string"></value> <value name="description" type="string"></value> ! <value name="doc_count" type="Integer">262</value> <value name="xrc_filename" type="string"></value> [...7544 lines suppressed...] ! <value name="proxy-wxTOP" type="bool">TRUE</value> ! <value name="proxy-wxBOTTOM" type="bool">TRUE</value> ! <value name="proxy-wxSHAPED" type="bool">FALSE</value> ! <value name="proxy-wxADJUST_MINSIZE" type="bool">FALSE</value> ! <value name="proxy-wxFIXED_MINSIZE" type="bool">FALSE</value> ! <value name="proxy-Custom arguments" type="string"></value> ! <value name="proxy-Custom ctor arguments" type="string"></value> ! </path> ! <path name="ID000105"> ! <value name="title" type="string">wxButton: wxID_CANCEL</value> ! <value name="id" type="Integer">187257064</value> ! <value name="type" type="string">dialog-control-document</value> ! <value name="filename" type="string"></value> ! <value name="icon-name" type="string">dialogcontrol</value> ! <value name="is-transient" type="Integer">0</value> ! <value name="owns-file" type="Integer">1</value> ! <value name="title-mode" type="Integer">0</value> ! <value name="parent" type="Integer">187490944</value> <value name="locked" type="Integer">1</value> <value name="created" type="string">28/10/2005</value> |
|
From: rob v. <ro...@us...> - 2005-11-28 20:20:16
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9324 Added Files: turntabledialog.h Log Message: <No Comment Entered> --- NEW FILE: turntabledialog.h --- /** ------------------------------------------------------------ * Module: * Object: * ------------------------------------------------------------ * $Source: /cvsroot/rojav/rocgui/dialogs/turntabledialog.h,v $ * $Author: robvrs $ * $Date: 2005/11/28 20:19:58 $ * $Revision: 1.1 $ * $Name: $ */ #ifndef _TURNTABLEDIALOG_H_ #define _TURNTABLEDIALOG_H_ #if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "turntabledialog.cpp" #endif /*! * Includes */ ////@begin includes #include "wx/notebook.h" #include "wx/grid.h" ////@end includes #include "rocs/public/node.h" /*! * Forward declarations */ ////@begin forward declarations class wxNotebook; class wxGrid; ////@end forward declarations /*! * Control identifiers */ ////@begin control identifiers #define ID_TURNTABLE_DIALOG 10126 #define SYMBOL_TURNTABLEDIALOG_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX #define SYMBOL_TURNTABLEDIALOG_TITLE _("TurntableDialog") #define SYMBOL_TURNTABLEDIALOG_IDNAME ID_TURNTABLE_DIALOG #define SYMBOL_TURNTABLEDIALOG_SIZE wxSize(400, 300) #define SYMBOL_TURNTABLEDIALOG_POSITION wxDefaultPosition #define ID_NOTEBOOK_TURNTABLE 10003 #define ID_PANEL_TT_GENERAL 10000 #define wxID_STATIC_TT_ID 10001 #define ID_TEXTCTRL_TT_ID 10002 #define wxID_STATIC_TT_TYPE 10004 #define ID_COMBOBOX_TT_TYPE 10005 #define ID_PANEL_TT_LOCATION 10006 #define wxID_STATIC_TT_X 10010 #define ID_TEXTCTRL_TT_X 10011 #define wxID_STATIC_TT_Y 10012 #define ID_TEXTCTRL_TT_Y 10013 #define wxID_STATIC_TT_Z 10014 #define ID_TEXTCTRL_TT_Z 10015 #define ID_RADIOBOX_TT_ORI 10016 #define ID_PANEL_TT_TRACKS 10127 #define ID_GRID 10128 ////@end control identifiers /*! * Compatibility */ #ifndef wxCLOSE_BOX #define wxCLOSE_BOX 0x1000 #endif #ifndef wxFIXED_MINSIZE #define wxFIXED_MINSIZE 0 #endif /*! * TurntableDialog class declaration */ class TurntableDialog: public wxDialog { DECLARE_DYNAMIC_CLASS( TurntableDialog ) DECLARE_EVENT_TABLE() void initValues(); void evaluate(); public: /// Constructors TurntableDialog( ); TurntableDialog( wxWindow* parent, iONode p_Props ); TurntableDialog( wxWindow* parent, wxWindowID id = SYMBOL_TURNTABLEDIALOG_IDNAME, const wxString& caption = SYMBOL_TURNTABLEDIALOG_TITLE, const wxPoint& pos = SYMBOL_TURNTABLEDIALOG_POSITION, const wxSize& size = SYMBOL_TURNTABLEDIALOG_SIZE, long style = SYMBOL_TURNTABLEDIALOG_STYLE ); /// Creation bool Create( wxWindow* parent, wxWindowID id = SYMBOL_TURNTABLEDIALOG_IDNAME, const wxString& caption = SYMBOL_TURNTABLEDIALOG_TITLE, const wxPoint& pos = SYMBOL_TURNTABLEDIALOG_POSITION, const wxSize& size = SYMBOL_TURNTABLEDIALOG_SIZE, long style = SYMBOL_TURNTABLEDIALOG_STYLE ); /// Creates the controls and sizers void CreateControls(); ////@begin TurntableDialog event handler declarations /// wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID void OnCellLeftClick( wxGridEvent& event ); /// wxEVT_GRID_CELL_RIGHT_CLICK event handler for ID_GRID void OnCellRightClick( wxGridEvent& event ); /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK void OnOkClick( wxCommandEvent& event ); /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL void OnCancelClick( wxCommandEvent& event ); ////@end TurntableDialog event handler declarations ////@begin TurntableDialog member function declarations iONode GetProps() const { return m_Props ; } void SetProps(iONode value) { m_Props = value ; } /// Retrieves bitmap resources wxBitmap GetBitmapResource( const wxString& name ); /// Retrieves icon resources wxIcon GetIconResource( const wxString& name ); ////@end TurntableDialog member function declarations /// Should we show tooltips? static bool ShowToolTips(); ////@begin TurntableDialog member variables wxNotebook* m_Notebook; wxPanel* m_GeneralPanel; wxStaticText* m_LabelID; wxTextCtrl* m_ID; wxStaticText* m_LabelType; wxComboBox* m_Type; wxPanel* m_LocationPanel; wxStaticText* m_LabelX; wxTextCtrl* m_x; wxStaticText* m_LabelY; wxTextCtrl* m_y; wxStaticText* m_LabelZ; wxTextCtrl* m_z; wxRadioBox* m_ori; wxPanel* m_TracksPanel; wxGrid* m_TracksGrid; wxButton* m_OK; wxButton* m_Cancel; iONode m_Props; ////@end TurntableDialog member variables }; #endif // _TURNTABLEDIALOG_H_ |
|
From: rob v. <ro...@us...> - 2005-11-28 20:19:37
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9247 Added Files: turntabledialog.cpp Log Message: <No Comment Entered> --- NEW FILE: turntabledialog.cpp --- /** ------------------------------------------------------------ * Module: * Object: * ------------------------------------------------------------ * $Source: /cvsroot/rojav/rocgui/dialogs/turntabledialog.cpp,v $ * $Author: robvrs $ * $Date: 2005/11/28 20:19:29 $ * $Revision: 1.1 $ * $Name: $ */ #if defined(__GNUG__) && !defined(__APPLE__) #pragma implementation "turntabledialog.h" #endif // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif ////@begin includes ////@end includes #include "turntabledialog.h" ////@begin XPM images ////@end XPM images #include "rocrail/wrapper/public/Turntable.h" #include "rocrail/wrapper/public/TTTrack.h" #include "rocrail/wrapper/public/Item.h" #include "rocrail/wrapper/public/Plan.h" #include "rocgui/public/guiapp.h" /*! * TurntableDialog type definition */ IMPLEMENT_DYNAMIC_CLASS( TurntableDialog, wxDialog ) /*! * TurntableDialog event table definition */ BEGIN_EVENT_TABLE( TurntableDialog, wxDialog ) ////@begin TurntableDialog event table entries EVT_GRID_CELL_LEFT_CLICK( TurntableDialog::OnCellLeftClick ) EVT_GRID_CELL_RIGHT_CLICK( TurntableDialog::OnCellRightClick ) EVT_BUTTON( wxID_OK, TurntableDialog::OnOkClick ) EVT_BUTTON( wxID_CANCEL, TurntableDialog::OnCancelClick ) ////@end TurntableDialog event table entries END_EVENT_TABLE() /*! * TurntableDialog constructors */ TurntableDialog::TurntableDialog( ) { } TurntableDialog::TurntableDialog( wxWindow* parent, iONode p_Props ) { Create(parent, -1, "TurntableDialog"); wxFont* font = new wxFont( m_TracksGrid->GetDefaultCellFont() ); font->SetPointSize( (int)(font->GetPointSize() - 1 ) ); m_TracksGrid->SetDefaultCellFont( *font ); m_TracksGrid->SetColLabelValue(0, "nr" ); m_TracksGrid->SetColLabelValue(1, "pos-fb" ); m_TracksGrid->SetColLabelValue(2, "loc-fb" ); m_TracksGrid->SetColLabelValue(3, "block" ); m_TracksGrid->AutoSizeColumns(); m_TracksGrid->AutoSizeRows(); m_Props = p_Props; initValues(); } TurntableDialog::TurntableDialog( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Create(parent, id, caption, pos, size, style); } void TurntableDialog::initValues() { // General m_ID->SetValue( wTurntable.getid( m_Props ) ); m_Type->Append( wTurntable.m6082 ); m_Type->Append( wTurntable.m7687 ); m_Type->SetStringSelection( wTurntable.gettype( m_Props ) ); // Location char* str = StrOp.fmt( "%d", wTurntable.getx( m_Props ) ); m_x->SetValue( str ); StrOp.free( str ); str = StrOp.fmt( "%d", wTurntable.gety( m_Props ) ); m_y->SetValue( str ); StrOp.free( str ); str = StrOp.fmt( "%d", wTurntable.getz( m_Props ) ); m_z->SetValue( str ); StrOp.free( str ); if( StrOp.equals( wItem.north, wTurntable.getori( m_Props ) ) ) m_ori->SetSelection( 0 ); else if( StrOp.equals( wItem.east, wTurntable.getori( m_Props ) ) || wTurntable.getori( m_Props ) == NULL ) m_ori->SetSelection( 1 ); else if( StrOp.equals( wItem.south, wTurntable.getori( m_Props ) ) ) m_ori->SetSelection( 2 ); else if( StrOp.equals( wItem.west, wTurntable.getori( m_Props ) ) ) m_ori->SetSelection( 3 ); // Tracks m_TracksGrid->DeleteRows(0,m_TracksGrid->GetNumberRows()); iONode track = wTurntable.gettrack( m_Props ); while( track != NULL ) { m_TracksGrid->AppendRows(); char* nr = StrOp.fmt( "%d", wTTTrack.getnr( track ) ); m_TracksGrid->SetCellValue(m_TracksGrid->GetNumberRows()-1, 0, nr ); StrOp.free( nr ); m_TracksGrid->SetCellValue(m_TracksGrid->GetNumberRows()-1, 1, wTTTrack.getposfb( track ) ); m_TracksGrid->SetCellValue(m_TracksGrid->GetNumberRows()-1, 2, wTTTrack.getlocfb( track ) ); const char* blockid = wTTTrack.getblock( track )==NULL?"":wTTTrack.getblock( track ); m_TracksGrid->SetCellValue(m_TracksGrid->GetNumberRows()-1, 3, blockid ); m_TracksGrid->SetReadOnly( m_TracksGrid->GetNumberRows()-1, 0, true ); m_TracksGrid->SetReadOnly( m_TracksGrid->GetNumberRows()-1, 1, true ); m_TracksGrid->SetReadOnly( m_TracksGrid->GetNumberRows()-1, 2, true ); m_TracksGrid->SetReadOnly( m_TracksGrid->GetNumberRows()-1, 3, true ); track = wTurntable.nexttrack( m_Props, track ); }; m_TracksGrid->Fit(); m_TracksGrid->UpdateDimensions(); } void TurntableDialog::evaluate() { // General wTurntable.setid( m_Props, m_ID->GetValue() ); wTurntable.settype( m_Props, m_Type->GetStringSelection() ); // Location wTurntable.setx( m_Props, atoi( m_x->GetValue() ) ); wTurntable.sety( m_Props, atoi( m_y->GetValue() ) ); wTurntable.setz( m_Props, atoi( m_z->GetValue() ) ); int ori = m_ori->GetSelection(); if( ori == 0 ) wTurntable.setori( m_Props, wItem.north ); else if( ori == 1 ) wTurntable.setori( m_Props, wItem.east ); else if( ori == 2 ) wTurntable.setori( m_Props, wItem.south ); else if( ori == 3 ) wTurntable.setori( m_Props, wItem.west ); } /*! * TurntableDialog creator */ bool TurntableDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { ////@begin TurntableDialog member initialisation m_Notebook = NULL; m_GeneralPanel = NULL; m_LabelID = NULL; m_ID = NULL; m_LabelType = NULL; m_Type = NULL; m_LocationPanel = NULL; m_LabelX = NULL; m_x = NULL; m_LabelY = NULL; m_y = NULL; m_LabelZ = NULL; m_z = NULL; m_ori = NULL; m_TracksPanel = NULL; m_TracksGrid = NULL; m_OK = NULL; m_Cancel = NULL; ////@end TurntableDialog member initialisation ////@begin TurntableDialog creation SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); ////@end TurntableDialog creation return true; } /*! * Control creation for TurntableDialog */ void TurntableDialog::CreateControls() { ////@begin TurntableDialog content construction TurntableDialog* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); itemDialog1->SetSizer(itemBoxSizer2); m_Notebook = new wxNotebook( itemDialog1, ID_NOTEBOOK_TURNTABLE, wxDefaultPosition, wxDefaultSize, wxNB_TOP ); m_GeneralPanel = new wxPanel( m_Notebook, ID_PANEL_TT_GENERAL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxFlexGridSizer* itemFlexGridSizer5 = new wxFlexGridSizer(2, 2, 0, 0); itemFlexGridSizer5->AddGrowableCol(1); m_GeneralPanel->SetSizer(itemFlexGridSizer5); m_LabelID = new wxStaticText( m_GeneralPanel, wxID_STATIC_TT_ID, _("id"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelID, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_ID = new wxTextCtrl( m_GeneralPanel, ID_TEXTCTRL_TT_ID, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_ID, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelType = new wxStaticText( m_GeneralPanel, wxID_STATIC_TT_TYPE, _("type"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelType, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxString* m_TypeStrings = NULL; m_Type = new wxComboBox( m_GeneralPanel, ID_COMBOBOX_TT_TYPE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_TypeStrings, wxCB_DROPDOWN ); itemFlexGridSizer5->Add(m_Type, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_Notebook->AddPage(m_GeneralPanel, _("General")); m_LocationPanel = new wxPanel( m_Notebook, ID_PANEL_TT_LOCATION, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxHORIZONTAL); m_LocationPanel->SetSizer(itemBoxSizer11); wxFlexGridSizer* itemFlexGridSizer12 = new wxFlexGridSizer(2, 2, 0, 0); itemBoxSizer11->Add(itemFlexGridSizer12, 0, wxALIGN_TOP|wxALL, 5); m_LabelX = new wxStaticText( m_LocationPanel, wxID_STATIC_TT_X, _("x"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelX, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_x = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TT_X, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_x, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_TOP|wxALL, 5); m_LabelY = new wxStaticText( m_LocationPanel, wxID_STATIC_TT_Y, _("y"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelY, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_y = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TT_Y, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_y, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelZ = new wxStaticText( m_LocationPanel, wxID_STATIC_TT_Z, _("z"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelZ, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_z = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TT_Z, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_z, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxString m_oriStrings[] = { _("&north"), _("&east"), _("&south"), _("&west") }; m_ori = new wxRadioBox( m_LocationPanel, ID_RADIOBOX_TT_ORI, _("Orientation"), wxDefaultPosition, wxDefaultSize, 4, m_oriStrings, 1, wxRA_SPECIFY_COLS ); itemBoxSizer11->Add(m_ori, 0, wxALIGN_TOP|wxALL, 5); m_Notebook->AddPage(m_LocationPanel, _("Location")); m_TracksPanel = new wxPanel( m_Notebook, ID_PANEL_TT_TRACKS, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL); m_TracksPanel->SetSizer(itemBoxSizer21); m_TracksGrid = new wxGrid( m_TracksPanel, ID_GRID, wxDefaultPosition, wxSize(220, 200), wxSUNKEN_BORDER|wxHSCROLL|wxVSCROLL ); m_TracksGrid->SetDefaultColSize(50); m_TracksGrid->SetDefaultRowSize(20); m_TracksGrid->SetColLabelSize(20); m_TracksGrid->SetRowLabelSize(0); m_TracksGrid->CreateGrid(1, 4, wxGrid::wxGridSelectRows); itemBoxSizer21->Add(m_TracksGrid, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 2); m_Notebook->AddPage(m_TracksPanel, _("Tracks")); itemBoxSizer2->Add(m_Notebook, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy23 = new wxStdDialogButtonSizer; itemBoxSizer2->Add(itemStdDialogButtonSizerProxy23, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); itemStdDialogButtonSizerProxy23->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); itemStdDialogButtonSizerProxy23->AddButton(m_Cancel); itemStdDialogButtonSizerProxy23->Realize(); ////@end TurntableDialog content construction } /*! * Should we show tooltips? */ bool TurntableDialog::ShowToolTips() { return true; } /*! * Get bitmap resources */ wxBitmap TurntableDialog::GetBitmapResource( const wxString& name ) { // Bitmap retrieval ////@begin TurntableDialog bitmap retrieval wxUnusedVar(name); return wxNullBitmap; ////@end TurntableDialog bitmap retrieval } /*! * Get icon resources */ wxIcon TurntableDialog::GetIconResource( const wxString& name ) { // Icon retrieval ////@begin TurntableDialog icon retrieval wxUnusedVar(name); return wxNullIcon; ////@end TurntableDialog icon retrieval } /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK */ void TurntableDialog::OnOkClick( wxCommandEvent& event ) { evaluate(); EndModal( wxID_OK ); } /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL */ void TurntableDialog::OnCancelClick( wxCommandEvent& event ) { EndModal( 0 ); } /*! * wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID */ void TurntableDialog::OnCellLeftClick( wxGridEvent& event ) { ////@begin wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. // Before editing this code, remove the block markers. event.Skip(true); ////@end wxEVT_GRID_CELL_LEFT_CLICK event handler for ID_GRID in TurntableDialog. } /*! * wxEVT_GRID_CELL_RIGHT_CLICK event handler for ID_GRID */ void TurntableDialog::OnCellRightClick( wxGridEvent& event ) { m_TracksGrid->SelectRow(event.GetRow()); wxString str = m_TracksGrid->GetCellValue( event.GetRow(), 0 ); TraceOp.trc( "ttdlg", TRCLEVEL_INFO, __LINE__, 9999, "OnCellRightClick %s", str.c_str() ); wxMenu menu( str.c_str() ); menu.Append( -1, "Add track..."); menu.Append( -1, "Delete track"); menu.AppendSeparator(); menu.Append( -1, "Properties..."); PopupMenu(&menu, event.GetPosition().x, event.GetPosition().y ); event.Skip(true); } |
|
From: rob v. <ro...@us...> - 2005-11-28 17:07:12
|
Update of /cvsroot/rojav/rocgui/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28096 Added Files: trackdialog.cpp trackdialog.h Log Message: --- NEW FILE: trackdialog.h --- /** ------------------------------------------------------------ * Module: * Object: * ------------------------------------------------------------ * $Source: /cvsroot/rojav/rocgui/dialogs/trackdialog.h,v $ * $Author: robvrs $ * $Date: 2005/11/28 17:06:57 $ * $Revision: 1.1 $ * $Name: $ */ #ifndef _TRACKDIALOG_H_ #define _TRACKDIALOG_H_ #if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "trackdialog.cpp" #endif /*! * Includes */ ////@begin includes #include "wx/notebook.h" ////@end includes #include "rocs/public/node.h" /*! * Forward declarations */ ////@begin forward declarations class wxNotebook; ////@end forward declarations /*! * Control identifiers */ ////@begin control identifiers #define ID_DIALOG 10124 #define SYMBOL_TRACKDIALOG_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX #define SYMBOL_TRACKDIALOG_TITLE _("Dialog") #define SYMBOL_TRACKDIALOG_IDNAME ID_DIALOG #define SYMBOL_TRACKDIALOG_SIZE wxSize(400, 300) #define SYMBOL_TRACKDIALOG_POSITION wxDefaultPosition #define ID_NOTEBOOK_TRACK 10125 #define ID_PANEL_TK_GENERAL 10000 #define wxID_STATIC_SW_ID 10001 #define ID_TEXTCTRL_TK_ID 10002 #define wxID_STATIC_TK_TYPE 10007 #define ID_COMBOBOX_TK_TYPE 10008 #define ID_PANEL_TK_LOCATION 10009 #define wxID_STATIC_TK_X 10010 #define ID_TEXTCTRL_TK_X 10011 #define wxID_STATIC_TK_Y 10012 #define ID_TEXTCTRL_TK_Y 10013 #define wxID_STATIC_TK_Z 10014 #define ID_TEXTCTRL_TK_Z 10015 #define ID_RADIOBOX_TK_ORI 10016 ////@end control identifiers /*! * Compatibility */ #ifndef wxCLOSE_BOX #define wxCLOSE_BOX 0x1000 #endif #ifndef wxFIXED_MINSIZE #define wxFIXED_MINSIZE 0 #endif /*! * TrackDialog class declaration */ class TrackDialog: public wxDialog { DECLARE_DYNAMIC_CLASS( TrackDialog ) DECLARE_EVENT_TABLE() void initValues(); void evaluate(); public: /// Constructors TrackDialog( ); TrackDialog( wxWindow* parent, iONode p_Props ); /// Creation bool Create( wxWindow* parent, wxWindowID id = SYMBOL_TRACKDIALOG_IDNAME, const wxString& caption = SYMBOL_TRACKDIALOG_TITLE, const wxPoint& pos = SYMBOL_TRACKDIALOG_POSITION, const wxSize& size = SYMBOL_TRACKDIALOG_SIZE, long style = SYMBOL_TRACKDIALOG_STYLE ); /// Creates the controls and sizers void CreateControls(); ////@begin TrackDialog event handler declarations /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK void OnOkClick( wxCommandEvent& event ); /// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL void OnCancelClick( wxCommandEvent& event ); ////@end TrackDialog event handler declarations ////@begin TrackDialog member function declarations iONode GetProps() const { return m_Props ; } void SetProps(iONode value) { m_Props = value ; } /// Retrieves bitmap resources wxBitmap GetBitmapResource( const wxString& name ); /// Retrieves icon resources wxIcon GetIconResource( const wxString& name ); ////@end TrackDialog member function declarations /// Should we show tooltips? static bool ShowToolTips(); ////@begin TrackDialog member variables wxNotebook* m_Notebook; wxPanel* m_GeneralPanel; wxStaticText* m_LabelID; wxTextCtrl* m_ID; wxStaticText* m_LabelType; wxComboBox* m_Type; wxPanel* m_LocationPanel; wxStaticText* m_LabelX; wxTextCtrl* m_x; wxStaticText* m_LabelY; wxTextCtrl* m_y; wxStaticText* m_LabelZ; wxTextCtrl* m_z; wxRadioBox* m_ori; wxButton* m_OK; wxButton* m_Cancel; iONode m_Props; ////@end TrackDialog member variables }; #endif // _TRACKDIALOG_H_ --- NEW FILE: trackdialog.cpp --- /** ------------------------------------------------------------ * Module: * Object: * ------------------------------------------------------------ * $Source: /cvsroot/rojav/rocgui/dialogs/trackdialog.cpp,v $ * $Author: robvrs $ * $Date: 2005/11/28 17:06:57 $ * $Revision: 1.1 $ * $Name: $ */ #if defined(__GNUG__) && !defined(__APPLE__) #pragma implementation "trackdialog.cpp" #endif // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif ////@begin includes ////@end includes #include "trackdialog.h" #include "rocrail/wrapper/public/Track.h" #include "rocrail/wrapper/public/Item.h" #include "rocrail/wrapper/public/Plan.h" #include "rocgui/public/guiapp.h" ////@begin XPM images ////@end XPM images /*! * TrackDialog type definition */ IMPLEMENT_DYNAMIC_CLASS( TrackDialog, wxDialog ) /*! * TrackDialog event table definition */ BEGIN_EVENT_TABLE( TrackDialog, wxDialog ) ////@begin TrackDialog event table entries EVT_BUTTON( wxID_OK, TrackDialog::OnOkClick ) EVT_BUTTON( wxID_CANCEL, TrackDialog::OnCancelClick ) ////@end TrackDialog event table entries END_EVENT_TABLE() /*! * TrackDialog constructors */ TrackDialog::TrackDialog( ) { } TrackDialog::TrackDialog( wxWindow* parent, iONode l_Props ) { Create(parent, -1, "TrackDialog"); m_Props = l_Props; initValues(); } void TrackDialog::initValues() { // General m_ID->SetValue( wTrack.getid( m_Props ) ); m_Type->Append( wTrack.straight ); m_Type->Append( wTrack.curve ); m_Type->SetStringSelection( wTrack.gettype( m_Props ) ); // Location char* str = StrOp.fmt( "%d", wTrack.getx( m_Props ) ); m_x->SetValue( str ); StrOp.free( str ); str = StrOp.fmt( "%d", wTrack.gety( m_Props ) ); m_y->SetValue( str ); StrOp.free( str ); str = StrOp.fmt( "%d", wTrack.getz( m_Props ) ); m_z->SetValue( str ); StrOp.free( str ); if( StrOp.equals( wItem.north, wTrack.getori( m_Props ) ) ) m_ori->SetSelection( 0 ); else if( StrOp.equals( wItem.east, wTrack.getori( m_Props ) ) || wTrack.getori( m_Props ) == NULL ) m_ori->SetSelection( 1 ); else if( StrOp.equals( wItem.south, wTrack.getori( m_Props ) ) ) m_ori->SetSelection( 2 ); else if( StrOp.equals( wItem.west, wTrack.getori( m_Props ) ) ) m_ori->SetSelection( 3 ); } void TrackDialog::evaluate() { // General wTrack.setid( m_Props, m_ID->GetValue() ); wTrack.settype( m_Props, m_Type->GetStringSelection() ); // Location wTrack.setx( m_Props, atoi( m_x->GetValue() ) ); wTrack.sety( m_Props, atoi( m_y->GetValue() ) ); wTrack.setz( m_Props, atoi( m_z->GetValue() ) ); int ori = m_ori->GetSelection(); if( ori == 0 ) wTrack.setori( m_Props, wItem.north ); else if( ori == 1 ) wTrack.setori( m_Props, wItem.east ); else if( ori == 2 ) wTrack.setori( m_Props, wItem.south ); else if( ori == 3 ) wTrack.setori( m_Props, wItem.west ); } /*! * MyDialog creator */ bool TrackDialog::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { ////@begin TrackDialog member initialisation m_Props = NULL; m_Notebook = NULL; m_GeneralPanel = NULL; m_LabelID = NULL; m_ID = NULL; m_LabelType = NULL; m_Type = NULL; m_LocationPanel = NULL; m_LabelX = NULL; m_x = NULL; m_LabelY = NULL; m_y = NULL; m_LabelZ = NULL; m_z = NULL; m_ori = NULL; m_OK = NULL; m_Cancel = NULL; ////@end TrackDialog member initialisation ////@begin TrackDialog creation SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS); wxDialog::Create( parent, id, caption, pos, size, style ); CreateControls(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); ////@end TrackDialog creation return true; } /*! * Control creation for MyDialog */ void TrackDialog::CreateControls() { ////@begin TrackDialog content construction TrackDialog* itemDialog1 = this; wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL); itemDialog1->SetSizer(itemBoxSizer2); m_Notebook = new wxNotebook( itemDialog1, ID_NOTEBOOK_TRACK, wxDefaultPosition, wxDefaultSize, wxNB_TOP ); m_GeneralPanel = new wxPanel( m_Notebook, ID_PANEL_TK_GENERAL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxFlexGridSizer* itemFlexGridSizer5 = new wxFlexGridSizer(2, 2, 0, 0); itemFlexGridSizer5->AddGrowableCol(1); m_GeneralPanel->SetSizer(itemFlexGridSizer5); m_LabelID = new wxStaticText( m_GeneralPanel, wxID_STATIC_SW_ID, _("id"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelID, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_ID = new wxTextCtrl( m_GeneralPanel, ID_TEXTCTRL_TK_ID, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_ID, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelType = new wxStaticText( m_GeneralPanel, wxID_STATIC_TK_TYPE, _("type"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer5->Add(m_LabelType, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); wxString* m_TypeStrings = NULL; m_Type = new wxComboBox( m_GeneralPanel, ID_COMBOBOX_TK_TYPE, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_TypeStrings, wxCB_DROPDOWN ); itemFlexGridSizer5->Add(m_Type, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_Notebook->AddPage(m_GeneralPanel, _("General")); m_LocationPanel = new wxPanel( m_Notebook, ID_PANEL_TK_LOCATION, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL ); wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxHORIZONTAL); m_LocationPanel->SetSizer(itemBoxSizer11); wxFlexGridSizer* itemFlexGridSizer12 = new wxFlexGridSizer(2, 2, 0, 0); itemBoxSizer11->Add(itemFlexGridSizer12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelX = new wxStaticText( m_LocationPanel, wxID_STATIC_TK_X, _("x"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelX, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_x = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TK_X, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_x, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelY = new wxStaticText( m_LocationPanel, wxID_STATIC_TK_Y, _("y"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelY, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_y = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TK_Y, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_y, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); m_LabelZ = new wxStaticText( m_LocationPanel, wxID_STATIC_TK_Z, _("z"), wxDefaultPosition, wxDefaultSize, 0 ); itemFlexGridSizer12->Add(m_LabelZ, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5); m_z = new wxTextCtrl( m_LocationPanel, ID_TEXTCTRL_TK_Z, _("0"), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE ); itemFlexGridSizer12->Add(m_z, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5); wxString m_oriStrings[] = { _("&north"), _("&east"), _("&south"), _("&west") }; m_ori = new wxRadioBox( m_LocationPanel, ID_RADIOBOX_TK_ORI, _("Orientation"), wxDefaultPosition, wxDefaultSize, 4, m_oriStrings, 1, wxRA_SPECIFY_COLS ); itemBoxSizer11->Add(m_ori, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); m_Notebook->AddPage(m_LocationPanel, _("Location")); itemBoxSizer2->Add(m_Notebook, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxStdDialogButtonSizer* itemStdDialogButtonSizerProxy20 = new wxStdDialogButtonSizer; itemBoxSizer2->Add(itemStdDialogButtonSizerProxy20, 0, wxGROW|wxALL, 5); m_OK = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 ); itemStdDialogButtonSizerProxy20->AddButton(m_OK); m_Cancel = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); itemStdDialogButtonSizerProxy20->AddButton(m_Cancel); itemStdDialogButtonSizerProxy20->Realize(); ////@end TrackDialog content construction } /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK */ void TrackDialog::OnOkClick( wxCommandEvent& event ) { evaluate(); EndModal( wxID_OK ); } /*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL */ void TrackDialog::OnCancelClick( wxCommandEvent& event ) { EndModal( wxID_OK ); } /*! * Should we show tooltips? */ bool TrackDialog::ShowToolTips() { return true; } /*! * Get bitmap resources */ wxBitmap TrackDialog::GetBitmapResource( const wxString& name ) { // Bitmap retrieval ////@begin TrackDialog bitmap retrieval wxUnusedVar(name); return wxNullBitmap; ////@end TrackDialog bitmap retrieval } /*! * Get icon resources */ wxIcon TrackDialog::GetIconResource( const wxString& name ) { // Icon retrieval ////@begin TrackDialog icon retrieval wxUnusedVar(name); return wxNullIcon; ////@end TrackDialog icon retrieval } |
|
From: rob v. <ro...@us...> - 2005-11-28 17:05:51
|
Update of /cvsroot/rojav/rocgui/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27610 Modified Files: item.cpp Log Message: <No Comment Entered> Index: item.cpp =================================================================== RCS file: /cvsroot/rojav/rocgui/impl/item.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** item.cpp 26 Nov 2005 13:42:09 -0000 1.28 --- item.cpp 28 Nov 2005 17:05:40 -0000 1.29 *************** *** 43,46 **** --- 43,47 ---- #include "rocgui/dialogs/feedbackdialog.h" #include "rocgui/dialogs/locdialog.h" + #include "rocgui/dialogs/trackdialog.h" #include "rocrail/wrapper/public/AutoCmd.h" *************** *** 575,578 **** --- 576,592 ---- fbDlg->Destroy(); } + else if( StrOp.equals( wTrack.name(), name ) ) { + TrackDialog* tkDlg = new TrackDialog( this, m_Props ); + if( wxID_OK == tkDlg->ShowModal() ) { + /* Notify RocRail. */ + iONode cmd = NodeOp.inst( wModelCmd.name(), NULL, ELEMENT_NODE ); + wModelCmd.setcmd( cmd, wModelCmd.modify ); + NodeOp.addChild( cmd, (iONode)m_Props->base.clone( m_Props ) ); + wxGetApp().sendToRocrail( cmd ); + cmd->base.del(cmd); + } + Refresh(); + tkDlg->Destroy(); + } else { CRjPropDlg* propDlg = new CRjPropDlg(this, m_Props ); |