#include "e-util/e-util-private.h"
#include "e-timezone-dialog.h"
#ifdef G_OS_WIN32
/* Undef the similar macros from pthread.h, they don't check if
* gmtime() and localtime() return NULL.
*/
#undef gmtime_r
#undef localtime_r
/* The gmtime() and localtime() in Microsoft's C library are MT-safe */
#define gmtime_r(tp,tmp) (gmtime(tp)?(*(tmp)=*gmtime(tp),(tmp)):0)
#define localtime_r(tp,tmp) (localtime(tp)?(*(tmp)=*localtime(tp),(tmp)):0)
#endif
#define E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA 0xc070a0ff
#define E_TIMEZONE_DIALOG_MAP_POINT_HOVER_RGBA 0xffff60ff
#define E_TIMEZONE_DIALOG_MAP_POINT_SELECTED_1_RGBA 0xff60e0ff
#define E_TIMEZONE_DIALOG_MAP_POINT_SELECTED_2_RGBA 0x000000ff
struct _ETimezoneDialogPrivate {
/* The selected timezone. May be NULL for a 'local time' (i.e. when
the displayed name is ""). */
icaltimezone *zone;
/* Glade XML data */
GladeXML *xml;
EMapPoint *point_selected;
EMapPoint *point_hover;
EMap *map;
/* The timeout used to flash the nearest point. */
guint timeout_id;
/* Widgets from the Glade file */
GtkWidget *app;
GtkWidget *table;
GtkWidget *map_window;
GtkWidget *timezone_combo;
GtkWidget *preview_label;
};
static void e_timezone_dialog_dispose (GObject *object);
static void e_timezone_dialog_finalize (GObject *object);
static gboolean get_widgets (ETimezoneDialog *etd);
static gboolean on_map_timeout (gpointer data);
static gboolean on_map_motion (GtkWidget *widget,
GdkEventMotion *event,
gpointer data);
static gboolean on_map_leave (GtkWidget *widget,
GdkEventCrossing *event,
gpointer data);
static gboolean on_map_visibility_changed (GtkWidget *w,
GdkEventVisibility *event,
gpointer data);
static gboolean on_map_button_pressed (GtkWidget *w,
GdkEventButton *event,
gpointer data);
static icaltimezone* get_zone_from_point (ETimezoneDialog *etd,
EMapPoint *point);
static void set_map_timezone (ETimezoneDialog *etd,
icaltimezone *zone);
static void on_combo_changed (GtkComboBox *combo,
ETimezoneDialog *etd);
static void timezone_combo_get_active_text (GtkComboBox *combo,
const gchar **zone_name);
static gboolean timezone_combo_set_active_text (GtkComboBox *combo,
const gchar *zone_name);
static void map_destroy_cb (gpointer data,
GObject *where_object_was);
G_DEFINE_TYPE (ETimezoneDialog, e_timezone_dialog, G_TYPE_OBJECT)
/* Class initialization function for the event editor */
static void
e_timezone_dialog_class_init (ETimezoneDialogClass *class)
{
GObjectClass *object_class;
object_class = G_OBJECT_CLASS (class);
object_class->dispose = e_timezone_dialog_dispose;
object_class->finalize = e_timezone_dialog_finalize;
}
/* Object initialization function for the event editor */
static void
e_timezone_dialog_init (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
priv = g_new0 (ETimezoneDialogPrivate, 1);
etd->priv = priv;
priv->point_selected = NULL;
priv->point_hover = NULL;
priv->timeout_id = 0;
}
/* Dispose handler for the event editor */
static void
e_timezone_dialog_dispose (GObject *object)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
g_return_if_fail (object != NULL);
g_return_if_fail (E_IS_TIMEZONE_DIALOG (object));
etd = E_TIMEZONE_DIALOG (object);
priv = etd->priv;
/* Destroy the actual dialog. */
if (priv->app != NULL) {
gtk_widget_destroy (priv->app);
priv->app = NULL;
}
if (priv->timeout_id) {
g_source_remove (priv->timeout_id);
priv->timeout_id = 0;
}
if (priv->xml) {
g_object_unref (priv->xml);
priv->xml = NULL;
}
(* G_OBJECT_CLASS (e_timezone_dialog_parent_class)->dispose) (object);
}
/* Finalize handler for the event editor */
static void
e_timezone_dialog_finalize (GObject *object)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
g_return_if_fail (object != NULL);
g_return_if_fail (E_IS_TIMEZONE_DIALOG (object));
etd = E_TIMEZONE_DIALOG (object);
priv = etd->priv;
g_free (priv);
(* G_OBJECT_CLASS (e_timezone_dialog_parent_class)->finalize) (object);
}
static void
e_timezone_dialog_add_timezones (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
icalarray *zones;
GtkComboBox *combo;
GList *l, *list_items = NULL;
GtkListStore *list_store;
GtkTreeIter iter;
GtkCellRenderer *cell;
GHashTable *index;
gint i;
priv = etd->priv;
/* Get the array of builtin timezones. */
zones = icaltimezone_get_builtin_timezones ();
for (i = 0; i < zones->num_elements; i++) {
icaltimezone *zone;
gchar *location;
zone = icalarray_element_at (zones, i);
location = _(icaltimezone_get_location (zone));
e_map_add_point (priv->map, location,
icaltimezone_get_longitude (zone),
icaltimezone_get_latitude (zone),
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
list_items = g_list_prepend (list_items, location);
}
list_items = g_list_sort (list_items, (GCompareFunc) g_utf8_collate);
/* Put the "UTC" entry at the top of the combo's list. */
list_items = g_list_prepend (list_items, _("UTC"));
combo = GTK_COMBO_BOX (priv->timezone_combo);
cell = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start ((GtkCellLayout *) combo, cell, TRUE);
gtk_cell_layout_set_attributes ((GtkCellLayout *) combo, cell, "text", 0, NULL);
list_store = gtk_list_store_new (1, G_TYPE_STRING);
index = g_hash_table_new (g_str_hash, g_str_equal);
for (l = list_items, i = 0; l != NULL; l = l->next, ++i) {
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, (gchar *)(l->data), -1);
g_hash_table_insert (index, (gchar *)(l->data), GINT_TO_POINTER (i));
}
g_object_set_data_full (G_OBJECT (list_store), "index", index, (GDestroyNotify) g_hash_table_destroy);
gtk_combo_box_set_model (combo, (GtkTreeModel *) list_store);
gtk_rc_parse_string (
"style \"e-timezone-combo-style\" {\n"
" GtkComboBox::appears-as-list = 1\n"
"}\n"
"\n"
"widget \"*.e-timezone-dialog-combo\" style \"e-timezone-combo-style\"");
gtk_widget_set_name (priv->timezone_combo, "e-timezone-dialog-combo");
g_list_free (list_items);
}
ETimezoneDialog *
e_timezone_dialog_construct (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
GtkWidget *map;
gchar *filename;
g_return_val_if_fail (etd != NULL, NULL);
g_return_val_if_fail (E_IS_TIMEZONE_DIALOG (etd), NULL);
priv = etd->priv;
/* Load the content widgets */
filename = g_build_filename (EVOLUTION_GLADEDIR,
"e-timezone-dialog.glade",
NULL);
priv->xml = glade_xml_new (filename, NULL, NULL);
g_free (filename);
if (!priv->xml) {
g_message ("e_timezone_dialog_construct(): Could not load the Glade XML file!");
goto error;
}
if (!get_widgets (etd)) {
g_message ("e_timezone_dialog_construct(): Could not find all widgets in the XML file!");
goto error;
}
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (priv->app)->vbox), 0);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (priv->app)->action_area), 12);
priv->map = e_map_new ();
map = GTK_WIDGET (priv->map);
g_object_weak_ref(G_OBJECT(map), map_destroy_cb, priv);
gtk_widget_set_events (map, gtk_widget_get_events (map)
| GDK_LEAVE_NOTIFY_MASK
| GDK_VISIBILITY_NOTIFY_MASK);
e_timezone_dialog_add_timezones (etd);
gtk_container_add (GTK_CONTAINER (priv->map_window), map);
gtk_widget_show (map);
/* Ensure a reasonable minimum amount of map is visible */
gtk_widget_set_size_request (priv->map_window, 200, 200);
g_signal_connect (map, "motion-notify-event", G_CALLBACK (on_map_motion), etd);
g_signal_connect (map, "leave-notify-event", G_CALLBACK (on_map_leave), etd);
g_signal_connect (map, "visibility-notify-event", G_CALLBACK (on_map_visibility_changed), etd);
g_signal_connect (map, "button-press-event", G_CALLBACK (on_map_button_pressed), etd);
g_signal_connect (GTK_COMBO_BOX (priv->timezone_combo), "changed", G_CALLBACK (on_combo_changed), etd);
return etd;
error:
g_object_unref (etd);
return NULL;
}
#if 0
static gint
get_local_offset (void)
{
time_t now = time(NULL), t_gmt, t_local;
struct tm gmt, local;
gint diff;
gmtime_r (&now, &gmt);
localtime_r (&now, &local);
t_gmt = mktime (&gmt);
t_local = mktime (&local);
diff = t_local - t_gmt;
return diff;
}
#endif
static icaltimezone*
get_local_timezone(void)
{
icaltimezone *zone;
tzset();
zone = icaltimezone_get_builtin_timezone_from_offset (-timezone, tzname[0]);
return zone;
}
/* Gets the widgets from the XML file and returns if they are all available.
* For the widgets whose values can be simply set with e-dialog-utils, it does
* that as well.
*/
static gboolean
get_widgets (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
priv = etd->priv;
#define GW(name) glade_xml_get_widget (priv->xml, name)
priv->app = GW ("timezone-dialog");
priv->map_window = GW ("map-window");
priv->timezone_combo = GW ("timezone-combo");
priv->table = GW ("timezone-table");
priv->preview_label = GW ("preview-label");
return (priv->app
&& priv->map_window
&& priv->timezone_combo
&& priv->table
&& priv->preview_label);
}
/**
* e_timezone_dialog_new:
*
* Creates a new event editor dialog.
*
* Return value: A newly-created event editor dialog, or NULL if the event
* editor could not be created.
**/
ETimezoneDialog *
e_timezone_dialog_new (void)
{
ETimezoneDialog *etd;
etd = E_TIMEZONE_DIALOG (g_object_new (E_TYPE_TIMEZONE_DIALOG, NULL));
return e_timezone_dialog_construct (E_TIMEZONE_DIALOG (etd));
}
static void
format_utc_offset (gint utc_offset,
gchar *buffer)
{
const gchar *sign = "+";
gint hours, minutes, seconds;
if (utc_offset < 0) {
utc_offset = -utc_offset;
sign = "-";
}
hours = utc_offset / 3600;
minutes = (utc_offset % 3600) / 60;
seconds = utc_offset % 60;
/* Sanity check. Standard timezone offsets shouldn't be much more than 12
hours, and daylight saving shouldn't change it by more than a few hours.
(The maximum offset is 15 hours 56 minutes at present.) */
if (hours < 0 || hours >= 24 || minutes < 0 || minutes >= 60
|| seconds < 0 || seconds >= 60) {
fprintf (stderr, "Warning: Strange timezone offset: H:%i M:%i S:%i\n",
hours, minutes, seconds);
}
if (hours == 0 && minutes == 0 && seconds == 0)
strcpy (buffer, _("UTC"));
else if (seconds == 0)
sprintf (buffer, "%s %s%02i:%02i", _("UTC"), sign, hours, minutes);
else
sprintf (buffer, "%s %s%02i:%02i:%02i", _("UTC"), sign, hours, minutes, seconds);
}
static gchar *
zone_display_name_with_offset (icaltimezone *zone)
{
const gchar *display_name;
struct tm local;
struct icaltimetype tt;
gint offset;
gchar buffer [100];
time_t now = time(NULL);
gmtime_r ((const time_t *) &now, &local);
tt = tm_to_icaltimetype (&local, TRUE);
offset = icaltimezone_get_utc_offset(zone, &tt, NULL);
format_utc_offset (offset, buffer);
display_name = icaltimezone_get_display_name (zone);
if (icaltimezone_get_builtin_timezone (display_name))
display_name = _(display_name);
return g_strdup_printf("%s (%s)\n", display_name, buffer);;
}
static const gchar *
zone_display_name (icaltimezone *zone)
{
const gchar *display_name;
display_name = icaltimezone_get_display_name (zone);
if (icaltimezone_get_builtin_timezone (display_name))
display_name = _(display_name);
return display_name;
}
/* This flashes the currently selected timezone in the map. */
static gboolean
on_map_timeout (gpointer data)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
etd = E_TIMEZONE_DIALOG (data);
priv = etd->priv;
if (!priv->point_selected)
return TRUE;
if (e_map_point_get_color_rgba (priv->point_selected)
== E_TIMEZONE_DIALOG_MAP_POINT_SELECTED_1_RGBA)
e_map_point_set_color_rgba (priv->map, priv->point_selected,
E_TIMEZONE_DIALOG_MAP_POINT_SELECTED_2_RGBA);
else
e_map_point_set_color_rgba (priv->map, priv->point_selected,
E_TIMEZONE_DIALOG_MAP_POINT_SELECTED_1_RGBA);
return TRUE;
}
static gboolean
on_map_motion (GtkWidget *widget, GdkEventMotion *event, gpointer data)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
double longitude, latitude;
icaltimezone *new_zone;
gchar *display=NULL;
etd = E_TIMEZONE_DIALOG (data);
priv = etd->priv;
e_map_window_to_world (priv->map, (double) event->x, (double) event->y,
&longitude, &latitude);
if (priv->point_hover && priv->point_hover != priv->point_selected)
e_map_point_set_color_rgba (priv->map, priv->point_hover,
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
priv->point_hover = e_map_get_closest_point (priv->map, longitude,
latitude, TRUE);
if (priv->point_hover != priv->point_selected)
e_map_point_set_color_rgba (priv->map, priv->point_hover,
E_TIMEZONE_DIALOG_MAP_POINT_HOVER_RGBA);
new_zone = get_zone_from_point (etd, priv->point_hover);
display = zone_display_name_with_offset(new_zone);
gtk_label_set_text (GTK_LABEL (priv->preview_label), display);
g_free (display);
return TRUE;
}
static gboolean
on_map_leave (GtkWidget *widget, GdkEventCrossing *event, gpointer data)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
etd = E_TIMEZONE_DIALOG (data);
priv = etd->priv;
/* We only want to reset the hover point if this is a normal leave
event. For some reason we are getting leave events when the
button is pressed in the map, which causes problems. */
if (event->mode != GDK_CROSSING_NORMAL)
return FALSE;
if (priv->point_hover && priv->point_hover != priv->point_selected)
e_map_point_set_color_rgba (priv->map, priv->point_hover,
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
zone_display_name (priv->zone));
gtk_label_set_text (GTK_LABEL (priv->preview_label), "");
priv->point_hover = NULL;
return FALSE;
}
static gboolean
on_map_visibility_changed (GtkWidget *w, GdkEventVisibility *event,
gpointer data)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
etd = E_TIMEZONE_DIALOG (data);
priv = etd->priv;
if (event->state != GDK_VISIBILITY_FULLY_OBSCURED) {
/* Map is visible, at least partly, so make sure we flash the
selected point. */
if (!priv->timeout_id)
priv->timeout_id = g_timeout_add (100, on_map_timeout, etd);
} else {
/* Map is invisible, so don't waste resources on the timeout.*/
if (priv->timeout_id) {
g_source_remove (priv->timeout_id);
priv->timeout_id = 0;
}
}
return FALSE;
}
static gboolean
on_map_button_pressed (GtkWidget *w, GdkEventButton *event, gpointer data)
{
ETimezoneDialog *etd;
ETimezoneDialogPrivate *priv;
double longitude, latitude;
etd = E_TIMEZONE_DIALOG (data);
priv = etd->priv;
e_map_window_to_world (priv->map, (double) event->x, (double) event->y,
&longitude, &latitude);
if (event->button != 1) {
e_map_zoom_out (priv->map);
} else {
if (e_map_get_magnification (priv->map) <= 1.0)
e_map_zoom_to_location (priv->map, longitude,
latitude);
if (priv->point_selected)
e_map_point_set_color_rgba (priv->map,
priv->point_selected,
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
priv->point_selected = priv->point_hover;
priv->zone = get_zone_from_point (etd, priv->point_selected);
timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
zone_display_name (priv->zone));
}
return TRUE;
}
/* Returns the translated timezone location of the given EMapPoint,
e.g. "Europe/London". */
static icaltimezone *
get_zone_from_point (ETimezoneDialog *etd,
EMapPoint *point)
{
icalarray *zones;
double longitude, latitude;
gint i;
if (point == NULL)
return NULL;
e_map_point_get_location (point, &longitude, &latitude);
/* Get the array of builtin timezones. */
zones = icaltimezone_get_builtin_timezones ();
for (i = 0; i < zones->num_elements; i++) {
icaltimezone *zone;
double zone_longitude, zone_latitude;
zone = icalarray_element_at (zones, i);
zone_longitude = icaltimezone_get_longitude (zone);
zone_latitude = icaltimezone_get_latitude (zone);
if (zone_longitude - 0.005 <= longitude &&
zone_longitude + 0.005 >= longitude &&
zone_latitude - 0.005 <= latitude &&
zone_latitude + 0.005 >= latitude)
{
return zone;
}
}
g_return_val_if_reached(NULL);
}
/**
* e_timezone_dialog_get_timezone:
* @etd: the timezone dialog
*
* Return value: the currently-selected timezone, or %NULL if no timezone
* is selected.
**/
icaltimezone *
e_timezone_dialog_get_timezone (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
g_return_val_if_fail (E_IS_TIMEZONE_DIALOG (etd), NULL);
priv = etd->priv;
return priv->zone;
}
/**
* e_timezone_dialog_set_timezone:
* @etd: the timezone dialog
* @zone: the timezone
*
* Sets the timezone of @etd to @zone. Updates the display name and
* selected location. The caller must ensure that @zone is not freed
* before @etd is destroyed.
**/
void
e_timezone_dialog_set_timezone (ETimezoneDialog *etd,
icaltimezone *zone)
{
ETimezoneDialogPrivate *priv;
gchar *display = NULL;
g_return_if_fail (E_IS_TIMEZONE_DIALOG (etd));
if (!zone) {
zone = (icaltimezone *)get_local_timezone();
if (!zone)
zone = icaltimezone_get_utc_timezone();
}
if (zone)
display = zone_display_name_with_offset(zone);
priv = etd->priv;
priv->zone = zone;
gtk_label_set_text (GTK_LABEL (priv->preview_label),
zone ? display : "");
timezone_combo_set_active_text (GTK_COMBO_BOX (priv->timezone_combo),
zone ? zone_display_name(zone) : "");
set_map_timezone (etd, zone);
g_free (display);
}
GtkWidget *
e_timezone_dialog_get_toplevel (ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
g_return_val_if_fail (etd != NULL, NULL);
g_return_val_if_fail (E_IS_TIMEZONE_DIALOG (etd), NULL);
priv = etd->priv;
return priv->app;
}
static void
set_map_timezone (ETimezoneDialog *etd, icaltimezone *zone)
{
ETimezoneDialogPrivate *priv;
EMapPoint *point;
double zone_longitude, zone_latitude;
priv = etd->priv;
if (zone) {
zone_longitude = icaltimezone_get_longitude (zone);
zone_latitude = icaltimezone_get_latitude (zone);
point = e_map_get_closest_point (priv->map,
zone_longitude,
zone_latitude,
FALSE);
} else
point = NULL;
if (priv->point_selected)
e_map_point_set_color_rgba (priv->map, priv->point_selected,
E_TIMEZONE_DIALOG_MAP_POINT_NORMAL_RGBA);
priv->point_selected = point;
}
static void
on_combo_changed (GtkComboBox *combo_box, ETimezoneDialog *etd)
{
ETimezoneDialogPrivate *priv;
const gchar *new_zone_name;
icalarray *zones;
icaltimezone *map_zone = NULL;
gchar *location;
gint i;
priv = etd->priv;
timezone_combo_get_active_text (GTK_COMBO_BOX (priv->timezone_combo), &new_zone_name);
if (!*new_zone_name)
priv->zone = NULL;
else if (!g_utf8_collate (new_zone_name, _("UTC")))
priv->zone = icaltimezone_get_utc_timezone ();
else {
priv->zone = NULL;
zones = icaltimezone_get_builtin_timezones ();
for (i = 0; i < zones->num_elements; i++) {
map_zone = icalarray_element_at (zones, i);
location = _(icaltimezone_get_location (map_zone));
if (!g_utf8_collate (new_zone_name, location)) {
priv->zone = map_zone;
break;
}
}
}
set_map_timezone (etd, map_zone);
}
static void
timezone_combo_get_active_text (GtkComboBox *combo, const gchar **zone_name)
{
GtkTreeModel *list_store;
GtkTreeIter iter;
list_store = gtk_combo_box_get_model (combo);
/* Get the active iter in the list */
if (gtk_combo_box_get_active_iter (combo, &iter))
gtk_tree_model_get (list_store, &iter, 0, zone_name, -1);
else
*zone_name = "";
}
static gboolean
timezone_combo_set_active_text (GtkComboBox *combo, const gchar *zone_name)
{
GtkTreeModel *list_store;
GHashTable *index;
gpointer id = NULL;
list_store = gtk_combo_box_get_model (combo);
index = (GHashTable *) g_object_get_data (G_OBJECT (list_store), "index");
if (zone_name && *zone_name)
id = g_hash_table_lookup (index, zone_name);
gtk_combo_box_set_active (combo, GPOINTER_TO_INT (id));
return (id != NULL);
}
/**
* e_timezone_dialog_reparent:
* @etd: #ETimezoneDialog.
* @new_parent: The new parent widget.
*
* Takes the internal widgets out of the dialog and put them into @new_parent
*/
void
e_timezone_dialog_reparent (ETimezoneDialog *etd,
GtkWidget *new_parent)
{
ETimezoneDialogPrivate *priv;
priv = etd->priv;
gtk_widget_reparent (priv->table, new_parent);
}
static void
map_destroy_cb(gpointer data, GObject *where_object_was)
{
ETimezoneDialogPrivate *priv = data;
if (priv->timeout_id) {
g_source_remove(priv->timeout_id);
priv->timeout_id = 0;
}
return;
}
9c6b008b8a42bcc7ee099d'>Sync to new bsd.autotools.mkade | 2010-12-04 | 3 | -3/+3 |
* | KDE FreeBSD team presents KDE SC 4.5.4. | makc | 2010-12-03 | 5 | -10/+10 |
* | KDE FreeBSD team is glad to present Qt 4.7.1 in ports. | makc | 2010-12-03 | 1 | -1/+1 |
* | Update to 1.12.1. | marcus | 2010-11-28 | 3 | -5/+37 |
* | Update to 2.22.1. | marcus | 2010-11-27 | 2 | -4/+3 |
* | - Update to 0.90.5 | swills | 2010-11-27 | 1 | -1/+1 |
* | Redshift adjusts the color temperature of your screen according | wxs | 2010-11-25 | 5 | -0/+120 |
* | Presenting GNOME 2.32.1 for FreeBSD. The offical release notes for this | kwm | 2010-11-20 | 31 | -139/+492 |
* | KDE FreeBSD team presents KDE SC 4.5.3. | makc | 2010-11-04 | 10 | -20/+25 |
* | Deprecate md5 in favour of sha256 checksums. md5 checksums will no longer | erwin | 2010-10-29 | 2 | -2/+2 |
* | Improve handing of LD_LIBRARY_PATH when doing non-standard LOCALBASE builds. | kmoore | 2010-10-16 | 1 | -1/+1 |
* | - Update to 0.90.2 | swills | 2010-10-12 | 1 | -1/+3 |
* | KDE FreeBSD team presents KDE SC 4.5.2. | makc | 2010-10-06 | 7 | -21/+21 |
* | - Add missing python virtual categories | pgollucci | 2010-09-14 | 1 | -1/+1 |
* | - Update ruby-gnome ports to 0.19.4 | swills | 2010-09-11 | 2 | -0/+2 |
* | KDE FreeBSD team presents KDE SC 4.5.1. | makc | 2010-09-03 | 23 | -404/+170 |
* | - Chase speech-dispatcher upgrade. | avilla | 2010-08-31 | 4 | -6/+14 |
* | - Upgrade to 0.7. | avilla | 2010-08-31 | 17 | -283/+128 |
* | Presenting GNOME 2.30.2. for FreeBSD. | kwm | 2010-07-26 | 4 | -12/+10 |
* | Present KDE SC 4.4.5 for FreeBSD. | makc | 2010-06-30 | 5 | -15/+15 |
* | Present KDE SC 4.4.4 for FreeBSD. | makc | 2010-06-02 | 5 | -15/+15 |
* | Bounce PORTREVISION for gettext-related ports. Have fun, ya'll. | ade | 2010-05-31 | 13 | -5/+13 |
* | - Note kdelibs4-experimental removal | fluffy | 2010-05-11 | 1 | -0/+1 |
* | - The FreeBSD KDE team is pleased to announce KDE SC 4.4.3 for FreeBSD | fluffy | 2010-05-11 | 23 | -475/+313 |
* | - The FreeBSD KDE team is pleased to announce Qt-4.6.2 for FreeBSD | fluffy | 2010-05-11 | 1 | -1/+0 |
* | Presenting GNOME 2.30.1 for FreeBSD. The offical release notes for this | kwm | 2010-05-11 | 36 | -70/+385 |
* | - update to 1.4.1 | dinoex | 2010-03-28 | 17 | -11/+17 |
* | Begin the process of deprecating sysutils/rc_subr by | dougb | 2010-03-27 | 1 | -1/+1 |
* | - Mark BROKEN on HEAD: fails to build with new utmpx | miwi | 2010-03-20 | 1 | -1/+7 |
* | - Replace long options with short ones: they are documented, but not | avilla | 2010-03-08 | 3 | -4/+5 |
* | - Fix build on 7.X amd64 and 6.X everywhere. | avilla | 2010-02-19 | 10 | -31/+231 |
* | Presenting KDE 4.3.5 for FreeBSD. The official release notes for this | miwi | 2010-02-07 | 15 | -45/+15 |
* | - Mark BROKEN on 6.X everywhere and on 7.X amd64 | pav | 2010-02-06 | 1 | -0/+8 |
* | - update to jpeg-8 | dinoex | 2010-02-05 | 16 | -6/+16 |
* | - Update my e-mail address in the ports I maintain. | avilla | 2010-01-27 | 1 | -1/+1 |
* | The FreeBSD KDE team is pleased to announce Qt-4.6.1 for FreeBSD. | makc | 2010-01-22 | 3 | -17/+21 |
* | - speech-dispatcher: try fix building on FreeBSD < 8.0 | fluffy | 2010-01-18 | 8 | -1/+301 |
* | - Add speech-dispatcher | fluffy | 2010-01-08 | 16 | -0/+426 |
* | Update to 2.28.3 | ahze | 2010-01-04 | 2 | -4/+4 |
* | Update to 2.28.2. | kwm | 2009-12-19 | 3 | -4/+22 |
* | Update to 2.28.2. | marcus | 2009-12-18 | 2 | -4/+4 |
* | The FreeBSD KDE is please to announce the release of KDE 4.3.4, | miwi | 2009-12-02 | 5 | -15/+15 |
* | Presenting GNOME 2.28.1 for FreeBSD. The official release notes for this | marcus | 2009-11-29 | 24 | -129/+245 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.3.3 | miwi | 2009-11-27 | 10 | -25/+15 |
* | - Update to Qt-4.5 | miwi | 2009-11-27 | 2 | -6/+0 |
* | - Mark MAKE_JOBS_UNSAFE | pav | 2009-11-20 | 1 | -0/+1 |
* | The FreeBSD KDE is please to announce the release of KDE 4.3.1, | tabthorpe | 2009-09-02 | 5 | -15/+15 |
* | - Switch SourceForge ports to the new File Release System: categories startin... | amdmi3 | 2009-08-22 | 1 | -1/+1 |
* | Fix the plist when doxygen is installed. | marcus | 2009-08-16 | 1 | -0/+11 |
* | Mk/bsd.kde4.mk: | makc | 2009-08-10 | 5 | -15/+0 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.3.0 | miwi | 2009-08-05 | 15 | -30/+35 |
* | - s/MAKE_JOBS_SAVE/MAKE_JOBS_SAFE | miwi | 2009-08-05 | 1 | -1/+1 |
* | - Update Qt4 to 4.5.2 | miwi | 2009-08-05 | 2 | -3/+4 |
* | -Repocopy devel/libtool15 -> libtool22 and libltdl15 -> libltdl22. | mezz | 2009-08-03 | 3 | -3/+3 |
* | Update to 0.15.8. | marcus | 2009-08-02 | 2 | -4/+4 |
* | - bump all port that indirectly depends on libjpeg and have not yet been bump... | dinoex | 2009-07-31 | 15 | -5/+15 |
* | Update to 0.15.7. | marcus | 2009-07-07 | 3 | -4/+7 |
* | Update to 2.26.3. | avl | 2009-07-03 | 2 | -4/+4 |
* | Update to 2.26.3. | avl | 2009-07-01 | 3 | -4/+7 |
* | Fix build with custom LOCALBASE | itetcu | 2009-06-17 | 1 | -0/+2 |
* | - Assign all unmaintained ruby ports to ruby@, | stas | 2009-06-16 | 1 | -1/+1 |
* | The KDE FreeBSD team is pleased to announce KDE 4.2.4, the last bugfix | miwi | 2009-06-03 | 5 | -15/+15 |
* | . add linux-f10 ports to the rank of CONFLICTS for linux-fc4 ports; | bsam | 2009-06-03 | 1 | -2/+2 |
* | . add CONFLICTS to linux-f8 infrastructure ports; | bsam | 2009-06-03 | 1 | -0/+3 |
* | Here are new Linux Fedora 10 infrastructure ports. | bsam | 2009-06-02 | 4 | -20/+24 |
* | Update to 2.26.2. | marcus | 2009-05-19 | 6 | -8/+50 |
* | Update KDE ports to 4.2.3 | makc | 2009-05-10 | 5 | -15/+15 |
* | Update to 4.10.1. | marcus | 2009-05-10 | 3 | -4/+23 |
* | mark as MAKE_JOBS_UNSAFE | makc | 2009-04-25 | 5 | -5/+5 |
* | Presenting GNOME 2.26.1 for FreeBSD. | kwm | 2009-04-24 | 4 | -10/+10 |
* | Update to 0.15.6. | marcus | 2009-04-12 | 2 | -4/+4 |
* | Presenting GNOME 2.26 for FreeBSD. See | marcus | 2009-04-10 | 23 | -53/+219 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.2.2 | miwi | 2009-04-02 | 10 | -20/+20 |
* | Here are new Linux Fedora 8 infrastructure ports. | bsam | 2009-04-01 | 7 | -44/+75 |
* | Finish repocopies of new linux-f8 infrastructure ports: | bsam | 2009-04-01 | 1 | -1/+3 |
* | bump PORTREVISION after cmake update | makc | 2009-03-25 | 5 | -0/+5 |
* | Release these ports into wild. I don't have time for these ports anymore. I am | mezz | 2009-03-19 | 1 | -1/+1 |
* | Update to 0.15.5. | marcus | 2009-03-15 | 3 | -4/+7 |
* | Update KDE to 4.2.1. | makc | 2009-03-09 | 5 | -15/+15 |
* | Update to 0.0.9. | mva | 2009-03-08 | 2 | -4/+4 |
* | Update to 0.4.25. | marcus | 2009-02-23 | 2 | -4/+4 |
* | Update to 2.24.4. | kwm | 2009-02-21 | 3 | -7/+7 |
* | Updated my mail address to use @FreeBSD.org now. | mva | 2009-02-20 | 2 | -2/+2 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.2.0 | miwi | 2009-02-09 | 15 | -690/+1580 |
* | - Update to 0.0.8 | beech | 2009-02-08 | 2 | -4/+4 |
* | Update to 0.4.23. | marcus | 2009-02-04 | 2 | -4/+4 |
* | - Use GNOME macro instead of ${MASTER_SITE_GNOME}, remove | araujo | 2009-02-02 | 6 | -12/+6 |
* | Fix build after X.org 7.4 merge. | flz | 2009-01-25 | 1 | -0/+2 |
* | In preparation for adding new linux (Fedora 8) infrastructure ports all linux | bsam | 2009-01-22 | 3 | -21/+3 |
* | kde@freebsd team is pleased to announce KDE 4.1.4, the last bugfix release in... | makc | 2009-01-14 | 10 | -20/+20 |
* | kde@freebsd team is pleased to announce the update for Qt4 ports. | makc | 2009-01-14 | 1 | -3/+3 |
* | Update to 2.24.3. | marcus | 2009-01-13 | 2 | -4/+4 |
* | Update to 2.24.3. | marcus | 2009-01-13 | 2 | -4/+4 |
* | Remove these ports as they have been absorbed into other ports in GNOME 2.24. | marcus | 2009-01-10 | 7 | -185/+0 |
* | Presenting GNOME 2.24 for FreeBSD. | marcus | 2009-01-10 | 26 | -223/+479 |
* | Bump PORTREVISION's after OpenLDAP update. | delphij | 2009-01-06 | 1 | -1/+1 |
* | - Update to 0.0.7 | miwi | 2008-12-25 | 3 | -7/+14 |
* | linux_base-(fc6|f7|f8) have glib2 by itself. Don't depend upon | ume | 2008-11-29 | 3 | -0/+15 |
* | Update to 0.4.22. | mezz | 2008-11-20 | 2 | -7/+6 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.1.1 | miwi | 2008-09-03 | 5 | -15/+15 |
* | The KDE FreeBSD team is proud to announce the release | miwi | 2008-08-29 | 1 | -3/+3 |
* | Update CONFIGURE_ARGS for how we pass CONFIGURE_TARGET to configure script. | rafan | 2008-08-21 | 1 | -1/+0 |
* | The KDE FreeBSD team is proud to announce the release | miwi | 2008-08-18 | 2 | -4/+3 |
* | The KDE FreeBSD team is proud to announce the release of KDE 4.1.0 | miwi | 2008-08-10 | 21 | -7190/+2766 |
* | - File was rerolled to add missing example file | miwi | 2008-08-06 | 3 | -4/+8 |
* | - Update to 0.0.6 | miwi | 2008-08-06 | 3 | -15/+20 |
* | - Update to qt 4.4.1 | miwi | 2008-08-05 | 2 | -15/+16 |
* | Update to 0.4.21. | marcus | 2008-08-05 | 2 | -4/+4 |
* | - Remove USE_GCC where it can be satisfied with base compiler on following | pav | 2008-07-25 | 1 | -1/+0 |
* | - Update to 0.16.0.20080706, it's more than 0.17 RC1. | mezz | 2008-07-07 | 1 | -2/+1 |
* | Update to 2.22.3. | mezz | 2008-07-01 | 3 | -5/+6 |
* | Update to 2.22.3. | mezz | 2008-07-01 | 3 | -5/+7 |
* | Update to 1.22.3. | marcus | 2008-07-01 | 2 | -5/+5 |
* | Update to 0.4.20. | marcus | 2008-06-18 | 2 | -5/+4 |
* | Bump portrevision due to upgrade of devel/gettext. | edwin | 2008-06-06 | 2 | -2/+2 |
* | Bump portrevision due to upgrade of devel/gettext. | edwin | 2008-06-06 | 21 | -7/+21 |
* | Fix typos. | olgeni | 2008-06-05 | 1 | -1/+1 |
* | Update to 2.22.2. | mezz | 2008-05-27 | 2 | -4/+4 |
* | Update to 2.22.2. | mezz | 2008-05-27 | 4 | -14/+14 |
* | -De-bashism and remove bash dependency. [1] | mezz | 2008-05-06 | 2 | -6/+33 |
* | - Remove unneeded dependency from gtk12/gtk20 [1] | miwi | 2008-04-20 | 10 | -16/+14 |
* | Update to 0.4.19 | ahze | 2008-04-18 | 2 | -4/+4 |
* | Update to 4.7.3. | marcus | 2008-04-08 | 2 | -4/+4 |
* | Update to 4.7.2. | marcus | 2008-04-08 | 3 | -4/+8 |
* | Update to 2.22.1 | ahze | 2008-04-08 | 3 | -4/+10 |
* | Update to 1.22.1 | ahze | 2008-04-07 | 5 | -8/+11 |
* | Update to 2.22.1. | marcus | 2008-04-07 | 3 | -4/+5 |
* | - Remove USE_XLIB/USE_X_PREFIX/USE_XPM in favor of USE_XORG | miwi | 2008-03-25 | 1 | -1/+0 |
* | The FreeBSD GNOME team is proud to annunce the release of GNOME 2.22.0 for | marcus | 2008-03-24 | 22 | -51/+314 |
* | - Update to 0.6.9 | jadawin | 2008-03-17 | 2 | -6/+9 |
* | Update to Qt 4.3.4 | lofi | 2008-03-14 | 1 | -3/+3 |
* | YASR ("Yet Another Screen Reader") is an attempt at a lightweight, | alepulver | 2008-02-17 | 5 | -0/+89 |
* | EFlite is a speech server for Emacspeak and other screen readers that allows | alepulver | 2008-02-17 | 6 | -0/+90 |
* | Update to 0.4.18. | kwm | 2008-01-15 | 2 | -4/+4 |
* | Update to 2.20.3. | mezz | 2008-01-08 | 2 | -4/+4 |
* | Update to 0.4.17. | mezz | 2007-12-19 | 2 | -4/+4 |
* | Update to 2.20.2. | marcus | 2007-12-12 | 2 | -5/+5 |
* | Update to 1.20.2. | marcus | 2007-12-12 | 2 | -5/+5 |
* | Add a missing dependency, at-spi. Bump the PORTREVISION. | mezz | 2007-10-30 | 1 | -1/+2 |
* | Update to KDE 3.5.8 | lofi | 2007-10-30 | 6 | -18/+18 |
* | Update to 2.20.1 | ahze | 2007-10-29 | 2 | -4/+4 |
* | Presenting GNOME 2.20.1 and all related works for FreeBSD. The official | marcus | 2007-10-25 | 40 | -1532/+1622 |
* | - Update to 0.0.5 | lwhsu | 2007-09-16 | 3 | -12/+18 |
* | Update to Qt 4.3.1. | lofi | 2007-09-02 | 3 | -10/+8 |
* | The tarball has been rerolled, no function change. They only update the | mezz | 2007-08-15 | 1 | -3/+3 |
* | - bsd.qt.mk: | lofi | 2007-08-03 | 2 | -9/+4 |
* | Update to 0.4.16. | mezz | 2007-07-30 | 2 | -4/+4 |
* | Update to Qt 4.3.0, introduce bsd.qt.mk. | lofi | 2007-07-16 | 2 | -23/+9 |
* | Update to 0.4.15. | mezz | 2007-07-10 | 2 | -4/+4 |
* | Update to KDE 3.5.7 / KOffice 1.6.3 | lofi | 2007-07-04 | 18 | -24/+318 |
* | Update to 0.4.14. | marcus | 2007-06-19 | 2 | -4/+4 |
* | - Add WWW | pav | 2007-06-07 | 1 | -0/+2 |
* | Update to 0.4.13 and remove X11BASE. | mezz | 2007-06-07 | 2 | -6/+6 |
* | Update to 4.4.2. | mezz | 2007-05-29 | 3 | -5/+23 |
* | Update to 1.2.5. | mezz | 2007-05-29 | 3 | -6/+20 |
* | Update to 0.14.4. | mezz | 2007-05-29 | 3 | -7/+25 |
* | Update to 0.4.12. | mezz | 2007-05-29 | 2 | -4/+4 |
* | - Welcome X.org 7.2 \o/. | flz | 2007-05-20 | 25 | -290/+17 |
* | Rename all binaries in qt4 which conflict with binaries installed by | lofi | 2007-04-20 | 1 | -2/+2 |
* | Update to 2.18.1 | ahze | 2007-04-11 | 3 | -5/+5 |
* | Update to 0.4.11. | mezz | 2007-04-10 | 2 | -5/+4 |
* | - Fix the '==' -> '=' in configure. | mezz | 2007-04-10 | 2 | -1/+20 |
* | Update to 1.18.1 | ahze | 2007-04-09 | 2 | -4/+4 |
* | Update to 4.4.1. | marcus | 2007-04-09 | 3 | -4/+5 |
* | Fix packaging. | marcus | 2007-03-26 | 2 | -5/+4 |
* | Fix packaging. | marcus | 2007-03-26 | 1 | -0/+2 |
* | Whoops, too greedy with the cvs add. Remove files that do not belong. | marcus | 2007-03-25 | 2 | -0/+0 |
* | Fix orca so that it actually runs. While here, replace some hardcoded paths | marcus | 2007-03-25 | 5 | -0/+43 |
* | Update to 4.2.3 | lofi | 2007-03-25 | 2 | -6/+6 |
* | - Update to 0.0.4 | miwi | 2007-03-23 | 2 | -4/+4 |
* | Add a missing BUILD_DEPENDS on X_CLIENTS_PORT. | marcus | 2007-03-22 | 1 | -0/+2 |
* | Presenting GNOME 2.18 for FreeBSD. GNOME 2.18 is a departure from recent GNOME | marcus | 2007-03-19 | 26 | -75/+223 |
* | Update to KDE 3.5.6 / KOffice 1.6.2 | lofi | 2007-03-14 | 6 | -18/+18 |
* | Update to 1.2.3. | mezz | 2007-03-01 | 2 | -4/+4 |
* | Update to 1.2.2. | mezz | 2007-02-28 | 2 | -4/+5 |
* | Update to 0.4.10 | ahze | 2007-02-26 | 2 | -4/+4 |
* | Update to 0.4.9 | ahze | 2007-02-12 | 2 | -4/+4 |
* | From the "who gave this guy a commit bit" dept.: | lofi | 2007-02-06 | 1 | -1/+1 |
* | Post-import bugfixorama: | lofi | 2007-02-06 | 1 | -1/+2 |
* | Add qt4, a multiplatform C++ application framework | lofi | 2007-02-06 | 5 | -0/+92 |
* | Update to 0.13.2. | mezz | 2007-01-30 | 3 | -9/+44 |
* | Update to 1.0.1. | mezz | 2007-01-29 | 3 | -4/+18 |
* | Update to 0.4.8. | mezz | 2007-01-21 | 2 | -4/+4 |
* | Update to 1.2.1. | marcus | 2007-01-20 | 3 | -5/+44 |