/**** * * Implementation of file-menu.h. * * The implementation is partially stubbed in that it supplies only dummy * parameter values to model functions. * */ #include "file-menu.h" FileMenu::FileMenu(Name* n, File* f) : View(NULL, f) { /* * For convenience, save a copy of the model as a downcast value. */ this->f = f; /* * Make the window of this an IV pulldown menu. */ w = pm = new PulldownMenu(n->ConstConvert()); } FileMenu::~FileMenu() { } void FileMenu::Compose() { /* * Insert the six menu items, passing each the File model for subsequent * access in menu item Do functions. */ pm->Include(new NewMenuItem(f)); pm->Include(new OpenMenuItem(f)); pm->Include(new SaveMenuItem(f)); pm->Include(new SaveAsMenuItem(f)); pm->Include(new PrintMenuItem(f)); pm->Include(new QuitMenuItem(f)); } NewMenuItem::NewMenuItem(File* f) : MenuItem("New") { this->f = f; } OpenMenuItem::OpenMenuItem(File* f) : MenuItem("Open ...") { this->f = f; } SaveMenuItem::SaveMenuItem(File* f) : MenuItem("Save") { this->f = f; } SaveAsMenuItem::SaveAsMenuItem(File* f) : MenuItem("SaveAs ...") { this->f = f; } PrintMenuItem::PrintMenuItem(File* f) : MenuItem("Print ...") { this->f = f; } QuitMenuItem::QuitMenuItem(File* f) : MenuItem("Quit") { this->f = f; } void NewMenuItem::Do() { /* * Call the File::Open model function. */ f->New(); } void OpenMenuItem::Do() { /* * Call the File::Open model function. */ f->Open(NULL); } void SaveMenuItem::Do() { /* * Call the File::Save model function. */ f->Save(); } void SaveAsMenuItem::Do() { /* * Call the File::SaveAs model function. */ f->SaveAs(NULL); } void PrintMenuItem::Do() { /* * Call the File::Print model function. */ f->Print(); } void QuitMenuItem::Do() { /* * Call the File::Quit model function. */ f->Quit(); }