@@ -824,56 +824,42 @@ void MCA_getcolordialogcolors(MCColor*& r_colors, uindex_t& r_count)
824824
825825MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
826826{
827- if (!MCModeMakeLocalWindows ())
828- {
829- bool t_success;
830- t_success = true ;
831-
832- MCLinuxPrintSetup t_setup;
833-
834- MCAutoDataRef t_data_in;
835-
836- if (t_success)
837- t_success = MCLinuxPrintSetupEncode (t_setup, &t_data_in);
838-
839- uint32_t t_result;
840- t_result = PRINTER_DIALOG_RESULT_ERROR;
841- if (t_success)
842- {
843- MCAutoDataRef t_data_out;
844-
845- MCRemotePrintSetupDialog (*t_data_in, &t_data_out, t_result);
846-
847- if (t_result == PRINTER_DIALOG_RESULT_OKAY)
848- {
849- if (MCLinuxPrintSetupDecode (*t_data_out, t_setup))
850- {
851- }
852- else
853- t_result = PRINTER_DIALOG_RESULT_ERROR;
854-
855- }
856- }
857-
858-
859- return (MCPrinterDialogResult)t_result;
860- }
861-
862- GtkWidget * dialog ;
827+ GtkPrintUnixDialog * dialog ;
863828 gint ret_code ;
864829 MCPrinterDialogResult result = PRINTER_DIALOG_RESULT_CANCEL ;
865830
866831 gtk_init ();
867832
868- dialog = gtk_print_unix_dialog_new ( " Printer setup" , NULL );
869- make_front_widget ( dialog ) ;
833+ dialog = (GtkPrintUnixDialog *) gtk_print_unix_dialog_new ( " Printer setup" , NULL );
834+ make_front_widget ( (GtkWidget *) dialog ) ;
870835
871- gtk_print_unix_dialog_set_manual_capabilities ( GTK_PRINT_UNIX_DIALOG (dialog), GTK_PRINT_CAPABILITY_GENERATE_PS);
872-
836+ gtk_print_unix_dialog_set_manual_capabilities ( GTK_PRINT_UNIX_DIALOG (dialog), GTK_PRINT_CAPABILITY_GENERATE_PDF);
837+
838+ #if NOT_WORKING
839+ // Capture existing settings and ensure they are presented in the dialog.
840+ GtkPrintSettings *t_settings;
841+ t_settings = gtk_print_settings_new ();
842+ // gtk_print_settings_set_printer(t_settings, p_settings, printername);
843+ gtk_print_settings_set_n_copies (t_settings, p_settings . copies);
844+ gtk_print_settings_set_collate (t_settings, p_settings . collate);
845+ gtk_print_settings_set_orientation (t_settings,
846+ p_settings . orientation == PRINTER_ORIENTATION_PORTRAIT ? GTK_PAGE_ORIENTATION_PORTRAIT :
847+ p_settings . orientation == PRINTER_ORIENTATION_LANDSCAPE ? GTK_PAGE_ORIENTATION_LANDSCAPE :
848+ p_settings . orientation == PRINTER_ORIENTATION_REVERSE_PORTRAIT ? GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT :
849+ /* p_settings . orientation == PRINTER_ORIENTATION_REVERSE_LANDSCAPE ?*/ GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE);
850+ gtk_print_settings_set_duplex (t_settings,
851+ p_settings . duplex_mode == PRINTER_DUPLEX_MODE_SIMPLEX ? GTK_PRINT_DUPLEX_SIMPLEX :
852+ p_settings . duplex_mode == PRINTER_DUPLEX_MODE_LONG_EDGE ? GTK_PRINT_DUPLEX_HORIZONTAL :
853+ /* p_settings . duplex_mode == PRINTER_DUPLEX_MODE_SHORT_EDGE ? */ GTK_PRINT_DUPLEX_VERTICAL);
854+ gtk_print_settings_set_paper_width (t_settings, p_settings . paper_size_width, GTK_UNIT_POINTS);
855+ gtk_print_settings_set_paper_height (t_settings, p_settings . paper_size_height, GTK_UNIT_POINTS);
856+ gtk_print_unix_dialog_set_settings (dialog, t_settings);
857+ g_object_unref (t_settings);
858+ #endif
859+
873860 g_timeout_add (100 , gtk_idle_callback, NULL );
874861 ret_code = gtk_dialog_run (GTK_DIALOG (dialog)) ;
875-
876-
862+
877863 if ( ret_code == GTK_RESPONSE_OK )
878864 {
879865 result = PRINTER_DIALOG_RESULT_OKAY ;
@@ -882,29 +868,28 @@ MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
882868 t_printer = gtk_print_unix_dialog_get_selected_printer ( GTK_PRINT_UNIX_DIALOG ( dialog ) ) ;
883869 p_settings . printername = strdup ( gtk_printer_get_name ( t_printer ) ) ;
884870
885-
886- GtkPrintSettings* t_printer_settings ;
887- t_printer_settings = gtk_print_unix_dialog_get_settings ( GTK_PRINT_UNIX_DIALOG ( dialog )) ;
888-
889-
890871 if ( p_settings . outputfilename != NULL )
891872 delete (p_settings . outputfilename - 7 );
892873 p_settings . outputfilename = NULL ;
893874 p_settings . printertype = PRINTER_OUTPUT_DEVICE ;
894875
876+ GtkPrintSettings* t_printer_settings ;
877+ t_printer_settings = gtk_print_unix_dialog_get_settings ( GTK_PRINT_UNIX_DIALOG ( dialog )) ;
878+
895879 if ( strcmp ( p_settings . printername, " Print to File" ) == 0 )
896880 {
897881 p_settings . printertype = PRINTER_OUTPUT_FILE ;
898882 p_settings . outputfilename = strdup ( gtk_print_settings_get ( t_printer_settings, GTK_PRINT_SETTINGS_OUTPUT_URI) ) ;
899883 p_settings . outputfilename += 7 ;
900884 }
885+
886+ #ifdef NOT_WORKING
887+
901888
902-
903- GtkPageRange* t_ranges ;
889+ /* GtkPageRange* t_ranges ;
904890 MCInterval * t_rev_ranges ;
905891
906- int4 t_range_count ;
907-
892+ int4 t_range_count;
908893 t_ranges = gtk_print_settings_get_page_ranges ( t_printer_settings , &t_range_count ) ;
909894 if ( t_range_count > 0 )
910895 {
@@ -917,13 +902,10 @@ MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
917902 p_settings . page_ranges[a] . from++;
918903 p_settings . page_ranges[a] . to++;
919904 }
920- }
921-
922-
923-
905+ }*/
906+
924907 p_settings . copies = gtk_print_settings_get_n_copies ( t_printer_settings ) ;
925908 p_settings . collate = gtk_print_settings_get_collate ( t_printer_settings ) ;
926-
927909 GtkPageOrientation tGtkOr = gtk_print_settings_get_orientation ( t_printer_settings ) ;
928910 switch (tGtkOr)
929911 {
@@ -943,8 +925,6 @@ MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
943925 p_settings . orientation = PRINTER_ORIENTATION_REVERSE_LANDSCAPE ;
944926 break ;
945927 }
946-
947-
948928 switch ( gtk_print_settings_get_duplex ( t_printer_settings ) )
949929 {
950930 case GTK_PRINT_DUPLEX_SIMPLEX:
@@ -958,12 +938,15 @@ MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
958938 case GTK_PRINT_DUPLEX_VERTICAL:
959939 p_settings . duplex_mode = PRINTER_DUPLEX_MODE_LONG_EDGE ;
960940 break ;
961-
962941 }
963-
942+ p_settings . paper_size_width = (uint4)ceil (gtk_print_settings_get_paper_width (t_printer_settings, GTK_UNIT_POINTS));
943+ p_settings . paper_size_height = (uint4)ceil (gtk_print_settings_get_paper_height (t_printer_settings, GTK_UNIT_POINTS));
944+ #endif
945+
946+ g_object_unref (t_printer_settings);
964947 }
965948
966- gtk_widget_destroy (dialog);
949+ gtk_widget_destroy ((GtkWidget *) dialog);
967950
968951 while (gtk_events_pending ())
969952 gtk_main_iteration ();
@@ -979,47 +962,6 @@ MCPrinterDialogResult MCA_gtk_printer_setup ( PSPrinterSettings &p_settings )
979962
980963MCPrinterDialogResult MCA_gtk_page_setup (PSPrinterSettings &p_settings)
981964{
982- if (!MCModeMakeLocalWindows ())
983- {
984- bool t_success;
985- t_success = true ;
986-
987- MCLinuxPageSetup t_setup;
988- t_setup . paper_width = p_settings . paper_size_width;
989- t_setup . paper_height = p_settings . paper_size_height;
990- t_setup . orientation = p_settings . orientation;
991- t_setup . left_margin = t_setup . top_margin = t_setup . right_margin = t_setup . bottom_margin = 0 ;
992-
993- MCAutoDataRef t_data_in;
994-
995- if (t_success)
996- t_success = MCLinuxPageSetupEncode (t_setup, &t_data_in);
997-
998- uint32_t t_result;
999- t_result = PRINTER_DIALOG_RESULT_ERROR;
1000- if (t_success)
1001- {
1002- MCAutoDataRef t_data_out;
1003-
1004- MCRemotePageSetupDialog (*t_data_in, &t_data_out, t_result);
1005-
1006- if (t_result == PRINTER_DIALOG_RESULT_OKAY)
1007- {
1008- if (MCLinuxPageSetupDecode (*t_data_out, t_setup))
1009- {
1010- p_settings . paper_size_width = t_setup . paper_width;
1011- p_settings . paper_size_height = t_setup . paper_height;
1012- p_settings . orientation = (MCPrinterOrientation)t_setup . orientation;
1013- }
1014- else
1015- t_result = PRINTER_DIALOG_RESULT_ERROR;
1016-
1017- }
1018- }
1019-
1020- return (MCPrinterDialogResult)t_result;
1021- }
1022-
1023965 GtkWidget * dialog ;
1024966
1025967 gint ret_code ;
0 commit comments