Index: INSTALL =================================================================== --- INSTALL (revision 7507) +++ INSTALL (working copy) @@ -1,13 +1,19 @@ -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software -Foundation, Inc. +Installation Instructions +************************* +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008 Free Software Foundation, Inc. + This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== - These are generic installation instructions. + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses @@ -20,9 +26,9 @@ It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is +the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale -cache files.) +cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail @@ -32,20 +38,17 @@ may remove or edit it. The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. + `./configure' to configure the package for your system. - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. 2. Type `make' to compile the package. @@ -64,6 +67,9 @@ all sorts of other programs in order to regenerate files that came with the distribution. + 6. Often, you can also type `make uninstall' to remove the installed + files again. + Compilers and Options ===================== @@ -75,7 +81,7 @@ by setting variables in the command line or in the environment. Here is an example: - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. @@ -84,34 +90,46 @@ You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the +own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + Installation Names ================== - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular +options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. @@ -134,6 +152,28 @@ you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + Specifying the System Type ========================== @@ -156,7 +196,7 @@ need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will +use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a @@ -186,9 +226,14 @@ ./configure CC=/usr/local2/bin/gcc -will cause the specified gcc to be used as the C compiler (unless it is +causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + `configure' Invocation ====================== @@ -197,8 +242,15 @@ `--help' `-h' - Print a summary of the options to `configure', and exit. + Print a summary of all of the options to `configure', and exit. +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + `--version' `-V' Print the version of Autoconf used to generate the `configure' @@ -224,6 +276,16 @@ Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. +`--prefix=DIR' + Use DIR as the installation prefix. *Note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. Index: panel-plugin/weather.c =================================================================== --- panel-plugin/weather.c (revision 7507) +++ panel-plugin/weather.c (working copy) @@ -43,8 +43,6 @@ #define BORDER 8 #define PLUGIN_WEBSITE "http://goodies.xfce.org/projects/panel-plugins/xfce4-weather-plugin" - - gboolean check_envproxy (gchar **proxy_host, gint *proxy_port) @@ -88,10 +86,11 @@ static gchar * -make_label (xml_weather *weatherdata, - datas opt, - units unit, - gint size) +make_label (xml_weather *weatherdata, + datas opt, + units unit, + gint size, + GtkOrientation orientation) { gchar *str, *value; @@ -138,6 +137,9 @@ } /* arbitrary, choose something that works */ + if (orientation == GTK_ORIENTATION_HORIZONTAL) + size += 24; + if (size > 36) txtsize = "medium"; else if (size > 30) @@ -203,6 +205,10 @@ } /* arbitrary, choose something that works */ + + if (data->orientation == GTK_ORIENTATION_HORIZONTAL) + size += 24; + if (size > 36) txtsize = "medium"; else if (size > 30) @@ -220,7 +226,10 @@ gtk_widget_get_size_request (data->scrollbox, NULL, &height); - icon = get_icon ("99", data->size - height - 2); + if (data->orientation == GTK_ORIENTATION_VERTICAL) + icon = get_icon ("99", data->size - height - 2); + else + icon = get_icon ("99", data->size); gtk_image_set_from_pixbuf (GTK_IMAGE (data->iconimage), icon); @@ -246,7 +255,7 @@ { opt = g_array_index (data->labels, datas, i); - str = make_label (data->weatherdata, opt, data->unit, data->size); + str = make_label (data->weatherdata, opt, data->unit, data->size, data->orientation); gtk_scrollbox_set_label (GTK_SCROLLBOX (data->scrollbox), -1, str); @@ -262,7 +271,10 @@ else { gtk_widget_get_size_request (data->scrollbox, NULL, &height); - size = data->size - height - 2; + if (data->orientation == GTK_ORIENTATION_VERTICAL) + size = data->size - height - 2; + else + size = data->size; } icon = get_icon (get_data (data->weatherdata, WICON), size); @@ -671,7 +683,7 @@ xfceweather_create_control (XfcePanelPlugin *plugin) { xfceweather_data *data = panel_slice_new0 (xfceweather_data); - GtkWidget *vbox, *refresh; + GtkWidget *refresh; datas lbl; GdkPixbuf *icon = NULL; @@ -685,20 +697,24 @@ icon = get_icon ("99", 16); data->iconimage = gtk_image_new_from_pixbuf (icon); - gtk_misc_set_alignment (GTK_MISC (data->iconimage), 0.5, 1); if (G_LIKELY (icon)) g_object_unref (G_OBJECT (icon)); data->labels = g_array_new (FALSE, TRUE, sizeof (datas)); - vbox = gtk_vbox_new (FALSE, 0); + data->vbox_center_scrollbox = gtk_vbox_new(FALSE, 0); + data->top_hbox = gtk_hbox_new (FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (data->iconimage), 1, 0.5); + gtk_box_pack_start (GTK_BOX (data->top_hbox), data->iconimage, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (data->vbox_center_scrollbox), data->scrollbox, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (data->top_hbox), data->vbox_center_scrollbox, TRUE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (vbox), data->iconimage, TRUE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (vbox), data->scrollbox, TRUE, TRUE, 0); + data->top_vbox = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (data->top_vbox), data->top_hbox, TRUE, FALSE, 0); data->tooltipbox = gtk_event_box_new (); - gtk_container_add (GTK_CONTAINER (data->tooltipbox), vbox); + gtk_container_add (GTK_CONTAINER (data->tooltipbox), data->top_vbox); gtk_widget_show_all (data->tooltipbox); GTK_WIDGET_SET_FLAGS (GTK_WIDGET(data->tooltipbox), GTK_NO_WINDOW); @@ -789,8 +805,38 @@ return TRUE; } +static gboolean +xfceweather_set_orientation (XfcePanelPlugin *panel, + GtkOrientation orientation, + xfceweather_data *data) +{ + GtkWidget *parent = gtk_widget_get_parent(data->vbox_center_scrollbox); + data->orientation = orientation; + g_object_ref(G_OBJECT(data->vbox_center_scrollbox)); + gtk_container_remove(GTK_CONTAINER(parent), data->vbox_center_scrollbox); + + if (data->orientation == GTK_ORIENTATION_HORIZONTAL) { + gtk_box_pack_start (GTK_BOX (data->top_hbox), data->vbox_center_scrollbox, TRUE, FALSE, 0); + } else { + gtk_box_pack_start (GTK_BOX (data->top_vbox), data->vbox_center_scrollbox, TRUE, FALSE, 0); + } + g_object_unref(G_OBJECT(data->vbox_center_scrollbox)); + + gtk_scrollbox_clear (GTK_SCROLLBOX (data->scrollbox)); + + if (data->weatherdata) + set_icon_current (data); + else + set_icon_error (data); + + /* we handled the orientation */ + return TRUE; +} + + + static void weather_construct (XfcePanelPlugin *plugin) { @@ -805,6 +851,7 @@ xfceweather_set_visibility (data); xfceweather_set_size (plugin, xfce_panel_plugin_get_size (plugin), data); + xfceweather_set_orientation (plugin, xfce_panel_plugin_get_orientation(plugin), data); gtk_container_add (GTK_CONTAINER (plugin), data->tooltipbox); @@ -817,6 +864,9 @@ g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (xfceweather_set_size), data); + g_signal_connect (G_OBJECT (plugin), "orientation-changed", + G_CALLBACK (xfceweather_set_orientation), data); + xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (G_OBJECT (plugin), "configure-plugin", G_CALLBACK (xfceweather_create_options), data); Index: panel-plugin/weather.h =================================================================== --- panel-plugin/weather.h (revision 7507) +++ panel-plugin/weather.h (working copy) @@ -31,6 +31,9 @@ GtkTooltips *tooltips; + GtkWidget *top_vbox; + GtkWidget *top_hbox; + GtkWidget *vbox_center_scrollbox; GtkWidget *scrollbox; GtkWidget *iconimage; GtkWidget *tooltipbox; @@ -40,6 +43,7 @@ GArray *labels; gint size; + GtkOrientation orientation; gint updatetimeout; gchar *location_code;