97 self.CaptureMouse() |
97 self.CaptureMouse() |
98 posx, posy = event.GetPosition() |
98 posx, posy = event.GetPosition() |
99 width, height = self.GetClientSize() |
99 width, height = self.GetClientSize() |
100 range_rect = self.GetRangeRect() |
100 range_rect = self.GetRangeRect() |
101 thumb_rect = self.GetThumbRect() |
101 thumb_rect = self.GetThumbRect() |
102 if range_rect.InsideXY(posx, posy): |
102 if range_rect.Contains(posx, posy): |
103 if thumb_rect.InsideXY(posx, posy): |
103 if thumb_rect.Contains(posx, posy): |
104 self.ThumbScrollingStartPos = wx.Point(posx, posy) |
104 self.ThumbScrollingStartPos = wx.Point(posx, posy) |
105 elif posy < thumb_rect.y: |
105 elif posy < thumb_rect.y: |
106 self.Parent.ScrollToLast() |
106 self.Parent.ScrollToLast() |
107 elif posy > thumb_rect.y + thumb_rect.height: |
107 elif posy > thumb_rect.y + thumb_rect.height: |
108 self.Parent.ScrollToFirst() |
108 self.Parent.ScrollToFirst() |
301 main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
299 main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
302 main_sizer.AddGrowableCol(0) |
300 main_sizer.AddGrowableCol(0) |
303 main_sizer.AddGrowableRow(1) |
301 main_sizer.AddGrowableRow(1) |
304 |
302 |
305 filter_sizer = wx.BoxSizer(wx.HORIZONTAL) |
303 filter_sizer = wx.BoxSizer(wx.HORIZONTAL) |
306 main_sizer.AddSizer(filter_sizer, border=5, flag=wx.TOP | wx.LEFT | wx.RIGHT | wx.GROW) |
304 main_sizer.Add(filter_sizer, border=5, flag=wx.TOP | wx.LEFT | wx.RIGHT | wx.GROW) |
307 |
305 |
308 self.MessageFilter = wx.ComboBox(self, style=wx.CB_READONLY) |
306 self.MessageFilter = wx.ComboBox(self, style=wx.CB_READONLY) |
309 self.MessageFilter.Append(_("All")) |
307 self.MessageFilter.Append(_("All")) |
310 levels = LogLevels[:3] |
308 levels = LogLevels[:3] |
311 levels.reverse() |
309 levels.reverse() |
312 for level in levels: |
310 for level in levels: |
313 self.MessageFilter.Append(_(level)) |
311 self.MessageFilter.Append(_(level)) |
314 self.Bind(wx.EVT_COMBOBOX, self.OnMessageFilterChanged, self.MessageFilter) |
312 self.Bind(wx.EVT_COMBOBOX, self.OnMessageFilterChanged, self.MessageFilter) |
315 filter_sizer.AddWindow(self.MessageFilter, 1, border=5, flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
313 filter_sizer.Add(self.MessageFilter, 1, border=5, flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
316 |
314 |
317 self.SearchMessage = wx.SearchCtrl(self, style=wx.TE_PROCESS_ENTER) |
315 self.SearchMessage = wx.SearchCtrl(self, style=wx.TE_PROCESS_ENTER) |
318 self.SearchMessage.ShowSearchButton(True) |
316 self.SearchMessage.ShowSearchButton(True) |
319 self.SearchMessage.ShowCancelButton(True) |
317 self.SearchMessage.ShowCancelButton(True) |
320 self.Bind(wx.EVT_TEXT_ENTER, self.OnSearchMessageChanged, self.SearchMessage) |
318 self.Bind(wx.EVT_TEXT_ENTER, self.OnSearchMessageChanged, self.SearchMessage) |
321 self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, |
319 self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, |
322 self.OnSearchMessageSearchButtonClick, self.SearchMessage) |
320 self.OnSearchMessageSearchButtonClick, self.SearchMessage) |
323 self.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, |
321 self.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, |
324 self.OnSearchMessageCancelButtonClick, self.SearchMessage) |
322 self.OnSearchMessageCancelButtonClick, self.SearchMessage) |
325 filter_sizer.AddWindow(self.SearchMessage, 3, border=5, flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
323 filter_sizer.Add(self.SearchMessage, 3, border=5, flag=wx.RIGHT | wx.ALIGN_CENTER_VERTICAL) |
326 |
324 |
327 self.CleanButton = wx.lib.buttons.GenBitmapButton(self, bitmap=GetBitmap("Clean"), |
325 self.CleanButton = wx.lib.buttons.GenBitmapButton(self, bitmap=GetBitmap("Clean"), |
328 size=wx.Size(28, 28), style=wx.NO_BORDER) |
326 size=wx.Size(28, 28), style=wx.NO_BORDER) |
329 self.CleanButton.SetToolTipString(_("Clean log messages")) |
327 self.CleanButton.SetToolTip(_("Clean log messages")) |
330 self.Bind(wx.EVT_BUTTON, self.OnCleanButton, self.CleanButton) |
328 self.Bind(wx.EVT_BUTTON, self.OnCleanButton, self.CleanButton) |
331 filter_sizer.AddWindow(self.CleanButton) |
329 filter_sizer.Add(self.CleanButton) |
332 |
330 |
333 message_panel_sizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0) |
331 message_panel_sizer = wx.FlexGridSizer(cols=2, hgap=0, rows=1, vgap=0) |
334 message_panel_sizer.AddGrowableCol(0) |
332 message_panel_sizer.AddGrowableCol(0) |
335 message_panel_sizer.AddGrowableRow(0) |
333 message_panel_sizer.AddGrowableRow(0) |
336 main_sizer.AddSizer(message_panel_sizer, border=5, flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.GROW) |
334 main_sizer.Add(message_panel_sizer, border=5, flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.GROW) |
337 |
335 |
338 self.MessagePanel = wx.Panel(self) |
336 self.MessagePanel = wx.Panel(self) |
339 if wx.Platform == '__WXMSW__': |
337 if wx.Platform == '__WXMSW__': |
340 self.Font = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName='Courier New') |
338 self.Font = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, faceName='Courier New') |
341 else: |
339 else: |
347 self.MessagePanel.Bind(wx.EVT_LEAVE_WINDOW, self.OnMessagePanelLeaveWindow) |
345 self.MessagePanel.Bind(wx.EVT_LEAVE_WINDOW, self.OnMessagePanelLeaveWindow) |
348 self.MessagePanel.Bind(wx.EVT_MOUSEWHEEL, self.OnMessagePanelMouseWheel) |
346 self.MessagePanel.Bind(wx.EVT_MOUSEWHEEL, self.OnMessagePanelMouseWheel) |
349 self.MessagePanel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnMessagePanelEraseBackground) |
347 self.MessagePanel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnMessagePanelEraseBackground) |
350 self.MessagePanel.Bind(wx.EVT_PAINT, self.OnMessagePanelPaint) |
348 self.MessagePanel.Bind(wx.EVT_PAINT, self.OnMessagePanelPaint) |
351 self.MessagePanel.Bind(wx.EVT_SIZE, self.OnMessagePanelResize) |
349 self.MessagePanel.Bind(wx.EVT_SIZE, self.OnMessagePanelResize) |
352 message_panel_sizer.AddWindow(self.MessagePanel, flag=wx.GROW) |
350 message_panel_sizer.Add(self.MessagePanel, flag=wx.GROW) |
353 |
351 |
354 self.MessageScrollBar = LogScrollBar(self, wx.Size(16, -1)) |
352 self.MessageScrollBar = LogScrollBar(self, wx.Size(16, -1)) |
355 message_panel_sizer.AddWindow(self.MessageScrollBar, flag=wx.GROW) |
353 message_panel_sizer.Add(self.MessageScrollBar, flag=wx.GROW) |
356 |
354 |
357 self.SetSizer(main_sizer) |
355 self.SetSizer(main_sizer) |
358 |
356 |
359 self.LeftButtons = [] |
357 self.LeftButtons = [] |
360 for label, callback in [("+" + text, self.GenerateOnDurationButton(duration)) |
358 for label, callback in [("+" + text, self.GenerateOnDurationButton(duration)) |