Merge lp:~nataliabidart/magicicada-gui/multiple-prettier-metadata into lp:magicicada-gui
- multiple-prettier-metadata
- Merge into trunk
Proposed by
Natalia Bidart
Status: | Merged |
---|---|
Approved by: | Facundo Batista |
Approved revision: | 54 |
Merged at revision: | 52 |
Proposed branch: | lp:~nataliabidart/magicicada-gui/multiple-prettier-metadata |
Merge into: | lp:magicicada-gui |
Diff against target: |
327 lines (+88/-107) 3 files modified
data/ui/gui.glade (+1/-66) magicicada/__init__.py (+43/-4) magicicada/tests/test_magicicada.py (+44/-37) |
To merge this branch: | bzr merge lp:~nataliabidart/magicicada-gui/multiple-prettier-metadata |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Facundo Batista | Approve | ||
Review via email: mp+28561@code.launchpad.net |
Commit message
Description of the change
Prettier metadata. Also, file chooser defaults to ~/Ubuntu One/.
Code internally changed so multiple metadata windows are supported, but that support will come on another branch.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'data/ui/gui.glade' | |||
2 | --- data/ui/gui.glade 2010-06-14 01:14:18 +0000 | |||
3 | +++ data/ui/gui.glade 2010-06-26 14:17:28 +0000 | |||
4 | @@ -1052,76 +1052,11 @@ | |||
5 | 1052 | <action-widget response="0">shares_to_others_close</action-widget> | 1052 | <action-widget response="0">shares_to_others_close</action-widget> |
6 | 1053 | </action-widgets> | 1053 | </action-widgets> |
7 | 1054 | </object> | 1054 | </object> |
8 | 1055 | <object class="GtkDialog" id="raw_metadata_dialog"> | ||
9 | 1056 | <property name="width_request">600</property> | ||
10 | 1057 | <property name="height_request">300</property> | ||
11 | 1058 | <property name="border_width">5</property> | ||
12 | 1059 | <property name="title" translatable="yes">Raw metadata</property> | ||
13 | 1060 | <property name="window_position">center</property> | ||
14 | 1061 | <property name="type_hint">normal</property> | ||
15 | 1062 | <property name="has_separator">False</property> | ||
16 | 1063 | <signal name="close" handler="on_raw_metadata_close_clicked"/> | ||
17 | 1064 | <child internal-child="vbox"> | ||
18 | 1065 | <object class="GtkVBox" id="dialog-vbox9"> | ||
19 | 1066 | <property name="visible">True</property> | ||
20 | 1067 | <property name="spacing">2</property> | ||
21 | 1068 | <child> | ||
22 | 1069 | <object class="GtkTextView" id="raw_metadata_view"> | ||
23 | 1070 | <property name="visible">True</property> | ||
24 | 1071 | <property name="can_focus">True</property> | ||
25 | 1072 | <property name="editable">False</property> | ||
26 | 1073 | <property name="wrap_mode">word</property> | ||
27 | 1074 | </object> | ||
28 | 1075 | <packing> | ||
29 | 1076 | <property name="position">1</property> | ||
30 | 1077 | </packing> | ||
31 | 1078 | </child> | ||
32 | 1079 | <child> | ||
33 | 1080 | <object class="GtkImage" id="raw_metadata_image"> | ||
34 | 1081 | <property name="visible">True</property> | ||
35 | 1082 | <property name="stock">gtk-missing-image</property> | ||
36 | 1083 | </object> | ||
37 | 1084 | <packing> | ||
38 | 1085 | <property name="position">2</property> | ||
39 | 1086 | </packing> | ||
40 | 1087 | </child> | ||
41 | 1088 | <child internal-child="action_area"> | ||
42 | 1089 | <object class="GtkHButtonBox" id="dialog-action_area9"> | ||
43 | 1090 | <property name="visible">True</property> | ||
44 | 1091 | <property name="layout_style">end</property> | ||
45 | 1092 | <child> | ||
46 | 1093 | <object class="GtkButton" id="raw_metadata_close"> | ||
47 | 1094 | <property name="label">gtk-close</property> | ||
48 | 1095 | <property name="visible">True</property> | ||
49 | 1096 | <property name="can_focus">True</property> | ||
50 | 1097 | <property name="receives_default">True</property> | ||
51 | 1098 | <property name="use_stock">True</property> | ||
52 | 1099 | <signal name="clicked" handler="on_raw_metadata_close_clicked"/> | ||
53 | 1100 | <signal name="activate" handler="on_raw_metadata_close_clicked"/> | ||
54 | 1101 | </object> | ||
55 | 1102 | <packing> | ||
56 | 1103 | <property name="expand">False</property> | ||
57 | 1104 | <property name="fill">False</property> | ||
58 | 1105 | <property name="position">0</property> | ||
59 | 1106 | </packing> | ||
60 | 1107 | </child> | ||
61 | 1108 | </object> | ||
62 | 1109 | <packing> | ||
63 | 1110 | <property name="expand">False</property> | ||
64 | 1111 | <property name="pack_type">end</property> | ||
65 | 1112 | <property name="position">0</property> | ||
66 | 1113 | </packing> | ||
67 | 1114 | </child> | ||
68 | 1115 | </object> | ||
69 | 1116 | </child> | ||
70 | 1117 | <action-widgets> | ||
71 | 1118 | <action-widget response="0">raw_metadata_close</action-widget> | ||
72 | 1119 | </action-widgets> | ||
73 | 1120 | </object> | ||
74 | 1121 | <object class="GtkFileChooserDialog" id="file_chooser"> | 1055 | <object class="GtkFileChooserDialog" id="file_chooser"> |
75 | 1122 | <property name="border_width">5</property> | 1056 | <property name="border_width">5</property> |
76 | 1123 | <property name="type_hint">normal</property> | 1057 | <property name="type_hint">normal</property> |
77 | 1124 | <property name="has_separator">False</property> | 1058 | <property name="has_separator">False</property> |
78 | 1059 | <property name="create_folders">False</property> | ||
79 | 1125 | <signal name="file_activated" handler="on_file_chooser_open_clicked"/> | 1060 | <signal name="file_activated" handler="on_file_chooser_open_clicked"/> |
80 | 1126 | <child internal-child="vbox"> | 1061 | <child internal-child="vbox"> |
81 | 1127 | <object class="GtkVBox" id="dialog-vbox7"> | 1062 | <object class="GtkVBox" id="dialog-vbox7"> |
82 | 1128 | 1063 | ||
83 | === modified file 'magicicada/__init__.py' | |||
84 | --- magicicada/__init__.py 2010-06-21 17:10:41 +0000 | |||
85 | +++ magicicada/__init__.py 2010-06-26 14:17:28 +0000 | |||
86 | @@ -19,13 +19,15 @@ | |||
87 | 19 | """Magicicada.""" | 19 | """Magicicada.""" |
88 | 20 | 20 | ||
89 | 21 | import logging | 21 | import logging |
91 | 22 | import gtk | 22 | import os |
92 | 23 | import sys | 23 | import sys |
93 | 24 | 24 | ||
94 | 25 | import gettext | 25 | import gettext |
95 | 26 | from gettext import gettext as _ | 26 | from gettext import gettext as _ |
96 | 27 | gettext.textdomain('magicicada') | 27 | gettext.textdomain('magicicada') |
97 | 28 | 28 | ||
98 | 29 | import gtk | ||
99 | 30 | |||
100 | 29 | # optional Launchpad integration | 31 | # optional Launchpad integration |
101 | 30 | # this shouldn't crash if not found as it is simply used for bug reporting | 32 | # this shouldn't crash if not found as it is simply used for bug reporting |
102 | 31 | try: | 33 | try: |
103 | @@ -43,10 +45,14 @@ | |||
104 | 43 | 45 | ||
105 | 44 | CONTENT_QUEUE = 'content' | 46 | CONTENT_QUEUE = 'content' |
106 | 45 | META_QUEUE = 'meta' | 47 | META_QUEUE = 'meta' |
107 | 48 | UBUNTU_ONE_ROOT = os.path.expanduser('~/Ubuntu One') | ||
108 | 46 | 49 | ||
109 | 47 | # set up the logging for all the project | 50 | # set up the logging for all the project |
110 | 48 | logger_helper.set_up() | 51 | logger_helper.set_up() |
111 | 49 | logger = logging.getLogger('magicicada.ui') | 52 | logger = logging.getLogger('magicicada.ui') |
112 | 53 | console = logging.StreamHandler() | ||
113 | 54 | console.setLevel(logging.DEBUG) | ||
114 | 55 | #logger.addHandler(console) | ||
115 | 50 | 56 | ||
116 | 51 | 57 | ||
117 | 52 | class MagicicadaUI(object): | 58 | class MagicicadaUI(object): |
118 | @@ -87,8 +93,7 @@ | |||
119 | 87 | 'shares_to_me_store', 'shares_to_me_close', | 93 | 'shares_to_me_store', 'shares_to_me_close', |
120 | 88 | 'shares_to_others', 'shares_to_others_dialog', # shares_to_others | 94 | 'shares_to_others', 'shares_to_others_dialog', # shares_to_others |
121 | 89 | 'shares_to_others_store', 'shares_to_others_close', | 95 | 'shares_to_others_store', 'shares_to_others_close', |
124 | 90 | 'raw_metadata', 'raw_metadata_dialog', # raw metadata | 96 | 'raw_metadata', # raw metadata |
123 | 91 | 'raw_metadata_close', 'raw_metadata_view', 'raw_metadata_image', | ||
125 | 92 | 'is_started', 'is_connected', 'is_online', # status bar images | 97 | 'is_started', 'is_connected', 'is_online', # status bar images |
126 | 93 | 'status_label', 'status_icon', # status label and systray icon | 98 | 'status_label', 'status_icon', # status label and systray icon |
127 | 94 | 'metaq_view', 'contentq_view', # queues tree views | 99 | 'metaq_view', 'contentq_view', # queues tree views |
128 | @@ -102,6 +107,7 @@ | |||
129 | 102 | setattr(self, widget, obj) | 107 | setattr(self, widget, obj) |
130 | 103 | assert obj is not None, '%s must not be None' % widget | 108 | assert obj is not None, '%s must not be None' % widget |
131 | 104 | 109 | ||
132 | 110 | self.raw_metadata_dialog = self._new_metadata_dialog() | ||
133 | 105 | self.volumes = (self.folders, self.shares_to_me, self.shares_to_others) | 111 | self.volumes = (self.folders, self.shares_to_me, self.shares_to_others) |
134 | 106 | self.windows = (self.main_window, self.about_dialog, | 112 | self.windows = (self.main_window, self.about_dialog, |
135 | 107 | self.folders_dialog) | 113 | self.folders_dialog) |
136 | @@ -130,9 +136,39 @@ | |||
137 | 130 | self.widget_is_visible = lambda w: w.get_property('visible') | 136 | self.widget_is_visible = lambda w: w.get_property('visible') |
138 | 131 | self.widget_enabled = lambda w: self.widget_is_visible(w) and \ | 137 | self.widget_enabled = lambda w: self.widget_is_visible(w) and \ |
139 | 132 | w.is_sensitive() | 138 | w.is_sensitive() |
140 | 139 | self.file_chooser.set_current_folder(UBUNTU_ONE_ROOT) | ||
141 | 133 | self.last_metadata_path = None | 140 | self.last_metadata_path = None |
142 | 134 | self.update() | 141 | self.update() |
143 | 135 | 142 | ||
144 | 143 | def _new_metadata_dialog(self): | ||
145 | 144 | """Return a new metadata dialog.""" | ||
146 | 145 | dialog = gtk.Dialog(title='Raw metadata', parent=self.main_window, | ||
147 | 146 | flags=gtk.DIALOG_NO_SEPARATOR, | ||
148 | 147 | buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) | ||
149 | 148 | dialog.set_size_request(600, 300) | ||
150 | 149 | dialog.set_position(gtk.WIN_POS_CENTER) | ||
151 | 150 | setattr(self, 'raw_metadata_dialog', dialog) | ||
152 | 151 | |||
153 | 152 | close_button = dialog.action_area.get_children()[-1] | ||
154 | 153 | close_button.connect('clicked', self.on_raw_metadata_close_clicked) | ||
155 | 154 | close_button.connect('activate', self.on_raw_metadata_close_clicked) | ||
156 | 155 | setattr(self, 'raw_metadata_close', close_button) | ||
157 | 156 | |||
158 | 157 | image = gtk.Image() | ||
159 | 158 | image.set_from_animation(self.loading_animation) | ||
160 | 159 | setattr(self, 'raw_metadata_image', image) | ||
161 | 160 | |||
162 | 161 | dialog.get_child().add(image) | ||
163 | 162 | |||
164 | 163 | text_view = gtk.TextView() | ||
165 | 164 | text_view.set_editable(False) | ||
166 | 165 | text_view.set_wrap_mode(gtk.WRAP_WORD) | ||
167 | 166 | dialog.get_child().add(text_view) | ||
168 | 167 | setattr(self, 'raw_metadata_view', text_view) | ||
169 | 168 | |||
170 | 169 | dialog.hide() # XXX to be fixed later | ||
171 | 170 | return dialog | ||
172 | 171 | |||
173 | 136 | # GTK callbacks | 172 | # GTK callbacks |
174 | 137 | 173 | ||
175 | 138 | def on_main_window_destroy(self, widget, data=None): | 174 | def on_main_window_destroy(self, widget, data=None): |
176 | @@ -374,11 +410,14 @@ | |||
177 | 374 | @log(logger) | 410 | @log(logger) |
178 | 375 | def on_metadata_ready(self, path, metadata): | 411 | def on_metadata_ready(self, path, metadata): |
179 | 376 | """Lower layer has the requested metadata for 'path'.""" | 412 | """Lower layer has the requested metadata for 'path'.""" |
180 | 413 | logger.debug('on_metadata_ready: path: %r, last_metadata_path: %r', | ||
181 | 414 | path, self.last_metadata_path) | ||
182 | 377 | if path != self.last_metadata_path: | 415 | if path != self.last_metadata_path: |
183 | 378 | return | 416 | return |
184 | 379 | self.raw_metadata_image.hide() | 417 | self.raw_metadata_image.hide() |
185 | 380 | self.raw_metadata_view.show() | 418 | self.raw_metadata_view.show() |
187 | 381 | self.raw_metadata_view.get_buffer().set_text(str(metadata)) | 419 | text = '\n'.join('%s: %s' % i for i in metadata.iteritems()) |
188 | 420 | self.raw_metadata_view.get_buffer().set_text(text) | ||
189 | 382 | 421 | ||
190 | 383 | # custom | 422 | # custom |
191 | 384 | 423 | ||
192 | 385 | 424 | ||
193 | === modified file 'magicicada/tests/test_magicicada.py' | |||
194 | --- magicicada/tests/test_magicicada.py 2010-06-21 17:10:41 +0000 | |||
195 | +++ magicicada/tests/test_magicicada.py 2010-06-26 14:17:28 +0000 | |||
196 | @@ -29,7 +29,8 @@ | |||
197 | 29 | 29 | ||
198 | 30 | from twisted.trial.unittest import TestCase | 30 | from twisted.trial.unittest import TestCase |
199 | 31 | 31 | ||
201 | 32 | from magicicada import MagicicadaUI, CONTENT_QUEUE, META_QUEUE, syncdaemon | 32 | from magicicada import MagicicadaUI, CONTENT_QUEUE, META_QUEUE, \ |
202 | 33 | UBUNTU_ONE_ROOT, syncdaemon | ||
203 | 33 | from magicicada.dbusiface import QueueData, FolderData, ShareData | 34 | from magicicada.dbusiface import QueueData, FolderData, ShareData |
204 | 34 | from magicicada.helpers import NO_OP, humanize_bytes, get_data_file | 35 | from magicicada.helpers import NO_OP, humanize_bytes, get_data_file |
205 | 35 | from magicicada.tests.helpers import MementoHandler | 36 | from magicicada.tests.helpers import MementoHandler |
206 | @@ -193,6 +194,30 @@ | |||
207 | 193 | self.assertTrue(sensitive if enabled else not sensitive, | 194 | self.assertTrue(sensitive if enabled else not sensitive, |
208 | 194 | msg % (widget_name, '' if enabled else 'not ')) | 195 | msg % (widget_name, '' if enabled else 'not ')) |
209 | 195 | 196 | ||
210 | 197 | def assert_dialog_properties(self, dialog_name, title, size=(600, 300), | ||
211 | 198 | modal=True): | ||
212 | 199 | """The dialog 'dialog_name' has correct properties.""" | ||
213 | 200 | dialog = getattr(self.ui, dialog_name) | ||
214 | 201 | actual = dialog.size_request() | ||
215 | 202 | msg = 'size must be %s (got %s instead).' | ||
216 | 203 | self.assertEquals(size, actual, msg % (size, actual)) | ||
217 | 204 | |||
218 | 205 | msg = '%s must %sbe modal.' | ||
219 | 206 | self.assertEqual(modal, dialog.get_modal(), | ||
220 | 207 | msg % (dialog_name, '' if modal else 'not ')) | ||
221 | 208 | |||
222 | 209 | position = dialog.get_property('window-position') | ||
223 | 210 | self.assertEqual(gtk.WIN_POS_CENTER, position, | ||
224 | 211 | '%s must be centered.' % dialog_name) | ||
225 | 212 | |||
226 | 213 | actual = dialog.get_title() | ||
227 | 214 | msg = '%s title must be %s (got %s instead)' | ||
228 | 215 | self.assertEqual(title, actual, msg % (dialog_name, title, actual)) | ||
229 | 216 | |||
230 | 217 | msg = '%s must have main_window as parent.' | ||
231 | 218 | #self.assertTrue(dialog.parent is self.ui.main_window, | ||
232 | 219 | # msg % dialog_name) | ||
233 | 220 | |||
234 | 196 | 221 | ||
235 | 197 | class MagicicadaUIBasicTestCase(MagicicadaUITestCase): | 222 | class MagicicadaUIBasicTestCase(MagicicadaUITestCase): |
236 | 198 | """UI test cases for basic state.""" | 223 | """UI test cases for basic state.""" |
237 | @@ -926,21 +951,9 @@ | |||
238 | 926 | @skip_abstract_class | 951 | @skip_abstract_class |
239 | 927 | def test_volume_dialog_properties(self): | 952 | def test_volume_dialog_properties(self): |
240 | 928 | """The volume dialog has correct properties.""" | 953 | """The volume dialog has correct properties.""" |
256 | 929 | size = self.volume_dialog.size_request() | 954 | title = self.name.replace('_', ' ').capitalize() |
257 | 930 | self.assertEquals((600, 300), size) | 955 | self.assert_dialog_properties(dialog_name=self.volume_dialog_name, |
258 | 931 | 956 | title=title) | |
244 | 932 | self.assertTrue(self.volume_dialog.get_modal(), | ||
245 | 933 | '%s must be modal.' % self.volume_dialog_name) | ||
246 | 934 | |||
247 | 935 | position = self.volume_dialog.get_property('window-position') | ||
248 | 936 | self.assertEqual(gtk.WIN_POS_CENTER, position, | ||
249 | 937 | '%s must be centered.' % self.volume_dialog_name) | ||
250 | 938 | |||
251 | 939 | actual = self.volume_dialog.get_title() | ||
252 | 940 | expected = self.name.replace('_', ' ').capitalize() | ||
253 | 941 | msg = '%s title must be %s (got %s instead)' | ||
254 | 942 | self.assertEqual(expected, actual, | ||
255 | 943 | msg % (self.volume_dialog_name, expected, actual)) | ||
259 | 944 | 957 | ||
260 | 945 | 958 | ||
261 | 946 | class MagicicadaUIFoldersTestCase(_MagicicadaUIVolumeTestCase): | 959 | class MagicicadaUIFoldersTestCase(_MagicicadaUIVolumeTestCase): |
262 | @@ -1116,21 +1129,9 @@ | |||
263 | 1116 | 1129 | ||
264 | 1117 | def test_raw_metadata_dialog_properties(self): | 1130 | def test_raw_metadata_dialog_properties(self): |
265 | 1118 | """The raw_metadata dialog has correct properties.""" | 1131 | """The raw_metadata dialog has correct properties.""" |
281 | 1119 | dialog = 'raw_metadata_dialog' | 1132 | title = self.name.replace('_', ' ').capitalize() |
282 | 1120 | size = self.ui.raw_metadata_dialog.size_request() | 1133 | self.assert_dialog_properties(dialog_name='raw_metadata_dialog', |
283 | 1121 | self.assertEquals((600, 300), size) | 1134 | title=title, modal=False) |
269 | 1122 | |||
270 | 1123 | self.assertFalse(self.ui.raw_metadata_dialog.get_modal(), | ||
271 | 1124 | '%s must not be modal.' % dialog) | ||
272 | 1125 | |||
273 | 1126 | position = self.ui.raw_metadata_dialog.get_property('window-position') | ||
274 | 1127 | self.assertEqual(gtk.WIN_POS_CENTER, position, | ||
275 | 1128 | '%s must be centered.' % dialog) | ||
276 | 1129 | |||
277 | 1130 | actual = self.ui.raw_metadata_dialog.get_title() | ||
278 | 1131 | expected = self.name.replace('_', ' ').capitalize() | ||
279 | 1132 | msg = '%s title must be %s (got %s instead)' | ||
280 | 1133 | self.assertEqual(expected, actual, msg % (dialog, expected, actual)) | ||
284 | 1134 | 1135 | ||
285 | 1135 | actual = self.ui.raw_metadata_view.get_wrap_mode() | 1136 | actual = self.ui.raw_metadata_view.get_wrap_mode() |
286 | 1136 | msg = 'wrap mode for view must be gtk.WRAP_WORD (got %s instead).' | 1137 | msg = 'wrap mode for view must be gtk.WRAP_WORD (got %s instead).' |
287 | @@ -1147,6 +1148,14 @@ | |||
288 | 1147 | self.assertFalse(self.ui.widget_is_visible(self.ui.file_chooser), | 1148 | self.assertFalse(self.ui.widget_is_visible(self.ui.file_chooser), |
289 | 1148 | 'file_chooser must be hidden by default.') | 1149 | 'file_chooser must be hidden by default.') |
290 | 1149 | 1150 | ||
291 | 1151 | def test_file_chooser_current_folder_is_ubuntu_one_root(self): | ||
292 | 1152 | """File chooser default folder is ~/Ubuntu One.""" | ||
293 | 1153 | process_gtk_pendings() # WOW! Needed to get proper value below | ||
294 | 1154 | actual = self.ui.file_chooser.get_current_folder() | ||
295 | 1155 | msg = 'file_chooser default folder must be %s (got %s instead).' | ||
296 | 1156 | self.assertEqual(actual, UBUNTU_ONE_ROOT, | ||
297 | 1157 | msg % (UBUNTU_ONE_ROOT, actual)) | ||
298 | 1158 | |||
299 | 1150 | def test_filename_is_used_only_if_open_clicked(self): | 1159 | def test_filename_is_used_only_if_open_clicked(self): |
300 | 1151 | """Filename is used only if user clicked open.""" | 1160 | """Filename is used only if user clicked open.""" |
301 | 1152 | self.patch(self.ui.sd, 'get_metadata', self.set_called) | 1161 | self.patch(self.ui.sd, 'get_metadata', self.set_called) |
302 | @@ -1178,10 +1187,12 @@ | |||
303 | 1178 | buff = self.ui.raw_metadata_view.get_buffer() | 1187 | buff = self.ui.raw_metadata_view.get_buffer() |
304 | 1179 | self.assertTrue(buff is not None, | 1188 | self.assertTrue(buff is not None, |
305 | 1180 | 'buffer for raw_metadata_view must not be None.') | 1189 | 'buffer for raw_metadata_view must not be None.') |
306 | 1190 | |||
307 | 1191 | expected = '\n'.join('%s: %s' % i for i in self.metadata.iteritems()) | ||
308 | 1181 | actual = buff.get_text(*buff.get_bounds()) | 1192 | actual = buff.get_text(*buff.get_bounds()) |
309 | 1182 | msg = 'buffer content must be %s (got %s instead).' | 1193 | msg = 'buffer content must be %s (got %s instead).' |
312 | 1183 | self.assertEqual(actual, str(self.metadata), | 1194 | self.assertEqual(actual, expected, |
313 | 1184 | msg % (self.metadata, actual)) | 1195 | msg % (expected, actual)) |
314 | 1185 | 1196 | ||
315 | 1186 | def test_on_metadata_ready_doesnt_update_if_last_path_doesnt_match(self): | 1197 | def test_on_metadata_ready_doesnt_update_if_last_path_doesnt_match(self): |
316 | 1187 | """Callback on_metadata_ready updates the raw_metadata_view.""" | 1198 | """Callback on_metadata_ready updates the raw_metadata_view.""" |
317 | @@ -1224,10 +1235,6 @@ | |||
318 | 1224 | logger = logging.getLogger('magicicada.ui') | 1235 | logger = logging.getLogger('magicicada.ui') |
319 | 1225 | logger.addHandler(self.memento) | 1236 | logger.addHandler(self.memento) |
320 | 1226 | 1237 | ||
321 | 1227 | #console = logging.StreamHandler() | ||
322 | 1228 | #console.setLevel(logging.DEBUG) | ||
323 | 1229 | #logger.addHandler(console) | ||
324 | 1230 | |||
325 | 1231 | def assert_function_logs(self, func, *args, **kwargs): | 1238 | def assert_function_logs(self, func, *args, **kwargs): |
326 | 1232 | """Check 'funcion' logs its inputs as DEBUG.""" | 1239 | """Check 'funcion' logs its inputs as DEBUG.""" |
327 | 1233 | name = func.__name__ | 1240 | name = func.__name__ |
I like it!