Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Side by Side Diff: ui/uilib/static_ex.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/uilib/node_state.cc ('k') | ui/uilib/static_ex.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2006-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15 //
16 // static_ex.h : This class extends static control functionality to display
17 // formatted text and hyper-links
18 //
19 // Currently it supports the following formatting options:
20 // bold - <b>bold</b>
21 // italic - <i>italic</i>
22 // underscore - <u>underlined</u>
23 // color - <color=ff0000>red</color>
24 // size - <size=14>14 points text</size>
25 // hyperlink - <a=http://www.google.com>click here</a>
26 // formatting options could be nested (except hyperlink)
27 //
28 // Some fonts (including Tahoma) often overhang one pixel (for example in "W")
29 // so StaticEx is created with default 1 pixel margin on the left and right,
30 // use set_margins() to overwrite default values if you need to.
31
32
33 #ifndef OMAHA_UI_UILIB_STATIC_EX_H_
34 #define OMAHA_UI_UILIB_STATIC_EX_H_
35
36 #include <windows.h>
37 #include <atlbase.h>
38 #include <atlwin.h>
39 #include <string>
40 #include <vector>
41 #include "omaha/ui/uilib/node.h"
42 #include "omaha/ui/uilib/static_line.h"
43
44
45 // Windows control notification codes are all negative, so any positive number
46 // should do here. http://goo.gl/NPaBF.
47 const UINT NM_STATICEX = NM_FIRST + 0x400;
48
49 // extension of NMHDR to provide StaticEx specific info in notification message
50 struct NMSTATICEX {
51 NMHDR header;
52 const TCHAR* action;
53 };
54
55 class StaticEx : public CWindowImpl<StaticEx> {
56 public:
57 DECLARE_WND_SUPERCLASS(NULL, _T("STATIC"))
58
59 StaticEx();
60 virtual ~StaticEx();
61
62 void set_margins(const RECT& rect);
63 void set_margins(int left, int top, int right, int bottom);
64 RECT margins() const { return margins_; }
65
66 void set_background_color(COLORREF back_color);
67 COLORREF background_color() const { return background_color_; }
68 void ResetBackgroundColor() { use_background_color_ = false; }
69
70 // set ellipsis style (DT_END_ELLIPSIS | DT_WORD_ELLIPSIS |DT_PATH_ELLIPSIS)
71 // elipsis are supported only in a single line control, calling this function
72 // with not 0 argument will set control style to SS_LEFTNOWORDWRAP
73 void set_ellipsis(int ellipsis);
74 int ellipsis() const { return ellipsis_; }
75
76 static const int kBorderNone;
77 static const int kBorderLeft;
78 static const int kBorderTop;
79 static const int kBorderRight;
80 static const int kBorderBottom;
81 static const int kBorderAll;
82
83 // use constants above to set border, you can combine them using "|"
84 void set_border(int border);
85 int border() const { return border_; }
86
87 void set_border_color(COLORREF border_color);
88 COLORREF border_color() const { return border_color_; }
89
90 // this function doesn't change how control is shown
91 // it just calculates minimum control height to fit the text given
92 // the control width. if width is 0 it will use current control width
93 int GetMinimumHeight(int width);
94
95 BEGIN_MSG_MAP(StaticEx)
96 MESSAGE_HANDLER(WM_SETTEXT, OnSetText)
97 MESSAGE_HANDLER(kGetTextMessage, OnGetText)
98 MESSAGE_HANDLER(kGetTextLengthMessage, OnGetTextLength)
99 MESSAGE_HANDLER(WM_PAINT, OnPaint)
100 MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
101 MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
102 MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
103 END_MSG_MAP()
104
105 LRESULT OnSetText(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
106 // OnGetText and OnGetTextLength work with full text including formatting tags
107 // to get readable text (without formatting info) call GetWindowText or
108 // send WM_GETTEXT
109 LRESULT OnGetText(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
110 LRESULT OnGetTextLength(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled) ; // NOLINT
111
112 LRESULT OnPaint(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
113 LRESULT OnEraseBkgnd(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
114 LRESULT OnLButtonUp(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
115 LRESULT OnSetCursor(UINT msg, WPARAM wparam, LPARAM lparam, BOOL& handled); // NOLINT
116
117 BOOL SubclassWindow(HWND hWnd);
118 HWND UnsubclassWindow(BOOL bForce = FALSE);
119
120 private:
121 void Reset();
122 void ParseText();
123 CString GetReadableText();
124 int FindOpenBracket(const TCHAR* string);
125 void EraseNodes();
126 void EraseLines(std::vector<StaticLine*>* lines);
127 HFONT default_font() const { return default_font_; }
128
129 void PrePaint(HDC dc, std::vector<StaticLine*>* lines,
130 const std::vector<Node*>& nodes, RECT rect, DWORD style,
131 int ellipsis);
132 void Paint(HDC hdc, const std::vector<StaticLine*>& lines, RECT rect,
133 DWORD style, int ellipsis);
134 void DrawBorder(HDC hdc, const CRect& rect);
135 HCURSOR GetHandCursor();
136
137 CString text_;
138
139 CRect margins_;
140 COLORREF background_color_;
141 bool use_background_color_;
142 int ellipsis_;
143 int border_;
144 COLORREF border_color_;
145
146 std::vector<Node*> nodes_;
147 std::vector<StaticLine*> lines_;
148
149 HFONT default_font_;
150
151 static HCURSOR hand_cursor_;
152
153 static const UINT kGetTextMessage = WM_APP + 1;
154 static const UINT kGetTextLengthMessage = WM_APP + 2;
155
156 DISALLOW_EVIL_CONSTRUCTORS(StaticEx);
157 };
158
159 #endif // OMAHA_UI_UILIB_STATIC_EX_H_
OLDNEW
« no previous file with comments | « ui/uilib/node_state.cc ('k') | ui/uilib/static_ex.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698