Changeset 221
- Timestamp:
- 06/11/06 11:05:39 (2 years ago)
- Location:
- trunk/src
- Files:
-
- 5 modified
-
IPrintView.h (modified) (4 diffs)
-
PrintPter.cxx (modified) (3 diffs)
-
PrintPter.h (modified) (2 diffs)
-
gtk/PrintView.cxx (modified) (14 diffs)
-
gtk/PrintView.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/IPrintView.h
r220 r221 62 62 63 63 /// 64 /// @brief Adds a new page size to the list. 65 /// 66 /// @param name The possibly translated name of the page size. 67 /// @param value The value the ePDFView internally uses to know 68 /// which page size is. 69 /// 70 virtual void addPageSize (const gchar *name, 71 const gchar *value) = 0; 72 73 /// 64 74 /// @brief Adds a new printer to the list of printer. 65 75 /// … … 77 87 78 88 /// 89 /// @brief Deletes all sizes from the list of page sizes. 90 /// 91 virtual void clearPageSizeList (void) = 0; 92 93 /// 79 94 /// @brief Gets the number of copies to do. 80 95 /// … … 85 100 86 101 /// 102 /// @brief Gets the name of the currently selected printer. 103 /// 104 /// @return The name of the printer that is currently selected. 105 /// The name returned is the same as the name passed 106 /// to the view using the addPrinter() function. 107 /// 108 virtual gchar *getSelectedPrinterName (void) = 0; 109 110 /// 87 111 /// @brief Check is the "All Pages" range option is selected. 88 112 /// … … 91 115 /// 92 116 virtual gboolean isSelectedAllPagesRangeOption (void) = 0; 117 118 /// 119 /// @brief Selects a page size. 120 /// 121 /// @param pageSizeInde The index of the page size to select. 122 /// 123 virtual void selectPageSize (unsigned int pageSizeIndex) = 0; 93 124 94 125 /// -
trunk/src/PrintPter.cxx
r220 r221 19 19 #include <cups/cups.h> 20 20 #include <cups/ipp.h> 21 #include <cups/ppd.h> 21 22 #include <locale.h> 22 23 #include "epdfview.h" … … 99 100 100 101 void 101 PrintPter::printActivated ( void)102 { 103 // Once done, i s the same as canceled :-)102 PrintPter::printActivated () 103 { 104 // Once done, it's the same as canceled :-) 104 105 cancelActivated (); 106 } 107 108 void 109 PrintPter::printerSelectionChanged () 110 { 111 IPrintView &view = getView (); 112 113 gchar *printerName = view.getSelectedPrinterName (); 114 if ( NULL != printerName ) 115 { 116 const gchar *printerPPDName = cupsGetPPD (printerName); 117 if ( NULL != printerPPDName ) 118 { 119 ppd_file_t *printerPPD = ppdOpenFile (printerPPDName); 120 if ( NULL != printerPPD ) 121 { 122 view.clearPageSizeList (); 123 int pageSizeToSelect = 1; 124 for ( int currentSize = 0 ; 125 currentSize < printerPPD->num_sizes ; 126 ++currentSize ) 127 { 128 const gchar *sizeName = printerPPD->sizes[currentSize].name; 129 view.addPageSize (_(sizeName), sizeName); 130 } 131 view.selectPageSize (pageSizeToSelect); 132 ppdClose (printerPPD); 133 } 134 } 135 g_free (printerName); 136 } 105 137 } 106 138 … … 244 276 view.selectPrinter (printerToSelect); 245 277 } 246 } 247 } 278 // The selection has been changed before the 279 // view could connect the signals, so here we'll set the selected 280 // printer's page sizes "by hand". 281 printerSelectionChanged (); 282 } 283 } -
trunk/src/PrintPter.h
r219 r221 24 24 namespace ePDFView 25 25 { 26 /// 27 /// @enum PrintPageOrientation. 28 /// 29 enum PrintPageOrientation 30 { 31 PRINT_PAGE_ORIENTATION_PORTRAIT, 32 PRINT_PAGE_ORIENTATION_LANDSCAPE 33 }; 34 35 /// 36 /// @enum PrintPageLayout 37 /// 38 enum PrintPageLayout 39 { 40 PRINT_PAGE_LAYOUT_PLAIN, 41 PRINT_PAGE_LAYOUT_2IN1, 42 PRINT_PAGE_LAYOUT_4IN1 43 }; 26 44 27 45 /// … … 42 60 void pageRangeOptionChanged (void); 43 61 void printActivated (void); 62 void printerSelectionChanged (void); 44 63 45 64 protected: -
trunk/src/gtk/PrintView.cxx
r220 r221 34 34 } printerListColumns; 35 35 36 static enum 37 { 38 printOrientationLabelColumn, 39 printOrientationValueColumn, 40 printOrientationNumColumn 41 } printOritentationColumns; 42 43 static enum 44 { 45 printLayoutLabelColumn, 46 printLayoutValueColumn, 47 printLayoutNumColumn 48 } printLayoutColumns; 49 50 static enum 51 { 52 pageSizeNameColumn, 53 pageSizeValueColumn, 54 pageSizeNumColumn 55 } pageSizeColumns; 56 36 57 // Callbacks. 37 58 static void print_view_number_of_copies_changed (GtkSpinButton *, gpointer); 38 59 static void print_view_page_range_option_changed (GtkToggleButton *, gpointer); 60 static void print_view_printer_selection_changed (GtkTreeSelection *, gpointer); 39 61 40 62 PrintView::PrintView (GtkWindow *parent): … … 96 118 G_CALLBACK (print_view_page_range_option_changed), 97 119 pter); 120 GtkTreeSelection *selection = 121 gtk_tree_view_get_selection (GTK_TREE_VIEW (m_PrinterListView)); 122 g_signal_connect (G_OBJECT (selection), "changed", 123 G_CALLBACK (print_view_printer_selection_changed), 124 pter); 98 125 99 126 // Run the dialog. … … 109 136 110 137 void 138 PrintView::addPageSize (const gchar *name, const gchar *value) 139 { 140 GtkTreeIter pageSizeIter; 141 gtk_list_store_append (m_PageSize, &pageSizeIter); 142 gtk_list_store_set (m_PageSize, &pageSizeIter, 143 pageSizeNameColumn, name, 144 pageSizeValueColumn, value, 145 -1); 146 } 147 148 void 111 149 PrintView::addPrinter (const gchar *name, int jobs, const gchar *state, 112 150 const gchar *location) 113 151 { 114 152 GtkTreeIter printerIter; 115 gtk_list_store_append ( GTK_LIST_STORE (m_PrinterList), &printerIter);116 gtk_list_store_set ( GTK_LIST_STORE (m_PrinterList), &printerIter,153 gtk_list_store_append (m_PrinterList, &printerIter); 154 gtk_list_store_set (m_PrinterList, &printerIter, 117 155 printerListNameColumn, name, 118 156 printerListJobsColumn, jobs, … … 122 160 } 123 161 162 void 163 PrintView::clearPageSizeList () 164 { 165 gtk_list_store_clear (m_PageSize); 166 } 167 124 168 unsigned int 125 169 PrintView::getNumberOfCopies () … … 128 172 } 129 173 174 gchar * 175 PrintView::getSelectedPrinterName () 176 { 177 gchar *printerName = NULL; 178 GtkTreeSelection *selectedPrinter = 179 gtk_tree_view_get_selection (GTK_TREE_VIEW (m_PrinterListView)); 180 GtkTreeIter selectedPrinterIter; 181 if ( gtk_tree_selection_get_selected (selectedPrinter, NULL, 182 &selectedPrinterIter) ) 183 { 184 gtk_tree_model_get (GTK_TREE_MODEL (m_PrinterList), 185 &selectedPrinterIter, 186 printerListNameColumn, &printerName, 187 -1); 188 } 189 190 return printerName; 191 } 192 130 193 gboolean 131 194 PrintView::isSelectedAllPagesRangeOption () 132 195 { 133 196 return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m_AllPagesRangeOption)); 197 } 198 199 void 200 PrintView::selectPageSize (unsigned int pageSizeIndex) 201 { 202 gtk_combo_box_set_active (GTK_COMBO_BOX (m_PageSizeView), pageSizeIndex); 134 203 } 135 204 … … 169 238 170 239 //////////////////////////////////////////////////////////////// 171 // Tab Creators240 // Tab Creators 172 241 //////////////////////////////////////////////////////////////// 173 242 … … 305 374 gtk_misc_set_alignment (GTK_MISC (paperSizeLabel), 1.0, 0.5); 306 375 gtk_label_set_use_underline (GTK_LABEL (paperSizeLabel), TRUE); 307 GtkWidget *paperSizeCombo = gtk_combo_box_new (); 308 gtk_label_set_mnemonic_widget (GTK_LABEL (paperSizeLabel), paperSizeCombo); 376 createPageSizeListModel (); 377 m_PageSizeView = gtk_combo_box_new_with_model (GTK_TREE_MODEL (m_PageSize)); 378 gtk_label_set_mnemonic_widget (GTK_LABEL (paperSizeLabel), m_PageSizeView); 379 { 380 GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 381 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (m_PageSizeView), 382 renderer, TRUE); 383 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (m_PageSizeView), 384 renderer, 385 "text", 386 printOrientationLabelColumn, NULL); 387 } 309 388 gtk_table_attach (GTK_TABLE (paperTable), paperSizeLabel, 310 389 0, 1, 0, 1, … … 312 391 (GtkAttachOptions)(GTK_SHRINK), 313 392 0, 0); 314 gtk_table_attach (GTK_TABLE (paperTable), paperSizeCombo,393 gtk_table_attach (GTK_TABLE (paperTable), m_PageSizeView, 315 394 1, 2, 0, 1, 316 395 (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 317 396 (GtkAttachOptions)(GTK_SHRINK), 318 397 0, 0); 319 // Page orientation and combobox398 // Page orientation label and combobox 320 399 GtkWidget *pageOrientationLabel = gtk_label_new (_("Page _orientation:")); 321 400 gtk_misc_set_alignment (GTK_MISC (pageOrientationLabel), 1.0, 0.5); 322 401 gtk_label_set_use_underline (GTK_LABEL (pageOrientationLabel), TRUE); 323 GtkWidget *pageOrientationCombo = gtk_combo_box_new (); 402 403 createOrientationListModel (); 404 m_OrientationView = 405 gtk_combo_box_new_with_model (GTK_TREE_MODEL (m_Orientation)); 324 406 gtk_label_set_mnemonic_widget (GTK_LABEL (pageOrientationLabel), 325 pageOrientationCombo); 407 m_OrientationView); 408 { 409 GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 410 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (m_OrientationView), 411 renderer, TRUE); 412 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (m_OrientationView), 413 renderer, 414 "text", 415 printOrientationLabelColumn, NULL); 416 } 417 gtk_combo_box_set_active (GTK_COMBO_BOX (m_OrientationView), 0); 418 326 419 gtk_table_attach (GTK_TABLE (paperTable), pageOrientationLabel, 327 420 0, 1, 1, 2, … … 329 422 (GtkAttachOptions)(GTK_SHRINK), 330 423 0, 0); 331 gtk_table_attach (GTK_TABLE (paperTable), pageOrientationCombo,424 gtk_table_attach (GTK_TABLE (paperTable), m_OrientationView, 332 425 1, 2, 1, 2, 333 426 (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), … … 338 431 gtk_misc_set_alignment (GTK_MISC (layoutLabel), 1.0, 0.5); 339 432 gtk_label_set_use_underline (GTK_LABEL (layoutLabel), TRUE); 340 GtkWidget *layoutCombo = gtk_combo_box_new (); 341 gtk_label_set_mnemonic_widget (GTK_LABEL (layoutLabel), layoutCombo); 433 434 createLayoutListModel (); 435 m_LayoutView = gtk_combo_box_new_with_model (GTK_TREE_MODEL (m_Layout)); 436 gtk_label_set_mnemonic_widget (GTK_LABEL (layoutLabel), m_LayoutView); 437 { 438 GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 439 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (m_LayoutView), 440 renderer, TRUE); 441 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (m_LayoutView), 442 renderer, 443 "text", printLayoutLabelColumn, NULL); 444 } 445 gtk_combo_box_set_active (GTK_COMBO_BOX (m_LayoutView), 0); 446 342 447 gtk_table_attach (GTK_TABLE (paperTable), layoutLabel, 343 448 0, 1, 2, 3, … … 345 450 (GtkAttachOptions)(GTK_SHRINK), 346 451 0, 0); 347 gtk_table_attach (GTK_TABLE (paperTable), layoutCombo,452 gtk_table_attach (GTK_TABLE (paperTable), m_LayoutView, 348 453 1, 2, 2, 3, 349 454 (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), … … 360 465 gtk_container_set_border_width (GTK_CONTAINER (mainBox), 3); 361 466 362 m_PrinterList = gtk_list_store_new (printerListNumColumn, 363 G_TYPE_STRING, 364 G_TYPE_STRING, 365 G_TYPE_INT, 366 G_TYPE_STRING); 467 createPrinterListModel (); 367 468 m_PrinterListView = 368 469 gtk_tree_view_new_with_model (GTK_TREE_MODEL (m_PrinterList)); … … 409 510 410 511 //////////////////////////////////////////////////////////////// 512 // Model Creators 513 //////////////////////////////////////////////////////////////// 514 515 void 516 PrintView::createLayoutListModel () 517 { 518 m_Layout = gtk_list_store_new (printLayoutNumColumn, 519 G_TYPE_STRING, // Label 520 G_TYPE_INT); // Value 521 522 GtkTreeIter iter; 523 gtk_list_store_append (m_Layout, &iter); 524 gtk_list_store_set (m_Layout, &iter, 525 printLayoutLabelColumn, _("Plain"), 526 printLayoutValueColumn, PRINT_PAGE_LAYOUT_PLAIN, 527 -1); 528 529 gtk_list_store_append (m_Layout, &iter); 530 gtk_list_store_set (m_Layout, &iter, 531 printLayoutLabelColumn, _("2 pages in 1"), 532 printLayoutValueColumn, PRINT_PAGE_LAYOUT_2IN1, 533 -1); 534 535 gtk_list_store_append (m_Layout, &iter); 536 gtk_list_store_set (m_Layout, &iter, 537 printLayoutLabelColumn, _("4 pages in 1"), 538 printLayoutValueColumn, PRINT_PAGE_LAYOUT_4IN1, 539 -1); 540 } 541 542 void 543 PrintView::createOrientationListModel () 544 { 545 m_Orientation = gtk_list_store_new (printOrientationNumColumn, 546 G_TYPE_STRING, // Label 547 G_TYPE_INT); // Value 548 549 GtkTreeIter iter; 550 gtk_list_store_append (m_Orientation, &iter); 551 gtk_list_store_set (m_Orientation, &iter, 552 printOrientationLabelColumn, _("Portrait"), 553 printOrientationValueColumn, PRINT_PAGE_ORIENTATION_PORTRAIT, 554 -1); 555 556 gtk_list_store_append (m_Orientation, &iter); 557 gtk_list_store_set (m_Orientation, &iter, 558 printLayoutLabelColumn, _("Landscape"), 559 printOrientationValueColumn, PRINT_PAGE_ORIENTATION_LANDSCAPE, 560 -1); 561 } 562 563 void 564 PrintView::createPageSizeListModel () 565 { 566 m_PageSize = gtk_list_store_new (pageSizeNumColumn, 567 G_TYPE_STRING, // Label 568 G_TYPE_STRING); // Value 569 } 570 571 void 572 PrintView::createPrinterListModel () 573 { 574 m_PrinterList = 575 gtk_list_store_new (printerListNumColumn, 576 G_TYPE_STRING, // Name 577 G_TYPE_STRING, // State 578 G_TYPE_INT, // Jobs 579 G_TYPE_STRING); // Location 580 581 } 582 583 //////////////////////////////////////////////////////////////// 411 584 // Callbacks 412 585 //////////////////////////////////////////////////////////////// … … 429 602 pter->pageRangeOptionChanged (); 430 603 } 604 605 void 606 print_view_printer_selection_changed (GtkTreeSelection *sel, gpointer data) 607 { 608 g_assert (NULL != data && "The data parameter is NULL."); 609 610 PrintPter *pter = (PrintPter *)data; 611 pter->printerSelectionChanged (); 612 } -
trunk/src/gtk/PrintView.h
r220 r221 29 29 virtual void setPresenter (PrintPter *pter); 30 30 31 virtual void addPageSize (const gchar *name, 32 const gchar *value); 31 33 virtual void addPrinter (const gchar *name, int jobs, 32 34 const gchar *state, 33 35 const gchar *location); 36 virtual void clearPageSizeList (void); 34 37 virtual unsigned int getNumberOfCopies (void); 38 virtual gchar *getSelectedPrinterName (void); 35 39 virtual gboolean isSelectedAllPagesRangeOption (void); 36 virtual void selectPrinter (unsigned int printerInde); 40 virtual void selectPageSize (unsigned int pageSizeIndex); 41 virtual void selectPrinter (unsigned int printerIndex); 37 42 virtual void sensitiveCollate (gboolean sensitive); 38 43 virtual void sensitivePageRange (gboolean sensitive); … … 43 48 GtkWidget *m_Collate; 44 49 GtkWidget *m_CustomPagesRangeOption; 50 GtkListStore *m_Layout; 51 GtkWidget *m_LayoutView; 45 52 GtkWidget *m_NumberOfCopies; 53 GtkListStore *m_Orientation; 54 GtkWidget *m_OrientationView; 46 55 GtkWidget *m_PageRange; 56 GtkListStore *m_PageSize; 57 GtkWidget *m_PageSizeView; 47 58 GtkWidget *m_PrintDialog; 48 59 GtkListStore *m_PrinterList; … … 52 63 GtkWidget *createPaperTab (void); 53 64 GtkWidget *createPrinterTab (void); 65 66 void createLayoutListModel (void); 67 void createOrientationListModel (void); 68 void createPageSizeListModel (void); 69 void createPrinterListModel (void); 54 70 }; 55 71 }
