# HG changeset patch
# User Frank Benoit
# Date 1219433765 -7200
# Node ID dc2ae028d2d89e097b20ed6d2c493af311a12be5
# Parent 9995e4a9d2ee3080272f539b120e84bbfde44aaa
Fix: DateTime to startup with current Date/Time.
diff -r 9995e4a9d2ee -r dc2ae028d2d8 dwt/widgets/DateTime.d
--- a/dwt/widgets/DateTime.d Thu Aug 21 17:34:04 2008 +0200
+++ b/dwt/widgets/DateTime.d Fri Aug 22 21:36:05 2008 +0200
@@ -40,6 +40,7 @@
static import tango.text.Util;
//static import tango.text.locale.Core;
static import tango.text.Text;
+static import tango.time.Time;
static import tango.time.WallClock;
static import tango.time.chrono.Gregorian;
static import tango.time.chrono.Calendar;
@@ -84,6 +85,17 @@
return instance;
}
+ public this(){
+ tango.time.Time.Time time = tango.time.WallClock.WallClock.now();
+ tango.time.Time.TimeSpan span = time.time.span;
+ this.second = span.seconds % 60;
+ this.minute = span.minutes % 60;
+ this.hour = span.hours;
+ auto greg = tango.time.chrono.Gregorian.Gregorian.generic;
+ this.dayofmonth = greg.getDayOfMonth( time );
+ this.month = greg.getMonth( time );
+ this.year = greg.getYear( time );
+ }
int getActualMaximum(int field){
switch( field ){
case YEAR:
@@ -288,68 +300,6 @@
}
}
-/+
-private int getCalendarActualMaximum( tango.time.Time.Time time, int field ){
- int year = cal.getYear( time );
- int month = cal.getMonth( time );
- tango.time.Time.TimeOfDay tod = tango.time.Time.TimeOfDay( time.ticks );
- switch( field ){
- case YEAR: return tango.time.chrono.Gregorian.Gregorian.MAX_YEAR;
- case MONTH: return cal.getMonthsInYear( year, tango.time.chrono.Gregorian.Gregorian.AD_ERA ) -1; // Jan is 0, so max is 11
- case DAY_OF_MONTH:return cal.getDaysInMonth( year, month, tango.time.chrono.Gregorian.Gregorian.AD_ERA ) -1; // 1st is 0
- case HOUR:return 23;
- case MINUTE:return 59;
- case SECOND:return 59;
- case AM_PM:return PM;
- default:
- }
-}
-
-private int getCalendarActualMinimum( tango.time.Time.Time time, int field ){
- switch( field ){
- case YEAR: return 1800;
- case MONTH: return 1;
- case DAY_OF_MONTH:return 1;
- case HOUR:return 0;
- case MINUTE:return 0;
- case SECOND:return 0;
- case AM_PM:return AM;
- default:
- }
-}
-private int getCalendarField( tango.time.Time.Time time, int field ){
- switch( field ){
- case YEAR: return cal.getYear( time );
- case MONTH: return cal.getMonth( time );
- case DAY_OF_MONTH:return cal.getDayOfMonth( time );
- default:
- }
- tango.time.Time.TimeOfDay tod = tango.time.Time.TimeOfDay( time.ticks );
- switch( field ){
- case HOUR:return tod.hours;
- case MINUTE:return tod.minutes;
- case SECOND:return tod.seconds;
- case AM_PM:return tod.hours > 12;
- default:
- }
- assert(false);
-}
-enum {
- AM,
- PM,
- AM_PM,
- HOUR,
- MINUTE,
- SECOND,
- MONTH,
- YEAR,
- DAY_OF_MONTH,
- DAY_SELECTED,
- MONTH_CHANGED,
- HOUR_OF_DAY
-}
-
-+/
/**
* Instances of this class are selectable user interface
@@ -371,7 +321,7 @@
*
* IMPORTANT: This class is not intended to be subclassed.
*
- *
+ *
* @see DateTime snippets
* @see DWT Example: ControlExample
* @see Sample code and further information
diff -r 9995e4a9d2ee -r dc2ae028d2d8 dwt/widgets/DirectoryDialog.d~
--- a/dwt/widgets/DirectoryDialog.d~ Thu Aug 21 17:34:04 2008 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,343 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Port to the D programming language:
- * Frank Benoit
- *******************************************************************************/
-module dwt.widgets.DirectoryDialog;
-
-import dwt.dwthelper.utils;
-
-
-
-import dwt.DWT;
-import dwt.DWTException;
-import dwt.internal.gtk.OS;
-import dwt.widgets.Dialog;
-import dwt.widgets.Shell;
-import dwt.widgets.Display;
-
-version(TANGOSVN) {
- static import tango.io.model.IFile;
-}
-else{
- static import tango.io.FileConst;
-}
-static import tango.text.Util;
-
-/**
- * Instances of this class allow the user to navigate
- * the file system and select a directory.
- *
- * - Styles:
- * - (none)
- * - Events:
- * - (none)
- *
- *
- * IMPORTANT: This class is intended to be subclassed only
- * within the DWT implementation.
- *
- *
- * @see DirectoryDialog snippets
- * @see DWT Example: ControlExample, Dialog tab
- * @see Sample code and further information
- */
-public class DirectoryDialog : Dialog {
- String message = "", filterPath = "";
-version(TANGOSVN) {
- static const String SEPARATOR = tango.io.model.IFile.FileConst.PathSeparatorString;
-}
-else{
- static const String SEPARATOR = tango.io.FileConst.FileConst.PathSeparatorString;
-}
-
-/**
- * Constructs a new instance of this class given only its parent.
- *
- * @param parent a shell which will be the parent of the new instance
- *
- * @exception IllegalArgumentException
- * - ERROR_NULL_ARGUMENT - if the parent is null
- *
- * @exception DWTException
- * - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
- * - ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
- *
- */
-public this (Shell parent) {
- this (parent, DWT.APPLICATION_MODAL);
-}
-/**
- * Constructs a new instance of this class given its parent
- * and a style value describing its behavior and appearance.
- *
- * The style value is either one of the style constants defined in
- * class DWT
which is applicable to instances of this
- * class, or must be built by bitwise OR'ing together
- * (that is, using the int
"|" operator) two or more
- * of those DWT
style constants. The class description
- * lists the style constants that are applicable to the class.
- * Style bits are also inherited from superclasses.
- *
- *
- * @param parent a shell which will be the parent of the new instance
- * @param style the style of dialog to construct
- *
- * @exception IllegalArgumentException
- * - ERROR_NULL_ARGUMENT - if the parent is null
- *
- * @exception DWTException
- * - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
- * - ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass
- *
- */
-public this (Shell parent, int style) {
- super (parent, checkStyle (parent, style));
- checkSubclass ();
-}
-/**
- * Returns the path which the dialog will use to filter
- * the directories it shows.
- *
- * @return the filter path
- *
- * @see #setFilterPath
- */
-public String getFilterPath () {
- return filterPath;
-}
-/**
- * Returns the dialog's message, which is a description of
- * the purpose for which it was opened. This message will be
- * visible on the dialog while it is open.
- *
- * @return the message
- */
-public String getMessage () {
- return message;
-}
-/**
- * Makes the dialog visible and brings it to the front
- * of the display.
- *
- * @return a string describing the absolute path of the selected directory,
- * or null if the dialog was cancelled or an error occurred
- *
- * @exception DWTException
- * - ERROR_WIDGET_DISPOSED - if the dialog has been disposed
- * - ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the dialog
- *
- */
-public String open () {
- bool useChooserDialog = OS.GTK_VERSION >= OS.buildVERSION (2, 4, 10);
- if (useChooserDialog) {
- return openChooserDialog ();
- } else {
- return openClassicDialog ();
- }
-}
-String openChooserDialog () {
- char* titleBytes = toStringz(title);
- auto shellHandle = parent.topHandle ();
- auto handle = OS.gtk_file_chooser_dialog_new2 (
- titleBytes,
- shellHandle,
- OS.GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
- OS.GTK_STOCK_CANCEL (), OS.GTK_RESPONSE_CANCEL,
- OS.GTK_STOCK_OK (), OS.GTK_RESPONSE_OK );
- auto pixbufs = OS.gtk_window_get_icon_list (shellHandle);
- if (pixbufs !is null) {
- OS.gtk_window_set_icon_list (handle, pixbufs);
- OS.g_list_free (pixbufs);
- }
- if (filterPath !is null && filterPath.length > 0) {
- String p;
- /* filename must be a full path */
- if ( filterPath[ 0 .. SEPARATOR.length ] != SEPARATOR ) {
- p ~= SEPARATOR;
- p ~= filterPath;
- }
- else{
- p = filterPath;
- }
- char* buffer = toStringz(p);
- /*
- * Bug in GTK. GtkFileChooser may crash on GTK versions 2.4.10 to 2.6
- * when setting a file name that is not a true canonical path.
- * The fix is to use the canonical path.
- */
- char* ptr = OS.realpath (buffer, null);
- if (ptr !is null) {
- OS.gtk_file_chooser_set_current_folder (handle, ptr);
- OS.g_free (ptr);
- }
- }
- if (message.length > 0) {
- char* buffer = toStringz(message);
- auto box = OS.gtk_hbox_new (false, 0);
- if (box is null) error (DWT.ERROR_NO_HANDLES);
- auto label = OS.gtk_label_new (buffer);
- if (label is null) error (DWT.ERROR_NO_HANDLES);
- OS.gtk_container_add (box, label);
- OS.gtk_widget_show (label);
- OS.gtk_label_set_line_wrap (label, true);
- OS.gtk_label_set_justify (label, OS.GTK_JUSTIFY_CENTER);
- OS.gtk_file_chooser_set_extra_widget (handle, box);
- }
- String answer = null;
- Display display = parent !is null ? parent.getDisplay (): Display.getCurrent ();
- display.addIdleProc ();
- Dialog oldModal = null;
- if (OS.gtk_window_get_modal (handle)) {
- oldModal = display.getModalDialog ();
- display.setModalDialog (this);
- }
- int signalId = 0;
- int /*long*/ hookId = 0;
- CallbackData emissionData;
- emissionData.display = display;
- emissionData.data = handle;
- if ((style & DWT.RIGHT_TO_LEFT) !is 0) {
- signalId = OS.g_signal_lookup (OS.map.ptr, OS.GTK_TYPE_WIDGET());
- hookId = OS.g_signal_add_emission_hook (signalId, 0, &Display.emissionFunc, &emissionData, null);
- }
- int response = OS.gtk_dialog_run (handle);
- if ((style & DWT.RIGHT_TO_LEFT) !is 0) {
- OS.g_signal_remove_emission_hook (signalId, hookId);
- }
- if (OS.gtk_window_get_modal (handle)) {
- display.setModalDialog (oldModal);
- }
- if (response is OS.GTK_RESPONSE_OK) {
- auto path = OS.gtk_file_chooser_get_filename (handle);
- if (path !is null) {
- uint items_written;
- auto utf8Ptr = OS.g_filename_to_utf8 (path, -1, null, &items_written, null);
- OS.g_free (path);
- if (utf8Ptr !is null) {
- answer = utf8Ptr[ 0 .. items_written ].dup;
- filterPath = answer;
- OS.g_free (utf8Ptr);
- }
- }
- }
- display.removeIdleProc ();
- OS.gtk_widget_destroy (handle);
- return answer;
-}
-String openClassicDialog () {
- char* titleBytes = toStringz(title);
- auto handle = OS.gtk_file_selection_new (titleBytes);
- if (parent !is null) {
- auto shellHandle = parent.topHandle ();
- OS.gtk_window_set_transient_for (handle, shellHandle);
- auto pixbufs = OS.gtk_window_get_icon_list (shellHandle);
- if (pixbufs !is null) {
- OS.gtk_window_set_icon_list (handle, pixbufs);
- OS.g_list_free (pixbufs);
- }
- }
- String answer = null;
- if (filterPath !is null) {
- String path = filterPath;
- if (path.length > 0 && path[ $-1 .. $ ] != SEPARATOR ) {
- path ~= SEPARATOR;
- }
- char* fileNamePtr = OS.g_filename_from_utf8 (toStringz(path), -1, null, null, null);
- OS.gtk_file_selection_set_filename (handle, fileNamePtr);
- OS.g_free (fileNamePtr);
- }
- GtkFileSelection* selection = cast(GtkFileSelection*)handle;
- OS.gtk_file_selection_hide_fileop_buttons (handle);
- auto fileListParent = OS.gtk_widget_get_parent (selection.file_list);
- OS.gtk_widget_hide (selection.file_list);
- OS.gtk_widget_hide (fileListParent);
- if (message.length > 0) {
- auto labelHandle = OS.gtk_label_new (toStringz(message));
- OS.gtk_label_set_line_wrap (labelHandle, true);
- OS.gtk_misc_set_alignment (labelHandle, 0.0f, 0.0f);
- OS.gtk_container_add (selection.main_vbox, labelHandle);
- OS.gtk_box_set_child_packing (
- selection.main_vbox, labelHandle, false, false, 0, OS.GTK_PACK_START);
- OS.gtk_widget_show (labelHandle);
- }
- Display display = parent !is null ? parent.getDisplay (): Display.getCurrent ();
- display.addIdleProc ();
- Dialog oldModal = null;
- if (OS.gtk_window_get_modal (handle)) {
- oldModal = display.getModalDialog ();
- display.setModalDialog (this);
- }
- int signalId = 0;
- int /*long*/ hookId = 0;
- CallbackData emissionData;
- emissionData.display = display;
- emissionData.data = handle;
- if ((style & DWT.RIGHT_TO_LEFT) !is 0) {
- signalId = OS.g_signal_lookup (OS.map.ptr, OS.GTK_TYPE_WIDGET());
- hookId = OS.g_signal_add_emission_hook (signalId, 0, &Display.emissionFunc, &emissionData, null);
- }
- int response = OS.gtk_dialog_run (handle);
- if ((style & DWT.RIGHT_TO_LEFT) !is 0) {
- OS.g_signal_remove_emission_hook (signalId, hookId);
- }
- if (OS.gtk_window_get_modal (handle)) {
- display.setModalDialog (oldModal);
- }
- if (response is OS.GTK_RESPONSE_OK) {
- char* fileNamePtr = OS.gtk_file_selection_get_filename (handle);
- uint items_written;
- char* utf8Ptr = OS.g_filename_to_utf8 (fileNamePtr, -1, null, &items_written, null);
- if (utf8Ptr !is null) {
- String osAnswer = utf8Ptr[ 0 .. items_written ];
- if (osAnswer.length !is 0) {
- /* remove trailing separator, unless root directory */
- if ( osAnswer != SEPARATOR && osAnswer[ $-1 .. $ ] == SEPARATOR ) {
- osAnswer = osAnswer[ 0 .. $ - 1 ];
- }
- answer = filterPath = osAnswer.dup;
- }
- OS.g_free (utf8Ptr);
- }
- }
- display.removeIdleProc ();
- OS.gtk_widget_destroy (handle);
- return answer;
-}
-/**
- * Sets the path that the dialog will use to filter
- * the directories it shows to the argument, which may
- * be null. If the string is null, then the operating
- * system's default filter path will be used.
- *
- * Note that the path string is platform dependent.
- * For convenience, either '/' or '\' can be used
- * as a path separator.
- *
- *
- * @param string the filter path
- */
-public void setFilterPath (String string) {
- filterPath = string.dup;
-}
-/**
- * Sets the dialog's message, which is a description of
- * the purpose for which it was opened. This message will be
- * visible on the dialog while it is open.
- *
- * @param string the message
- *
- */
-public void setMessage (String string) {
- // DWT extension: allow null for zero length string
- //if (string is null) error (DWT.ERROR_NULL_ARGUMENT);
- message = string.dup;
-}
-}