[Ocfs2-tools-commits] manish commits r963 - trunk/ocfs2console/ocfs2interface

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Jun 17 21:26:45 CDT 2005


Author: manish
Date: 2005-06-17 21:26:43 -0500 (Fri, 17 Jun 2005)
New Revision: 963

Modified:
   trunk/ocfs2console/ocfs2interface/bosa.py
   trunk/ocfs2console/ocfs2interface/console.py
   trunk/ocfs2console/ocfs2interface/ls.py
Log:
Saner gui for the file browser


Modified: trunk/ocfs2console/ocfs2interface/bosa.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/bosa.py	2005-06-18 00:17:30 UTC (rev 962)
+++ trunk/ocfs2console/ocfs2interface/bosa.py	2005-06-18 02:26:43 UTC (rev 963)
@@ -55,6 +55,7 @@
 class InfoLabel(gtk.Label):
     def __init__(self, field_type):
         gtk.Label.__init__(self)
+        self.set_selectable(True)
 
         self.field_type = field_type
 
@@ -65,6 +66,20 @@
 
         self.modify_font(INFO_LABEL_FONT)
 
+        if hasattr(field_type, 'width_chars'):
+            context = self.get_pango_context()
+
+            desc = INFO_LABEL_FONT.copy()
+            desc.set_size(context.get_font_description().get_size())
+
+            metrics = context.get_metrics(desc, context.get_language())
+
+            char_width = metrics.get_approximate_char_width()
+            digit_width = metrics.get_approximate_digit_width()
+            char_pixels = pango.PIXELS(max(char_width, digit_width))
+
+            self.set_size_request(char_pixels * field_type.width_chars, -1)
+
     def update(self, dentry, dinode):
         field = self.field_type(dentry, dinode)
         self.set_text(field.text)
@@ -79,7 +94,9 @@
         gtk.VBox.__init__(self, spacing=4)
 
         label = gtk.Label('/')
-        set_props(label, xalign=0.0)
+        set_props(label, xalign=0.0,
+                         selectable=True,
+                         wrap=True)
         self.pack_start(label, expand=False)
 
         self.path_label = label
@@ -164,11 +181,21 @@
 
         for column, field in enumerate(fields):
             label = gtk.Label(field.label)
-            set_props(label, xalign=0.0)
-            table.attach(label, column, column + 1, 0, 1)
 
+            if field.right_justify:
+                set_props(label, xalign=1.0)
+            else:
+                set_props(label, xalign=0.0)
+
+            xoptions = yoptions = gtk.FILL
+            xpadding = 2
+
+            table.attach(label, column, column + 1, 0, 1,
+                         xoptions, yoptions, xpadding)
+
             label = InfoLabel(field)
-            table.attach(label, column, column + 1, 1, 2)
+            table.attach(label, column, column + 1, 1, 2,
+                         xoptions, yoptions, xpadding)
 
             self.info_labels.append(label)
 
@@ -314,7 +341,11 @@
             self.display_dentry(dentry)
         else:
             self.display_clear()
+            if iter:
+                iter = store.iter_parent(iter)
 
+        self.path_label.set_text(self.get_fs_path(store, iter))
+
     def display_dentry(self, dentry):
         dinode = self.fs.read_cached_inode(dentry.inode)
 
@@ -335,6 +366,18 @@
         else:
             return None
 
+    def get_fs_path(self, store, iter):
+        parts = []
+
+        while iter:
+            dentry = self.get_dentry(store, iter)
+            parts.append(dentry.name)
+            iter = store.iter_parent(iter)
+
+        parts.reverse()
+
+        return '/' + '/'.join(parts)
+
 class TreeLevel(gidle.Idle):
     def __init__(self, diriter, dentry=None, parent=None):
         gidle.Idle.__init__(self)

Modified: trunk/ocfs2console/ocfs2interface/console.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/console.py	2005-06-18 00:17:30 UTC (rev 962)
+++ trunk/ocfs2console/ocfs2interface/console.py	2005-06-18 02:26:43 UTC (rev 963)
@@ -42,8 +42,8 @@
         gtk.Window.__init__(self)
 
         set_props(self, title='OCFS2 Console',
-                        default_width=520,
-                        default_height=420,
+                        default_width=600,
+                        default_height=460,
                         border_width=0)
 
         self.connect('delete_event', self.cleanup)

Modified: trunk/ocfs2console/ocfs2interface/ls.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/ls.py	2005-06-18 00:17:30 UTC (rev 962)
+++ trunk/ocfs2console/ocfs2interface/ls.py	2005-06-18 02:26:43 UTC (rev 963)
@@ -53,6 +53,8 @@
 }
 
 class Mode(Field):
+    width_chars = 10
+
     def real_get_text(self):
         text = ['-'] * 10
 
@@ -85,8 +87,11 @@
     label = '# Links'
     dinode_member = 'i_links_count'
     right_justify = True
+    width_chars = 5
 
 class ID2Name(Field):
+    width_chars = 8
+
     def real_get_text(self):
         idnum = getattr(self.dinode, self.dinode_member)
 
@@ -105,15 +110,17 @@
 
 class Size(Field):
     dinode_member = 'i_size'
-    right_justify = True
+    width_chars = 15
 
 class AllocSize(Field):
-    right_justify = True
+    width_chars = 15
 
     def real_get_text(self):
         return str(self.dinode.i_clusters * self.dinode.fs.fs_clustersize)
 
 class Timestamp(Field):
+    width_chars = 12
+
     # Ported from GNU coreutils ls
     time_formats = ('%b %e  %Y', '%b %e %H:%M')
 
@@ -133,7 +140,7 @@
     def real_get_text(self):
         return self.dentry.name
     
-fields = (Mode, Links, Owner, Group, Size, AllocSize, Timestamp, Name)
+fields = (Mode, Links, Owner, Group, Size, AllocSize, Timestamp)
 
 def main():
     import sys



More information about the Ocfs2-tools-commits mailing list