diff -Naur gtklp-1.2.2/README.XTERM gtklp-1.2.2.oden/README.XTERM --- gtklp-1.2.2/README.XTERM 1970-01-01 01:00:00.000000000 +0100 +++ gtklp-1.2.2.oden/README.XTERM 2006-09-27 21:23:28.000000000 +0200 @@ -0,0 +1,17 @@ +From Jean-Michel Dault <jmdault@revolutionlinux.com> + +Here are some improvements I wrote for Commission Scolaire des Affluents, a +school district in Quebec, Canada with 72 schools. + +- put PaperSelect and Duplex side-by side in the general panel, and + add scrollbars in the other panels so that gtklp is workable in + low resolutions (800x600 and 640x480) +- add GTKLP_SIMPLE so we can force X and restrict users to the more common + options + +To enable these settings, put "export GTKLP_SIMPLE=1" in your Xsession +script. + +Then: +- remove lpr and kprinter, and make them symlinks to gtklp +- remove lpq and lprm and make them symlinks to gtklpq diff -Naur gtklp-1.2.2/ChangeLog gtklp-1.2.2.oden/ChangeLog --- gtklp-1.2.2/ChangeLog 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/ChangeLog 2006-09-27 21:30:17.000000000 +0200 @@ -47,6 +47,14 @@ * Thu May 05 2005 Tobias Mueller <sirtobi@stud.uni-hannover.de> - new chinese translations +* Wed May 18 2005 Jean-Michel Dault <jmdault@revolutionlinux.com> +- Improvements for X Terminals and schools +- put PaperSelect and Duplex side-by side in the general panel, and + add scrollbars in the other panels so that gtklp is workable in + low resolutions +- add GTKLP_SIMPLE so we can force X and restrict users to the more common + options. + * Thu Mar 03 2005 Tobias Mueller <sirtobi@stud.uni-hannover.de> - new polish translations - "double free()" bug fixed diff -Naur gtklp-1.2.2/gtklp/general.c gtklp-1.2.2.oden/gtklp/general.c --- gtklp-1.2.2/gtklp/general.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/general.c 2006-09-27 21:23:28.000000000 +0200 @@ -554,7 +554,11 @@ } void callGtkLPQFunc(GtkButton *button, gpointer data) { - system(GTKLPQCOM); + /* JMD: start in background */ + unsigned char CMD[MAXPATH+1]; + strncpy(CMD,GTKLPQCOM,(size_t)MAXPATH); + strcat(CMD,"&"); + system(CMD); } void PrinterCallGtklpq(GtkWidget *container) @@ -639,6 +643,8 @@ void GeneralTab(void) { + GtkWidget *vbox1, *vbox2, *hbox; + generalTab=gtk_vbox_new(FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(generalTab), FRAME_BORDER); @@ -646,7 +652,21 @@ PrinterFrame(generalTab); PrinterNumCopies(generalTab); - PrinterMedia(generalTab); - PrinterDuplex(generalTab); + + /* JMD: put Media and Duplex side by side so it fits better in 800x600 */ + hbox=gtk_hbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(generalTab), hbox, TRUE,TRUE,0); + gtk_widget_show(hbox); + + vbox1=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox1, TRUE,TRUE,0); + gtk_widget_show(vbox1); + + vbox2=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE,TRUE,0); + gtk_widget_show(vbox2); + + PrinterMedia(vbox1); + PrinterDuplex(vbox2); } diff -Naur gtklp-1.2.2/gtklp/gtklp.c gtklp-1.2.2.oden/gtklp/gtklp.c --- gtklp-1.2.2/gtklp/gtklp.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/gtklp.c 2006-09-27 21:28:29.000000000 +0200 @@ -136,6 +136,7 @@ int calledLpr; int calledLp; int forceX; + extern int isSimple; unsigned char Path[MAXPATH+1]; char *z1; char tmpenv[MAX_SERVER_NAME+13]; @@ -185,6 +186,15 @@ } } + /* JMD: make it kid-proof */ + isSimple=0; + if(getenv("GTKLP_SIMPLE") != (char *)NULL) { + if(strcmp(getenv("GTKLP_SIMPLE"),"1") == 0) { + isSimple=1; + forceX=1; + } + } + /*-- Use X ? --*/ nox=noX(); @@ -688,7 +698,8 @@ button_pad(buttonReset); gtk_signal_connect (GTK_OBJECT (buttonReset), "clicked",GTK_SIGNAL_FUNC (ResetFunc), NULL); gtk_box_pack_start(GTK_BOX(buttonBox), buttonReset, FALSE, TRUE, 0); - gtk_widget_show (buttonReset); + /* JMD */ + if(isSimple!=1) { gtk_widget_show (buttonReset); } #if GTK_MAJOR_VERSION != 1 buttonSave = gtk_button_new_from_stock(GTK_STOCK_SAVE_AS); @@ -698,13 +709,15 @@ button_pad(buttonSave); gtk_signal_connect (GTK_OBJECT (buttonSave), "clicked",GTK_SIGNAL_FUNC (instWin), NULL); gtk_box_pack_start(GTK_BOX(buttonBox), buttonSave, FALSE, TRUE, 0); - gtk_widget_show (buttonSave); - + /* JMD */ + if(isSimple!=1) { gtk_widget_show (buttonSave); } + #if GTK_MAJOR_VERSION != 1 buttonAbbruch = gtk_button_new_from_stock(GTK_STOCK_QUIT); #else buttonAbbruch = gtk_button_new_with_label (str2str(_("Close"))); #endif + if(isSimple==1) { gtk_widget_set_size_request(buttonAbbruch,0,0); } button_pad(buttonAbbruch); gtk_signal_connect (GTK_OBJECT (buttonAbbruch), "clicked",GTK_SIGNAL_FUNC (AbbruchFunc), NULL); gtk_box_pack_start(GTK_BOX(buttonBox), buttonAbbruch, FALSE, TRUE, 0); @@ -736,7 +749,13 @@ gtk_widget_hide(progressBar); #endif ShowWidgets(); - if(DEBUG) + + /* JMD: if a file specified on the command line, show the General tab instead + of the File tab, since 99.9% of the time you don't want to add another file, + you just want to select your printer! */ + if(filesToPrintAnz >0) tabtoopen=1; + + if(DEBUG) printf("Switching to Tab %i\n",tabtoopen); #if GTK_MAJOR_VERSION == 1 diff -Naur gtklp-1.2.2/gtklp/gtklp_functions.c gtklp-1.2.2.oden/gtklp/gtklp_functions.c --- gtklp-1.2.2/gtklp/gtklp_functions.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/gtklp_functions.c 2006-09-27 21:23:28.000000000 +0200 @@ -77,6 +77,9 @@ GtkWidget *button_inst_remove; GtkWidget *instwin; +/* JMD: make it kid proof */ +int isSimple; + int teststdin() { fd_set rfds; @@ -345,11 +348,20 @@ wantraw=0; ExtraOpt[0]=(unsigned char)NULL; viewable[0]=1; - viewable[1]=1; - viewable[2]=1; - viewable[3]=1; - viewable[4]=1; - viewable[5]=1; + /* JMD: make it kid proof */ + if(isSimple!=1) { + viewable[1]=1; + viewable[2]=1; + viewable[3]=1; + viewable[4]=1; + viewable[5]=1; + } else { + viewable[1]=0; + viewable[2]=0; + viewable[3]=0; + viewable[4]=0; + viewable[5]=0; + } if(UserName[0] == (char)NULL) { if((strlen((char *)cupsUser()) < MAX_USERNAME)) @@ -704,8 +716,14 @@ if(which >= 1) { saveonexit=1; - saveanz=1; - rememberprinter=0; + /* JMD: do not save the number of pages on exit by default, + people forget to reset it to 1, and this results in + wasted paper */ + saveanz=0; + /* JMD: remember printer by default: it's very annoying to + always have to choose the right printer in a big office + with many printers with similar names */ + rememberprinter=1; remembertab=0; clearfilelist=1; exitonprint=1; @@ -713,7 +731,7 @@ jobidonexit=0; strncpy(BROWSER,DEF_BROWSER_CMD,(size_t)MAXPATH); strncpy(HELPURL,DEF_HELP_HOME,(size_t)MAXPATH); - GTKLPQCOM[0]=(char)NULL; + strncpy(GTKLPQCOM,DEF_GTKLPQCOM,(size_t)MAXPATH); wantconst=0; #if GTK_MAJOR_VERSION != 1 mainWindowHeight=0; @@ -1627,7 +1645,9 @@ PPDTab(); gtk_widget_show(ppdTab); GtklpTab(); - gtk_widget_show(gtklpTab); + if(isSimple!=1) { + gtk_widget_show(gtklpTab); + } } void ShowWidgets(void) diff -Naur gtklp-1.2.2/gtklp/image.c gtklp-1.2.2.oden/gtklp/image.c --- gtklp-1.2.2/gtklp/image.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/image.c 2006-09-27 21:23:28.000000000 +0200 @@ -406,23 +406,45 @@ } } +GtkWidget *ImageFrame(GtkWidget *container) +{ + GtkWidget *frameScrolled; + GtkWidget *hbox,*vbox; + + frameScrolled=gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(frameScrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); + gtk_box_pack_start(GTK_BOX(container), frameScrolled, TRUE, TRUE, 0); + gtk_widget_show(frameScrolled); + + hbox=gtk_hbox_new(FALSE,0); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(frameScrolled), hbox); + gtk_widget_show(hbox); + + vbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE,TRUE,FRAME_SPACING_V); + gtk_widget_show(vbox); + + return(vbox); +} void ImageTab(void) { - GtkWidget *hbox; + GtkWidget *hbox, *frame; imageTab=gtk_vbox_new(FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(imageTab), FRAME_BORDER); gtk_notebook_append_page(GTK_NOTEBOOK(tabs), imageTab, gtk_label_new(str2str(_("Image")))); + frame=ImageFrame(imageTab); + hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(imageTab), hbox, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); gtk_widget_show(hbox); ImagePosFrame(hbox); ImageScalingAllFrame(hbox); - ImageHUEFrame(imageTab); - ImageSatFrame(imageTab); + ImageHUEFrame(frame); + ImageSatFrame(frame); } diff -Naur gtklp-1.2.2/gtklp/output.c gtklp-1.2.2.oden/gtklp/output.c --- gtklp-1.2.2/gtklp/output.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/output.c 2006-09-27 21:23:28.000000000 +0200 @@ -65,6 +65,8 @@ GtkWidget *nupPixMapWid=NULL; GtkWidget *mirrorCheck; +extern int isSimple; + void outputTabSetDefaults(void) { if(DEBUG) @@ -632,7 +634,9 @@ mainHBox=gtk_hbox_new(FALSE,INFRAME_SPACING_H); gtk_box_pack_start(GTK_BOX(container),mainHBox,FALSE, FALSE,FRAME_SPACING_V); - gtk_widget_show(mainHBox); + if(isSimple!=1) { + gtk_widget_show(mainHBox); + } brightFrame=gtk_frame_new(str2str(_("Brightness"))); gtk_box_pack_start(GTK_BOX(mainHBox), brightFrame, TRUE, TRUE,FRAME_SPACING_V); @@ -695,7 +699,9 @@ mainHBox=gtk_hbox_new(FALSE,INFRAME_SPACING_H); gtk_box_pack_start(GTK_BOX(container),mainHBox,FALSE, FALSE,FRAME_SPACING_V); - gtk_widget_show(mainHBox); + if(isSimple!=1) { + gtk_widget_show(mainHBox); + } gammaFrame=gtk_frame_new(str2str(_("Gamma correction"))); gtk_box_pack_start(GTK_BOX(mainHBox), gammaFrame, TRUE, TRUE,FRAME_SPACING_V); @@ -748,15 +754,40 @@ } +GtkWidget *OutputFrame(GtkWidget *container) +{ + GtkWidget *frameScrolled; + GtkWidget *hbox,*vbox; + + frameScrolled=gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(frameScrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); + gtk_box_pack_start(GTK_BOX(container), frameScrolled, TRUE, TRUE, 0); + gtk_widget_show(frameScrolled); + + hbox=gtk_hbox_new(FALSE,0); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(frameScrolled), hbox); + gtk_widget_show(hbox); + + vbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE,TRUE,FRAME_SPACING_V); + gtk_widget_show(vbox); + + return(vbox); +} void OutputTab(void) { + + GtkWidget *frame; + outputTab=gtk_vbox_new(FALSE,0); gtk_notebook_append_page(GTK_NOTEBOOK(tabs), outputTab, gtk_label_new(str2str(_("Output")))); - RangesFrame(outputTab); - sheetUsageFrame(outputTab); - BrightFrame(outputTab); - GammaFrame(outputTab); + frame=OutputFrame(outputTab); + + RangesFrame(frame); + sheetUsageFrame(frame); + BrightFrame(frame); + GammaFrame(frame); } diff -Naur gtklp-1.2.2/gtklp/special.c gtklp-1.2.2.oden/gtklp/special.c --- gtklp-1.2.2/gtklp/special.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/special.c 2006-09-27 21:23:28.000000000 +0200 @@ -357,17 +357,40 @@ gtk_signal_connect(GTK_OBJECT(GTK_ENTRY(extraOptField)),"changed",GTK_SIGNAL_FUNC(extraOptChanged),NULL); } +GtkWidget *SpecialFrame(GtkWidget *container) +{ + GtkWidget *frameScrolled; + GtkWidget *hbox,*vbox; + + frameScrolled=gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(frameScrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); + gtk_box_pack_start(GTK_BOX(container), frameScrolled, TRUE, TRUE, 0); + gtk_widget_show(frameScrolled); + + hbox=gtk_hbox_new(FALSE,0); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(frameScrolled), hbox); + gtk_widget_show(hbox); + + vbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE,TRUE,FRAME_SPACING_V); + gtk_widget_show(vbox); + + return(vbox); +} void SpecialTab(void) { + GtkWidget *frame; + specialTab=gtk_vbox_new(FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(specialTab), FRAME_BORDER); gtk_notebook_append_page(GTK_NOTEBOOK(tabs), specialTab, gtk_label_new(str2str(_("Special")))); - BannerFrame(specialTab); - JobNameFrame(specialTab); - SpecialOptFrame(specialTab); - PassFrame(specialTab); - ExtraOptFrame(specialTab); + frame=SpecialFrame(specialTab); + BannerFrame(frame); + JobNameFrame(frame); + SpecialOptFrame(frame); + PassFrame(frame); + ExtraOptFrame(frame); } diff -Naur gtklp-1.2.2/gtklp/text.c gtklp-1.2.2.oden/gtklp/text.c --- gtklp-1.2.2/gtklp/text.c 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/gtklp/text.c 2006-09-27 21:23:28.000000000 +0200 @@ -698,15 +698,39 @@ } +GtkWidget *TextFrame(GtkWidget *container) +{ + GtkWidget *frameScrolled; + GtkWidget *hbox,*vbox; + + frameScrolled=gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(frameScrolled),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); + gtk_box_pack_start(GTK_BOX(container), frameScrolled, TRUE, TRUE, 0); + gtk_widget_show(frameScrolled); + + hbox=gtk_hbox_new(FALSE,0); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(frameScrolled), hbox); + gtk_widget_show(hbox); + + vbox=gtk_vbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE,TRUE,FRAME_SPACING_V); + gtk_widget_show(vbox); + + return(vbox); +} + void TextTab(void) { + GtkWidget *frame; + textTab=gtk_vbox_new(FALSE,0); gtk_container_set_border_width(GTK_CONTAINER(textTab), FRAME_BORDER); gtk_notebook_append_page(GTK_NOTEBOOK(tabs), textTab, gtk_label_new(str2str(_("Text")))); - textSizes(textTab); - marginSizes(textTab); - textForm(textTab); + frame=TextFrame(textTab); + textSizes(frame); + marginSizes(frame); + textForm(frame); } diff -Naur gtklp-1.2.2/include/defaults.h gtklp-1.2.2.oden/include/defaults.h --- gtklp-1.2.2/include/defaults.h 2006-05-30 18:36:55.000000000 +0200 +++ gtklp-1.2.2.oden/include/defaults.h 2006-09-27 21:23:28.000000000 +0200 @@ -63,7 +63,8 @@ /* PATHS */ #define DEF_GTKLPRC "/etc/gtklp" #define DEF_HELP_HOME "http://localhost:631/sum.html#STANDARD_OPTIONS" -#define DEF_BROWSER_CMD "netscape $0 2>/dev/null&" +#define DEF_BROWSER_CMD "mozffremote $0 2>/dev/null&" +#define DEF_GTKLPQCOM "gtklpq" #define GTKLPRC_USER ".gtklp" #define GTKLPRC_GLOBAL "gtklprc"