summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2020-06-20 11:42:25 +0200
committerStefano Facchini <stefano.facchini@gmail.com>2020-06-30 16:01:23 +0200
commit8b61be0d7bea77e8e6fb45803406d3d88444b0b1 (patch)
tree4194d50ca294bd922fa8397bde39610d2a6ae501
parentec3678da8d3bebb59e4a81f2414081b6e03634b4 (diff)
downloadbaobab-8b61be0d7bea77e8e6fb45803406d3d88444b0b1.tar.gz
Go up one level when FolderDisplay is clicked
-rw-r--r--data/baobab.css7
-rw-r--r--data/ui/baobab-folder-display.ui225
-rw-r--r--src/baobab-folder-display.vala14
-rw-r--r--src/baobab-window.vala9
4 files changed, 143 insertions, 112 deletions
diff --git a/data/baobab.css b/data/baobab.css
index 05e61ca..0cd50a1 100644
--- a/data/baobab.css
+++ b/data/baobab.css
@@ -65,7 +65,12 @@ folder-display {
border-width: 0 1px 1px 0;
}
-folder-display > label {
+folder-display:hover {
+ color: @theme_selected_fg_color;
+ background: @theme_selected_bg_color;
+}
+
+folder-display label {
padding: 6px;
}
diff --git a/data/ui/baobab-folder-display.ui b/data/ui/baobab-folder-display.ui
index bef1674..710c991 100644
--- a/data/ui/baobab-folder-display.ui
+++ b/data/ui/baobab-folder-display.ui
@@ -2,121 +2,126 @@
<!-- Generated with glade 3.22.0 -->
<interface>
<requires lib="gtk+" version="3.22"/>
- <template class="BaobabFolderDisplay" parent="GtkGrid">
+ <template class="BaobabFolderDisplay" parent="GtkButton">
<property name="visible">True</property>
- <property name="can_focus">False</property>
<child>
- <object class="GtkLabel" id="folder_name_primary">
+ <object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="hexpand">True</property>
- <property name="ellipsize">end</property>
- <style>
- <class name="folder-display-header"/>
- </style>
+ <child>
+ <object class="GtkLabel" id="folder_name_primary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="hexpand">True</property>
+ <property name="ellipsize">end</property>
+ <style>
+ <class name="folder-display-header"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Size</property>
+ <style>
+ <class name="dim-label"/>
+ <class name="folder-display-header"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Contents</property>
+ <style>
+ <class name="dim-label"/>
+ <class name="folder-display-header"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="folder_name_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="hexpand">True</property>
+ <property name="ellipsize">end</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="folder_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="folder_elements">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Modified</property>
+ <style>
+ <class name="dim-label"/>
+ <class name="folder-display-header"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="folder_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
</object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Size</property>
- <style>
- <class name="dim-label"/>
- <class name="folder-display-header"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Contents</property>
- <style>
- <class name="dim-label"/>
- <class name="folder-display-header"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="folder_name_secondary">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="hexpand">True</property>
- <property name="ellipsize">end</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="folder_size">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="folder_elements">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Modified</property>
- <style>
- <class name="dim-label"/>
- <class name="folder-display-header"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="folder_time">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">1</property>
- </packing>
</child>
</template>
</interface>
diff --git a/src/baobab-folder-display.vala b/src/baobab-folder-display.vala
index 1e3c6a1..bfa7c89 100644
--- a/src/baobab-folder-display.vala
+++ b/src/baobab-folder-display.vala
@@ -20,7 +20,7 @@
namespace Baobab {
[GtkTemplate (ui = "/org/gnome/baobab/ui/baobab-folder-display.ui")]
- public class FolderDisplay : Gtk.Grid {
+ public class FolderDisplay : Gtk.Button {
static construct {
set_css_name ("folder-display");
}
@@ -36,6 +36,12 @@ namespace Baobab {
[GtkChild]
private Gtk.Label folder_time;
+ construct {
+ clicked.connect (() => { activated ();});
+ }
+
+ public signal void activated ();
+
Location location_;
public Location location {
set {
@@ -52,8 +58,11 @@ namespace Baobab {
}
}
+ Gtk.TreePath path_;
public new Gtk.TreePath path {
set {
+ path_ = value;
+
Gtk.TreeIter iter;
location.scanner.get_iter (out iter, value);
@@ -80,6 +89,9 @@ namespace Baobab {
folder_elements.label = format_items (elements);
folder_time.label = format_time_approximate (time);
}
+ get {
+ return path_;
+ }
}
void set_name_from_location () {
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index 1c87492..41ab8a3 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -141,6 +141,7 @@ namespace Baobab {
rings_chart.item_activated.connect (on_chart_item_activated);
treemap_chart.item_activated.connect (on_chart_item_activated);
pathbar.item_activated.connect (on_pathbar_item_activated);
+ folder_display.activated.connect (on_folder_display_activated);
// Setup drag-n-drop
drag_data_received.connect (on_drag_data_received);
@@ -314,6 +315,14 @@ namespace Baobab {
reroot_treeview (path);
}
+ void on_folder_display_activated () {
+ var path = folder_display.path;
+ if (path.get_depth () > 1) {
+ path.up ();
+ reroot_treeview (path);
+ }
+ }
+
void on_drag_data_received (Gtk.Widget widget, Gdk.DragContext context, int x, int y,
Gtk.SelectionData selection_data, uint target_type, uint time) {
File dir = null;