summaryrefslogtreecommitdiffstats
path: root/src/ui/widget/page-sizer.cpp
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2008-09-05 18:54:32 +0000
committercilix42 <cilix42@users.sourceforge.net>2008-09-05 18:54:32 +0000
commit97616de13f4a264f291651d1eaf44473cf316f17 (patch)
treeba9cd66f6bae9f26888a0f36dd4e223fc9fe31ac /src/ui/widget/page-sizer.cpp
parentAdd page sizes for various business card formats as per request in LP #172225 (diff)
downloadinkscape-97616de13f4a264f291651d1eaf44473cf316f17.tar.gz
inkscape-97616de13f4a264f291651d1eaf44473cf316f17.zip
Select landscape by default for certain page formats
(bzr r6763)
Diffstat (limited to 'src/ui/widget/page-sizer.cpp')
-rw-r--r--src/ui/widget/page-sizer.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp
index 98a92b5c7..835fda4d3 100644
--- a/src/ui/widget/page-sizer.cpp
+++ b/src/ui/widget/page-sizer.cpp
@@ -19,6 +19,8 @@
#endif
#include <string.h>
+#include <vector>
+#include <string>
#include <cmath>
#include <gtkmm.h>
@@ -87,6 +89,20 @@ struct PaperSizeRec {
SPUnitId const unit; //units
};
+// list of page formats that should be in landscape automatically
+static std::vector<std::string> lscape_papers;
+
+static void
+fill_landscape_papers() {
+ lscape_papers.push_back("US #10 Envelope");
+ lscape_papers.push_back("DL Envelope");
+ lscape_papers.push_back("Banner 468x60");
+ lscape_papers.push_back("Business Card (ISO 7810 ID-1)");
+ lscape_papers.push_back("Business Card (US)");
+ lscape_papers.push_back("Business Card (Europe)");
+ lscape_papers.push_back("Business Card (Australia/New Zealand)");
+}
+
static PaperSizeRec const inkscape_papers[] = {
{ "A4", 210, 297, SP_UNIT_MM },
{ "US Letter", 8.5, 11, SP_UNIT_IN },
@@ -152,11 +168,9 @@ static PaperSizeRec const inkscape_papers[] = {
{ "CSE", 462, 649, SP_UNIT_PT },
{ "US #10 Envelope", 4.125, 9.5, SP_UNIT_IN },
- // TODO: Select landscape by default.
/* See http://www.hbp.com/content/PCR_envelopes.cfm for a much larger list of US envelope
sizes. */
{ "DL Envelope", 110, 220, SP_UNIT_MM },
- // TODO: Select landscape by default.
{ "Ledger/Tabloid", 11, 17, SP_UNIT_IN },
/* Note that `Folio' (used in QPrinter/KPrinter) is deliberately absent from this list, as it
means different sizes to different people: different people may expect the width to be
@@ -165,11 +179,10 @@ static PaperSizeRec const inkscape_papers[] = {
page size to the list, then please consider using a name more specific than just `Folio' or
`Foolscap Folio'. */
{ "Banner 468x60", 60, 468, SP_UNIT_PX },
- // TODO: Select landscape by default.
{ "Icon 16x16", 16, 16, SP_UNIT_PX },
{ "Icon 32x32", 32, 32, SP_UNIT_PX },
{ "Icon 48x48", 48, 48, SP_UNIT_PX },
- /* business cards; TODO: select landscape by default */
+ /* business cards */
{ "Business Card (ISO 7810 ID-1)", 53.98, 85.60, SP_UNIT_MM },
{ "Business Card (US)", 2, 3.5, SP_UNIT_IN },
{ "Business Card (Europe)", 55, 85, SP_UNIT_MM },
@@ -214,6 +227,8 @@ PageSizer::PageSizer(Registry & _wr)
_paperSizeListScroller.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_ALWAYS);
_paperSizeListScroller.set_size_request(-1, 90);
+ fill_landscape_papers();
+
for (PaperSizeRec const *p = inkscape_papers; p->name; p++)
{
Glib::ustring name = p->name;
@@ -449,6 +464,15 @@ PageSizer::on_paper_size_list_changed()
PaperSize paper = piter->second;
double w = paper.smaller;
double h = paper.larger;
+
+ if (std::find(lscape_papers.begin(), lscape_papers.end(), paper.name.c_str()) != lscape_papers.end()) {
+ // enforce landscape mode if this is desired for the given page format
+ _landscape = true;
+ } else {
+ // otherwise we set portrait mode because
+ _landscape = false;
+ }
+
SPUnit const &src_unit = sp_unit_get_by_id (paper.unit);
sp_convert_distance (&w, &src_unit, &_px_unit);
sp_convert_distance (&h, &src_unit, &_px_unit);