Changeset 218

Show
Ignore:
Timestamp:
06/10/06 19:50:31 (2 years ago)
Author:
jordi
Message:

The page range sensitivity is also implemented as well as the callback function for it and the collate sensitivity and the tests for both.

Location:
trunk
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/IPrintView.h

    r217 r218  
    7070 
    7171            /// 
     72            /// @brief Check is the "All Pages" range option is selected. 
     73            /// 
     74            /// @return TRUE if the range's "All Pages" option is selected. 
     75            ///         FALSE otherwise. 
     76            /// 
     77            virtual gboolean isSelectedAllPagesRangeOption (void) = 0; 
     78 
     79            /// 
    7280            /// @brief Changes the sensitivity of the "Collate" option. 
    7381            /// 
  • trunk/src/PrintPter.cxx

    r217 r218  
    7272 
    7373void 
     74PrintPter::pageRangeOptionChanged () 
     75{ 
     76    IPrintView &view = getView (); 
     77    if ( view.isSelectedAllPagesRangeOption () ) 
     78    { 
     79        view.sensitivePageRange (FALSE); 
     80    } 
     81    else 
     82    { 
     83        view.sensitivePageRange (TRUE); 
     84    } 
     85} 
     86 
     87void 
    7488PrintPter::printActivated (void) 
    7589{ 
  • trunk/src/PrintPter.h

    r217 r218  
    3636            void cancelActivated (void); 
    3737            void numberOfCopiesChanged (void); 
     38            void pageRangeOptionChanged (void); 
    3839            void printActivated (void); 
    3940 
  • trunk/src/gtk/PrintView.cxx

    r217 r218  
    3434} printerListColumns; 
    3535 
     36// Callbacks. 
     37static void print_view_number_of_copies_changed (GtkSpinButton *, gpointer); 
     38static void print_view_page_range_option_changed (GtkToggleButton *, gpointer); 
     39 
    3640PrintView::PrintView (GtkWindow *parent): 
    3741    IPrintView () 
     
    8286    IPrintView::setPresenter (pter); 
    8387 
     88    // Connect signals. 
     89    g_signal_connect (G_OBJECT (m_NumberOfCopies), "value_changed", 
     90                      G_CALLBACK (print_view_number_of_copies_changed), 
     91                      pter); 
     92    g_signal_connect (G_OBJECT (m_AllPagesRangeOption), "toggled", 
     93                      G_CALLBACK (print_view_page_range_option_changed), 
     94                      pter); 
     95    g_signal_connect (G_OBJECT (m_CustomPagesRangeOption), "toggled", 
     96                      G_CALLBACK (print_view_page_range_option_changed), 
     97                      pter); 
     98 
     99    // Run the dialog. 
    84100    if ( GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (m_PrintDialog)) ) 
    85101    { 
     
    96112{ 
    97113    return gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (m_NumberOfCopies)); 
     114} 
     115 
     116gboolean 
     117PrintView::isSelectedAllPagesRangeOption () 
     118{ 
     119    return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (m_AllPagesRangeOption)); 
    98120} 
    99121 
     
    138160    gtk_table_set_col_spacings (GTK_TABLE (printRangeTable), 12); 
    139161    // Create the two radio buttons. 
    140     GtkWidget *allPagesRadio = 
     162    m_AllPagesRangeOption = 
    141163        gtk_radio_button_new_with_mnemonic (NULL, _("_All pages")); 
    142     GtkWidget *pageRangeRadio = 
     164    m_CustomPagesRangeOption = 
    143165        gtk_radio_button_new_with_mnemonic_from_widget ( 
    144                 GTK_RADIO_BUTTON (allPagesRadio), _("_Range:")); 
     166                GTK_RADIO_BUTTON (m_AllPagesRangeOption), _("_Range:")); 
    145167    m_PageRange = gtk_entry_new (); 
    146     gtk_table_attach_defaults (GTK_TABLE (printRangeTable), allPagesRadio, 
     168    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), 
     169                               m_AllPagesRangeOption, 
    147170                               0, 2, 0, 1); 
    148     gtk_table_attach_defaults (GTK_TABLE (printRangeTable), pageRangeRadio, 
     171    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), 
     172                               m_CustomPagesRangeOption, 
    149173                               0, 1, 1, 2); 
    150174    gtk_table_attach_defaults (GTK_TABLE (printRangeTable), m_PageRange, 
     
    200224    gtk_misc_set_alignment (GTK_MISC (numCopiesLabel), 1.0, 0.5); 
    201225    gtk_label_set_use_underline (GTK_LABEL (numCopiesLabel), TRUE); 
    202     GtkWidget *m_NumberOfCopies = gtk_spin_button_new_with_range (1, 999, 1); 
     226    m_NumberOfCopies = gtk_spin_button_new_with_range (1, 999, 1); 
    203227    gtk_label_set_mnemonic_widget (GTK_LABEL (numCopiesLabel), 
    204228                                   m_NumberOfCopies); 
     
    347371    return mainBox; 
    348372} 
     373 
     374//////////////////////////////////////////////////////////////// 
     375// Callbacks 
     376//////////////////////////////////////////////////////////////// 
     377 
     378void 
     379print_view_number_of_copies_changed (GtkSpinButton *spin, gpointer data) 
     380{ 
     381    g_assert (NULL != data && "The data parameter is NULL."); 
     382 
     383    PrintPter *pter = (PrintPter *)data; 
     384    pter->numberOfCopiesChanged (); 
     385} 
     386 
     387void 
     388print_view_page_range_option_changed (GtkToggleButton *button, gpointer data) 
     389{ 
     390    g_assert (NULL != data && "The data parameter is NULL."); 
     391 
     392    PrintPter *pter = (PrintPter *)data; 
     393    pter->pageRangeOptionChanged (); 
     394} 
  • trunk/src/gtk/PrintView.h

    r217 r218  
    3030 
    3131            virtual unsigned int getNumberOfCopies (void); 
     32            virtual gboolean isSelectedAllPagesRangeOption (void); 
    3233            virtual void sensitiveCollate (gboolean sensitive); 
    3334            virtual void sensitivePageRange (gboolean sensitive); 
    3435 
    3536        protected: 
     37            GtkWidget *m_AllPagesRangeOption; 
    3638            GtkWidget *m_Collate; 
     39            GtkWidget *m_CustomPagesRangeOption; 
    3740            GtkWidget *m_NumberOfCopies; 
    3841            GtkWidget *m_PageRange; 
  • trunk/tests/DumbPrintView.cxx

    r217 r218  
    2424    IPrintView () 
    2525{ 
     26    m_AllPagesRangeOptionSelected = TRUE; 
    2627    m_NumberOfCopies = 1; 
    2728    m_SensitiveCollate = TRUE; 
     
    3738{ 
    3839    return m_NumberOfCopies; 
     40} 
     41 
     42gboolean 
     43DumbPrintView::isSelectedAllPagesRangeOption () 
     44{ 
     45    return m_AllPagesRangeOptionSelected; 
    3946} 
    4047 
     
    6875 
    6976void 
     77DumbPrintView::selectAllPagesRangeOption () 
     78{ 
     79    m_AllPagesRangeOptionSelected = TRUE; 
     80} 
     81 
     82void 
     83DumbPrintView::selectCustomPagesRangeOption () 
     84{ 
     85    m_AllPagesRangeOptionSelected = FALSE; 
     86} 
     87 
     88void 
    7089DumbPrintView::setNumberOfCopies (unsigned int copies) 
    7190{ 
  • trunk/tests/DumbPrintView.h

    r217 r218  
    2828 
    2929            virtual unsigned int getNumberOfCopies (void); 
     30            virtual gboolean isSelectedAllPagesRangeOption (void); 
    3031            virtual void sensitiveCollate (gboolean sensitive); 
    3132            virtual void sensitivePageRange (gboolean sensitive); 
     
    3435            gboolean isSensitiveCollate (void); 
    3536            gboolean isSensitivePageRange (void); 
     37            void selectAllPagesRangeOption (void); 
     38            void selectCustomPagesRangeOption (void); 
    3639            void setNumberOfCopies (unsigned int copies); 
    3740 
    3841        protected: 
     42            gboolean m_AllPagesRangeOptionSelected; 
    3943            gint m_NumberOfCopies; 
    4044            gboolean m_SensitiveCollate; 
  • trunk/tests/PrintPterTest.cxx

    r217 r218  
    9797    CPPUNIT_ASSERT ( m_View->isSensitiveCollate ()); 
    9898} 
     99 
     100/// 
     101/// @brief Check "Page Range"'s sensitivity. 
     102/// 
     103/// The page range entry is only sensitive when the "Range:" radio 
     104/// button is selected. 
     105/// 
     106void 
     107PrintPterTest::pageRangeSensitivity () 
     108{ 
     109    m_View->selectAllPagesRangeOption (); 
     110    m_PrintPter->pageRangeOptionChanged (); 
     111    CPPUNIT_ASSERT ( !m_View->isSensitivePageRange ()); 
     112 
     113    m_View->selectCustomPagesRangeOption (); 
     114    m_PrintPter->pageRangeOptionChanged (); 
     115    CPPUNIT_ASSERT ( m_View->isSensitivePageRange ()); 
     116 
     117    m_View->selectAllPagesRangeOption (); 
     118    m_PrintPter->pageRangeOptionChanged (); 
     119    CPPUNIT_ASSERT ( !m_View->isSensitivePageRange ()); 
     120 
     121    m_View->selectCustomPagesRangeOption (); 
     122    m_PrintPter->pageRangeOptionChanged (); 
     123    CPPUNIT_ASSERT ( m_View->isSensitivePageRange ()); 
     124} 
  • trunk/tests/PrintPterTest.h

    r217 r218  
    2828        CPPUNIT_TEST (initialSensitivity); 
    2929        CPPUNIT_TEST (collateSensitivity); 
     30        CPPUNIT_TEST (pageRangeSensitivity); 
    3031        CPPUNIT_TEST_SUITE_END (); 
    3132 
     
    3637            void initialSensitivity (void); 
    3738            void collateSensitivity (void); 
     39            void pageRangeSensitivity (void); 
    3840 
    3941        protected: