mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-18 12:00:21 +01:00
* Added controller and view for search window.
This commit is contained in:
134
src/ctrls/c_search.py
Normal file
134
src/ctrls/c_search.py
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
# This Python file uses the following encoding: utf-8
|
||||||
|
#
|
||||||
|
# Author: Roman 'gryf' Dobosz gryf@elysium.pl
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 by Roman 'gryf' Dobosz
|
||||||
|
#
|
||||||
|
# This file is part of pyGTKtalog.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
from gtkmvc import Controller
|
||||||
|
|
||||||
|
import gtk
|
||||||
|
|
||||||
|
class SearchController(Controller):
|
||||||
|
"""Controller for main application window"""
|
||||||
|
|
||||||
|
def __init__(self, model):
|
||||||
|
"""Initialize controller"""
|
||||||
|
Controller.__init__(self, model)
|
||||||
|
return
|
||||||
|
|
||||||
|
def register_view(self, view):
|
||||||
|
Controller.register_view(self, view)
|
||||||
|
|
||||||
|
# Setup TreeView result widget, as columned list
|
||||||
|
v = self.view['result']
|
||||||
|
v.set_model(self.model.search_list)
|
||||||
|
|
||||||
|
v.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Disc', gtk.CellRendererText(), text=1)
|
||||||
|
c.set_sort_column_id(1)
|
||||||
|
c.set_resizable(True)
|
||||||
|
v.append_column(c)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Filename')
|
||||||
|
cellpb = gtk.CellRendererPixbuf()
|
||||||
|
cell = gtk.CellRendererText()
|
||||||
|
c.pack_start(cellpb, False)
|
||||||
|
c.pack_start(cell, True)
|
||||||
|
c.set_attributes(cellpb, stock_id=7)
|
||||||
|
c.set_attributes(cell, text=2)
|
||||||
|
c.set_sort_column_id(2)
|
||||||
|
c.set_resizable(True)
|
||||||
|
v.append_column(c)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Path', gtk.CellRendererText(), text=3)
|
||||||
|
c.set_sort_column_id(3)
|
||||||
|
c.set_resizable(True)
|
||||||
|
v.append_column(c)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Size', gtk.CellRendererText(), text=4)
|
||||||
|
c.set_sort_column_id(4)
|
||||||
|
c.set_resizable(True)
|
||||||
|
v.append_column(c)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Date', gtk.CellRendererText(), text=5)
|
||||||
|
c.set_sort_column_id(5)
|
||||||
|
c.set_resizable(True)
|
||||||
|
v.append_column(c)
|
||||||
|
v.set_search_column(2)
|
||||||
|
|
||||||
|
# combobox
|
||||||
|
self.view['comboboxentry'].set_model(self.model.search_history)
|
||||||
|
self.view['comboboxentry'].set_text_column(0)
|
||||||
|
# statusbar
|
||||||
|
self.context_id = self.view['statusbar'].get_context_id('search')
|
||||||
|
self.view['statusbar'].pop(self.context_id)
|
||||||
|
self.view['search_window'].show()
|
||||||
|
self.model.search_created = True;
|
||||||
|
return
|
||||||
|
|
||||||
|
#########################################################################
|
||||||
|
# Connect signals from GUI, like menu objects, toolbar buttons and so on.
|
||||||
|
def on_search_window_delete_event(self, window, event):
|
||||||
|
"""if window was closed, reset attributes"""
|
||||||
|
self.model.point = None
|
||||||
|
self.model.search_created = False;
|
||||||
|
return False
|
||||||
|
|
||||||
|
def on_close_clicked(self, button):
|
||||||
|
"""close search window"""
|
||||||
|
self.model.point = None
|
||||||
|
self.model.search_created = False;
|
||||||
|
self.view['search_window'].destroy()
|
||||||
|
|
||||||
|
def on_search_activate(self, entry):
|
||||||
|
"""find button or enter pressed on entry search. Do the search"""
|
||||||
|
search_txt = self.view['search_entry'].get_text()
|
||||||
|
found = self.model.search(search_txt)
|
||||||
|
self.model.add_search_history(search_txt)
|
||||||
|
|
||||||
|
if found == 0:
|
||||||
|
msg = "No files found."
|
||||||
|
elif found == 1:
|
||||||
|
msg = "Found 1 file."
|
||||||
|
else:
|
||||||
|
msg = "Found %d files." % found
|
||||||
|
|
||||||
|
self.view['statusbar'].push(self.context_id, "%s" % msg)
|
||||||
|
|
||||||
|
def on_result_row_activated(self, treeview, path, treecolumn):
|
||||||
|
"""result treeview row activated, change models 'point' observable
|
||||||
|
variable to id of elected item. rest is all in main controler hands."""
|
||||||
|
model = treeview.get_model()
|
||||||
|
s_iter = model.get_iter(path)
|
||||||
|
self.model.point = model.get_value(s_iter, 0)
|
||||||
|
|
||||||
|
def on_comboboxentry_changed(self, comboentry):
|
||||||
|
"""comboentry has changed, fill entry with selected item"""
|
||||||
|
print "TODO: implement me!"
|
||||||
|
|
||||||
|
#####################
|
||||||
|
# observed properetis
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# private class functions
|
||||||
|
|
||||||
|
pass # end of class
|
||||||
38
src/views/v_search.py
Normal file
38
src/views/v_search.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# This Python file uses the following encoding: utf-8
|
||||||
|
#
|
||||||
|
# Author: Roman 'gryf' Dobosz gryf@elysium.pl
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 by Roman 'gryf' Dobosz
|
||||||
|
#
|
||||||
|
# This file is part of pyGTKtalog.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
from gtkmvc import View
|
||||||
|
import os.path
|
||||||
|
import utils.globals
|
||||||
|
|
||||||
|
class SearchView(View):
|
||||||
|
"""Search window from glade file """
|
||||||
|
|
||||||
|
GLADE = os.path.join(utils.globals.GLADE_DIR, "search.glade")
|
||||||
|
|
||||||
|
def __init__(self, ctrl):
|
||||||
|
View.__init__(self, ctrl, self.GLADE)
|
||||||
|
return
|
||||||
|
pass # end of class
|
||||||
|
|
||||||
Reference in New Issue
Block a user