diff options
Diffstat (limited to 'perl-install/standalone/drakfont')
-rwxr-xr-x | perl-install/standalone/drakfont | 1264 |
1 files changed, 0 insertions, 1264 deletions
diff --git a/perl-install/standalone/drakfont b/perl-install/standalone/drakfont deleted file mode 100755 index 38a365261..000000000 --- a/perl-install/standalone/drakfont +++ /dev/null @@ -1,1264 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (C) 2001 by MandrakeSoft (sdupont@mandrakesoft.com) -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# drakfont Future Overview -# - Fonts import: -# pfb ( Adobe Type 1 binary ) -# pfa ( Adobe Type 1 ASCII ) -# ttf ( True-Type ) -# pcf.gz -# Speedo -# and Bitmap (PCF, BDF, and SNF) -# - Features -# - Install fonts from any directory -# - Get windows fonts on any vfat partitions -# - Get fonts on any partitions. -# - UN-installation of any fonts (even if not installed through drakfont) -# - Support -# - Xfs -# - ghostscript & printer -# - Staroffice & printer -# - abiword -# - netscape -# - Koffice, Gnumeric, ... studying -# - all fonts supported by printer -# - anti-aliases by RENDER in Xfree86 .... -# supported by KDE. -# will be supported by gnome 1.2. -# Visual Interface: -# Window interface: -# - Fontselectiondialog widget -# - Command buttons under Fontselectiondialog (like the actual frontend). -# Commands buttons: -# - import from windows partition. -# import from all fat32 partitions and look for winnt/windows/font -# and import all (delete doublon) but don't import if already exist. -# - import from directory -# look for if it exist before for each font and not delete the original. -# (replace all, no, none) -# expert options: -# ask the directory, and look for if it exist before -# if it exist ask: (replace all, no, none) -# - uninstall with list per font type -# Expert additional switch -# - option support: ghostscript, Staroffice, etc... -# check-button. (by default all check) -# - Printer Application Fonts Support... -# check-button. (by default all check) -# -# TODO: -# - abiword, Koffice, Gnumeric, ... -# - Speedo and Bitmap (PCF, BDF, and SNF) -# - option strong: strong verification with ttmkfdir -c ? -# -# REQUIRE: -# - font-tools.*.mdk.i586.rpm -# -# USING: -# - pfm2afm: by Ken Borgendale: Convert a Windows .pfm file to a .afm (Adobe Font Metrics) -# - type1inst: by James Macnicol: type1inst generates files fonts.dir fonts.scale & Fontmap. -# - ttf2pt1: by Andrew Weeks, Frank Siegert, Thomas Henlich, Sergey Babkin convert ttf font files to afm and pfb fonts -# -# -# directory to install fonts /usr/X11R6/lib/X11/fonts/ -# -->> /usr/X11R6/lib/X11/fonts/drakfont - -use Gtk; -use lib qw(/usr/lib/libDrakX ); - -use standalone - ; #- warning, standalone must be loaded very first, for 'explanations' - -use interactive; -use my_gtk qw(:helpers :wrappers); -use common; - -#use strict; -#use Config; -#use POSIX; - -my $in = 'interactive'->vnew( 'su', 'network' ); - -if ( "@ARGV" =~ /--help|-h/ ) { - print q(Font Importation and monitoring application ---windows_import : import from all available windows partitions. ---xls_fonts : show all fonts that already exist from xls ---strong : strong verification of font. ---install : accept any font file and any directry. ---uninstall : uninstall any font or any directory of font. ---replace : replace all font if already exist ---application : 0 none application. - : 1 all application available supported. - : name_of_application like so for staroffice - : and gs for ghostscript for only this one. -); - exit(0); -} - -# global variables needed by each functions -my $xlsfonts = 0; -my $windows = 0; -my $strong; -my $replace; -my $application; -my $install; -my $uninstall; -my $so = 1; -my $gs = 1; -my $abi = 1; -my $printer = 1; -my $mode = -1; -my @application; -my @install; -my @uninstall; -my $interactive; -my $text; -my $vscrollbar; -my $check4; -my $check1; -my $check2; -my $check3; -my $pbar; -my $pbar1; -my $pbar2; -my $pbar3; -my $font_box; -my $central_widget; -my $label1; -my $label2; -my $label3; -my $label4; -my $list_path; -my $path_list; -my $current_path; -my $list; -my $list_all_font_path; - -foreach (@ARGV) { - /--list|-l/ and $list_all_font_path = 1, $mode = -1; - /--xls_fonts/ and $xlsfonts = 1, $mode = -1; - /--windows_import|-wi/ and $windows = 1, $mode = -1; - /--strong|-s/ and $strong = 1, $mode = -1; - /--replace|-r/ and $replace = 1, $mode = -1; - /--application/ and $mode = 0, next; - $mode == 0 and push @application, $_; - /--install/ and $mode = 1, next; - $mode == 1 and push @install, $_; - /--uninstall/ and $mode = 2, next; - $mode == 2 and push @uninstall, $_; -} - -foreach my $i (@application) { - if ( $i =~ /so/i ) { - if ( $gs != 2 ) { $gs = 0; } - $so = 2; - } - if ( $i =~ /gs/i ) { - if ( $so != 2 ) { $so = 0; } - $gs = 2; - } -} - -# PATH and binary full path -my $xfs_conffile = '/etc/X11/fs/config'; -my $drakfont_dir = '/usr/X11R6/lib/X11/fonts/drakfont'; -my $ttf2pt1 = '/usr/sbin/ttf2pt1'; -my $pfm2afm = '/usr/sbin/pfm2afm'; -my $type1inst = '/usr/sbin/type1inst'; -my $chkfontpath = '/usr/sbin/chkfontpath'; -my $mkttfdir = '/usr/X11R6/bin/mkttfdir'; -my $ghostscript; - -#my $ttmkfdir = '/usr/sbin/ttmkfdir'; - -# Global lists, just to manipulate it easily. -# my @font_list => list of fonts to install. -# my @installed_fonts; => list of installed fonts. -# my @installed_fonts_path; => list of path included in xfs. -# my @fontsdir_to_install; => list of fonts to uninstall. -# my @fontsdir_to_uninstall; => path to remove in xfs font file. -# my @installed_fonts_full_path; => full path list of fonts to uninstall. - -my @font_list; -my @installed_fonts; -my @installed_fonts_path; -my @fontsdir_to_install; -my @fontsdir_to_uninstall; -my @installed_fonts_full_path; - -sub list_fontpath { - foreach ( grep { /\d+:\s/ } `$chkfontpath -l` ) { - chomp; - s/\d+:\s//gi; - s/:\w*$//gi; - push @installed_fonts_path, $_; - } -} - -sub chk_empty_xfs_path { - my @temp3; - foreach my $tmp_path (@installed_fonts_path) { - @temp3 = (); - foreach my $temp2 ( all($tmp_path) ) { - if ( !( ( $temp2 =~ /^fonts/ ) || ( $temp2 =~ /^type/ ) ) ) { - push @temp3, $temp2; - } - } - if ( !(@temp3) ) { - system("chkfontpath -r $tmp_path ") - or print "PERL::system command failed during chkfontpath\n"; - } - } -} - -sub search_installed_fonts { - list_fontpath(); - $interactive and progress( $pbar, 0.1, _("Search installed fonts") ); - push @installed_fonts, all($_) foreach @installed_fonts_path; - $interactive and progress( $pbar, 0.1, _("Unselect fonts installed") ); -} - -sub search_installed_fonts_full_path { - list_fontpath(); - foreach my $i (@installed_fonts_path) { - foreach my $j ( all($i) ) { - push @installed_fonts_full_path, "$i/$j"; - } - } -} - -sub search_windows_font { - foreach my $fstab_line ( grep { /vfat|ntfs/ } cat_('/etc/mtab') ) { - my $win_dir = ( split ( '\s', $fstab_line ) )[1]; - my @list_fonts_win = all("$win_dir/windows/fonts"); - my @list_fonts_winnt = all("$win_dir/winnt/fonts"); - my $nb_dir = @list_fonts_win + @list_fonts_winnt; - foreach ( [ \@list_fonts_win, "windows" ], - [ \@list_fonts_winnt, "winnt" ] ) - { - foreach my $i ( @{ $_->[0] } ) { - if ($interactive) { - if ($nb_dir) { - progress( $pbar, 0.25 / $nb_dir, _("parse all fonts") ); - } - else { - display_error( _("no fonts found") ); - return 0; - } - } - !$replace && grep( /$i/, @installed_fonts ) and next; - grep ( /$i$/, @font_list ) - or push @font_list, "$win_dir/$_->[1]/fonts/$i"; - } - } - $interactive && $nb_dir and progress( $pbar, 1, _("done") ); - } - if ( !@font_list ) { - print "[35mdrakfont:: could not find any font in /win*/fonts [0m\n"; - $interactive - and display_error( - _("could not find any font in your mounted partitions") ); - return 0; - } - 1; -} - -sub is_a_font { - local $_ = $_[0]; - /\.ttf$/i - || /\.pfa$/i - || /\.pfb$/i - || /\.pcf$/i - || /\.pcf\.gz$/i - || /\.pfm$/i - || /\.gsf$/; -} - -# Optimisation de cette etape indispensable -sub search_dir_font { - foreach my $fn (@install) { - my @font_list_tmp = (); - my @font_list_tmpp = (); - my $dir; - if ( !( -e $fn ) ) { print "$_ :: no such file or directory \n" } - else { - if ( -d $fn ) { - $dir = $fn; - foreach my $i ( all($fn) ) { - if ( is_a_font($i) ) { - push @font_list_tmp, "$i"; - foreach my $i (@font_list_tmp) { - !$replace && grep( /$i/, @installed_fonts ) - and next; - grep /$i/, @font_list or push @font_list, "$fn/$i"; - } - } - } - } - else { - if ( is_a_font($fn) ) { - !$replace && grep( /$fn/, @installed_fonts ) and next; - !grep /$fn/, (@installed_fonts) and push @font_list, "$fn"; - } - } - } - $interactive - and progress( $pbar, 0.50 / @install, _("Reselect correct fonts") ); - } - $interactive and progress( $pbar, 1, _("done") ); - !@font_list && $interactive - and display_error( _("could not find any font.\n") ); -} - -sub search_dir_font_uninstall { - my @font_list_tmp = (); - my $fn = $_; - if ( -d $fn ) { - foreach my $i ( all($fn) ) { - if ( is_a_font($i) ) { push @font_list_tmp, "$i"; } - } - } - else { - if ( is_a_font($fn) ) { push @font_list_tmp, "$fn"; } - } - foreach my $i (@installed_fonts_full_path) { - foreach my $j (@font_list_tmp) { - if ( $i =~ /$j/ ) { push @font_list, "$i"; } - } - } - print "Fonts to uninstal: " . $_ . "\n" foreach (@font_list); -} - -sub search_dir_font_uninstall_gi { - @font_list = @uninstall; - $interactive and progress( $pbar, 1, _("Search fonts in installed list") ); -} - -sub print_list { - print "Font(s) to Install:\n\n"; - print "$_\n" foreach (@font_list); -} - -sub dir_created { - -e $drakfont_dir || mkdir_p($drakfont_dir); - -e $drakfont_dir . "/Type1" || mkdir_p( $drakfont_dir . "/Type1" ); - -e $drakfont_dir . "/ttf" || mkdir_p( $drakfont_dir . "/ttf" ); - -e $drakfont_dir . "/tmp" || mkdir_p( $drakfont_dir . "/tmp" ); - -e $drakfont_dir . "/tmp/ttf" || mkdir_p( $drakfont_dir . "/tmp/ttf" ); - -e $drakfont_dir . "/tmp/Type1" || mkdir_p( $drakfont_dir . "/tmp/Type1" ); - -e $drakfont_dir . "/tmp/tmp" || mkdir_p( $drakfont_dir . "/tmp/tmp" ); -} - -sub put_font_dir { - my @tmpl; - my @list_ttf; - -e "/usr/share/ghostscript" - or $gs = 0 && print "ghostscript is not installed on your system...\n"; - if (@font_list) { - dir_created(); - foreach my $i (@font_list) { - cp_af( $i, $drakfont_dir . "/tmp/tmp" ); - $interactive - and progress( $pbar1, 1 / @font_list, _("Fonts copy") ); - } - $interactive and progress( $pbar1, 0.01, _("done") ); - $interactive - and progress( $pbar2, 0.10, _("True Type fonts installation") ); - glob("$drakfont_dir/tmp/tmp/*.TTF") - and system( 'cd ' - . $drakfont_dir - . '/tmp/tmp ; for foo in *.TTF; do mv $foo `basename $foo .TTF`.ttf; done' - ); - system( 'cd ' . $drakfont_dir . '/tmp/tmp && cp *.ttf ../../ttf' ); - $interactive - and progress( $pbar2, 0.20, _("please wait during ttmkfdir...") ); - - # system ('cd '.$drakfont_dir.'/ttf && $ttmkfdir > fonts.dir' ); - my $ttfdir = $drakfont_dir . "/ttf"; - `$mkttfdir $ttfdir`; - $interactive and progress( $pbar2, 0.10, _("True Type install done") ); - my $update_chkfontpath = "$chkfontpath -a $drakfont_dir/ttf"; - - if ( $so && $gs ) { - my @glob_drak = glob("$drakfont_dir/tmp/tmp/*.ttf"); - foreach my $fontname (@glob_drak) { - system("cd $drakfont_dir/tmp/tmp && $ttf2pt1 -b $fontname"); - $interactive - and - progress( $pbar2, 0.50 / @glob_drak, _("Fonts conversion") ); - } - system( -"cd $drakfont_dir/tmp/tmp && mv *.gsf *.pfb *.pfm *.afm ../Type1" - ); - system("cd $drakfont_dir/tmp/Type1 && $type1inst"); - $interactive and progress( $pbar2, 0.10, _("type1inst building") ); - -e "$drakfont_dir/tmp/Type1/Fontmap" - and system( -"cd $drakfont_dir/tmp/Type1 && cat Fontmap >> `rpm -ql ghostscript | grep Fontmap.GS` " - ); - system( -"cd $drakfont_dir/tmp/Type1 && mv *.pfm *.gsf *.afm *.pfb ../../Type1 " - ); - system("cd $drakfont_dir/Type1 && $type1inst"); - $interactive - and progress( $pbar2, 0.05, _("Ghostscript referencing") ); - $update_chkfontpath .= "; $chkfontpath -a $drakfont_dir/Type1"; - } - - if ( !$so && $gs ) { - foreach - my $fontname ( @tmpl = glob("$/drakfont_dir/tmp/tmp/*.ttf") ) - { - system("cd $/drakfont_dir/tmp/tmp && $ttf2pt1 -b $fontname"); - $interactive - and progress( $pbar2, 0.50 / @tmpl, _("Fonts conversion") ); - } - system("cd $drakfont_dir/tmp/tmp && mv *.gsf *.pfb *.pfm ../Type1"); - system("cd $drakfont_dir/tmp/Type1 && $type1inst"); - $interactive and progress( $pbar2, 0.1, _("type1inst building") ); - system( -"cd $drakfont_dir/tmp/Type1 && cat Fontmap >> `rpm -ql ghostscript | grep Fontmap.GS` " - ); - system( -"cd $drakfont_dir/tmp/Type1 && mv *.pfm *.afm *.gsf *.pfb ../../Type1 " - ); - system("cd $drakfont_dir/Type1 && $type1inst"); - $interactive - and progress( $pbar2, 0.05, _("Ghostscript referencing") ); - $update_chkfontpath .= "; $chkfontpath -a $drakfont_dir/Type1"; - } - - if ( $so && !$gs ) { - foreach my $fontname ( @tmpl = glob("$drakfont_dir/tmp/tmp/*.ttf") ) - { - system("cd $drakfont_dir/tmp/tmp && $ttf2pt1 $fontname"); - $interactive - and - progress( $pbar2, 0.25 / @tmpl, _("ttf fonts conversion") ); - } - foreach my $fontname ( @tmpl = glob("$drakfont_dir/tmp/tmp/*.pfm") ) - { - system("cd $drakfont_dir/tmp/tmp && $pfm2afm $fontname"); - $interactive - and - progress( $pbar2, 0.25 / @tmpl, _("pfm fonts conversion") ); - } - system("cd $drakfont_dir/tmp/tmp && mv *.afm ../Type1"); - system("cd $drakfont_dir/tmp/Type1 && mv *.afm ../../Type1 "); - system("cd $drakfont_dir/Type1 && $type1inst"); - $interactive and progress( $pbar2, 0.14, _("type1inst building") ); - $update_chkfontpath .= "; $chkfontpath -a $drakfont_dir/Type1"; - } - - $interactive and progress( $pbar2, 0.01, _("done") ); - $interactive - and progress( $pbar3, 0.25, _("Suppress temporary Files") ); - rm_rf("$drakfont_dir/tmp/"); - print "\n\nretarting xfs......\n"; - $interactive and progress( $pbar3, 0.5, _("Restart XFS") ); - system($update_chkfontpath); - - # system ($restart_xfs); - # system('kill -USR1 `/sbin/pidof xfs` 2&1>/dev/null'); - system('/etc/rc.d/init.d/xfs restart'); - $interactive and progress( $pbar3, 0.30, _("done") ); - } -} - -sub remove_gs_fonts { - my @Fontmap_new; - - if ( all("$drakfont_dir/remove") ) { - system(" cd $drakfont_dir/remove && $type1inst"); - my @Fontmap_out = cat_("$drakfont_dir/remove/Fontmap"); - my $FontmapGS = `rpm -ql ghostscript | grep Fontmap.GS`; - chomp($FontmapGS); - my @FontmapGS_list = cat_($FontmapGS); - foreach my $font_gs (@FontmapGS_list) { - my @tmp_list = split ( ' ', $font_gs ); - grep ( $_ =~ /$tmp_list[0]/, @Fontmap_out ) - or push @Fontmap_new, $font_gs; - } - print $_ foreach @Fontmap_new; - output( $FontmapGS, @Fontmap_new ); - } - -} - -sub remove_fonts { - my @list_dir; - -e $drakfont_dir . "/remove" || mkdir_p( $drakfont_dir . "/remove" ); - $interactive and progress( $pbar, 1, _("done") ); - foreach my $i (@font_list) { - $_ = $i; - if ( /.pfb$/ || /.gsf$/ || /.pfm$/ || /.pfa$/ ) { - system("mv $_ $drakfont_dir/remove "); - } - else { - rm_rf($i); - } - $i =~ s/\/\w*\.\w*//gi; - grep ( $i, (@list_dir) ) or push @list_dir, $i; - $interactive - and progress( $pbar1, 1 / @font_list, _("Suppress Fonts Files") ); - } - $interactive and progress( $pbar1, 0.01, _("done") ); - -e "/usr/share/ghostscript" and remove_gs_fonts(); - foreach my $i (@list_dir) { - if ( listlength all("$i") < 3 ) { - system("chkfontpath -r $i") - or print "PERL::system command failed during chkfontpath\n"; - } - else { - system("cd $i && type1inst") - or print "PERL::system command failed during cd or type1inst\n"; - } - $interactive - and progress( $pbar2, 1 / @list_dir, _("Suppress Fonts Files") ); - } - $interactive and progress( $pbar2, 0.01, _("xfs restart") ); - system("/etc/rc.d/init.d/xfs restart"); - -e "/usr/share/ghostscript" and rm_rf("$drakfont_dir/remove"); - $interactive and progress( $pbar2, 0.01, _("done") ); -} - -sub license_msg { - print _( -"Before installing any fonts, be sure that you have the right to use and install them on your system.\n\n-You can install the fonts using the normal way. In rare cases, bogus fonts may hang up your X Server." - ) - . "\n"; -} - - $list_all_font_path - || $xlsfonts - || $windows - || @install - || @uninstall ? backend_mod() : interactive_mode(); - -sub backend_mod { - if ($xlsfonts) { - system("xlsfonts"); - } - if ($list_all_font_path) { - system("$chkfontpath"); - } - if ($windows) { - license_msg(); - print "\nWindows fonts Installation........\n"; - search_installed_fonts(); - if ( search_windows_font() ) { - print_list(); - put_font_dir(); - } - print "\nThe End...........................\n"; - } - - if (@install) { - license_msg(); - print "\nInstall Specifics Fonts...........\n"; - search_installed_fonts(); - search_dir_font; - print "Font to install: " . $_ . "\n" foreach (@font_list); - put_font_dir(); - print "\nThe End...........................\n"; - } - - if (@uninstall) { - print "\nUninstall Specifics Fonts.........\n"; - search_installed_fonts_full_path(); - if ($interactive) { search_dir_font_uninstall_gi() } - else { search_dir_font_uninstall $_ foreach (@uninstall) } - remove_fonts(); - print "\nThe End............................\n"; - } -} - -sub create_fontsel { - my $font_sel; - gtkpack( $font_box, $font_sel = new Gtk::FontSelection, ); - $central_widget = \$font_sel; -} - -sub display_error { - my ($message) = @_; - my $label; - my $error_box; - ${$central_widget}->destroy(); - gtkpack( - $font_box, - $error_box = gtkpack_( - new Gtk::VBox( 0, 0 ), - 1, - new Gtk::Label($message), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("OK") ), - clicked => - sub { ${$central_widget}->destroy(); create_fontsel() } - ), - ), - ) - ); - $central_widget = \$error_box; -} - -sub interactive_mode { - my $font_sel; - $interactive = 1; - init Gtk; - my $window1 = - $::isEmbedded ? new Gtk::Plug($::XID) : new Gtk::Window -toplevel; - $window1->signal_connect( delete_event => sub { Gtk->exit(0) } ); - $window1->set_position(1); - $window1->set_title( _("Fonts Importation") ); - $window1->set_border_width(5); - my ( $pix_user_map, $pix_user_mask ) = gtkcreate_png("ic-drakfont-48"); - my ( $pix_u_map, $pix_u_mask ) = gtkcreate_png("drakfont.620x57"); - - gtkadd( - $window1, - gtkpack_( - new Gtk::VBox( 0, 2 ), - if_( - !$::isEmbedded, 0, new Gtk::Pixmap( $pix_u_map, $pix_u_mask ) - ), - 1, - gtkpack_( - new Gtk::HBox( 0, 2 ), - 1, - gtkpack_( - new Gtk::VBox( 0, 2 ), - 1, - gtkpack( - $font_box = new Gtk::VBox( 0, 5 ), - $font_sel = new Gtk::FontSelection, - ), - 1, - gtkpack_( - new Gtk::HBox( 0, 2 ), - 0, - gtkadd( - gtkset_layout( new Gtk::VButtonBox, -end ), - gtksignal_connect( - new Gtk::Button( _("Get Windows Fonts") ), - clicked => sub { - ${$central_widget}->destroy(); - $windows = 1; - appli_choice(); - } - ), - gtksignal_connect( - new Gtk::Button( _("Uninstall Fonts") ), - clicked => sub { - ${$central_widget}->destroy(); - uninstall(); - } - ), - ), - 0, - gtkadd( - gtkset_layout( new Gtk::VButtonBox, -end ), - gtksignal_connect( - new Gtk::Button( _("Advanced Options") ), - clicked => sub { - ${$central_widget}->destroy(); - $windows = 0; - advanced_install(); - } - ), - gtksignal_connect( - new Gtk::Button( _("Font List") ), - clicked => sub { - ${$central_widget}->destroy(); - create_fontsel(); - } - ), - ), - 1, - new Gtk::HBox( 0, 2 ), - 0, - gtkadd( - gtkset_layout( new Gtk::VButtonBox, -end ), - gtksignal_connect( - new Gtk::Button( _("Help") ), - clicked => - sub { ${$central_widget}->destroy(); help() } - ), - gtksignal_connect( - new Gtk::Button( _("Close") ), - clicked => sub { - $::isEmbedded and kill 'USR1', $::CCPID; - Gtk->main_quit(); - } - ), - ), - ), - ), - - # 0, gtkpack_(new Gtk::VBox(0,5), - # 0, new Gtk::VBox(0,0), - # 0, new Gtk::Pixmap($pix_user_map, $pix_user_mask), - # 1, new Gtk::VBox(0,0), - # 1, gtkadd(gtkset_layout(new Gtk::VButtonBox, -end), - # gtksignal_connect(new Gtk::Button(_("About")), clicked => sub { - # ${$central_widget}->destroy(); about() }), - # gtksignal_connect(new Gtk::Button(_(" Help ")), clicked => sub { - # ${$central_widget}->destroy(); help() }), - # gtksignal_connect(new Gtk::Button(_("Close")), clicked => sub { - # $::isEmbedded and kill 'USR1', $::CCPID; - # Gtk->main_quit() }), - # ), - # ) - ), - ), - ); - $central_widget = \$font_sel; - $window1->show_all; - $font_sel->set_page(1); - $font_sel->cur_page->child->hide(); - $font_sel->set_page(2); - $font_sel->cur_page->child->hide(); - $font_sel->set_page(0); - $window1->realize; - - # $window1->show_all(); - Gtk->main_iteration while Gtk->events_pending; - $::isEmbedded and kill 'USR2', $::CCPID; - Gtk->main; - Gtk->exit(0); -} - -sub about { - my $text = new Gtk::Text( undef, undef ); - my $about_box; - gtkpack( - $font_box, - $about_box = gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::HBox( 0, 0 ), - 1, - gtktext_insert( - gtkset_editable( $text, 1 ), " - Copyright (C) 2001 by MandrakeSoft - DUPONT Sebastien sdupont\@mandrakesoft.com - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - Thanks: - - pfm2afm: - by Ken Borgendale: - Convert a Windows .pfm file to a .afm (Adobe Font Metrics) - - type1inst: - by James Macnicol: - type1inst generates files fonts.dir fonts.scale & Fontmap. - - ttf2pt1: - by Andrew Weeks, Frank Siegert, Thomas Henlich, Sergey Babkin - Convert ttf font files to afm and pfb fonts - - -" - ), - 0, - new Gtk::VScrollbar( $text->vadj ), - ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("OK") ), - clicked => - sub { ${$central_widget}->destroy(); create_fontsel() } - ), - ), - ) - ); - $central_widget = \$about_box; - $font_box->show_all(); -} - -sub help { - my $text = new Gtk::Text( undef, undef ); - my $help_box; - gtkpack( - $font_box, - $help_box = gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::HBox( 0, 0 ), - 1, - gtktext_insert( - gtkset_editable( $text, 1 ), "drakfont Future Overview - - Fonts import: - pfb ( Adobe Type 1 binary ) - pfa ( Adobe Type 1 ASCII ) - ttf ( True-Type ) - pcf.gz - Speedo - and Bitmap (PCF, BDF, and SNF) - - Features - - Install fonts from any directory - - Get windows fonts on any vfat partitions - - Get fonts on any partitions. - - UN-installation of any fonts (even if not installed through drakfont) - - Support - - Xfs - - ghostscript & printer - - Staroffice & printer - - abiword - - netscape - - Koffice, Gnumeric, ... studying - - all fonts supported by printer - - anti-aliases by RENDER in Xfree86 .... - supported by KDE. - will be supported by gnome 1.2. -Visual Interface: - Window interface: - - Fontselectiondialog widget - - Command buttons under Fontselectiondialog (like the actual frontend). - Commands buttons: - - import from windows partition. - import from all fat32 partitions and look for winnt/windows/font - and import all (delete doublon) but don't import if already exist. - - import from directory - look for if it exist before for each font and not delete the original. - (replace all, no, none) - expert options: - ask the directory, and look for if it exist before - if it exist ask: (replace all, no, none) - - uninstall with list per font type - Expert additional switch - - option support: ghostscript, Staroffice, etc... - check-button. (by default all check) - - Printer Application Fonts Support... - - -" - ), - 0, - new Gtk::VScrollbar( $text->vadj ), - ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("OK") ), - clicked => - sub { ${$central_widget}->destroy(); create_fontsel() } - ), - ), - ) - ); - $central_widget = \$help_box; - $font_box->show_all(); -} - -sub appli_choice { - my $choice_box; - my $text = new Gtk::Text( undef, undef ); - gtkpack( - $font_box, - $choice_box = gtkpack_( - new Gtk::HBox( 0, 10 ), - 0, - new Gtk::VBox( 0, 10 ), - 0, - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack( - new Gtk::HBox( 0, 10 ), - new Gtk::HBox( 0, 10 ), - _( -"Choose the applications that will support the fonts:" - ), - new Gtk::HBox( 0, 10 ), - ), - 0, - new Gtk::HBox( 0, 10 ), - 0, - gtkpack_( - new Gtk::HBox( 0, 10 ), 0, - _("Ghostscript"), 1, - new Gtk::HBox( 0, 10 ), 0, - my $check11 = new Gtk::CheckButton(), - ), - 0, - gtkpack_( - new Gtk::HBox( 0, 10 ), 0, - _("StarOffice"), 1, - new Gtk::HBox( 0, 10 ), 0, - my $check22 = new Gtk::CheckButton(), - ), - 0, - gtkpack_( - new Gtk::HBox( 0, 10 ), 0, - _("Abiword"), 1, - new Gtk::HBox( 0, 10 ), 0, - my $check33 = new Gtk::CheckButton(), - ), - 0, - gtkpack_( - new Gtk::HBox( 0, 10 ), 0, - _("Generic Printers"), 1, - new Gtk::HBox( 0, 10 ), 0, - my $check44 = new Gtk::CheckButton(), - ), - ), - 0, - gtkpack_( - new Gtk::HBox( 0, 10 ), - 1, - gtktext_insert( - gtkset_editable( $text, 0 ), - _( -"Before installing any fonts, be sure that you have the right to use and install them on your system.\n\n-You can install the fonts using the normal way. In rare cases, bogus fonts may hang up your X Server." - ) - ), - 0, - new Gtk::VScrollbar( $text->vadj ), - 0, - new Gtk::VBox( 0, 10 ), - ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("OK") ), - clicked => sub { - ${$central_widget}->destroy(); - import_status(); - } - ), - gtksignal_connect( - new Gtk::Button( _("Cancel") ), - clicked => sub { - ${$central_widget}->destroy(); - create_fontsel(); - } - ), - ), - ), - 0, - new Gtk::VBox( 0, 10 ), - 0, - new Gtk::VBox( 0, 10 ), - ), - - ); - foreach ( - [ $check11, \$gs ], - [ $check22, \$so ], - [ $check33, \$abi ], - [ $check44, \$printer ] - ) - { - my $ref = $_->[1]; - gtksignal_connect( gtkset_active( $_->[0], ${$ref} ), - toggled => sub { ${$ref} = ${$ref} ? 0 : 1; } ); - } - $central_widget = \$choice_box; - $font_box->show_all(); -} - -sub font_choice { - my $file_dialog; - - $file_dialog = gtksignal_connect( - new Gtk::FileSelection( _("File Selection") ), - destroy => sub { $file_dialog->destroy(); } - ); - $file_dialog->ok_button->signal_connect( - clicked => \&file_ok_sel, - $file_dialog - ); - $file_dialog->ok_button->child->set( _("Add") ); - $file_dialog->cancel_button->signal_connect( - clicked => sub { $file_dialog->destroy() } ); - $file_dialog->cancel_button->child->set( _("Close") ); - $file_dialog->set_filename( - _("Select the font file or directory and click on 'Add'") ); - $file_dialog->show(); -} - -sub file_ok_sel { - my ( $widget, $file_selection ) = @_; - my $file_name = $file_selection->get_filename(); - print "-- @install\n"; - if ( !member( $file_name, @install ) ) { - push ( @install, $file_name ); - $list->add( gtkshow( new Gtk::ListItem($file_name) ) ); - } -} - -sub list_remove { - my ( $widget, $list ) = @_; - my @to_remove; - push @to_remove, $list->child_position($_) foreach ( $list->selection ); - splice @install, $_, 1 foreach ( reverse sort @to_remove ); - $list->remove_items( $list->selection ); -} - -sub advanced_install { - my $scrolled_window; - my $adv_box; - $list = new Gtk::List(); - $list->set_selection_mode( -extended ); - - gtkpack( - $font_box, - $adv_box = gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( new Gtk::HBox( 0, 4 ), 1, createScrolledWindow($list), ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("Add") ), - clicked => sub { font_choice() } - ), - gtksignal_connect( - new Gtk::Button( _("Remove Selected") ), - clicked => \&list_remove, - $list - ), - gtksignal_connect( - new Gtk::Button( _("Install List") ), - clicked => sub { - ${$central_widget}->destroy(); - appli_choice(); - } - ), - ), - ) - ); - $central_widget = \$adv_box; - $adv_box->show_all(); -} - -sub list_to_remove { - my @number_to_remove; - my @files_path = grep( !/fonts/, all($current_path) ); - Gtk->main_iteration while Gtk->events_pending; - push @number_to_remove, - $path_list->child_position($_) foreach ( $path_list->selection ); - @uninstall = (); - push @uninstall, - $current_path . "/" . $files_path[$_] foreach (@number_to_remove); - ${$central_widget}->destroy(); - show_list_to_remove(); -} - -sub show_list_to_remove { - my $show_box; - my $show_list = new Gtk::List(); - $show_list->add( gtkshow( new Gtk::ListItem($_) ) ) foreach @uninstall; - gtkpack( - $font_box, - $show_box = gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::HBox( 0, 4 ), - 1, createScrolledWindow($show_list) - ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("click here if you are sure.") ), - clicked => sub { - ${$central_widget}->destroy(); - import_status_uninstall(); - } - ), - gtksignal_connect( - new Gtk::Button( _("here if no.") ), - clicked => - sub { ${$central_widget}->destroy(); create_fontsel() } - ), - ), - ) - ); - $central_widget = \$show_box; - $show_box->show_all(); -} - -sub uninstall { - my $scrolled_window; - my $scrolled_window2; - my $uninst_box; - @install = (); - @installed_fonts_path = (); - list_fontpath(); - chk_empty_xfs_path(); - $list_path = new Gtk::List(); - $list_path->set_selection_mode( -extended ); - - foreach (@installed_fonts_path) { - my $t = $_; - $list_path->add( - gtkshow( - gtksignal_connect( - new Gtk::ListItem($t), - select => sub { - $current_path = $t; - $path_list->clear_items( 0, -1 ); - $path_list->append_items( - map { - /fonts/ - ? () - : gtkshow( new Gtk::ListItem($_) ) - } all($t) - ); - } - ) - ) - ); - } - $list_path->set_selection_mode( -single ); - $path_list = new Gtk::List(); - $path_list->set_selection_mode( -extended ); - - gtkpack( - $font_box, - $uninst_box = gtkpack_( - new Gtk::VBox( 0, 10 ), - 1, - gtkpack_( - new Gtk::HBox( 0, 4 ), 1, - createScrolledWindow($list_path), 1, - createScrolledWindow($path_list) - ), - 0, - gtkadd( - gtkset_layout( new Gtk::HButtonBox, -spread ), - gtksignal_connect( - new Gtk::Button( _("Unselected All") ), - clicked => sub { $path_list->unselect_all(); } - ), - gtksignal_connect( - new Gtk::Button( _("Selected All") ), - clicked => sub { $path_list->select_all(); } - ), - gtksignal_connect( - new Gtk::Button( _("Remove List") ), - clicked => sub { list_to_remove() } - ), - ), - ) - ); - $central_widget = \$uninst_box; - $uninst_box->show_all(); -} - -sub import_status { - my $table; - $pbar = new Gtk::ProgressBar; - $pbar1 = new Gtk::ProgressBar; - $pbar2 = new Gtk::ProgressBar; - $pbar3 = new Gtk::ProgressBar; - gtkpack( - $font_box, - $table = create_packtable( - { col_spacings => 10, row_spacings => 50 }, - [ "", "" ], - [ - _("Initials tests"), $pbar, $pbar->{label} = new Gtk::Label(' ') - ], - [ - _("Copy fonts on your system"), $pbar1, - $pbar1->{label} = new Gtk::Label(' ') - ], - [ - _("Install & convert Fonts"), $pbar2, - $pbar2->{label} = new Gtk::Label(' ') - ], - [ - _("Post Install"), $pbar3, $pbar3->{label} = new Gtk::Label(' ') - ], - ), - ); - $central_widget = \$table; - $font_box->show_all(); - Gtk->main_iteration while Gtk->events_pending; - backend_mod(); -} - -sub import_status_uninstall { - my $table; - $pbar = new Gtk::ProgressBar; - $pbar1 = new Gtk::ProgressBar; - $pbar2 = new Gtk::ProgressBar; - gtkpack( - $font_box, - $table = create_packtable( - { col_spacings => 10, row_spacings => 50 }, - [ "", "" ], - [ "", "" ], - [ - _("Initials tests"), $pbar, $pbar->{label} = new Gtk::Label(' ') - ], - [ - _("Remove fonts on your system"), $pbar1, - $pbar1->{label} = new Gtk::Label(' ') - ], - [ - _("Post Uninstall"), $pbar2, - $pbar2->{label} = new Gtk::Label(' ') - ], - ), - ); - $central_widget = \$table; - $font_box->show_all(); - Gtk->main_iteration while Gtk->events_pending; - backend_mod(); -} - -sub progress { - my ( $progressbar, $incr, $label_text ) = @_; - my ($new_val) = $progressbar->get_current_percentage; - $new_val += $incr; - if ( $new_val > 1 ) { $new_val = 1 } - $progressbar->update($new_val); - $progressbar->{label}->set($label_text); - Gtk->main_iteration while Gtk->events_pending; -} - |