#include "alg.h" #include "mylib.h" #include "alg_cfg.h" #include "demohelp.h" #include "view.h" db_str_rec kadr_view[] = { {"SHIFR",'C',0,9,0},{"N_ROW",'N',0,1,0},{"N_CLN",'N',0,1,0}, {"SH_1",'C',0,9,0}, {"NC_1",'N',0,1,0}, {"T_1",'N',0,1,0}, {"NZ_1",'C',0,4,0}, {"SH_2",'C',0,9,0}, {"NC_2",'N',0,1,0}, {"T_2",'N',0,1,0}, {"NZ_2",'C',0,4,0}, {"SH_3",'C',0,9,0}, {"NC_3",'N',0,1,0}, {"T_3",'N',0,1,0}, {"NZ_3",'C',0,4,0}, {"SH_4",'C',0,9,0}, {"NC_4",'N',0,1,0}, {"T_4",'N',0,1,0}, {"NZ_4",'C',0,4,0}, {"SH_5",'C',0,9,0}, {"NC_5",'N',0,1,0}, {"T_5",'N',0,1,0}, {"NZ_5",'C',0,4,0}, {"SH_6",'C',0,9,0}, {"NC_6",'N',0,1,0}, {"T_6",'N',0,1,0}, {"NZ_6",'C',0,4,0}, {"SH_7",'C',0,9,0}, {"NC_7",'N',0,1,0}, {"T_7",'N',0,1,0}, {"NZ_7",'C',0,4,0}, {"SH_8",'C',0,9,0}, {"NC_8",'N',0,1,0}, {"T_8",'N',0,1,0}, {"NZ_8",'C',0,4,0}, {"SH_9",'C',0,9,0}, {"NC_9",'N',0,1,0}, {"T_9",'N',0,1,0}, {"NZ_9",'C',0,4,0}, {"SH_10",'C',0,9,0},{"NC_10",'N',0,1,0},{"T_10",'N',0,1,0},{"NZ_10",'C',0,4,0}, {"SH_11",'C',0,9,0},{"NC_11",'N',0,1,0},{"T_11",'N',0,1,0},{"NZ_11",'C',0,4,0}, {"SH_12",'C',0,9,0},{"NC_12",'N',0,1,0},{"T_12",'N',0,1,0},{"NZ_12",'C',0,4,0}, {"SH_13",'C',0,9,0},{"NC_13",'N',0,1,0},{"T_13",'N',0,1,0},{"NZ_13",'C',0,4,0}, {"SH_14",'C',0,9,0},{"NC_14",'N',0,1,0},{"T_14",'N',0,1,0},{"NZ_14",'C',0,4,0}, {"SH_15",'C',0,9,0},{"NC_15",'N',0,1,0},{"T_15",'N',0,1,0},{"NZ_15",'C',0,4,0}, {"SH_16",'C',0,9,0},{"NC_16",'N',0,1,0},{"T_16",'N',0,1,0},{"NZ_16",'C',0,4,0}, {"SH_17",'C',0,9,0},{"NC_17",'N',0,1,0},{"T_17",'N',0,1,0},{"NZ_17",'C',0,4,0}, {"SH_18",'C',0,9,0},{"NC_18",'N',0,1,0},{"T_18",'N',0,1,0},{"NZ_18",'C',0,4,0}, {"SH_19",'C',0,9,0},{"NC_19",'N',0,1,0},{"T_19",'N',0,1,0},{"NZ_19",'C',0,4,0}, {"SH_20",'C',0,9,0},{"NC_20",'N',0,1,0},{"T_20",'N',0,1,0},{"NZ_20",'C',0,4,0}, {"SH_21",'C',0,9,0},{"NC_21",'N',0,1,0},{"T_21",'N',0,1,0},{"NZ_21",'C',0,4,0}, {"SH_22",'C',0,9,0},{"NC_22",'N',0,1,0},{"T_22",'N',0,1,0},{"NZ_22",'C',0,4,0}, {"SH_23",'C',0,9,0},{"NC_23",'N',0,1,0},{"T_23",'N',0,1,0},{"NZ_23",'C',0,4,0}, {"SH_24",'C',0,9,0},{"NC_24",'N',0,1,0},{"T_24",'N',0,1,0},{"NZ_24",'C',0,4,0}, }; TViewDialog::TViewDialog( ) : TDialog( TRect( 0, 0, 74, 17 ),""), TWindowInit( TViewDialog::initFrame ) { char str[256], *str1; int i; options |= ofCentered; helpCtx=hcAllASave; getcwd(PathDir,sizeof(PathDir)); sprintf(str,Text_msg[39],PathDir); title=newStr(str); TView *Monosel = new TView(TRect(13,2,72,12)); Monosel->options |= ofFramed; insert(Monosel); // Monosel = new TView(TRect(13,2,72,4)); Monosel->options |= ofFramed; insert(Monosel); myApp->LoadView(NameView,&ViewDBF); ViewColect = new TCompCollect(10,10); ScrollBar1 = new TScrollBar( TRect( 11, 2, 12, 13) ); insert(ScrollBar1); MyTListBox1 = new TMyTListBox(TRect( 2, 2, 11, 13), 1, ScrollBar1,NULL); insert(MyTListBox1); MyTListBox1->helpCtx=hcMax; TMyLabel *Label = new TMyLabel(TRect(2, 1, 12, 2),"Кадры",MyTListBox1,1); insert(Label); EditRow = new TEdit( TRect(22, 2, 23, 3),2,EnterNumber); insert(EditRow); Label = new TMyLabel(TRect(13, 2, 18, 3),"Строк",EditRow,1); insert(Label); EditLine = new TEdit( TRect(22, 3, 23, 4),2,EnterNumber); insert(EditLine); Label = new TMyLabel(TRect(13, 3, 20, 4),"Колонок",EditLine,1); insert(Label); for(i=0;i<6;i++) { Edit1[i] = new TEdit( TRect(13+i*10, 5, 22+i*10, 6),10,SelectInput); insert(Edit1[i]); Edit2[i] = new TEdit( TRect(13+i*10, 7, 22+i*10, 8),10,SelectInput); insert(Edit2[i]); Edit3[i] = new TEdit( TRect(13+i*10, 9, 22+i*10, 10),10,SelectInput); insert(Edit3[i]); Edit4[i] = new TEdit( TRect(13+i*10,11, 22+i*10, 12),10,SelectInput); insert(Edit4[i]); } TButton *Button = new TButton( TRect( 28,14, 38, 16),Text_msg[115], cmOK, bfDefault ); insert(Button); Button = new TButton( TRect( 41,14, 51, 16),Text_msg[114], cmCancel, bfNormal ); insert(Button); for(i=0;iGetCountItems();i++) { str1 = new char[10]; ViewDBF->GetFieldIt(i,"SHIFR",str1); ViewColect->insert(str1); } MyTListBox1->newList(ViewColect); ViewView(OldIndChek=0); MyTListBox1->select(); Modif=False; Modifs=False; } TViewDialog::~TViewDialog() { delete ViewDBF; myApp->FreeColect(ViewColect); } void TViewDialog::handleEvent ( TEvent& event ) { int i,iii,k1; char str[256],*str1,*str2; ushort control; if( event.what == evCommand && event.message.command == cmClose) { if(Modif || Modifs) { control = messageBox(Text_msg[26],mfWarning | mfOKCancel); if(control==cmOK) { if(Modif) SaveChengeView(MyTListBox1->focused); sprintf(str,Text_msg[109],PathDir,NameView); ViewDBF->SaveFile(str); } } } TDialog::handleEvent(event); #ifdef __DOS32__ if( event.what == evBroadcast && event.message.command == cmGetBuf) Modif=True; #endif if( event.what == evBroadcast && event.message.command == cmScrollBarChanged) //List ListBox { if(MyTListBox1->state & sfFocused) // ListBox1 { if(Modif) { control = messageBox(mfWarning | mfOKCancel,"Группа изменена. Сохранить изменения?"); if(control==cmOK) { SaveChengeView(OldIndChek); Modifs=True; } Modif=False; } #ifdef __DOS32__ if(getShiftState() & (kbLeftShift|kbRightShift)) { str1=(char *)ViewDBF->getItem(OldIndChek); str2=(char *)ViewDBF->getItem(MyTListBox1->focused); ViewDBF->DeleteItems(OldIndChek,0); ViewDBF->AddItem(OldIndChek,str2); ViewDBF->DeleteItems(MyTListBox1->focused,0); ViewDBF->AddItem(MyTListBox1->focused,str1); ViewColect->freeAll(); for(i=0;iGetCountItems();i++) { str1 = new char[10]; ViewDBF->GetFieldIt(i,"SHIFR",str1); ViewColect->insert(str1); } MyTListBox1->drawView(); Modifs=True; } #endif ViewView(MyTListBox1->focused); clearEvent(event); OldIndChek=MyTListBox1->focused; } } if( event.what == evBroadcast && event.message.command == cmChange) { if(EditRow->state & sfFocused) { if(EditRow->data[0]>'4') EditRow->setData((char *)"4"); if(EditRow->data[0]<'1') EditRow->setData((char *)"1"); } if(EditLine->state & sfFocused) { if(EditLine->data[0]>'6') EditLine->setData((char *)"6"); if(EditLine->data[0]<'1') EditLine->setData((char *)"1"); } MaskEdit(atoi(EditRow->data),atoi(EditLine->data)); Modif=True; } if( event.what == evCommand ) { switch( event.message.command ) { case cmOK: SaveChengeView(MyTListBox1->focused); Modifs=True; Modif=False; clearEvent(event); break; case cmCancel: ViewView(MyTListBox1->focused); Modif=False; clearEvent(event); break; case cmSave1: control = messageBox(mfWarning | mfOKCancel,Text_msg[37]); if(control!=cmOK) break; SaveChengeView(MyTListBox1->focused); sprintf(str,Text_msg[109],PathDir,NameView); ViewDBF->SaveFile(str); Modif=Modifs=False; break; case cmReLoad: control = messageBox(mfWarning | mfOKCancel,Text_msg[38]); if(control!=cmOK) break; sprintf(str,Text_msg[109],PathDir,NameView); myApp->LoadView(str,&ViewDBF); ViewColect->freeAll(); for(i=0;iGetCountItems();i++) { str1 = new char[12]; ViewDBF->GetFieldIt(i,"SHIFR",str1); ViewColect->insert(str1); } MyTListBox1->setRange( MyTListBox1->list()->getCount()); MyTListBox1->drawView(); ViewView(OldIndChek=0); Modif=Modifs=False; break; case cmInsert: case cmAdd: case cmRename: str1 = new char[12]; str1[0]=0; if(event.message.command==cmRename)ViewDBF->GetFieldIt(MyTListBox1->focused,"SHIFR",str1); control = inputBox("Ввод имени", "Группа",str1, 8); if(control==cmOK) { for(i=0;iGetCountItems();i++) { ViewDBF->GetFieldIt(i,"SHIFR",str); for(iii=7;iii>=0;iii--)if(str[iii]==' ')str[iii]=0;else break; if(!strncmp(str1,str,8)){ i= -1; break;} } if(i== -1){ DispFixErr(0,Text_msg[15],str1); delete str1; break;} if(event.message.command==cmInsert || event.message.command==cmRename) k1 = MyTListBox1->focused; if(event.message.command==cmAdd) k1 = ViewDBF->GetCountItems(); if(event.message.command==cmRename) MyTListBox1->list()->atFree(k1); else { ViewDBF->CreateItems(k1); ViewDBF->ModifiFieldIt(k1,"SHIFR",str1); ViewDBF->ModifiFieldIt(k1,"N_ROW","1"); ViewDBF->ModifiFieldIt(k1,"N_CLN","1"); } MyTListBox1->list()->atInsert(k1,str1); MyTListBox1->setRange( MyTListBox1->list()->getCount() ); MyTListBox1->drawView(); ViewView(MyTListBox1->focused); Modifs=True; } else delete str1; clearEvent(event); break; case cmDelete: if(!MyTListBox1->list()->getCount()) break; ViewDBF->DeleteItems(MyTListBox1->focused,1); MyTListBox1->list()->atFree(MyTListBox1->focused); MyTListBox1->setRange( MyTListBox1->list()->getCount() ); MyTListBox1->drawView(); ViewView(MyTListBox1->focused); Modifs=True; clearEvent(event); break; default: ; } } } void TViewDialog::ViewView(int item) { char str1[10]; int i,x,y; if(ViewDBF->GetFieldIt(item,"N_ROW",str1)== -1)return; EditRow->setData(str1); x = atoi(str1); if(ViewDBF->GetFieldIt(item,"N_CLN",str1)== -1)return; EditLine->setData(str1); y = atoi(str1); for(i=0;i<6;i++) { sprintf(str1,"SH_%d",i+1); if(ViewDBF->GetFieldIt(item,str1,str1)== -1)return; Edit1[i]->setData(str1); sprintf(str1,"SH_%d",i+7); if(ViewDBF->GetFieldIt(item,str1,str1)== -1)return; Edit2[i]->setData(str1); sprintf(str1,"SH_%d",i+13); if(ViewDBF->GetFieldIt(item,str1,str1)== -1)return; Edit3[i]->setData(str1); sprintf(str1,"SH_%d",i+19); if(ViewDBF->GetFieldIt(item,str1,str1)== -1)return; Edit4[i]->setData(str1); } MaskEdit(x,y); } void TViewDialog::MaskEdit(int x,int y) { TView *view=current; int i; for(i=0;i<6;i++) { if(ysetState(sfVisible,False); else Edit1[i]->setState(sfVisible,True); if(x<2 || ysetState(sfVisible,False); else Edit2[i]->setState(sfVisible,True); if(x<3 || ysetState(sfVisible,False); else Edit3[i]->setState(sfVisible,True); if(x<4 || ysetState(sfVisible,False); else Edit4[i]->setState(sfVisible,True); } view->select(); } int TViewDialog::SelectInput(void* source,TEvent& event) { TEdit *Edit = (TEdit *)source; TViewDialog *Dialog = (TViewDialog *)Edit->owner; ushort control; if(event.what == evKeyboard) switch(event.keyDown.keyCode) { case 0x3920: control = myApp->execView( myApp->SelDialog = new TSelDialog(Dialog->PathDir,2,((TEdit *)source)->data)); if(control==cmOK) { ((TEdit *)source)->setData( (char *)myApp->SelDialog->Colect2->at(myApp->SelDialog->ListBox2->focused) ); Dialog->Modif=True; } destroy(myApp->SelDialog); break; case kbDel: ((TEdit *)source)->setData(Text_msg[49]); Dialog->Modif=True; break; case kbUp: Dialog->selectNext(True); Edit->clearEvent(event); break; case kbDown: Dialog->selectNext(False); Edit->clearEvent(event); break; } return(1); } int TViewDialog::EnterNumber(void* source,TEvent& event) { char code; TEdit *Edit = (TEdit *)source; TViewDialog *Dialog = (TViewDialog *)Edit->owner; if(event.what == evKeyboard) { switch(event.keyDown.keyCode) { case kbDown: Dialog->selectNext(False); Edit->clearEvent(event); break; case kbUp: Dialog->selectNext(True); Edit->clearEvent(event); break; } code=event.keyDown.charScan.charCode; if( code>='0'&&code<='9') { Edit->setData(&code); message(Dialog,evBroadcast,cmChange,Edit); // Clicked Edit->clearEvent(event); } } return(1); } void TViewDialog::SaveChengeView(int item) { char str1[10]; int i; ViewDBF->ModifiFieldIt(item,"N_ROW",EditRow->data); ViewDBF->ModifiFieldIt(item,"N_CLN",EditLine->data); for(i=0;i<6;i++) { sprintf(str1,"SH_%d",i+1); ViewDBF->ModifiFieldIt(item,str1,Edit1[i]->data); sprintf(str1,"SH_%d",i+7); ViewDBF->ModifiFieldIt(item,str1,Edit2[i]->data); sprintf(str1,"SH_%d",i+13); ViewDBF->ModifiFieldIt(item,str1,Edit3[i]->data); sprintf(str1,"SH_%d",i+19); ViewDBF->ModifiFieldIt(item,str1,Edit4[i]->data); } } //================================================== void TMyApp::LoadView(char* Name, TBasaDBF **BasaDBF) { *BasaDBF = new TBasaDBF(); if((*BasaDBF)->LoadFile(Name)== -1) (*BasaDBF)->LoadFields(kadr_view,sizeof(kadr_view)/sizeof(db_str_rec)); }