comparison dwt/widgets/Spinner.d @ 212:ab60f3309436

reverted the char[] to String and use the an alias.
author Frank Benoit <benoit@tionex.de>
date Mon, 05 May 2008 00:12:38 +0200
parents 184ab53b7785
children 36f5cb12e1a2
comparison
equal deleted inserted replaced
211:ff59aeb96cac 212:ab60f3309436
311 OS.GetTextMetrics (hDC, &tm); 311 OS.GetTextMetrics (hDC, &tm);
312 height = tm.tmHeight; 312 height = tm.tmHeight;
313 RECT rect; 313 RECT rect;
314 int max; 314 int max;
315 OS.SendMessage (hwndUpDown , OS.UDM_GETRANGE32, null, &max); 315 OS.SendMessage (hwndUpDown , OS.UDM_GETRANGE32, null, &max);
316 char[] string = .toString( max ); 316 String string = .toString( max );
317 if (digits > 0) { 317 if (digits > 0) {
318 StringBuffer buffer = new StringBuffer (); 318 StringBuffer buffer = new StringBuffer ();
319 buffer.append (string); 319 buffer.append (string);
320 buffer.append (getDecimalSeparator ()); 320 buffer.append (getDecimalSeparator ());
321 int count = digits - string.length; 321 int count = digits - string.length;
449 public int getDigits () { 449 public int getDigits () {
450 checkWidget (); 450 checkWidget ();
451 return digits; 451 return digits;
452 } 452 }
453 453
454 char[] getDecimalSeparator () { 454 String getDecimalSeparator () {
455 TCHAR[] tchar = NewTCHARs (getCodePage (), 4); 455 TCHAR[] tchar = NewTCHARs (getCodePage (), 4);
456 int size = OS.GetLocaleInfo (OS.LOCALE_USER_DEFAULT, OS.LOCALE_SDECIMAL, tchar.ptr, 4); 456 int size = OS.GetLocaleInfo (OS.LOCALE_USER_DEFAULT, OS.LOCALE_SDECIMAL, tchar.ptr, 4);
457 return size !is 0 ? TCHARsToStr( tchar[0 .. size-1] ) : "."; 457 return size !is 0 ? TCHARsToStr( tchar[0 .. size-1] ) : ".";
458 } 458 }
459 459
546 546
547 int getSelectionText () { 547 int getSelectionText () {
548 int length_ = OS.GetWindowTextLength (hwndText); 548 int length_ = OS.GetWindowTextLength (hwndText);
549 TCHAR[] buffer = NewTCHARs (getCodePage (), length_ + 1); 549 TCHAR[] buffer = NewTCHARs (getCodePage (), length_ + 1);
550 OS.GetWindowText (hwndText, buffer.ptr, length_ + 1); 550 OS.GetWindowText (hwndText, buffer.ptr, length_ + 1);
551 char[] string = TCHARsToStr( buffer[ 0 .. length_] ); 551 String string = TCHARsToStr( buffer[ 0 .. length_] );
552 try { 552 try {
553 int value; 553 int value;
554 if (digits > 0) { 554 if (digits > 0) {
555 char[] decimalSeparator = getDecimalSeparator (); 555 String decimalSeparator = getDecimalSeparator ();
556 int index = string.indexOf (decimalSeparator); 556 int index = string.indexOf (decimalSeparator);
557 if (index !is -1) { 557 if (index !is -1) {
558 char[] wholePart = string.substring (0, index); 558 String wholePart = string.substring (0, index);
559 char[] decimalPart = string.substring (index + 1); 559 String decimalPart = string.substring (index + 1);
560 if (decimalPart.length > digits) { 560 if (decimalPart.length > digits) {
561 decimalPart = decimalPart.substring (0, digits); 561 decimalPart = decimalPart.substring (0, digits);
562 } else { 562 } else {
563 int i = digits - decimalPart.length; 563 int i = digits - decimalPart.length;
564 for (int j = 0; j < i; j++) { 564 for (int j = 0; j < i; j++) {
731 if (OS.GetKeyState (OS.VK_LBUTTON) < 0) { 731 if (OS.GetKeyState (OS.VK_LBUTTON) < 0) {
732 return true; 732 return true;
733 } 733 }
734 734
735 /* Verify the character */ 735 /* Verify the character */
736 char[] oldText = ""; 736 String oldText = "";
737 int start, end; 737 int start, end;
738 OS.SendMessage (hwndText, OS.EM_GETSEL, &start, &end); 738 OS.SendMessage (hwndText, OS.EM_GETSEL, &start, &end);
739 switch (key) { 739 switch (key) {
740 case 0x08: /* Bs */ 740 case 0x08: /* Bs */
741 if (start is end) { 741 if (start is end) {
769 default: /* Tab and other characters */ 769 default: /* Tab and other characters */
770 if (key !is '\t' && key < 0x20) return true; 770 if (key !is '\t' && key < 0x20) return true;
771 oldText = [key]; 771 oldText = [key];
772 break; 772 break;
773 } 773 }
774 char[] newText = verifyText (oldText, start, end, event); 774 String newText = verifyText (oldText, start, end, event);
775 if (newText is null) return false; 775 if (newText is null) return false;
776 if (newText is oldText) return true; 776 if (newText is oldText) return true;
777 TCHAR* buffer = StrToTCHARz (getCodePage (), newText); 777 TCHAR* buffer = StrToTCHARz (getCodePage (), newText);
778 OS.SendMessage (hwndText, OS.EM_SETSEL, start, end); 778 OS.SendMessage (hwndText, OS.EM_SETSEL, start, end);
779 OS.SendMessage (hwndText, OS.EM_REPLACESEL, 0, buffer); 779 OS.SendMessage (hwndText, OS.EM_REPLACESEL, 0, buffer);
961 void setSelection (int value, bool setPos, bool setText, bool notify) { 961 void setSelection (int value, bool setPos, bool setText, bool notify) {
962 if (setPos) { 962 if (setPos) {
963 OS.SendMessage (hwndUpDown , OS.IsWinCE ? OS.UDM_SETPOS : OS.UDM_SETPOS32, 0, value); 963 OS.SendMessage (hwndUpDown , OS.IsWinCE ? OS.UDM_SETPOS : OS.UDM_SETPOS32, 0, value);
964 } 964 }
965 if (setText) { 965 if (setText) {
966 char[] string = .toString( value ); 966 String string = .toString( value );
967 if (digits > 0) { 967 if (digits > 0) {
968 char[] decimalSeparator = getDecimalSeparator (); 968 String decimalSeparator = getDecimalSeparator ();
969 int index = string.length - digits; 969 int index = string.length - digits;
970 StringBuffer buffer = new StringBuffer (); 970 StringBuffer buffer = new StringBuffer ();
971 if (index > 0) { 971 if (index > 0) {
972 buffer.append (string.substring (0, index)); 972 buffer.append (string.substring (0, index));
973 buffer.append (decimalSeparator); 973 buffer.append (decimalSeparator);
989 OS.SetWindowText (hwndText, buffer); 989 OS.SetWindowText (hwndText, buffer);
990 } 990 }
991 if (notify) postEvent (DWT.Selection); 991 if (notify) postEvent (DWT.Selection);
992 } 992 }
993 993
994 override void setToolTipText (Shell shell, char[] string) { 994 override void setToolTipText (Shell shell, String string) {
995 shell.setToolTipText (hwndText, string); 995 shell.setToolTipText (hwndText, string);
996 shell.setToolTipText (hwndUpDown, string); 996 shell.setToolTipText (hwndUpDown, string);
997 } 997 }
998 998
999 /** 999 /**
1045 super.unsubclass (); 1045 super.unsubclass ();
1046 OS.SetWindowLong (hwndText, OS.GWL_WNDPROC, cast(int) EditProc); 1046 OS.SetWindowLong (hwndText, OS.GWL_WNDPROC, cast(int) EditProc);
1047 OS.SetWindowLong (hwndUpDown, OS.GWL_WNDPROC, cast(int) UpDownProc); 1047 OS.SetWindowLong (hwndUpDown, OS.GWL_WNDPROC, cast(int) UpDownProc);
1048 } 1048 }
1049 1049
1050 char[] verifyText (char[] string, int start, int end, Event keyEvent) { 1050 String verifyText (String string, int start, int end, Event keyEvent) {
1051 Event event = new Event (); 1051 Event event = new Event ();
1052 event.text = string; 1052 event.text = string;
1053 event.start = start; 1053 event.start = start;
1054 event.end = end; 1054 event.end = end;
1055 if (keyEvent !is null) { 1055 if (keyEvent !is null) {
1057 event.keyCode = keyEvent.keyCode; 1057 event.keyCode = keyEvent.keyCode;
1058 event.stateMask = keyEvent.stateMask; 1058 event.stateMask = keyEvent.stateMask;
1059 } 1059 }
1060 int index = 0; 1060 int index = 0;
1061 if (digits > 0) { 1061 if (digits > 0) {
1062 char[] decimalSeparator = getDecimalSeparator (); 1062 String decimalSeparator = getDecimalSeparator ();
1063 index = string.indexOf (decimalSeparator); 1063 index = string.indexOf (decimalSeparator);
1064 if (index !is -1) { 1064 if (index !is -1) {
1065 string = string.substring (0, index) ~ string.substring (index + 1); 1065 string = string.substring (0, index) ~ string.substring (index + 1);
1066 } 1066 }
1067 index = 0; 1067 index = 0;
1204 LRESULT wmClipboard (HWND hwndText, int msg, int wParam, int lParam) { 1204 LRESULT wmClipboard (HWND hwndText, int msg, int wParam, int lParam) {
1205 if ((style & DWT.READ_ONLY) !is 0) return null; 1205 if ((style & DWT.READ_ONLY) !is 0) return null;
1206 // if (!hooks (DWT.Verify) && !filters (DWT.Verify)) return null; 1206 // if (!hooks (DWT.Verify) && !filters (DWT.Verify)) return null;
1207 bool call = false; 1207 bool call = false;
1208 int start, end; 1208 int start, end;
1209 char[] newText = null; 1209 String newText = null;
1210 switch (msg) { 1210 switch (msg) {
1211 case OS.WM_CLEAR: 1211 case OS.WM_CLEAR:
1212 case OS.WM_CUT: 1212 case OS.WM_CUT:
1213 OS.SendMessage (hwndText, OS.EM_GETSEL, &start, &end); 1213 OS.SendMessage (hwndText, OS.EM_GETSEL, &start, &end);
1214 if (start !is end) { 1214 if (start !is end) {
1241 } 1241 }
1242 break; 1242 break;
1243 default: 1243 default:
1244 } 1244 }
1245 if (newText !is null) { 1245 if (newText !is null) {
1246 char[] oldText = newText; 1246 String oldText = newText;
1247 newText = verifyText (newText, start, end, null); 1247 newText = verifyText (newText, start, end, null);
1248 if (newText is null) return LRESULT.ZERO; 1248 if (newText is null) return LRESULT.ZERO;
1249 if ( newText !=/*eq*/ oldText ) { 1249 if ( newText !=/*eq*/ oldText ) {
1250 if (call) { 1250 if (call) {
1251 OS.CallWindowProc (EditProc, hwndText, msg, wParam, lParam); 1251 OS.CallWindowProc (EditProc, hwndText, msg, wParam, lParam);