Skip to content

Commit

Permalink
Improvements: Search suggestions
Browse files Browse the repository at this point in the history
* Add missing DuckDuckGo to the search popup
* Add option to always show search suggestions, even if there are
application results. Defaults to `false` to maintain existing behavior
  • Loading branch information
vkareh committed Jun 28, 2017
1 parent f42342b commit cd5a62c
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 10 deletions.
27 changes: 21 additions & 6 deletions data/mate-menu-config.glade
Original file line number Diff line number Diff line change
Expand Up @@ -953,6 +953,21 @@
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="always_show_search">
<property name="label" translatable="yes">Always show search suggestions</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">8</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="enable_ddg">
<property name="label" translatable="yes">DuckDuckGo</property>
Expand All @@ -964,7 +979,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">9</property>
<property name="top_attach">11</property>
</packing>
</child>
<child>
Expand All @@ -978,7 +993,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">10</property>
<property name="top_attach">12</property>
</packing>
</child>
<child>
Expand All @@ -992,7 +1007,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">11</property>
<property name="top_attach">13</property>
</packing>
</child>
<child>
Expand All @@ -1006,7 +1021,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">12</property>
<property name="top_attach">14</property>
</packing>
</child>
<child>
Expand All @@ -1020,7 +1035,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">13</property>
<property name="top_attach">15</property>
</packing>
</child>
<child>
Expand All @@ -1032,7 +1047,7 @@
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">8</property>
<property name="top_attach">9</property>
</packing>
</child>
<child>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@
<description></description>
</key>

<key type="b" name="always-show-search">
<default>false</default>
<summary></summary>
<description></description>
</key>

<key type="b" name="enable-ddg">
<default>true</default>
<summary></summary>
Expand Down
3 changes: 3 additions & 0 deletions lib/mate-menu-config.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def __init__( self ):
self.builder.get_object("mainbuttonLabel").set_text(_("Main button"))
self.builder.get_object("pluginsLabel").set_text(_("Plugins"))

self.builder.get_object("always_show_search").set_label(_("Always show search suggestions"))
self.builder.get_object("searchEngineTitleLabel").set_text(_("Search Engines:"))
self.builder.get_object("enable_ddg").set_label(_("DuckDuckGo"))
self.builder.get_object("enable_google").set_label(_("Google"))
Expand Down Expand Up @@ -140,6 +141,7 @@ def __init__( self ):
self.hover = self.builder.get_object( "hover" )
self.hoverDelay = self.builder.get_object( "hoverDelay" )
self.rememberFilter = self.builder.get_object( "remember_filter" )
self.alwaysShowSearch = self.builder.get_object( "always_show_search" )
self.enableDdg = self.builder.get_object( "enable_ddg" )
self.enableGoogle = self.builder.get_object( "enable_google" )
self.enableWikipedia = self.builder.get_object( "enable_wikipedia" )
Expand Down Expand Up @@ -222,6 +224,7 @@ def __init__( self ):
self.bindGSettingsValueToWidget( self.settingsApplications, "int", "fav-cols", self.favCols, "value-changed", self.favCols.set_value, self.favCols.get_value )
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "remember-filter", self.rememberFilter, "toggled", self.rememberFilter.set_active, self.rememberFilter.get_active)

self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "always-show-search", self.alwaysShowSearch, "toggled", self.alwaysShowSearch.set_active, self.alwaysShowSearch.get_active)
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "enable-ddg", self.enableDdg, "toggled", self.enableDdg.set_active, self.enableDdg.get_active)
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "enable-google", self.enableGoogle, "toggled", self.enableGoogle.set_active, self.enableGoogle.get_active)
self.bindGSettingsValueToWidget( self.settingsApplications, "bool", "enable-wikipedia", self.enableWikipedia, "toggled", self.enableWikipedia.set_active, self.enableWikipedia.get_active)
Expand Down
21 changes: 17 additions & 4 deletions mate_menu/plugins/applications.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ def __init__(self, mateMenuWin, toggleButton):
self.settings.bindGSettingsEntryToVar( "bool", "do-not-filter", self, "donotfilterapps" )
self.settings.bindGSettingsEntryToVar( "string", "search-command", self, "searchtool" )
self.settings.bindGSettingsEntryToVar( "int", "default-tab", self, "defaultTab" )
self.settings.bindGSettingsEntryToVar( "bool", "always-show-search", self, "alwaysshowsearch" )
self.settings.bindGSettingsEntryToVar( "bool", "enable-ddg", self, "enableddg" )
self.settings.bindGSettingsEntryToVar( "bool", "enable-google", self, "enablegoogle" )
self.settings.bindGSettingsEntryToVar( "bool", "enable-wikipedia", self, "enablewikipedia" )
Expand Down Expand Up @@ -438,6 +439,7 @@ def GetGSettingsEntries( self ):
self.categoryhoverdelay = self.settings.get( "int", "category-hover-delay")
self.showapplicationcomments = self.settings.get( "bool", "show-application-comments")
self.rememberFilter = self.settings.get( "bool", "remember-filter")
self.alwaysshowsearch = self.settings.get( "bool", "always-show-search")
self.enableddg = self.settings.get( "bool", "enable-ddg")
self.enablegoogle = self.settings.get( "bool", "enable-google")
self.enablewikipedia = self.settings.get( "bool", "enable-wikipedia")
Expand Down Expand Up @@ -572,10 +574,10 @@ def StopFilter( self, widget ):
GLib.source_remove( self.filterTimer )
self.filterTimer = None

def add_search_suggestions(self, text):
def add_search_suggestions(self, text, already_focused = False):

text = "<b>%s</b>" % text
focused = False
focused = already_focused

if self.enableddg:
suggestionButton = SuggestionButton("list-add", self.iconSize, "")
Expand Down Expand Up @@ -690,8 +692,6 @@ def Filter( self, widget, category = None ):
self.current_suggestion = None
self.current_results = []
else:
self.current_suggestion = None
self.current_results = []
# Sort applications by relevance, and alphabetical within that
shownList = sorted(shownList, key=lambda app: app.appName)
shownList = sorted(shownList, key=lambda app: app.relevance, reverse=True)
Expand All @@ -702,6 +702,12 @@ def Filter( self, widget, category = None ):
# Grab focus of the first app shown
i.grab_focus()
focused = True
if self.alwaysshowsearch:
self.add_search_suggestions(text, focused)
self.current_suggestion = text
else:
self.current_suggestion = None
self.current_results = []

for i in self.categoriesBox.get_children():
i.set_relief( Gtk.ReliefStyle.NONE )
Expand Down Expand Up @@ -878,6 +884,13 @@ def menuPopup( self, widget, event ):
def searchPopup( self, widget=None, event=None ):
menu = Gtk.Menu()

menuItem = Gtk.ImageMenuItem(label=_("Search DuckDuckGo"))
img = Gtk.Image()
img.set_from_file('/usr/share/mate-menu/icons/search_engines/ddg.ico')
menuItem.set_image(img)
menuItem.connect("activate", self.search_ddg)
menu.append(menuItem)

menuItem = Gtk.ImageMenuItem(label=_("Search Google"))
img = Gtk.Image()
img.set_from_file('/usr/share/mate-menu/icons/search_engines/google.ico')
Expand Down

0 comments on commit cd5a62c

Please sign in to comment.