Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
c92691e1
Commit
c92691e1
authored
May 08, 2010
by
Katayama Hirofumi MZ
Committed by
Alexandre Julliard
May 11, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wordpad: Add units (in/inch/pt).
parent
1bca01cb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
29 deletions
+83
-29
En.rc
programs/wordpad/En.rc
+3
-0
wordpad.c
programs/wordpad/wordpad.c
+77
-29
wordpad.h
programs/wordpad/wordpad.h
+3
-0
No files found.
programs/wordpad/En.rc
View file @
c92691e1
...
...
@@ -240,6 +240,9 @@ BEGIN
STRING_PREVIEW_PAGE, "Page"
STRING_PREVIEW_PAGES, "Pages"
STRING_UNITS_CM, "cm"
STRING_UNITS_IN, "in"
STRING_UNITS_INCH, "inch"
STRING_UNITS_PT, "pt"
END
STRINGTABLE DISCARDABLE
...
...
programs/wordpad/wordpad.c
View file @
c92691e1
...
...
@@ -76,11 +76,19 @@ static WCHAR wszFilter[MAX_STRING_LEN*4+6*3+5];
static
WCHAR
wszDefaultFileName
[
MAX_STRING_LEN
];
static
WCHAR
wszSaveChanges
[
MAX_STRING_LEN
];
static
WCHAR
units_cmW
[
MAX_STRING_LEN
];
static
char
units_cmA
[
MAX_STRING_LEN
];
static
WCHAR
units_inW
[
MAX_STRING_LEN
];
static
WCHAR
units_inchW
[
MAX_STRING_LEN
];
static
WCHAR
units_ptW
[
MAX_STRING_LEN
];
static
LRESULT
OnSize
(
HWND
hWnd
,
WPARAM
wParam
,
LPARAM
lParam
);
typedef
enum
{
UNIT_CM
,
UNIT_INCH
,
UNIT_PT
}
UNIT
;
/* Load string resources */
static
void
DoLoadStrings
(
void
)
{
...
...
@@ -115,8 +123,10 @@ static void DoLoadStrings(void)
p
=
wszSaveChanges
;
LoadStringW
(
hInstance
,
STRING_PROMPT_SAVE_CHANGES
,
p
,
MAX_STRING_LEN
);
LoadStringA
(
hInstance
,
STRING_UNITS_CM
,
units_cmA
,
MAX_STRING_LEN
);
LoadStringW
(
hInstance
,
STRING_UNITS_CM
,
units_cmW
,
MAX_STRING_LEN
);
LoadStringW
(
hInstance
,
STRING_UNITS_IN
,
units_inW
,
MAX_STRING_LEN
);
LoadStringW
(
hInstance
,
STRING_UNITS_INCH
,
units_inchW
,
MAX_STRING_LEN
);
LoadStringW
(
hInstance
,
STRING_UNITS_PT
,
units_ptW
,
MAX_STRING_LEN
);
}
/* Show a message box with resource strings */
...
...
@@ -239,8 +249,10 @@ static void set_caption(LPCWSTR wszNewFileName)
HeapFree
(
GetProcessHeap
(),
0
,
wszCaption
);
}
static
BOOL
validate_endptr
(
LPC
STR
endptr
,
BOOL
units
)
static
BOOL
validate_endptr
(
LPC
WSTR
endptr
,
UNIT
*
punit
)
{
if
(
punit
!=
NULL
)
*
punit
=
UNIT_CM
;
if
(
!
endptr
)
return
FALSE
;
if
(
!*
endptr
)
...
...
@@ -249,28 +261,45 @@ static BOOL validate_endptr(LPCSTR endptr, BOOL units)
while
(
*
endptr
==
' '
)
endptr
++
;
if
(
!
units
)
if
(
punit
==
NULL
)
return
*
endptr
==
'\0'
;
/* FIXME: Allow other units and convert between them */
if
(
!
lstrcmpA
(
endptr
,
units_cmA
))
endptr
+=
2
;
if
(
!
lstrcmpW
(
endptr
,
units_cmW
))
{
*
punit
=
UNIT_CM
;
endptr
+=
lstrlenW
(
units_cmW
);
}
else
if
(
!
lstrcmpW
(
endptr
,
units_inW
))
{
*
punit
=
UNIT_INCH
;
endptr
+=
lstrlenW
(
units_inW
);
}
else
if
(
!
lstrcmpW
(
endptr
,
units_inchW
))
{
*
punit
=
UNIT_INCH
;
endptr
+=
lstrlenW
(
units_inchW
);
}
else
if
(
!
lstrcmpW
(
endptr
,
units_ptW
))
{
*
punit
=
UNIT_PT
;
endptr
+=
lstrlenW
(
units_ptW
);
}
return
*
endptr
==
'\0'
;
}
static
BOOL
number_from_string
(
LPCWSTR
string
,
float
*
num
,
BOOL
units
)
static
BOOL
number_from_string
(
LPCWSTR
string
,
float
*
num
,
UNIT
*
punit
)
{
double
ret
;
char
buffer
[
MAX_STRING_LEN
];
char
*
endptr
=
buffer
;
WCHAR
*
endptr
;
WideCharToMultiByte
(
CP_ACP
,
0
,
string
,
-
1
,
buffer
,
MAX_STRING_LEN
,
NULL
,
NULL
);
*
num
=
0
;
errno
=
0
;
ret
=
strtod
(
buffer
,
&
endptr
);
ret
=
wcstod
(
string
,
&
endptr
);
if
((
ret
==
0
&&
errno
!=
0
)
||
endptr
==
buffer
||
!
validate_endptr
(
endptr
,
units
))
if
(
punit
!=
NULL
)
*
punit
=
UNIT_CM
;
if
((
ret
==
0
&&
errno
!=
0
)
||
endptr
==
string
||
!
validate_endptr
(
endptr
,
punit
))
{
return
FALSE
;
}
else
...
...
@@ -304,7 +333,7 @@ static void on_sizelist_modified(HWND hwndSizeList, LPWSTR wszNewFontSize)
if
(
lstrcmpW
(
sizeBuffer
,
wszNewFontSize
))
{
float
size
=
0
;
if
(
number_from_string
(
wszNewFontSize
,
&
size
,
FALSE
)
if
(
number_from_string
(
wszNewFontSize
,
&
size
,
NULL
)
&&
size
>
0
)
{
set_size
(
size
);
...
...
@@ -1295,9 +1324,25 @@ static void dialog_find(LPFINDREPLACEW fr, BOOL replace)
hFindWnd
=
FindTextW
(
fr
);
}
static
int
current_units_to_twips
(
float
number
)
static
int
units_to_twips
(
UNIT
unit
,
float
number
)
{
int
twips
=
(
int
)(
number
*
1000
.
0
/
(
float
)
CENTMM_PER_INCH
*
(
float
)
TWIPS_PER_INCH
);
int
twips
=
0
;
switch
(
unit
)
{
case
UNIT_CM
:
twips
=
(
int
)(
number
*
1000
.
0
/
(
float
)
CENTMM_PER_INCH
*
(
float
)
TWIPS_PER_INCH
);
break
;
case
UNIT_INCH
:
twips
=
(
int
)(
number
*
(
float
)
TWIPS_PER_INCH
);
break
;
case
UNIT_PT
:
twips
=
(
int
)(
number
*
(
0
.
013
8
*
(
float
)
TWIPS_PER_INCH
));
break
;
}
return
twips
;
}
...
...
@@ -1506,22 +1551,23 @@ static INT_PTR CALLBACK paraformat_proc(HWND hWnd, UINT message, WPARAM wParam,
float
num
;
int
ret
=
0
;
PARAFORMAT
pf
;
UNIT
unit
;
index
=
SendMessageW
(
hListWnd
,
CB_GETCURSEL
,
0
,
0
);
pf
.
wAlignment
=
ALIGNMENT_VALUES
[
index
];
GetWindowTextW
(
hLeftWnd
,
buffer
,
MAX_STRING_LEN
);
if
(
number_from_string
(
buffer
,
&
num
,
TRUE
))
if
(
number_from_string
(
buffer
,
&
num
,
&
unit
))
ret
++
;
pf
.
dxOffset
=
current_units_to_twips
(
num
);
pf
.
dxOffset
=
units_to_twips
(
unit
,
num
);
GetWindowTextW
(
hRightWnd
,
buffer
,
MAX_STRING_LEN
);
if
(
number_from_string
(
buffer
,
&
num
,
TRUE
))
if
(
number_from_string
(
buffer
,
&
num
,
&
unit
))
ret
++
;
pf
.
dxRightIndent
=
current_units_to_twips
(
num
);
pf
.
dxRightIndent
=
units_to_twips
(
unit
,
num
);
GetWindowTextW
(
hFirstWnd
,
buffer
,
MAX_STRING_LEN
);
if
(
number_from_string
(
buffer
,
&
num
,
TRUE
))
if
(
number_from_string
(
buffer
,
&
num
,
&
unit
))
ret
++
;
pf
.
dxStartIndent
=
current_units_to_twips
(
num
);
pf
.
dxStartIndent
=
units_to_twips
(
unit
,
num
);
if
(
ret
!=
3
)
{
...
...
@@ -1627,6 +1673,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
{
HWND
hTabWnd
=
GetDlgItem
(
hWnd
,
IDC_TABSTOPS
);
WCHAR
buffer
[
MAX_STRING_LEN
];
UNIT
unit
;
GetWindowTextW
(
hTabWnd
,
buffer
,
MAX_STRING_LEN
);
append_current_units
(
buffer
);
...
...
@@ -1636,7 +1683,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
float
number
=
0
;
int
item_count
=
SendMessage
(
hTabWnd
,
CB_GETCOUNT
,
0
,
0
);
if
(
!
number_from_string
(
buffer
,
&
number
,
TRUE
))
if
(
!
number_from_string
(
buffer
,
&
number
,
&
unit
))
{
MessageBoxWithResStringW
(
hWnd
,
MAKEINTRESOURCEW
(
STRING_INVALID_NUMBER
),
wszAppTitle
,
MB_OK
|
MB_ICONINFORMATION
);
...
...
@@ -1647,14 +1694,14 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
int
i
;
float
next_number
=
-
1
;
int
next_number_in_twips
=
-
1
;
int
insert_number
=
current_units_to_twips
(
number
);
int
insert_number
=
units_to_twips
(
unit
,
number
);
/* linear search for position to insert the string */
for
(
i
=
0
;
i
<
item_count
;
i
++
)
{
SendMessageW
(
hTabWnd
,
CB_GETLBTEXT
,
i
,
(
LPARAM
)
&
buffer
);
number_from_string
(
buffer
,
&
next_number
,
TRUE
);
next_number_in_twips
=
current_units_to_twips
(
next_number
);
number_from_string
(
buffer
,
&
next_number
,
&
unit
);
next_number_in_twips
=
units_to_twips
(
unit
,
next_number
);
if
(
insert_number
<=
next_number_in_twips
)
break
;
}
...
...
@@ -1695,6 +1742,7 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
WCHAR
buffer
[
MAX_STRING_LEN
];
PARAFORMAT
pf
;
float
number
;
UNIT
unit
;
pf
.
cbSize
=
sizeof
(
pf
);
pf
.
dwMask
=
PFM_TABSTOPS
;
...
...
@@ -1703,8 +1751,8 @@ static INT_PTR CALLBACK tabstops_proc(HWND hWnd, UINT message, WPARAM wParam, LP
(
LPARAM
)
&
buffer
)
!=
CB_ERR
&&
i
<
MAX_TAB_STOPS
;
i
++
)
{
number_from_string
(
buffer
,
&
number
,
TRUE
);
pf
.
rgxTabs
[
i
]
=
current_units_to_twips
(
number
);
number_from_string
(
buffer
,
&
number
,
&
unit
);
pf
.
rgxTabs
[
i
]
=
units_to_twips
(
unit
,
number
);
}
pf
.
cTabCount
=
i
;
SendMessageW
(
hEditorWnd
,
EM_SETPARAFORMAT
,
0
,
(
LPARAM
)
&
pf
);
...
...
programs/wordpad/wordpad.h
View file @
c92691e1
...
...
@@ -219,6 +219,9 @@
#define STRING_PREVIEW_PAGES 1457
#define STRING_UNITS_CM 1458
#define STRING_UNITS_IN 1459
#define STRING_UNITS_INCH 1460
#define STRING_UNITS_PT 1461
#define STRING_DEFAULT_FILENAME 1700
#define STRING_PROMPT_SAVE_CHANGES 1701
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment