Changeset 214

Show
Ignore:
Timestamp:
06/10/06 15:55:56 (2 years ago)
Author:
jordi
Message:

The print dialog is still not functional, but has already all controls in place.

I've added the Preferences and Print views in the POTFILES, to be translated.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/po/POTFILES.in

    r175 r214  
    1010src/gtk/FindView.cxx 
    1111src/gtk/MainView.cxx 
     12src/gtk/PreferencesView.cxx 
     13src/gtk/PrintView.cxx 
    1214src/gtk/StockIcons.cxx 
  • trunk/src/gtk/PrintView.cxx

    r213 r214  
    2424using namespace ePDFView; 
    2525 
     26// Enumerations. 
     27static enum 
     28{ 
     29    printerListNameColumn, 
     30    printerListStateColumn, 
     31    printerListJobsColumn, 
     32    printerListLocationColumn, 
     33    printerListNumColumn 
     34} printerListColumns; 
     35 
    2636PrintView::PrintView (GtkWindow *parent): 
    2737    IPrintView () 
     
    3747    // Utility dialogs shouldn't show themselves in the window list. 
    3848    gtk_window_set_skip_taskbar_hint (GTK_WINDOW (m_PrintDialog), TRUE); 
     49 
     50    GtkWidget *notebook = gtk_notebook_new (); 
     51    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (m_PrintDialog)->vbox), 
     52                       notebook); 
     53    gtk_container_set_border_width (GTK_CONTAINER (notebook), 6); 
     54 
     55    // Add the notebook's tabs. 
     56    { 
     57        GtkWidget *label = gtk_label_new (_("Printer")); 
     58        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), 
     59                                  createPrinterTab (), label); 
     60    } 
     61    { 
     62        GtkWidget *label = gtk_label_new (_("Job")); 
     63        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), 
     64                                  createJobTab (), label); 
     65    } 
     66    { 
     67        GtkWidget *label = gtk_label_new (_("Paper")); 
     68        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), 
     69                                  createPaperTab (), label); 
     70    } 
     71    gtk_widget_show_all (notebook); 
    3972} 
    4073 
     
    5891    } 
    5992} 
     93 
     94//////////////////////////////////////////////////////////////// 
     95// TabCreators 
     96//////////////////////////////////////////////////////////////// 
     97 
     98GtkWidget * 
     99PrintView::createJobTab () 
     100{ 
     101    GtkWidget *mainBox = gtk_vbox_new (FALSE, 12); 
     102    gtk_container_set_border_width (GTK_CONTAINER (mainBox), 3); 
     103 
     104    // Print range frame. 
     105    GtkWidget *printRangeLabel = gtk_label_new (_("<b>Print Range</b>")); 
     106    GtkWidget *printRangeFrame = gtk_frame_new (NULL); 
     107    gtk_box_pack_start_defaults (GTK_BOX (mainBox), printRangeFrame); 
     108    // Set a bold label and no border. 
     109    gtk_label_set_use_markup (GTK_LABEL (printRangeLabel), TRUE); 
     110    gtk_frame_set_label_widget (GTK_FRAME (printRangeFrame), printRangeLabel); 
     111    gtk_frame_set_shadow_type (GTK_FRAME (printRangeFrame), GTK_SHADOW_NONE); 
     112    // The alignment. 
     113    GtkWidget *printRangeAlign = gtk_alignment_new (0, 0, 1, 1); 
     114    gtk_alignment_set_padding (GTK_ALIGNMENT (printRangeAlign), 6, 0, 12, 6); 
     115    gtk_container_add (GTK_CONTAINER (printRangeFrame), printRangeAlign); 
     116    // The table to add all controls. 
     117    GtkWidget *printRangeTable = gtk_table_new (2, 2, FALSE); 
     118    gtk_container_add (GTK_CONTAINER (printRangeAlign), printRangeTable); 
     119    gtk_table_set_row_spacings (GTK_TABLE (printRangeTable), 3); 
     120    gtk_table_set_col_spacings (GTK_TABLE (printRangeTable), 12); 
     121    // Create the two radio buttons. 
     122    GtkWidget *allPagesRadio = 
     123        gtk_radio_button_new_with_mnemonic (NULL, _("_All pages")); 
     124    GtkWidget *pageRangeRadio = 
     125        gtk_radio_button_new_with_mnemonic_from_widget ( 
     126                GTK_RADIO_BUTTON (allPagesRadio), _("_Range:")); 
     127    GtkWidget *pageRangeEntry = gtk_entry_new (); 
     128    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), allPagesRadio, 
     129                               0, 2, 0, 1); 
     130    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), pageRangeRadio, 
     131                               0, 1, 1, 2); 
     132    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), pageRangeEntry, 
     133                               1, 2, 1, 2); 
     134 
     135    // Page set frame 
     136    GtkWidget *pageSetLabel = gtk_label_new (_("<b>Page Set</b>")); 
     137    GtkWidget *pageSetFrame = gtk_frame_new (NULL); 
     138    gtk_box_pack_start_defaults (GTK_BOX (mainBox), pageSetFrame); 
     139    // Set a bold label and no border. 
     140    gtk_label_set_use_markup (GTK_LABEL (pageSetLabel), TRUE); 
     141    gtk_frame_set_label_widget (GTK_FRAME (pageSetFrame), pageSetLabel); 
     142    gtk_frame_set_shadow_type (GTK_FRAME (pageSetFrame), GTK_SHADOW_NONE); 
     143    // The alignment. 
     144    GtkWidget *pageSetAlign = gtk_alignment_new (0, 0, 1, 1); 
     145    gtk_alignment_set_padding (GTK_ALIGNMENT (pageSetAlign), 6, 0, 12, 6); 
     146    gtk_container_add (GTK_CONTAINER (pageSetFrame), pageSetAlign); 
     147    // The vbox to add all controls. 
     148    GtkWidget *pageSetBox = gtk_vbox_new (TRUE, 3); 
     149    gtk_container_add (GTK_CONTAINER (pageSetAlign), pageSetBox); 
     150    // Add the three radio buttons 
     151    GtkWidget *allPageSetRadio = 
     152        gtk_radio_button_new_with_mnemonic (NULL, _("A_ll pages")); 
     153    gtk_box_pack_start_defaults (GTK_BOX (pageSetBox), allPageSetRadio); 
     154    GtkWidget *oddPageSetRadio = 
     155        gtk_radio_button_new_with_mnemonic_from_widget ( 
     156                GTK_RADIO_BUTTON (allPageSetRadio), _("O_dd pages")); 
     157    gtk_box_pack_start_defaults (GTK_BOX (pageSetBox), oddPageSetRadio); 
     158    GtkWidget *evenPageSetRadio = 
     159        gtk_radio_button_new_with_mnemonic_from_widget ( 
     160                GTK_RADIO_BUTTON (allPageSetRadio), _("_Even pages")); 
     161    gtk_box_pack_start_defaults (GTK_BOX (pageSetBox), evenPageSetRadio); 
     162 
     163 
     164    // Copies frame 
     165    GtkWidget *copiesLabel = gtk_label_new (_("<b>Copies</b>")); 
     166    GtkWidget *copiesFrame = gtk_frame_new (NULL); 
     167    gtk_box_pack_start_defaults (GTK_BOX (mainBox), copiesFrame); 
     168    // Set a bold label and no border. 
     169    gtk_label_set_use_markup (GTK_LABEL (copiesLabel), TRUE); 
     170    gtk_frame_set_label_widget (GTK_FRAME (copiesFrame), copiesLabel); 
     171    gtk_frame_set_shadow_type (GTK_FRAME (copiesFrame), GTK_SHADOW_NONE); 
     172    // The alignment. 
     173    GtkWidget *copiesAlign = gtk_alignment_new (0, 0, 1, 1); 
     174    gtk_alignment_set_padding (GTK_ALIGNMENT (copiesAlign), 6, 0, 12, 6); 
     175    gtk_container_add (GTK_CONTAINER (copiesFrame), copiesAlign); 
     176    // The table to add all controls. 
     177    GtkWidget *copiesTable = gtk_table_new (2, 2, FALSE); 
     178    gtk_container_add (GTK_CONTAINER (copiesAlign), copiesTable); 
     179    gtk_table_set_row_spacings (GTK_TABLE (copiesTable), 3); 
     180    gtk_table_set_col_spacings (GTK_TABLE (copiesTable), 12); 
     181    // Create the Num. of Copies label and spin. 
     182    GtkWidget *numCopiesLabel = gtk_label_new (_("N_umber of copies:")); 
     183    gtk_misc_set_alignment (GTK_MISC (numCopiesLabel), 1.0, 0.5); 
     184    gtk_label_set_use_underline (GTK_LABEL (numCopiesLabel), TRUE); 
     185    GtkWidget *numCopiesSpin = gtk_spin_button_new_with_range (1, 999, 1); 
     186    gtk_label_set_mnemonic_widget (GTK_LABEL (numCopiesLabel), numCopiesSpin); 
     187    // Create the collate check box. 
     188    GtkWidget *collateCheck = 
     189        gtk_check_button_new_with_mnemonic (_("C_ollate")); 
     190    gtk_table_attach (GTK_TABLE (copiesTable), numCopiesLabel, 
     191                      0, 1, 0, 1, 
     192                      (GtkAttachOptions)(GTK_SHRINK | GTK_FILL), 
     193                      (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 
     194                      0, 0); 
     195    gtk_table_attach_defaults (GTK_TABLE (copiesTable), numCopiesSpin, 
     196                               1, 2, 0, 1); 
     197    gtk_table_attach_defaults (GTK_TABLE (copiesTable), collateCheck, 
     198                               1, 2, 1, 2); 
     199 
     200    return mainBox; 
     201} 
     202 
     203GtkWidget * 
     204PrintView::createPaperTab () 
     205{ 
     206    GtkWidget *mainBox = gtk_vbox_new (FALSE, 12); 
     207    gtk_container_set_border_width (GTK_CONTAINER (mainBox), 3); 
     208 
     209    // Paper frame 
     210    GtkWidget *paperLabel = gtk_label_new (_("<b>Paper and Layout</b>")); 
     211    GtkWidget *paperFrame = gtk_frame_new (NULL); 
     212    gtk_box_pack_start_defaults (GTK_BOX (mainBox), paperFrame); 
     213    // Set a bold label and no border. 
     214    gtk_label_set_use_markup (GTK_LABEL (paperLabel), TRUE); 
     215    gtk_frame_set_label_widget (GTK_FRAME (paperFrame), paperLabel); 
     216    gtk_frame_set_shadow_type (GTK_FRAME (paperFrame), GTK_SHADOW_NONE); 
     217    // The alignment. 
     218    GtkWidget *paperAlign = gtk_alignment_new (0, 0, 1, 1); 
     219    gtk_alignment_set_padding (GTK_ALIGNMENT (paperAlign), 6, 0, 12, 6); 
     220    gtk_container_add (GTK_CONTAINER (paperFrame), paperAlign); 
     221    // The table to add all controls. 
     222    GtkWidget *paperTable = gtk_table_new (3, 2, FALSE); 
     223    gtk_container_add (GTK_CONTAINER (paperAlign), paperTable); 
     224    gtk_table_set_row_spacings (GTK_TABLE (paperTable), 3); 
     225    gtk_table_set_col_spacings (GTK_TABLE (paperTable), 12); 
     226    // Paper size and combobox 
     227    GtkWidget *paperSizeLabel = gtk_label_new (_("Paper _Size:")); 
     228    gtk_misc_set_alignment (GTK_MISC (paperSizeLabel), 1.0, 0.5); 
     229    gtk_label_set_use_underline (GTK_LABEL (paperSizeLabel), TRUE); 
     230    GtkWidget *paperSizeCombo = gtk_combo_box_new (); 
     231    gtk_label_set_mnemonic_widget (GTK_LABEL (paperSizeLabel), paperSizeCombo); 
     232    gtk_table_attach (GTK_TABLE (paperTable), paperSizeLabel, 
     233                      0, 1, 0, 1, 
     234                      (GtkAttachOptions)(GTK_SHRINK | GTK_FILL), 
     235                      (GtkAttachOptions)(GTK_SHRINK), 
     236                      0, 0); 
     237    gtk_table_attach (GTK_TABLE (paperTable), paperSizeCombo, 
     238                      1, 2, 0, 1, 
     239                      (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 
     240                      (GtkAttachOptions)(GTK_SHRINK), 
     241                      0, 0); 
     242    // Page orientation and combobox 
     243    GtkWidget *pageOrientationLabel = gtk_label_new (_("Page _orientation:")); 
     244    gtk_misc_set_alignment (GTK_MISC (pageOrientationLabel), 1.0, 0.5); 
     245    gtk_label_set_use_underline (GTK_LABEL (pageOrientationLabel), TRUE); 
     246    GtkWidget *pageOrientationCombo = gtk_combo_box_new (); 
     247    gtk_label_set_mnemonic_widget (GTK_LABEL (pageOrientationLabel), 
     248                                   pageOrientationCombo); 
     249    gtk_table_attach (GTK_TABLE (paperTable), pageOrientationLabel, 
     250                      0, 1, 1, 2, 
     251                      (GtkAttachOptions)(GTK_SHRINK | GTK_FILL), 
     252                      (GtkAttachOptions)(GTK_SHRINK), 
     253                      0, 0); 
     254    gtk_table_attach (GTK_TABLE (paperTable), pageOrientationCombo, 
     255                      1, 2, 1, 2, 
     256                      (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 
     257                      (GtkAttachOptions)(GTK_SHRINK), 
     258                      0, 0); 
     259    // Layout label and combobox 
     260    GtkWidget *layoutLabel = gtk_label_new (_("_Layout:")); 
     261    gtk_misc_set_alignment (GTK_MISC (layoutLabel), 1.0, 0.5); 
     262    gtk_label_set_use_underline (GTK_LABEL (layoutLabel), TRUE); 
     263    GtkWidget *layoutCombo = gtk_combo_box_new (); 
     264    gtk_label_set_mnemonic_widget (GTK_LABEL (layoutLabel), layoutCombo); 
     265    gtk_table_attach (GTK_TABLE (paperTable), layoutLabel, 
     266                      0, 1, 2, 3, 
     267                      (GtkAttachOptions)(GTK_SHRINK | GTK_FILL), 
     268                      (GtkAttachOptions)(GTK_SHRINK), 
     269                      0, 0); 
     270    gtk_table_attach (GTK_TABLE (paperTable), layoutCombo, 
     271                      1, 2, 2, 3, 
     272                      (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 
     273                      (GtkAttachOptions)(GTK_SHRINK), 
     274                      0, 0); 
     275 
     276    return mainBox; 
     277} 
     278 
     279GtkWidget * 
     280PrintView::createPrinterTab () 
     281{ 
     282    GtkWidget *mainBox = gtk_vbox_new (FALSE, 12); 
     283    gtk_container_set_border_width (GTK_CONTAINER (mainBox), 3); 
     284 
     285    m_PrinterList = gtk_tree_store_new (printerListNumColumn, 
     286                                        G_TYPE_STRING, 
     287                                        G_TYPE_STRING, 
     288                                        G_TYPE_INT, 
     289                                        G_TYPE_STRING); 
     290    m_PrinterListView = 
     291        gtk_tree_view_new_with_model (GTK_TREE_MODEL (m_PrinterList)); 
     292    gtk_box_pack_start_defaults (GTK_BOX (mainBox), m_PrinterListView); 
     293 
     294    { 
     295        GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 
     296        GtkTreeViewColumn *column = 
     297            gtk_tree_view_column_new_with_attributes (_("Printer"), renderer, 
     298                    "text", printerListNameColumn, NULL); 
     299        gtk_tree_view_append_column (GTK_TREE_VIEW (m_PrinterListView), 
     300                                     column); 
     301    } 
     302 
     303    { 
     304        GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 
     305        GtkTreeViewColumn *column = 
     306            gtk_tree_view_column_new_with_attributes (_("State"), renderer, 
     307                    "text", printerListStateColumn, NULL); 
     308        gtk_tree_view_append_column (GTK_TREE_VIEW (m_PrinterListView), 
     309                                     column); 
     310    } 
     311 
     312    { 
     313        GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 
     314        GtkTreeViewColumn *column = 
     315            gtk_tree_view_column_new_with_attributes (_("Jobs"), renderer, 
     316                    "text", printerListJobsColumn, NULL); 
     317        gtk_tree_view_append_column (GTK_TREE_VIEW (m_PrinterListView), 
     318                                     column); 
     319    } 
     320 
     321    { 
     322        GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); 
     323        GtkTreeViewColumn *column = 
     324            gtk_tree_view_column_new_with_attributes (_("Location"), renderer, 
     325                    "text", printerListLocationColumn, NULL); 
     326        gtk_tree_view_append_column (GTK_TREE_VIEW (m_PrinterListView), 
     327                                     column); 
     328    } 
     329 
     330    return mainBox; 
     331} 
  • trunk/src/gtk/PrintView.h

    r213 r214  
    3131        protected: 
    3232            GtkWidget *m_PrintDialog; 
     33            GtkTreeStore *m_PrinterList; 
     34            GtkWidget *m_PrinterListView; 
     35 
     36            GtkWidget *createJobTab (void); 
     37            GtkWidget *createPaperTab (void); 
     38            GtkWidget *createPrinterTab (void); 
    3339    }; 
    3440}