diff options
author | Luke Dixon <6b8b4567@gmail.com> | 2010-10-25 23:14:05 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@novell.com> | 2010-10-26 11:15:24 +0100 |
commit | 53a31ce229ec426331e2cca61e48789d8f86781c (patch) | |
tree | b65963e534cfd932504b99e2266367ccc1081519 | |
parent | d479d45dec347eabfaf83a0635b3d31adc76f235 (diff) |
Add zenity systray support to the build.
Adds also a configure option '--enable-zenity' used to enable this feature.
-rw-r--r-- | configure.in | 18 | ||||
-rw-r--r-- | set_soenv.in | 1 | ||||
-rwxr-xr-x | solenv/bin/build.pl | 54 |
3 files changed, 73 insertions, 0 deletions
diff --git a/configure.in b/configure.in index e63c29984..d9111cdae 100644 --- a/configure.in +++ b/configure.in @@ -945,6 +945,10 @@ AC_ARG_WITH(max-jobs, can get up to CPUS*max_jobs. Defaults to 1, unless you configure --enable-icecream - then to 10. ],,) +AC_ARG_ENABLE(zenity, +[ --enable-zenity Display a icon in the notification area during + build. +],,) BUILD_TYPE="OOo" @@ -7465,6 +7469,20 @@ fi AC_SUBST(VERBOSE) dnl =================================================================== +dnl Use zenity during build +dnl =================================================================== +AC_MSG_CHECKING([whether to use zenity during build]) +if test "$enable_zenity" = "yes"; then + ENABLE_ZENITY=TRUE + AC_MSG_RESULT([yes]) +else + ENABLE_ZENITY=FALSE + AC_MSG_RESULT([no]) +fi +AC_SUBST(ENABLE_ZENITY) + + +dnl =================================================================== dnl Hook up OOos nodep environmental variable to automake's equivalent dnl --enable-dependency-tracking configure option dnl =================================================================== diff --git a/set_soenv.in b/set_soenv.in index 430003f4b..342657368 100644 --- a/set_soenv.in +++ b/set_soenv.in @@ -1838,6 +1838,7 @@ ToFile( "WITHOUT_PPDS", "@WITHOUT_PPDS@", "e" ); ToFile( "WITH_BINFILTER", "@WITH_BINFILTER@", "e" ); ToFile( "BUILD_TYPE", "@BUILD_TYPE@", "e" ); ToFile( "VERBOSE", "@VERBOSE@", "e" ); +ToFile( "ENABLE_ZENITY", "@ENABLE_ZENITY@", "e" ); ToFile( "ENABLE_EVOAB2", "@ENABLE_EVOAB2@", "e" ); ToFile( "GOBJECT_CFLAGS", "@GOBJECT_CFLAGS@", "e" ); ToFile( "GOBJECT_LIBS", "@GOBJECT_LIBS@", "e" ); diff --git a/solenv/bin/build.pl b/solenv/bin/build.pl index 6148c33c1..50a4c3619 100755 --- a/solenv/bin/build.pl +++ b/solenv/bin/build.pl @@ -42,6 +42,7 @@ use Fcntl; use POSIX qw(:errno_h); use Sys::Hostname; + use IPC::Open3; use lib ("$ENV{SOLARENV}/bin/modules"); use SourceConfig; @@ -208,10 +209,17 @@ %module_deps_hash_pids = (); my @argv = @ARGV; my $source_config_file; + my $zenity_pid = 0; + my $zenity_in = ''; + my $zenity_out = ''; + my $zenity_err = ''; ### main ### get_options(); + zenity_open(); + zenity_tooltip("Starting build."); + # my $temp_html_file = CorrectPath($tmp_dir. '/' . $ENV{INPATH}. '.build.html'); get_build_modes(); %deliver_env = (); @@ -1704,6 +1712,8 @@ sub cancel_build { print " http://wiki.documentfoundation.org/Development\n"; print "\n"; + zenity_set_message("LibreOffice Build Failed!"); + if (!$broken_modules_number || !$build_all_parents) { while (children_number()) { handle_dead_children(1); @@ -2132,9 +2142,47 @@ sub print_announce { $announce_string .= $echo . $text; $announce_string .= $echo . "=============\n"; print $announce_string; + my $total_modules = scalar(keys %build_lists_hash); + my $modules_started = scalar(keys %module_announced) + 1; + zenity_tooltip("($modules_started/$total_modules) $text"); $module_announced{$Prj}++; }; +sub zenity_open { + if (defined $ENV{ENABLE_ZENITY}) { + my $zenity_pid = open3($zenity_in, $zenity_out, $zenity_err, + "/bin/env zenity --notification --listen"); + }; +}; + +sub zenity_close { + if (defined $ENV{ENABLE_ZENITY}) { + sleep(1); # Give Zenity a chance to show the message. + kill 1, $zenity_pid; + }; +}; + +sub zenity_icon { + if (defined $ENV{ENABLE_ZENITY}) { + my $filename = shift; + print $zenity_in "icon: $filename\n"; + }; +}; + +sub zenity_tooltip { + if (defined $ENV{ENABLE_ZENITY}) { + my $text = shift; + print $zenity_in "tooltip: LibreOffice Build: $text\n"; + }; +}; + +sub zenity_message { + if (defined $ENV{ENABLE_ZENITY}) { + my $text = shift; + print $zenity_in "message: $text\n"; + }; +}; + sub are_all_dependent { my $build_queue = shift; my $folder = ''; @@ -2732,6 +2780,12 @@ sub do_exit { # close_server_socket(); my $exit_code = shift; $build_finished++; + if ($exit_code) { + zenity_message("LibreOffice Build Failed!") + } else { + zenity_message("LibreOffice Build Success!") + }; + zenity_close(); generate_html_file(1); if ( $^O eq 'os2' ) { |