FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Redhat > Fedora Development

 
 
LinkBack Thread Tools
 
Old 10-19-2010, 04:51 PM
Ales Kozumplik
 
Default timezone: allow the user to type it in.

GTK currently does not suppoort search-as-you-type comboboxes, so this is
an alternative functionality, where we try to guess (using difflib) what
the user meant.

Cons: if he types 'Brno' which s-c-date doesn't know about, then 'Prague'
is not suggested automatically.

Pros: if you know your 'timezone city' you can just type it in quickly
(I'd argue most people in Europe know what their 'timezone city' is).

Related: rhbz#520631
---
pyanaconda/iw/timezone_gui.py | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/pyanaconda/iw/timezone_gui.py b/pyanaconda/iw/timezone_gui.py
index ca237bc..4a8798b 100644
--- a/pyanaconda/iw/timezone_gui.py
+++ b/pyanaconda/iw/timezone_gui.py
@@ -18,6 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

+import difflib
import string
import gtk
import gtk.glade
@@ -41,6 +42,11 @@ try:
except ImportError:
import gnome.canvas as gnomecanvas

+class SearchCache:
+ def __init__(self):
+ self.iterators = []
+ self.timezone_names = []
+
class TimezoneWindow(InstallWindow):
def __init__(self, ics):
InstallWindow.__init__(self, ics)
@@ -114,6 +120,17 @@ class AnacondaTZMap(TimezoneMap):
def __init__(self, zonetab, default, map="", viewportWidth=480):
TimezoneMap.__init__(self, zonetab, default, map=map, viewportWidth=viewportWidth)
self.columns = Enum("TRANSLATED", "TZ", "ENTRY")
+ self.search_cache = self._generate_search_cache()
+
+ def _generate_search_cache(self):
+ search_cache = SearchCache()
+ iter = self.tzSorted.get_iter_first()
+ while iter:
+ search_cache.iterators.append(iter)
+ translated = self.tzSorted.get_value(iter, self.columns.TRANSLATED)
+ search_cache.timezone_names.append(translated.lowe r())
+ iter = self.tzSorted.iter_next(iter)
+ return search_cache

def status_bar_init(self):
self.status = None
@@ -136,6 +153,16 @@ class AnacondaTZMap(TimezoneMap):
self.fallbackEntry = entry

iter = self.tzStore.insert_after(iter, [entry.translated_tz, entry.tz, entry])
+
+ def search_changed(self, search_bar):
+ term_string = search_bar.get_text().lower()
+ close_matches = difflib.get_close_matches(
+ term_string, self.search_cache.timezone_names, n=1, cutoff=0.45)
+ if len(close_matches) > 0:
+ match = close_matches[0]
+ index = self.search_cache.timezone_names.index(match)
+ iter = self.search_cache.iterators[index]
+ self.tzCombo.set_active_iter(iter)

def timezone_list_init (self, default):
self.hbox = gtk.HBox()
@@ -146,6 +173,15 @@ class AnacondaTZMap(TimezoneMap):

self.load_entries(root)

+ # Add a searchbar
+ search_hbox = gtk.HBox()
+ label = gtk.Label(_("Type the name of a big city near you:"))
+ self.tz_search_bar = gtk.Entry()
+ self.tz_search_bar.set_width_chars(30)
+ self.tz_search_bar.connect("changed", self.search_changed)
+ search_hbox.pack_start(label, False, False)
+ search_hbox.pack_start(self.tz_search_bar, False, False)
+
# Add the ListStore to the sorted model after the list has been
# populated, since otherwise we end up resorting on every addition.
self.tzSorted = gtk.TreeModelSort(self.tzStore)
@@ -157,6 +193,7 @@ class AnacondaTZMap(TimezoneMap):
self.tzCombo.connect("changed", self.selectionChanged)
self.hbox.pack_start(self.tzCombo, False, False)

+ self.pack_start(search_hbox, False, False)
self.pack_start(self.hbox, False, False)

def selectionChanged(self, widget, *args):
--
1.7.1.1

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 10-19-2010, 04:56 PM
Ales Kozumplik
 
Default timezone: allow the user to type it in.

On 10/19/2010 06:51 PM, Ales Kozumplik wrote:

GTK currently does not suppoort search-as-you-type comboboxes, so this is
an alternative functionality, where we try to guess (using difflib) what
the user meant.

Cons: if he types 'Brno' which s-c-date doesn't know about, then 'Prague'
is not suggested automatically.

Pros: if you know your 'timezone city' you can just type it in quickly
(I'd argue most people in Europe know what their 'timezone city' is).

Related: rhbz#520631
---


I just want an "yes this is better than what we had before" kind of ack.
Then a patch putting the searchbar and the combobox below into a nice
table will follow.


A screenshot: http://akozumpl.fedorapeople.org/guess_tz.png

Ales

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 06:45 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org