From 124640857d65de0eee5f9a0f4472d2099505c141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 26 Feb 2004 20:09:11 +0000 Subject: [PATCH] Now made the kSignature constant accessible in an appropriate way. Implemented the print view stuff (as borrowed from ShowImage). Not yet tested because the print_server is funny today over here... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6770 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/diskprobe/DiskProbe.cpp | 2 ++ src/apps/diskprobe/DiskProbe.h | 2 +- src/apps/diskprobe/ProbeView.cpp | 53 ++++++++++++++++++++++++++++++-- src/apps/diskprobe/ProbeView.h | 3 ++ 4 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/apps/diskprobe/DiskProbe.cpp b/src/apps/diskprobe/DiskProbe.cpp index 9123af48ad..c38ddbcaa5 100644 --- a/src/apps/diskprobe/DiskProbe.cpp +++ b/src/apps/diskprobe/DiskProbe.cpp @@ -26,6 +26,8 @@ #include +const char *kSignature = "application/x-vnd.OpenBeOS-DiskProbe"; + static const uint32 kMsgDiskProbeSettings = 'DPst'; static const uint32 kCascadeOffset = 20; diff --git a/src/apps/diskprobe/DiskProbe.h b/src/apps/diskprobe/DiskProbe.h index 68f890536c..79ff10d7b6 100644 --- a/src/apps/diskprobe/DiskProbe.h +++ b/src/apps/diskprobe/DiskProbe.h @@ -9,7 +9,7 @@ #include -static const char *kSignature = "application/x-vnd.OpenBeOS-DiskProbe"; +extern const char *kSignature; static const uint32 kMsgOpenFilePanel = 'opFp'; static const uint32 kMsgOpenOpenWindow = 'opOw'; diff --git a/src/apps/diskprobe/ProbeView.cpp b/src/apps/diskprobe/ProbeView.cpp index bec81a437d..ba558a091d 100644 --- a/src/apps/diskprobe/ProbeView.cpp +++ b/src/apps/diskprobe/ProbeView.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -857,7 +858,8 @@ UpdateLooper::MessageReceived(BMessage *message) ProbeView::ProbeView(BRect rect, entry_ref *ref, const char *attribute, const BMessage *settings) - : BView(rect, "probeView", B_FOLLOW_ALL, B_WILL_DRAW) + : BView(rect, "probeView", B_FOLLOW_ALL, B_WILL_DRAW), + fPrintSettings(NULL) { fEditor.SetTo(*ref, attribute); @@ -1240,6 +1242,51 @@ ProbeView::CheckClipboard() } +status_t +ProbeView::PageSetup() +{ + BPrintJob printJob(Window()->Title()); + if (fPrintSettings != NULL) + printJob.SetSettings(new BMessage(*fPrintSettings)); + + status_t status = printJob.ConfigPage(); + if (status == B_OK) { + // replace the print settings on success + delete fPrintSettings; + fPrintSettings = printJob.Settings(); + } + + return status; +} + + +void +ProbeView::Print() +{ + if (fPrintSettings == NULL && PageSetup() != B_OK) + return; + + BPrintJob printJob(Window()->Title()); + printJob.SetSettings(new BMessage(*fPrintSettings)); + + if (printJob.ConfigJob() == B_OK) { + BRect rect = printJob.PrintableRect(); + + float width, height; + fDataView->GetPreferredSize(&width, &height); + + printJob.BeginJob(); + + fDataView->SetScale(rect.Width() / width); + printJob.DrawView(fDataView, rect, rect.LeftTop()); + fDataView->SetScale(1.0); + printJob.SpoolPage(); + + printJob.CommitJob(); + } +} + + status_t ProbeView::Save() { @@ -1342,11 +1389,11 @@ ProbeView::MessageReceived(BMessage *message) } case kMsgPrint: - puts("print..."); + Print(); break; case kMsgPageSetup: - puts("page setup..."); + PageSetup(); break; case B_NODE_MONITOR: diff --git a/src/apps/diskprobe/ProbeView.h b/src/apps/diskprobe/ProbeView.h index 4193524d8f..ca444c4df0 100644 --- a/src/apps/diskprobe/ProbeView.h +++ b/src/apps/diskprobe/ProbeView.h @@ -45,6 +45,8 @@ class ProbeView : public BView { void UpdateAttributesMenu(BMenu *menu); void UpdateSelectionMenuItems(int64 start, int64 end); void CheckClipboard(); + status_t PageSetup(); + void Print(); status_t Save(); DataEditor fEditor; @@ -56,6 +58,7 @@ class ProbeView : public BView { BMenuItem *fUndoMenuItem, *fRedoMenuItem; BMenuItem *fNativeMenuItem, *fSwappedMenuItem; BMenuItem *fSaveMenuItem; + BMessage *fPrintSettings; }; #endif /* PROBE_VIEW_H */