Verified Kaydet (Commit) df6f935a authored tarafından Erdem Ersoy's avatar Erdem Ersoy

Implement sorting columns (1/X)

üst 7f3a7647
......@@ -109,8 +109,8 @@ class MainWindow(object):
self.TreeViewColumnArch = MainBuilder.get_object("TreeViewColumnArch")
self.TreeViewColumnArch.set_title(_("Arch"))
self.TreeViewColumnArch = MainBuilder.get_object("TreeViewColumnBranch")
self.TreeViewColumnArch.set_title(_("Branch"))
self.TreeViewColumnBranch = MainBuilder.get_object("TreeViewColumnBranch")
self.TreeViewColumnBranch.set_title(_("Branch"))
self.TreeViewColumnRemoteName = MainBuilder.get_object(
"TreeViewColumnRemoteName")
......@@ -127,6 +127,15 @@ class MainWindow(object):
self.TreeViewColumnName = MainBuilder.get_object("TreeViewColumnName")
self.TreeViewColumnName.set_title(_("Name"))
self.SortModel = MainBuilder.get_object("SortModel")
self.SortModel.set_sort_func(0, self.SortingCompareFunction, (self.TreeViewColumnRealName, 0))
self.SortModel.set_sort_func(1, self.SortingCompareFunction, (self.TreeViewColumnArch, 1))
self.SortModel.set_sort_func(2, self.SortingCompareFunction, (self.TreeViewColumnBranch, 2))
self.SortModel.set_sort_func(3, self.SortingCompareFunction, (self.TreeViewColumnRemoteName, 3))
self.SortModel.set_sort_func(4, self.SortingFloatCompareFunction, (self.TreeViewColumnInstalledSize, 4))
self.SortModel.set_sort_func(5, self.SortingFloatCompareFunction, (self.TreeViewColumnDownloadSize, 5))
self.SortModel.set_sort_func(6, self.SortingCompareFunction, (self.TreeViewColumnName, 6))
self.FlatpakInstallation = Flatpak.Installation.new_system()
self.FlatpakRefsList = self.FlatpakInstallation.list_installed_refs()
self.FlatHubRefsList = self.FlatpakInstallation.list_remote_refs_sync(
......@@ -221,6 +230,47 @@ class MainWindow(object):
else:
return False
def SortingCompareFunction(self, tree_model_filter, row1, row2, data):
sorting_column, id_number = data
value1 = tree_model_filter.get_value(row1, id_number)
value2 = tree_model_filter.get_value(row2, id_number)
if value1 == "" and value2 == "":
return 0
elif value1 == "" and value2 != "":
return -1
elif value1 != "" and value2 == "":
return 1
if value1 < value2:
return -1
elif value1 == value2:
return 0
else:
return 1
def SortingFloatCompareFunction(self, tree_model_filter, row1, row2, data):
sorting_column, id_number = data
value1 = tree_model_filter.get_value(row1, id_number)[:-4]
value2 = tree_model_filter.get_value(row2, id_number)[:-4]
if value1 == "" and value2 == "":
return 0
elif value1 == "" and value2 != "":
return -1
elif value1 != "" and value2 == "":
return 1
value1_float = float(value1)
value2_float = float(value2)
if value1_float < value2_float:
return -1
elif value1_float == value2_float:
return 0
else:
return 1
def onDestroy(self, *args):
self.MainWindow.destroy()
......@@ -247,6 +297,9 @@ class MainWindow(object):
def onSearchChanged(self, search_entry):
self.SearchFilter.refilter()
def onResorted(self, tree_sortable):
self.SearchFilter.refilter()
def onPressShowButton(self, toggle_button):
self.SearchFilter.refilter()
......
......@@ -74,6 +74,10 @@ Author: Erdem Ersoy
<object class="GtkTreeModelFilter" id="SearchFilter">
<property name="child_model">ListStoreMain</property>
</object>
<object class="GtkTreeModelSort" id="SortModel">
<property name="model">SearchFilter</property>
<signal name="sort-column-changed" handler="onResorted" swapped="no"/>
</object>
<object class="GtkImage" id="RunImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
......@@ -258,7 +262,7 @@ Author: Erdem Ersoy
<object class="GtkTreeView" id="TreeViewMain">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">SearchFilter</property>
<property name="model">SortModel</property>
<property name="reorderable">True</property>
<property name="search_column">0</property>
<property name="activate_on_single_click">True</property>
......@@ -274,7 +278,6 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Real Name</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_indicator">True</property>
<property name="sort_column_id">0</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextRealName"/>
......@@ -290,6 +293,7 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Arch</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">1</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextArch"/>
<attributes>
......@@ -304,6 +308,7 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Branch</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">2</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextBranch"/>
<attributes>
......@@ -318,6 +323,7 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Remote Name</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">3</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextRemoteName"/>
<attributes>
......@@ -332,6 +338,7 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Installed Size</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">4</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextInstalledSize"/>
<attributes>
......@@ -346,6 +353,7 @@ Author: Erdem Ersoy
<property name="title" translatable="yes">Download Size</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">5</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextDownloadSize"/>
<attributes>
......@@ -357,9 +365,12 @@ Author: Erdem Ersoy
<child>
<object class="GtkTreeViewColumn" id="TreeViewColumnName">
<property name="resizable">True</property>
<property name="sizing">fixed</property>
<property name="fixed_width">80</property>
<property name="title" translatable="yes">Name</property>
<property name="clickable">True</property>
<property name="reorderable">True</property>
<property name="sort_column_id">6</property>
<child>
<object class="GtkCellRendererText" id="CellRendererTextName"/>
<attributes>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment