00001 #include "CanvasPage.h"
00002 #include "PageProxy.h"
00003 #include "Midad/Gui/GuiBox.h"
00004 #include "Midad/Gui/GuiCanvas.h"
00005 #include "Midad/Gui/GuiMainWindow.h"
00006
00007 #include <TGWindow.h>
00008 #include <TGFileDialog.h>
00009 #include <TCanvas.h>
00010 #include <TLine.h>
00011
00012 #include <sigc++/sigc++.h>
00013
00014 #include <iostream>
00015 #include <cassert>
00016
00017
00018
00019
00020
00021 CanvasPage::CanvasPage()
00022 : fCanvas(0), fMainWindow(0)
00023 {
00024 }
00025
00026 CanvasPage::~CanvasPage()
00027 {
00028 }
00029
00030 TObject* CanvasPage::Init(Mint* , PageDisplay* , GuiBox& box)
00031 {
00032 fMainWindow = dynamic_cast<TGWindow*>(&box);
00033 assert(fMainWindow);
00034
00035 GuiCanvas* gc = SigC::manage(new GuiCanvas(box,100,100));
00036 box.Add(*gc);
00037 fCanvas = gc->GetCanvas();
00038 fCanvas->cd();
00039 return fCanvas;
00040 }
00041
00042 void CanvasPage::Print()
00043 {
00044 if (!fMainWindow) {
00045 std::cerr << "CanvasPage::Print no main window\n";
00046 return;
00047 }
00048
00049 const char* filetypes[] = { "All files", "*",
00050 "EPS", "*.eps",
00051 "PS", "*.ps",
00052 "GIF", "*.gif",
00053 0, 0 };
00054 static TString dir(".");
00055 TGFileInfo fi;
00056 fi.fFileTypes = filetypes;
00057 fi.fIniDir = StrDup(dir);
00058 new TGFileDialog(gClient->GetRoot(), fMainWindow, kFDOpen, &fi);
00059 dir = fi.fIniDir;
00060 fCanvas->Print(fi.fFilename);
00061 }
00062
00063
00064 TCanvas& CanvasPage::GetCanvas()
00065 {
00066 fCanvas->cd();
00067 return *fCanvas;
00068 }