Mercurial > projects > dwt-win
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); |