| 590 | | MobLoaded = false; //Âñå, òèïà ñòàðûé ìîá åñëè îí è áûë çàãðóæåí |
|---|
| 591 | | // - óæå óáèò :). |
|---|
| 592 | | |
|---|
| 593 | | MobInMem1->UsingThread = UseTMobThreads; //Îòêðûâàòü ëè â îòäåëüíîé íèòêå. |
|---|
| 594 | | MobInMem1->LogEd = MainF->LogEd; |
|---|
| 595 | | |
|---|
| 596 | | //È ãðóçèòü ñ áëîêèðîâêîé èíòåðôåéñà... |
|---|
| 597 | | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); |
|---|
| 598 | | LoadResult = MobInMem1->LoadMob(FName); |
|---|
| 599 | | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); |
|---|
| 600 | | |
|---|
| 601 | | if (MobInMem1->UsingThread == false) |
|---|
| 602 | | { |
|---|
| 603 | | //Åñëè ãðóçèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. |
|---|
| 604 | | if (MainF->MainF_PK->ActivePage->Name == "LogSh") |
|---|
| 605 | | { |
|---|
| 606 | | MainF->LogEd->SetFocus(); |
|---|
| 607 | | }; |
|---|
| 608 | | MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); |
|---|
| 609 | | }; |
|---|
| 610 | | |
|---|
| 611 | | //Òèïà çàïîìíèòü èìÿ ôàéëà, åñëè çàãðóçêà áûëà óñïåøíîé... |
|---|
| 612 | | if (LoadResult == true) |
|---|
| 613 | | { |
|---|
| 614 | | MobFileName = FName; |
|---|
| 615 | | MobLoaded = true; //È åññíî ïîìåòèòü ÷òî ìîá çàãðóæåí. |
|---|
| 616 | | |
|---|
| 617 | | //Çàãðóçèòü èíôó ìîáà â èíòåðôåéñ ïðîãè... |
|---|
| 618 | | |
|---|
| 619 | | //Ñêðèïò. |
|---|
| 620 | | MainF->ScriptEd->Lines->Clear(); |
|---|
| 621 | | MainF->ScriptEd->Text = MobInMem1->ScriptText; |
|---|
| 622 | | |
|---|
| 623 | | //Îáúåêòû â ðåäàêòîð îáúåêòîâ... |
|---|
| 624 | | MainF->MobObjectsChanged(); |
|---|
| 625 | | } |
|---|
| 626 | | else |
|---|
| 627 | | { |
|---|
| 628 | | //Åñëè çàãðóçèòüñÿ íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. |
|---|
| 629 | | MainF->MainF_PK->ActivePage = MainF->LogSh; |
|---|
| 630 | | }; |
|---|
| 631 | | |
|---|
| 632 | | } |
|---|
| | 591 | //Çàêðûòü ñòàðûé ìîá. |
|---|
| | 592 | if (CloseMobComm() == true) |
|---|
| | 593 | { |
|---|
| | 594 | MobInMem1->UsingThread = UseTMobThreads; //Îòêðûâàòü ëè â îòäåëüíîé íèòêå. |
|---|
| | 595 | MobInMem1->LogEd = MainF->LogEd; |
|---|
| | 596 | |
|---|
| | 597 | //È ãðóçèòü ñ áëîêèðîâêîé èíòåðôåéñà... |
|---|
| | 598 | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); |
|---|
| | 599 | LoadResult = MobInMem1->LoadMob(FName); |
|---|
| | 600 | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); |
|---|
| | 601 | |
|---|
| | 602 | if (MobInMem1->UsingThread == false) |
|---|
| | 603 | { |
|---|
| | 604 | //Åñëè ãðóçèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. |
|---|
| | 605 | if (MainF->MainF_PK->ActivePage->Name == "LogSh") |
|---|
| | 606 | { |
|---|
| | 607 | MainF->LogEd->SetFocus(); |
|---|
| | 608 | }; |
|---|
| | 609 | MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); |
|---|
| | 610 | }; |
|---|
| | 611 | |
|---|
| | 612 | //Òèïà çàïîìíèòü èìÿ ôàéëà, åñëè çàãðóçêà áûëà óñïåøíîé... |
|---|
| | 613 | if (LoadResult == true) |
|---|
| | 614 | { |
|---|
| | 615 | MobFileName = FName; |
|---|
| | 616 | MobLoaded = true; //È åññíî ïîìåòèòü ÷òî ìîá çàãðóæåí. |
|---|
| | 617 | MobModified = false; //Îòìåòèòü ÷òî ïîêà â ìîá èçìåíåíèé íå âíîñèëîñü. |
|---|
| | 618 | |
|---|
| | 619 | //Çàãðóçèòü èíôó ìîáà â èíòåðôåéñ ïðîãè... |
|---|
| | 620 | |
|---|
| | 621 | //Ñêðèïò. |
|---|
| | 622 | MainF->ScriptEd->Lines->Clear(); |
|---|
| | 623 | MainF->ScriptEd->Text = MobInMem1->ScriptText; |
|---|
| | 624 | |
|---|
| | 625 | //Îáúåêòû â ðåäàêòîð îáúåêòîâ... |
|---|
| | 626 | MainF->MobObjectsChanged(); |
|---|
| | 627 | }//if (LoadResult == true) |
|---|
| | 628 | else |
|---|
| | 629 | { |
|---|
| | 630 | //Åñëè çàãðóçèòüñÿ íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. |
|---|
| | 631 | MainF->MainF_PK->ActivePage = MainF->LogSh; |
|---|
| | 632 | }; |
|---|
| | 633 | };//if (CloseMobComm() == true) |
|---|
| | 634 | }//if ( FileExists(FName) == true ) |
|---|
| 654 | | MobInMem1->UsingThread = UseTMobThreads; //Ñåéâèòü ëè â îòäåëüíîé íèòêå. |
|---|
| 655 | | MobInMem1->SaveAttempts = SaveAttempts; //Êîëè÷åñòâî ïîïûòîê ñàâà ïîñëå ñáîÿ... |
|---|
| 656 | | MobInMem1->LogEd = MainF->LogEd; |
|---|
| 657 | | //È çàñàâèòü ñ áëîêèðîâêîé èíòåðôåéñà... |
|---|
| 658 | | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); |
|---|
| 659 | | //Åñëè íàäî äåëàòü áåêàïû - çàáåêàïèòü... |
|---|
| 660 | | if (MakeAutoBackups == true) MakeAutoBackup(MobFileName); |
|---|
| 661 | | if (MobInMem1->SaveMob(MobFileName) == false) |
|---|
| 662 | | { |
|---|
| 663 | | //Åñëè çàñàâèòü íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. |
|---|
| 664 | | MainF->MainF_PK->ActivePage = MainF->LogSh; |
|---|
| 665 | | }; |
|---|
| 666 | | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); |
|---|
| 667 | | |
|---|
| 668 | | if (MobInMem1->UsingThread == false) |
|---|
| 669 | | { |
|---|
| 670 | | //Åñëè ñàâèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. |
|---|
| 671 | | if (MainF->MainF_PK->ActivePage->Name == "LogSh") |
|---|
| 672 | | { |
|---|
| 673 | | MainF->LogEd->SetFocus(); |
|---|
| 674 | | }; |
|---|
| 675 | | MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); |
|---|
| 676 | | }; |
|---|
| 677 | | |
|---|
| | 666 | MobInMem1->UsingThread = UseTMobThreads; //Ñåéâèòü ëè â îòäåëüíîé íèòêå. |
|---|
| | 667 | MobInMem1->SaveAttempts = SaveAttempts; //Êîëè÷åñòâî ïîïûòîê ñàâà ïîñëå ñáîÿ... |
|---|
| | 668 | MobInMem1->LogEd = MainF->LogEd; |
|---|
| | 669 | //È çàñàâèòü ñ áëîêèðîâêîé èíòåðôåéñà... |
|---|
| | 670 | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->BlockInterf(); |
|---|
| | 671 | //Åñëè íàäî äåëàòü áåêàïû - çàáåêàïèòü... |
|---|
| | 672 | if (MakeAutoBackups == true) MakeAutoBackup(MobFileName); |
|---|
| | 673 | Result = MobInMem1->SaveMob(MobFileName); |
|---|
| | 674 | if (Result == true) |
|---|
| | 675 | { |
|---|
| | 676 | //Óñïåøíûé ñåéâ - îòìåòèòü ÷òî ìîá íå ìîäèôèöèðîâàí. |
|---|
| | 677 | MainF->SetMobNotModified(); |
|---|
| | 678 | } |
|---|
| | 679 | else |
|---|
| | 680 | { |
|---|
| | 681 | //Åñëè çàñàâèòü íå óäàëîñü - ïîêàçàòü þçâåðþ òàá ñ ëîãîì. |
|---|
| | 682 | MainF->MainF_PK->ActivePage = MainF->LogSh; |
|---|
| | 683 | }; |
|---|
| | 684 | if ((UseTMobThreads == true) && (MakeSLBlockInterf == true)) MainF->UnBlockInterf(); |
|---|
| | 685 | |
|---|
| | 686 | if (MobInMem1->UsingThread == false) |
|---|
| | 687 | { |
|---|
| | 688 | //Åñëè ñàâèëè íå ÷åðåç íèòêó òî âûâåñòè ëîã. |
|---|
| | 689 | if (MainF->MainF_PK->ActivePage->Name == "LogSh") |
|---|
| | 690 | { |
|---|
| | 691 | MainF->LogEd->SetFocus(); |
|---|
| | 692 | }; |
|---|
| | 693 | MainF->LogEd->Lines->Add(MobInMem1->FullLogStr); |
|---|
| | 694 | }; |
|---|
| | 695 | } |
|---|
| | 696 | else |
|---|
| | 697 | { |
|---|
| | 698 | //Ôèãíÿ êàêàÿ-òî. Íåòó òàêîãî ôàéëà. Áóäåì ñîõðàíÿòü ïî ïðèíöèïó SaveAs. |
|---|
| | 699 | Result = SaveAsMobComm(); |
|---|
| | 700 | }; |
|---|
| | 701 | |
|---|
| | 702 | //Âåðíóòü ðåçóëüòàò. |
|---|
| | 703 | return Result; |
|---|
| | 784 | |
|---|
| | 785 | //Âåðíóòü ðåçóëüòàò |
|---|
| | 786 | return ManipResult; |
|---|
| | 787 | }; |
|---|
| | 788 | |
|---|
| | 789 | bool CloseMobComm() |
|---|
| | 790 | //Ýòà ôóíêöèÿ âûçûâàåòñÿ ïðè çàêðûòèè ìîáà. |
|---|
| | 791 | { |
|---|
| | 792 | //Ïåðåìåííûå |
|---|
| | 793 | int QuestionAnswer; |
|---|
| | 794 | bool AllOk = true, Result = false; |
|---|
| | 795 | |
|---|
| | 796 | if (MobLoaded == true) |
|---|
| | 797 | { |
|---|
| | 798 | //Åñëè åñòü ÷åãî çàêðûâàòü åññíî ). |
|---|
| | 799 | if (MobModified == true) |
|---|
| | 800 | { |
|---|
| | 801 | //Ìîá áûë èçìåíåí - ñïðîñèòü ÷åãî äåëàòü. |
|---|
| | 802 | QuestionAnswer = MessageBox(Application->Handle,("Ôàéë "+ExtractFileName(MobFileName)+" íå áûë ñîõðàíåí. Ñîõðàíèòü åãî ïåðåä çàêðûòèåì?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNOCANCEL|MB_ICONQUESTION); |
|---|
| | 803 | //Òåïåðü â çàâèñèìîñòè îò îòâåòà... |
|---|
| | 804 | if (QuestionAnswer == IDYES) |
|---|
| | 805 | { |
|---|
| | 806 | //Ñêàçàíî ñîõðàíèòü - ñîõðàíèì ìîá... |
|---|
| | 807 | do |
|---|
| | 808 | { |
|---|
| | 809 | AllOk = SaveMobComm(); |
|---|
| | 810 | if (AllOk == false) |
|---|
| | 811 | { |
|---|
| | 812 | //Ïî êàêîé-ëèáî ïðè÷èíå ñîõðàíèòü ôàéë íå óäàëîñü - ñïðîñèì ÷åãî äåëàòü. |
|---|
| | 813 | QuestionAnswer = MessageBox(Application->Handle,("Ôàéë "+ExtractFileName(MobFileName)+" ñîõðàíèòü íå óäàëîñü. Ïîâòîðèòü ïîïûòêó?").c_str(),MobSurgeon_AppName.c_str(),MB_YESNOCANCEL|MB_ICONERROR); |
|---|
| | 814 | //Ñìîòðèì ÷åãî îòâåòèëè. |
|---|
| | 815 | //IDYES - íè÷åãî íå äåëàòü ò.ê. AllOk == false è çíà÷èò áóäåò åùå 1 ïîïûòêà ñåéâà. |
|---|
| | 816 | if (QuestionAnswer == IDNO) |
|---|
| | 817 | { |
|---|
| | 818 | //Çàáèòü è ïðîäîëæèòü. |
|---|
| | 819 | AllOk = true; |
|---|
| | 820 | } |
|---|
| | 821 | else if (QuestionAnswer == IDCANCEL) |
|---|
| | 822 | { |
|---|
| | 823 | //Çàáèòü è îòìåíèòü. |
|---|
| | 824 | AllOk = true; |
|---|
| | 825 | Result = true; //Âðåìåííî ïîëüçóåìñÿ ïåðåìåííîé íå ïî íàçíà÷åíèþ - ðåçàëüò çäåñü äîëæíà áûòü åùå false è ýòî ïðèçíàê íåíîðìàëüíîñòè, íà êîòîðóþ íèæå ñðåàãèðóþò. |
|---|
| | 826 | }; |
|---|
| | 827 | }; |
|---|
| | 828 | } while (AllOk == false); |
|---|
| | 829 | |
|---|
| | 830 | if ((AllOk == true) && (Result == true)) |
|---|
| | 831 | { |
|---|
| | 832 | //×åãî-òî íå òàê - ýòî ïðèçíàê ÷òî AllOk íà ñàìîì äåëå false. |
|---|
| | 833 | //Âåðíåì âñå êàê åñòü. |
|---|
| | 834 | AllOk = false; |
|---|
| | 835 | Result = false; |
|---|
| | 836 | }; |
|---|
| | 837 | } |
|---|
| | 838 | else if (QuestionAnswer == IDCANCEL) |
|---|
| | 839 | { |
|---|
| | 840 | //Ñêàçàíî îòìåíèòü - âñå îòìåíÿåì íàôåã. |
|---|
| | 841 | AllOk = false; |
|---|
| | 842 | }; |
|---|
| | 843 | };//if (MobModified == true) |
|---|
| | 844 | |
|---|
| | 845 | //Ñìîòðèì - åñëè âñå â ïîðÿäêå - çàêðûâàåì ìîá. |
|---|
| | 846 | if (AllOk == true) |
|---|
| | 847 | { |
|---|
| | 848 | //Ñîáñíî çàêðûâàåì. |
|---|
| | 849 | MobInMem1->UnloadMob(); |
|---|
| | 850 | MobLoaded = false; |
|---|
| | 851 | MobModified = false; |
|---|
| | 852 | MobFileName = ""; |
|---|
| | 853 | //Îáíîâèòü èíòåðôåéñ ïðîãè... |
|---|
| | 854 | MainF->ScriptEd->Lines->Clear(); |
|---|
| | 855 | MainF->MobObjectsChanged(); |
|---|
| | 856 | MainF->UpdateMainInterf(); |
|---|
| | 857 | //Done. |
|---|
| | 858 | Result = true; |
|---|
| | 859 | }; |
|---|
| | 860 | }//if (MobLoaded == true) |
|---|
| | 861 | else |
|---|
| | 862 | { |
|---|
| | 863 | //Åñëè ìîá íå áûë çàãðóæåí - ñ÷èòàòü ÷òî ðåçóëüòàò true. |
|---|
| | 864 | Result = true; |
|---|
| | 865 | }; |
|---|
| | 866 | |
|---|
| | 867 | //Âåðíóòü ðåçóëüòàò |
|---|
| | 868 | return Result; |
|---|