summaryrefslogtreecommitdiff
path: root/src/msd/msd_main_window.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/msd/msd_main_window.py')
-rw-r--r--src/msd/msd_main_window.py67
1 files changed, 28 insertions, 39 deletions
diff --git a/src/msd/msd_main_window.py b/src/msd/msd_main_window.py
index 43291e7..1b0e245 100644
--- a/src/msd/msd_main_window.py
+++ b/src/msd/msd_main_window.py
@@ -73,10 +73,8 @@ class MainWindow(object):
self.__search_view.set_model(search_model)
self.__search_path = path
elif self.__browse_path != path:
- props = { "Path" : path, "Type": "container" }
- self.__browse_tree = TreeNode(props, None, self.__sort_order)
- browse_model = BrowseModel(self.__browse_tree)
- self.__browse_node = self.__browse_tree
+ browse_model = BrowseModel(Container(path),
+ self.__sort_order)
self.__browse_view.set_model(browse_model)
self.__browse_path = path
@@ -129,23 +127,26 @@ class MainWindow(object):
tv.set_model(model)
def __cell_data_func(self, column, cell, model, tree_iter):
- # Only search model supports set_request_range at the moment
- if self.__search_view.get_model() == model:
- path = model.get_path (tree_iter)
-
- # This could be a lot smarter: should fetch data so that
- # there's always at least 1 visible_range preloaded:
- # that way e.g. pressing PgDn would not show "Loading"
- requested_range = model.get_request_range()
- if (path[0] >= requested_range[0] and
- path[0] <= requested_range[1]):
- return
+ path = model.get_path (tree_iter)
+ # This could be a lot smarter: should fetch data so that
+ # there's always at least 1 visible_range preloaded:
+ # that way e.g. pressing PgDn would not show "Loading"
+ requested_range = model.get_request_range()
+ if (path[0] >= requested_range[0] and
+ path[0] <= requested_range[1]):
+ return
+
+ if self.__notebook.get_current_page() == 0:
visible_range = self.__search_view.get_visible_range()
- if (visible_range):
- visible_count = visible_range[1][0] - visible_range[0][0]
- model.set_request_range(max(0, visible_range[0][0] - visible_count // 2),
- min(len(model) - 1, visible_range[1][0] + visible_count // 2))
+ else:
+ visible_range = self.__browse_view.get_visible_range()
+
+ if (visible_range):
+ visible_count = visible_range[1][0] - visible_range[0][0]
+ start = visible_range[0][0] - visible_count // 2
+ end = visible_range[1][0] + visible_count // 2
+ model.set_request_range(max(0, start), min(len(model) - 1, end))
def __create_column(self, treeview, name, col, width, sort_by, cell_data_func=None):
renderer = gtk.CellRendererText()
@@ -170,7 +171,13 @@ class MainWindow(object):
path = model.get_value(rowref, model.COL_PATH)
url = model.get_value(rowref, model.COL_URL)
- if url != "":
+ if (ctype == "Container"):
+ if self.__notebook.get_current_page() == 1:
+ browse_model = BrowseModel(Container(path),
+ self.__sort_order)
+ self.__browse_path = path
+ self.__browse_view.set_model(browse_model)
+ elif url != "":
if ctype == "Image":
self.__window.remove(self.__main_view)
self.__overlay = PlayWindowImage(name, url,
@@ -191,24 +198,6 @@ class MainWindow(object):
self.__close_overlay)
self.__window.add(self.__overlay.get_container())
- def __browse_content_clicked(self, treeview, path, col):
- if self.__browse_node != self.__browse_tree and path[0] == 0:
- self.__browse_node.reset_children()
- self.__browse_node = self.__browse_node.get_parent()
- browse_model = BrowseModel(self.__browse_node)
- self.__browse_view.set_model(browse_model)
- else:
- child = path[0]
- if self.__browse_node != self.__browse_tree:
- child = child - 1
- node = self.__browse_node.get_child(child)
- if node.is_container():
- self.__browse_node = node
- browse_model = BrowseModel(self.__browse_node)
- self.__browse_view.set_model(browse_model)
- else:
- self.__content_clicked(treeview, path, col)
-
def __create_common_list(self, store):
treeview = gtk.TreeView(store)
treeview.set_headers_visible(True)
@@ -230,7 +219,7 @@ class MainWindow(object):
def __create_browse_view(self, notebook):
tree_store = gtk.TreeStore(str, str, str, str)
scrollwin, treeview = self.__create_common_list(tree_store)
- treeview.connect("row-activated", self.__browse_content_clicked)
+ treeview.connect("row-activated", self.__content_clicked)
self.__browse_view = treeview;
notebook.append_page(scrollwin, gtk.Label("Browse"))