From 8b17a43d743448c8b4d14952eeef4d40ea8633be Mon Sep 17 00:00:00 2001 From: cxl Date: Tue, 21 Aug 2018 14:17:13 +0000 Subject: [PATCH] CtrlLib, CtrlCore: Cups printing now active for Cocoa git-svn-id: svn://ultimatepp.org/upp/trunk@12178 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/Coco.h | 23 ----------------------- uppsrc/CtrlCore/cocotodo.txt | 7 +++---- uppsrc/CtrlLib/Ctrl.lay | 20 ++++++++++---------- uppsrc/CtrlLib/CtrlUtil.h | 4 ++-- uppsrc/CtrlLib/PrinterJob.cpp | 12 +++++++----- 5 files changed, 22 insertions(+), 44 deletions(-) diff --git a/uppsrc/CtrlCore/Coco.h b/uppsrc/CtrlCore/Coco.h index 4abed8885..c53e71b1c 100644 --- a/uppsrc/CtrlCore/Coco.h +++ b/uppsrc/CtrlCore/Coco.h @@ -163,29 +163,6 @@ struct MMImp; #define GUIPLATFORM_TOPWINDOW_DECLS_INCLUDE -class PrinterJob { - NilDraw nild; - Vector pages; - -public: - Draw& GetDraw() { return nild; } - operator Draw&() { return GetDraw(); } - const Vector& GetPages() const { return pages; } - int operator[](int i) const { return 0; } - int GetPageCount() const { return 0; } - - bool Execute() { return false; } - - PrinterJob& Landscape(bool b = true) { return *this; } - PrinterJob& MinMaxPage(int minpage, int maxpage) { return *this; } - PrinterJob& PageCount(int n) { return *this; } - PrinterJob& CurrentPage(int currentpage) { return *this; } - PrinterJob& Name(const char *_name) { return *this; } - - PrinterJob(const char *name = NULL) {} - ~PrinterJob() {} -}; - }; #define GUIPLATFORM_INCLUDE_AFTER diff --git a/uppsrc/CtrlCore/cocotodo.txt b/uppsrc/CtrlCore/cocotodo.txt index 195b8d9e6..d678f22b4 100644 --- a/uppsrc/CtrlCore/cocotodo.txt +++ b/uppsrc/CtrlCore/cocotodo.txt @@ -1,7 +1,5 @@ sooner: -- reference/Reports - missing text - - opening FindInFiles, then selecting folder - pushing buttons does not exit dialog - package organizer initial size too small @@ -13,7 +11,7 @@ sooner: - not all additional cursors are correct - Synthetise fonts - Sort fonts -- fix link options (joining link options missing space) +- fix package organiser link options (joining link options missing space) - numpad Enter does not do K_ENTER @@ -25,8 +23,8 @@ later: - fullscreen mode issues - PrinterJob - CommonFontInfo GetFontInfoSys(Font font) metrics -- ROTATED TEXT - GetGlyphInfoSys metrics +- ROTATED TEXT - EndSession ? - ignoreclick - event flags @@ -50,6 +48,7 @@ void SystemDraw::DrawArcOp(const Rect& rc, Point start, Point end, int width, Co done: +- reference/Reports - missing text - doubleclick interval: https://developer.apple.com/documentation/appkit/nsevent/1528384-doubleclickinterval?language=objc - rect loop (ViewDraw) - DrawDragRect diff --git a/uppsrc/CtrlLib/Ctrl.lay b/uppsrc/CtrlLib/Ctrl.lay index 577a74417..c875c343f 100644 --- a/uppsrc/CtrlLib/Ctrl.lay +++ b/uppsrc/CtrlLib/Ctrl.lay @@ -113,23 +113,23 @@ LAYOUT(PrinterLayout, 380, 276) ITEM(Label, dv___1, SetLabel(t_("Printer")).LeftPosZ(16, 88).TopPosZ(28, 20)) ITEM(DropList, printer, HSizePosZ(104, 16).TopPosZ(28, 19)) ITEM(Label, dv___3, SetLabel(t_("Paper size")).LeftPosZ(16, 88).TopPosZ(52, 20)) - ITEM(DropList, paper, LeftPosZ(272, 92).TopPosZ(52, 19)) + ITEM(DropList, paper, LeftPosZ(104, 92).TopPosZ(52, 19)) ITEM(Label, dv___5, SetLabel(t_("Input slot")).LeftPosZ(204, 68).TopPosZ(52, 20)) - ITEM(DropList, slot, LeftPosZ(104, 92).TopPosZ(52, 19)) - ITEM(Label, dv___7, SetLabel(t_("Pages per sheet")).LeftPosZ(196, 108).TopPosZ(200, 20)) - ITEM(DropList, npage, LeftPosZ(308, 56).TopPosZ(200, 19)) - ITEM(LabelBox, dv___9, SetLabel(t_("Print range")).LeftPosZ(8, 224).TopPosZ(92, 80)) + ITEM(DropList, slot, LeftPosZ(272, 92).TopPosZ(52, 19)) + ITEM(LabelBox, dv___7, SetLabel(t_("Print range")).LeftPosZ(8, 224).TopPosZ(92, 80)) ITEM(Switch, range, SetLabel(t_("All pages\nCurrent page\nPages from")).LeftPosZ(16, 196).TopPosZ(112, 56)) ITEM(EditIntSpin, from, LeftPosZ(112, 44).TopPosZ(136, 19)) - ITEM(Label, dv___12, SetLabel(t_("to")).LeftPosZ(160, 16).TopPosZ(140, 13)) + ITEM(Label, dv___10, SetLabel(t_("to")).LeftPosZ(160, 16).TopPosZ(140, 13)) ITEM(EditIntSpin, to, LeftPosZ(176, 44).TopPosZ(136, 19)) - ITEM(LabelBox, dv___14, SetLabel(t_("Copies")).HSizePosZ(240, 8).TopPosZ(92, 80)) - ITEM(Label, dv___15, SetLabel(t_("Copies")).LeftPosZ(252, 56).TopPosZ(112, 20)) + ITEM(LabelBox, dv___12, SetLabel(t_("Copies")).HSizePosZ(240, 8).TopPosZ(92, 80)) + ITEM(Label, dv___13, SetLabel(t_("Copies")).LeftPosZ(252, 56).TopPosZ(112, 20)) ITEM(EditIntSpin, copies, RightPosZ(16, 56).TopPosZ(112, 19)) ITEM(Option, collate, SetLabel(t_("Collate")).RightPosZ(16, 112).TopPosZ(140, 19)) + ITEM(LabelBox, dv___16, SetLabel(t_("Placement")).HSizePosZ(8, 8).TopPosZ(180, 52)) + ITEM(Switch, landscape, SetLabel(t_("Portrait\nLandscape")).LeftPosZ(16, 176).TopPosZ(200, 15)) + ITEM(Label, dv___18, SetLabel(t_("Pages per sheet")).LeftPosZ(196, 108).TopPosZ(200, 20)) + ITEM(DropList, npage, LeftPosZ(308, 56).TopPosZ(200, 19)) ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(76, 64).BottomPosZ(8, 24)) ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(8, 64).BottomPosZ(8, 24)) - ITEM(Switch, landscape, SetLabel(t_("Portrait\nLandscape")).LeftPosZ(16, 176).TopPosZ(200, 15)) - ITEM(LabelBox, dv___21, SetLabel(t_("Placement")).HSizePosZ(8, 8).TopPosZ(180, 52)) END_LAYOUT diff --git a/uppsrc/CtrlLib/CtrlUtil.h b/uppsrc/CtrlLib/CtrlUtil.h index e06d3df6e..86eae413b 100644 --- a/uppsrc/CtrlLib/CtrlUtil.h +++ b/uppsrc/CtrlLib/CtrlUtil.h @@ -52,14 +52,14 @@ struct Win32PrintDlg_; #ifndef PLATFORM_WINCE -#if defined(GUI_WIN) || defined(PLATFORM_X11) +#if defined(GUI_WIN) || defined(PLATFORM_POSIX) class PrinterJob { #ifdef GUI_WIN One pdlg; bool Execute0(bool dodlg); #endif -#ifdef PLATFORM_X11 +#ifdef PLATFORM_POSIX Size pgsz; Size GetDefaultPageSize(String *name = NULL); #endif diff --git a/uppsrc/CtrlLib/PrinterJob.cpp b/uppsrc/CtrlLib/PrinterJob.cpp index 34d24b9ea..5045a16ed 100644 --- a/uppsrc/CtrlLib/PrinterJob.cpp +++ b/uppsrc/CtrlLib/PrinterJob.cpp @@ -154,7 +154,7 @@ PrinterJob& PrinterJob::CurrentPage(int i) #endif -#ifdef PLATFORM_X11 +#ifdef PLATFORM_POSIX struct PageSizeName { const char *name; @@ -376,7 +376,7 @@ PrinterJob::PrinterJob(const char *_name) from = to = 0; current = 0; pgsz = GetDefaultPageSize(); - dlgSuccess = false; + dlgSuccess = true; } PrinterJob::~PrinterJob() @@ -394,6 +394,7 @@ bool PrinterJob::Execute0() dlg.to.Enable(from != to); dlg.range.EnableCase(1, from != to); dlg.range.EnableCase(2, from != to); + dlg.landscape <<= landscape; String h; GetDefaultPageSize(&h); h.IsEmpty() ? dlg.paper <<= "A4" : dlg.paper <<= h; @@ -406,8 +407,7 @@ bool PrinterJob::Execute0() options << "-d " << ~dlg.printer; options << " -o media="; dlg.paper.GetIndex() < 0 ? options << ~dlg.slot : options << ~dlg.paper << "," << ~dlg.slot; - if(dlg.landscape) - options << " -o landscape"; + landscape = dlg.landscape; options << " -o number-up=" << ~dlg.npage; options << " -n " << ~dlg.copies; if(dlg.collate) @@ -456,9 +456,11 @@ struct PrinterDraw : PdfDraw { Draw& PrinterJob::GetDraw() { if(!draw) { - PrinterDraw *pd = new PrinterDraw(pgsz); + PrinterDraw *pd = new PrinterDraw(landscape ? Size(pgsz.cy, pgsz.cx) : pgsz); pd->canceled = !dlgSuccess; pd->options = options; + if(landscape) + pd->options << " -o landscape"; draw = pd; } return *draw;