1 /* 2 * JobSetupDlg.cpp 3 * Copyright 1999-2000 Y.Takagi. All Rights Reserved. 4 */ 5 6 #ifndef __JOBSETUPDLG_H 7 #define __JOBSETUPDLG_H 8 9 #include <View.h> 10 #include <map> 11 12 #include "DialogWindow.h" 13 14 #include "JobData.h" 15 #include "Halftone.h" 16 #include "JSDSlider.h" 17 #include "PrinterCap.h" 18 19 class BCheckBox; 20 class BGridLayout; 21 class BPopUpMenu; 22 class BRadioButton; 23 class BTextControl; 24 class BTextView; 25 class HalftoneView; 26 class JobData; 27 class PagesView; 28 class PrinterCap; 29 class PrinterData; 30 31 class JobSetupView : public BView { 32 public: 33 JobSetupView(JobData* jobData, PrinterData* printerData, 34 const PrinterCap* printerCap); 35 virtual void AttachedToWindow(); 36 virtual void MessageReceived(BMessage* message); 37 bool UpdateJobData(bool showPreview); 38 39 private: 40 void UpdateButtonEnabledState(); 41 bool IsHalftoneConfigurationNeeded(); 42 void CreateHalftoneConfigurationUI(); 43 void AddDriverSpecificSettings(BGridLayout* gridLayout, int row); 44 string GetDriverSpecificValue(PrinterCap::CapID category, 45 const char* key); 46 template<typename Predicate> 47 void FillCapabilityMenu(BPopUpMenu* menu, uint32 message, 48 const BaseCap** capabilities, int count, 49 Predicate& predicate); 50 void FillCapabilityMenu(BPopUpMenu* menu, uint32 message, 51 PrinterCap::CapID category, int id); 52 void FillCapabilityMenu(BPopUpMenu* menu, uint32 message, 53 const BaseCap** capabilities, int count, int id); 54 int GetID(const BaseCap** capabilities, int count, 55 const char* label, int defaultValue); 56 BRadioButton* CreatePageSelectionItem(const char* name, 57 const char* label, 58 JobData::PageSelection pageSelection); 59 void AllowOnlyDigits(BTextView* textView, int maxDigits); 60 void UpdateHalftonePreview(); 61 62 JobData::Color Color(); 63 Halftone::DitherType DitherType(); 64 float Gamma(); 65 float InkDensity(); 66 JobData::PaperSource PaperSource(); 67 68 BTextControl* fCopies; 69 BTextControl* fFromPage; 70 BTextControl* fToPage; 71 JobData* fJobData; 72 PrinterData* fPrinterData; 73 const PrinterCap* fPrinterCap; 74 BPopUpMenu* fColorType; 75 BPopUpMenu* fDitherType; 76 BMenuField* fDitherMenuField; 77 JSDSlider* fGamma; 78 JSDSlider* fInkDensity; 79 HalftoneView* fHalftone; 80 BBox* fHalftoneBox; 81 BRadioButton* fAll; 82 BCheckBox* fCollate; 83 BCheckBox* fReverse; 84 PagesView* fPages; 85 BPopUpMenu* fPaperFeed; 86 BCheckBox* fDuplex; 87 BPopUpMenu* fNup; 88 BRadioButton* fAllPages; 89 BRadioButton* fOddNumberedPages; 90 BRadioButton* fEvenNumberedPages; 91 std::map<PrinterCap::CapID, BPopUpMenu*> fDriverSpecificLists; 92 }; 93 94 class JobSetupDlg : public DialogWindow { 95 public: 96 JobSetupDlg(JobData* jobData, PrinterData* printerData, 97 const PrinterCap* printerCap); 98 virtual void MessageReceived(BMessage* message); 99 100 private: 101 JobSetupView* fJobSetup; 102 }; 103 104 #endif /* __JOBSETUPDLG_H */ 105