From 54cb099007449d3114813c605b60b1250b514ade Mon Sep 17 00:00:00 2001 From: Manuel Cortez Date: Sun, 12 Nov 2017 23:10:31 -0600 Subject: [PATCH] Added GUI for filter creation. #102 --- src/controller/filterController.py | 7 +++++ src/controller/mainController.py | 9 ++++++ src/wxUI/dialogs/__init__.py | 2 +- src/wxUI/dialogs/filterDialogs.py | 45 ++++++++++++++++++++++++++++++ src/wxUI/view.py | 1 + 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 src/controller/filterController.py create mode 100644 src/wxUI/dialogs/filterDialogs.py diff --git a/src/controller/filterController.py b/src/controller/filterController.py new file mode 100644 index 00000000..8d59832a --- /dev/null +++ b/src/controller/filterController.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +from wxUI.dialogs import filterDialogs + +class filter(object): + def __init__(self): + self.dialog = filterDialogs.filterDialog() + self.dialog.get_response() \ No newline at end of file diff --git a/src/controller/mainController.py b/src/controller/mainController.py index 8ee340f6..f40dffd3 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -13,6 +13,7 @@ if system == "Windows": import trendingTopics import user import listsController + import filterController # from issueReporter import issueReporter elif system == "Linux": from gtkUI import (view, commonMessageDialogs) @@ -139,6 +140,7 @@ class Controller(object): widgetUtils.connect_event(self.view, widgetUtils.MENU, self.search, menuitem=self.view.menuitem_search) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.list_manager, menuitem=self.view.lists) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_trending_topics, menuitem=self.view.trends) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.filter, menuitem=self.view.filter) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.find, menuitem=self.view.find) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.accountConfiguration, menuitem=self.view.account_settings) widgetUtils.connect_event(self.view, widgetUtils.MENU, self.configuration, menuitem=self.view.prefs) @@ -483,6 +485,13 @@ class Controller(object): return output.speak(page.get_message(), True) output.speak(_(u"{0} not found.").format(string,), True) + def filter(self, *args, **kwargs): + page = self.get_current_buffer() + if not hasattr(page.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + new_filter = filterController.filter() + def seekLeft(self, *args, **kwargs): try: sound.URLPlayer.seek(-5) diff --git a/src/wxUI/dialogs/__init__.py b/src/wxUI/dialogs/__init__.py index cbf0d2da..a9c57be2 100644 --- a/src/wxUI/dialogs/__init__.py +++ b/src/wxUI/dialogs/__init__.py @@ -1 +1 @@ -import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils +import baseDialog, trends, configuration, lists, message, search, find, show_user, update_profile, urlList, userSelection, utils, filterDialogs diff --git a/src/wxUI/dialogs/filterDialogs.py b/src/wxUI/dialogs/filterDialogs.py new file mode 100644 index 00000000..aa9bd279 --- /dev/null +++ b/src/wxUI/dialogs/filterDialogs.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +import baseDialog +import wx + +class filterDialog(baseDialog.BaseWXDialog): + def __init__(self, value=""): + super(filterDialog, self).__init__(None, -1) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetTitle(_(u"Create a filter for this buffer")) + self.contains = wx.RadioButton(panel, -1, _(u"Contains"), style=wx.RB_GROUP) + self.doesnt_contain = wx.RadioButton(panel, -1, _(u"Doesn't contain")) + radioSizer1 = wx.BoxSizer(wx.HORIZONTAL) + radioSizer1.Add(self.contains, 0, wx.ALL, 5) + radioSizer1.Add(self.doesnt_contain, 0, wx.ALL, 5) + sizer.Add(radioSizer1, 0, wx.ALL, 5) + label = wx.StaticText(panel, -1, _(u"word")) + self.term = wx.TextCtrl(panel, -1, value) + dc = wx.WindowDC(self.contains) + dc.SetFont(self.contains.GetFont()) + self.contains.SetSize(dc.GetTextExtent("0"*40)) + bsizer = wx.BoxSizer(wx.HORIZONTAL) + bsizer.Add(label, 0, wx.ALL, 5) + bsizer.Add(self.contains, 0, wx.ALL, 5) + sizer.Add(bsizer, 0, wx.ALL, 5) + self.regexp = wx.CheckBox(panel, wx.NewId(), _(u"Use this term as a regular expression")) + sizer.Add(self.regexp, 0, wx.ALL, 5) + self.load_language = wx.RadioButton(panel, -1, _(u"Load tweets in the following languages"), style=wx.RB_GROUP) + self.ignore_language = wx.RadioButton(panel, -1, _(u"Ignore tweets in the following languages")) + self.skip_language_filtering = wx.RadioButton(panel, -1, _(u"Don't filter by language")) + self.skip_language_filtering.SetValue(True) + radioSizer2 = wx.BoxSizer(wx.HORIZONTAL) + radioSizer2.Add(self.load_language, 0, wx.ALL, 5) + radioSizer2.Add(self.ignore_language, 0, wx.ALL, 5) + radioSizer2.Add(self.skip_language_filtering, 0, wx.ALL, 5) + sizer.Add(radioSizer2, 0, wx.ALL, 5) + ok = wx.Button(panel, wx.ID_OK, _(u"OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Cancel")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok, 0, wx.ALL, 5) + btnsizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(btnsizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) \ No newline at end of file diff --git a/src/wxUI/view.py b/src/wxUI/view.py index b0c564bd..7a63339c 100644 --- a/src/wxUI/view.py +++ b/src/wxUI/view.py @@ -50,6 +50,7 @@ class mainFrame(wx.Frame): buffer = wx.Menu() self.update_buffer = buffer.Append(wx.NewId(), _(u"&Update buffer")) self.trends = buffer.Append(wx.NewId(), _(u"New &trending topics buffer...")) + self.filter = buffer.Append(wx.NewId(), _(u"Create a filter")) self.find = buffer.Append(wx.NewId(), _(u"Find a string in the currently focused buffer...")) self.load_previous_items = buffer.Append(wx.NewId(), _(u"&Load previous items")) buffer.AppendSeparator()