//--------------------------------------------------------------------------- #include #pragma hdrstop #include "MainMenu.h" #include "Fullview.h" #include "Main.h" #include "MainImage.h" #include "ModeView_F.h" #include "Palette.h" #include "SimpleWindow_F.h" #include "Simulation.h" #include "TextureDesign_F.h" #include "TextureTable_F.h" #include "YarnArrange_F.h" #include "YarnDesign_F.h" #include "YarnTable_F.h" //--------------------------------------------------------------------------- #define IDS_YARN StringTable[0] #define IDS_TEXTURE StringTable[1] #define IDS_SIMULATION StringTable[2] #define IDS_NEW StringTable[3] #define IDS_WINDOW StringTable[4] #define IDS_FILE StringTable[5] #define IDS_PRINT StringTable[6] #define IDS_FORMCAPTION StringTable[7] //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TMainMenuForm *MainMenuForm; //--------------------------------------------------------------------------- __fastcall TMainMenuForm::TMainMenuForm(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::FormClose(TObject *Sender, TCloseAction &Action) { ExitForm(); Visible = false; if (FOnUpdateMenu) FOnUpdateMenu(Sender); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::FormCreate(TObject *Sender) { //======================================================= StringTable.Create(DirectoryItem, Language, "MainMenu"); SetSmallFont(Font); Caption = IDS_FORMCAPTION; ClientWidth = 248; ClientHeight = 37; PosY = Height; FWidth = ClientWidth; FHeight = ClientHeight; sbYarn->Hint = IDS_YARN; sbTexture->Hint = IDS_TEXTURE; sbSimulation->Hint = IDS_SIMULATION; sbNew->Hint = IDS_NEW; sbWindow->Hint = IDS_WINDOW; sbFile->Hint = IDS_FILE; sbPrint->Hint = IDS_PRINT; //======================================================= } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbYarnClick(TObject *Sender) { bool sw; if (Item==WI_YARN) sw = false; else sw = true; MainForm->ExitMenuItem(); ExitForm(); if (sw) { Item = WI_YARN; ViewLight(); YarnTableForm = new TYarnTableForm(this); YarnTableForm->Parent = MainForm; YarnTableForm->Visible = true; YarnArrangeForm = new TYarnArrangeForm(this); YarnArrangeForm->Parent = MainForm; YarnArrangeForm->Visible = true; } } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbTextureClick(TObject *Sender) { bool sw; if (Item==WI_TEXTURE) sw = false; else sw = true; MainForm->ExitMenuItem(); ExitForm(); if (sw) { Item = WI_TEXTURE; ViewLight(); TextureTableForm = new TTextureTableForm(this); TextureTableForm->Parent = MainForm; TextureTableForm->Visible = false; TextureDesignForm = new TTextureDesignForm(this); TextureDesignForm->Parent = MainForm; TextureDesignForm->Visible = true; } } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbSimulationClick(TObject *Sender) { bool sw; if (Item==WI_WEAVING) sw = false; else sw = true; MainForm->ExitMenuItem(); ExitForm(); if (sw) { Item = WI_WEAVING; ViewLight(); ViewForm = new TViewForm(this); ViewForm->Parent = MainForm; ViewForm->Visible = false; SimulationForm = new TSimulationForm(this); SimulationForm->Parent = this; SimulationForm->BorderStyle = bsNone; SimulationForm->Left = 0; SimulationForm->Top = ClientHeight+20; SimulationForm->Visible = true; SimulationForm->InitForm(); } } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbNewClick(TObject *Sender) { MainForm->ExitMenuItem(); ExitForm(); int button = Application->MessageBox("Do you want to delete all data?", "Message Box", MB_OKCANCEL); if (button==IDOK) { if (MainImageForm->Plan) { delete MainImageForm->Plan; MainImageForm->Plan = NULL; } int w = MainImageForm->iMainImage->Bitmap->Width; int h = MainImageForm->iMainImage->Bitmap->Height; COLORREF c = PaletteForm->DIB256Palette->GetBGCOLORREF(MainImageForm->iMainImage->Bitmap->BitsPerPixel); MainImageForm->iMainImage->Bitmap->FillRect(Rect(0, 0, w, h), c); MainImageForm->iMainImage->Repaint(); MainImageForm->WorkArea->PushUndo(); MainImageForm->WorkArea->ResetRegion(MainImageForm->iMainImage); MainImageForm->Plan = new TPlan; if (!MainImageForm->Plan) goto fail; // MainImageForm->Plan->Init(w, h); FullViewForm->InitForm(MainImageForm->iMainImage); } return; fail : EXCEPTION_MESSAGE_OK(EC_MEMORY_LACK); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbWindowClick(TObject *Sender) { bool sw; if (Item==WI_WINDOW) sw = false; else sw = true; MainForm->ExitMenuItem(); ExitForm(); if (sw) { Item = WI_WINDOW; ViewLight(); SimpleWindowForm = new TSimpleWindowForm(this); SimpleWindowForm->Parent = this; SimpleWindowForm->BorderStyle = bsNone; SimpleWindowForm->Left = 0; SimpleWindowForm->Top = ClientHeight+20; SimpleWindowForm->Visible = true; SimpleWindowForm->InitForm(); } } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbFileClick(TObject *Sender) { MainForm->ExitMenuItem(); ExitForm(); MainForm->FFileManagerItemClick(Sender); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbPrintClick(TObject *Sender) { MainForm->ExitMenuItem(); ExitForm(); MainForm->FPrintingItemClick(Sender); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::sbExitClick(TObject *Sender) { ExitForm(); } //--------------------------------------------------------------------------- // Private Methos //--------------------------------------------------------------------------- void TMainMenuForm::TPMExitFunction(TMessage &msg) { if (Item==WI_WEAVING) { if (msg.WParam==mrOk) { // MainImageForm->Plan->WeaveCondition = SimulationForm->WeaveCondition; // MainImageForm->Weaving(); } } ExitForm(); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::ViewLight() { switch (Item) { case WI_YARN: shYarn->Brush->Color = clRed; shYarn->Pen->Color = clRed; break; case WI_TEXTURE: shTexture->Brush->Color = clRed; shTexture->Pen->Color = clRed; break; case WI_WEAVING: shWeaving->Brush->Color = clRed; shWeaving->Pen->Color = clRed; break; case WI_WINDOW: shWindow->Brush->Color = clRed; shWindow->Pen->Color = clRed; break; } } //--------------------------------------------------------------------------- // Public Methods //-------------------------------------------------------------------------- void __fastcall TMainMenuForm::UnitChange() { if (YarnDesignForm) YarnDesignForm->UnitChange(); } //--------------------------------------------------------------------------- void __fastcall TMainMenuForm::ExitForm() { if (Item!=WI_NONE) { Show(); switch (Item) { case WI_YARN: if (YarnArrangeForm) { delete YarnArrangeForm; YarnArrangeForm = NULL; } if (YarnTableForm) { delete YarnTableForm; YarnTableForm = NULL; } sbYarn->Down = false; break; case WI_TEXTURE: if (TextureDesignForm) { delete TextureDesignForm; TextureDesignForm = NULL; } if (TextureTableForm) { delete TextureTableForm; TextureTableForm = NULL; } sbTexture->Down = false; break; case WI_WEAVING: if (SimulationForm) { delete SimulationForm; SimulationForm = NULL; } if (ViewForm) { delete ViewForm; ViewForm = NULL; } sbSimulation->Down = false; break; case WI_WINDOW: SimpleWindowForm->ExitForm(); delete SimpleWindowForm; SimpleWindowForm = NULL; sbWindow->Down = false; break; } shYarn->Brush->Color = clBlack; shYarn->Pen->Color = clBlack; shTexture->Brush->Color = clBlack; shTexture->Pen->Color = clBlack; shWeaving->Brush->Color = clBlack; shWeaving->Pen->Color = clBlack; shWindow->Brush->Color = clBlack; shWindow->Pen->Color = clBlack; ClientWidth = FWidth; ClientHeight = FHeight; Item = WI_NONE; } if (MainImageForm) { FullViewForm->InitForm(MainImageForm->iMainImage); } } //--------------------------------------------------------------------------- bool __fastcall TMainMenuForm::iMainImageMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TMainImageForm *mif = (TMainImageForm *)Sender; if (Button==mbMiddle || (Shift.Contains(ssShift) && Button==mbLeft)) { WORD yarn = mif->Plan->GetYarn(X, mif->iMainImage->Bitmap->Height-1-Y); if ((yarn & 0x8000) == 0) { PaletteForm->DIB256Palette->ChoiceIndex = mif->Plan->Yarn->Choice[(yarn>>11)&3].Color[(yarn>>8)&7][(yarn>>3)&0x1F]->Index; } else { PaletteForm->DIB256Palette->ChoiceIndex = 1; } } switch (Item) { case WI_NONE: return true; case WI_WINDOW: SimpleWindowForm->iMainImageMouseDown(Button, Shift, X, Y); break; } return false; } //--------------------------------------------------------------------------- bool __fastcall TMainMenuForm::iMainImageMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { TMainImageForm *mif = (TMainImageForm *)Sender; switch (Item) { case WI_NONE: return true; case WI_WINDOW: mif->iMainImage->Cursor = crCross; SimpleWindowForm->iMainImageMouseMove(Shift, X, Y); break; } return false; } //--------------------------------------------------------------------------- bool __fastcall TMainMenuForm::iMainImageMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TMainImageForm *mif = (TMainImageForm *)Sender; switch (Item) { case WI_NONE: return true; } return false; } //--------------------------------------------------------------------------- bool __fastcall TMainMenuForm::iMainImagePaint(TObject *Sender) { switch (Item) { case WI_NONE: return true; case WI_WINDOW: SimpleWindowForm->iMainImagePaint(); break; } return false; } //---------------------------------------------------------------------------