Changeset 21 for trunk

Show
Ignore:
Timestamp:
01/23/09 14:47:47 (3 years ago)
Author:
lasarux
Message:
  • main.py:
  • misc/utils.py:
  • plugins/info/info/init.py:
  • plugins/info/info/info.glade:
  • plugins/zfs/zfs/init.py:
  • misc/utils.py (added): Treeview class now in utils.py Info tab uses a treeview to output data
Location:
trunk
Files:
1 added
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r20 r21  
     12009-01-23  Pedro Gracia,,,  <lasarux@gmail.com> 
     2 
     3        * main.py: 
     4        * misc/utils.py: 
     5        * plugins/info/info/__init__.py: 
     6        * plugins/info/info/info.glade: 
     7        * plugins/zfs/zfs/__init__.py: 
     8        * misc/utils.py (added): 
     9        Treeview class now in utils.py 
     10        Info tab uses a treeview to output data 
     11 
    1122009-01-23  Pedro Gracia  <lasarux@gmail.com> 
    213 
  • trunk/main.py

    r20 r21  
    1414from misc.SimpleGladeApp import bindtextdomain 
    1515from misc.pexpect import pexpect, pxssh 
     16from misc.utils import Treeview 
    1617import config 
    1718 
     
    2526app_name = "simplepanels" 
    2627app_version = "0.0.1" 
    27  
    28 class Treeview: 
    29     def __init__(self, type, columns, data, treeview, headers=True): 
    30         # type: 'tree' or 'list' 
    31         # columns: hidden|visible, 'int'|'str'|'pix', name 
    32         # data: pairs -> parent|None, (columns_data) 
    33         # treeview: treeview object 
    34         COLUMNS = [] 
    35         self.store = treeview.get_model() 
    36         if self.store: 
    37             self.store.clear() 
    38             for i in treeview.get_columns(): 
    39                 treeview.remove_column(i) 
    40  
    41         # creating store and columns 
    42         for index, column in enumerate(columns): 
    43             if column[1] == 'int': 
    44                 COLUMNS.append('int') 
    45                 renderer = gtk.CellRendererText() 
    46                 if column[0] == 'visible': 
    47                     column = gtk.TreeViewColumn(column[2], renderer, text=index) 
    48                     treeview.append_column(column) 
    49             elif column[1] == 'str': 
    50                 COLUMNS.append('str') 
    51                 renderer = gtk.CellRendererText() 
    52                 if column[0] == 'visible': 
    53                     column = gtk.TreeViewColumn(column[2], renderer, text=index) 
    54                     treeview.append_column(column) 
    55             elif column[1] == 'bool': 
    56                 COLUMNS.append('str') 
    57                 renderer = gtk.CellRendererToggle() 
    58                 if column[0] == 'visible': 
    59                     column = gtk.TreeViewColumn(column[2], renderer, active=index) 
    60                     treeview.append_column(column) 
    61             elif column[1] == 'pix': 
    62                 COLUMNS.append('gtk.gdk.Pixbuf') 
    63                 renderer = gtk.CellRendererPixbuf() 
    64                 if column[0] == 'visible': 
    65                     column = gtk.TreeViewColumn(column[2], renderer, pixbuf=index) 
    66                     treeview.append_column(column) 
    67  
    68         if type == 'tree': 
    69             self.store = eval('gtk.TreeStore(%s)'%', '.join(COLUMNS)) 
    70         else: 
    71             self.store = eval('gtk.ListStore(%s)'%', '.join(COLUMNS)) 
    72         treeview.set_model(self.store) 
    73         treeview.show() 
    74         treeview.set_headers_visible(headers) 
    75  
    76         # feeding store with data: {parent: (childrens, )} 
    77         rows = [] 
    78         if type == 'tree': #treeview 
    79             for header in data.keys(): 
    80                 row_data = (None, header, None) 
    81                 parent = self.store.append(None, row_data) 
    82                 #rows.append(parent) #add parent 
    83                 for child in data[header]: 
    84                     self.store.append(parent, child) 
    85         else: #listview 
    86             for row in data: 
    87                 self.store.append(row) 
    88  
    89         treeview.set_headers_visible(headers) 
    9028 
    9129class MainWnd(SimpleGladeApp): 
  • trunk/plugins/info/info/__init__.py

    r20 r21  
    33from misc.SimpleGladeApp import bindtextdomain 
    44from misc.pexpect import pexpect, pxssh 
     5from misc.utils import Treeview 
    56import simplepanels 
    67 
     
    2930 
    3031    def send_command(self, command, os): 
    31         textbuffer = self.info_tview.get_buffer() 
    32         textbuffer.set_text("Remoting...") 
     32        #textbuffer = self.info_tview.get_buffer() 
     33        #textbuffer.set_text("Remoting...") 
    3334        rcommand = self.main.config.get_command(command, os) 
    3435         
     
    3637        s.sendline(rcommand) 
    3738        s.prompt() 
    38         result = s.before 
    39         textbuffer.set_text(result) 
     39        result = s.before.split("\n")[2:] # get the first line off (command) 
     40 
     41        #textbuffer.set_text(result) 
     42 
     43        columns = [('visible', 'str', 'Filesystem'), 
     44                   ('visible', 'str', 'Size'), 
     45                   ('visible', 'str', 'Used'), 
     46                   ('visible', 'str', 'Availd'), 
     47                   ('visible', 'str', 'Use%'), 
     48                   ('visible', 'str', 'Mounted on'), 
     49                   ] 
     50        data = [] 
     51        rows = [] 
     52        for i in result: 
     53            for j in i.split(): 
     54                rows.append(j) 
     55            if len(rows) == len(columns): 
     56                data.append(rows) 
     57                rows = [] 
     58             
     59        self.t = Treeview("list", columns, data, self.list_treeview) 
  • trunk/plugins/info/info/info.glade

    r3 r21  
    1 <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> 
    2 <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> 
    3  
     1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
     2<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 
     3<!--*- mode: xml -*--> 
    44<glade-interface> 
    5  
    6 <widget class="GtkWindow" id="info_wnd"> 
    7   <property name="title" translatable="yes">window1</property> 
    8   <property name="type">GTK_WINDOW_TOPLEVEL</property> 
    9   <property name="window_position">GTK_WIN_POS_NONE</property> 
    10   <property name="modal">False</property> 
    11   <property name="default_width">300</property> 
    12   <property name="default_height">300</property> 
    13   <property name="resizable">True</property> 
    14   <property name="destroy_with_parent">False</property> 
    15   <property name="decorated">True</property> 
    16   <property name="skip_taskbar_hint">False</property> 
    17   <property name="skip_pager_hint">False</property> 
    18   <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> 
    19   <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> 
    20   <property name="focus_on_map">True</property> 
    21   <property name="urgency_hint">False</property> 
    22  
    23   <child> 
    24     <widget class="GtkVBox" id="root"> 
    25       <property name="border_width">4</property> 
    26       <property name="visible">True</property> 
    27       <property name="homogeneous">False</property> 
    28       <property name="spacing">4</property> 
    29  
    30       <child> 
    31         <widget class="GtkHBox" id="hbox1"> 
    32           <property name="visible">True</property> 
    33           <property name="homogeneous">False</property> 
    34           <property name="spacing">4</property> 
    35  
    36           <child> 
    37             <widget class="GtkLabel" id="label1"> 
    38               <property name="visible">True</property> 
    39               <property name="label" translatable="yes">Choose</property> 
    40               <property name="use_underline">False</property> 
    41               <property name="use_markup">False</property> 
    42               <property name="justify">GTK_JUSTIFY_LEFT</property> 
    43               <property name="wrap">False</property> 
    44               <property name="selectable">False</property> 
    45               <property name="xalign">0.5</property> 
    46               <property name="yalign">0.5</property> 
    47               <property name="xpad">0</property> 
    48               <property name="ypad">0</property> 
    49               <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> 
    50               <property name="width_chars">-1</property> 
    51               <property name="single_line_mode">False</property> 
    52               <property name="angle">0</property> 
    53             </widget> 
    54             <packing> 
    55               <property name="padding">0</property> 
    56               <property name="expand">False</property> 
    57               <property name="fill">False</property> 
    58             </packing> 
    59           </child> 
    60  
    61           <child> 
    62             <widget class="GtkComboBoxEntry" id="info_combo"> 
    63               <property name="visible">True</property> 
    64               <property name="items" translatable="yes">uname 
     5  <widget class="GtkWindow" id="info_wnd"> 
     6    <property name="title" translatable="yes">window1</property> 
     7    <property name="default_width">300</property> 
     8    <property name="default_height">300</property> 
     9    <child> 
     10      <widget class="GtkVBox" id="root"> 
     11        <property name="visible">True</property> 
     12        <property name="border_width">4</property> 
     13        <property name="spacing">4</property> 
     14        <child> 
     15          <widget class="GtkHBox" id="hbox1"> 
     16            <property name="visible">True</property> 
     17            <property name="spacing">4</property> 
     18            <child> 
     19              <widget class="GtkLabel" id="label1"> 
     20                <property name="visible">True</property> 
     21                <property name="label" translatable="yes">Choose</property> 
     22              </widget> 
     23              <packing> 
     24                <property name="expand">False</property> 
     25                <property name="fill">False</property> 
     26              </packing> 
     27            </child> 
     28            <child> 
     29              <widget class="GtkComboBoxEntry" id="info_combo"> 
     30                <property name="visible">True</property> 
     31                <property name="items" translatable="yes">uname 
    6532ps 
    6633mount 
    6734df</property> 
    68               <property name="add_tearoffs">False</property> 
    69               <property name="has_frame">True</property> 
    70               <property name="focus_on_click">True</property> 
    71               <signal name="changed" handler="on_info_combo_changed" last_modification_time="Sat, 03 May 2008 20:44:46 GMT"/> 
    72             </widget> 
    73             <packing> 
    74               <property name="padding">0</property> 
    75               <property name="expand">True</property> 
    76               <property name="fill">True</property> 
    77             </packing> 
    78           </child> 
    79         </widget> 
    80         <packing> 
    81           <property name="padding">0</property> 
    82           <property name="expand">False</property> 
    83           <property name="fill">False</property> 
    84         </packing> 
    85       </child> 
    86  
    87       <child> 
    88         <widget class="GtkScrolledWindow" id="scrolledwindow1"> 
    89           <property name="visible">True</property> 
    90           <property name="can_focus">True</property> 
    91           <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> 
    92           <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 
    93           <property name="shadow_type">GTK_SHADOW_IN</property> 
    94           <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 
    95  
    96           <child> 
    97             <widget class="GtkTextView" id="info_tview"> 
    98               <property name="width_request">300</property> 
    99               <property name="height_request">300</property> 
    100               <property name="visible">True</property> 
    101               <property name="can_focus">True</property> 
    102               <property name="editable">True</property> 
    103               <property name="overwrite">False</property> 
    104               <property name="accepts_tab">True</property> 
    105               <property name="justification">GTK_JUSTIFY_LEFT</property> 
    106               <property name="wrap_mode">GTK_WRAP_NONE</property> 
    107               <property name="cursor_visible">True</property> 
    108               <property name="pixels_above_lines">0</property> 
    109               <property name="pixels_below_lines">0</property> 
    110               <property name="pixels_inside_wrap">0</property> 
    111               <property name="left_margin">0</property> 
    112               <property name="right_margin">0</property> 
    113               <property name="indent">0</property> 
    114               <property name="text" translatable="yes"></property> 
    115             </widget> 
    116           </child> 
    117         </widget> 
    118         <packing> 
    119           <property name="padding">0</property> 
    120           <property name="expand">False</property> 
    121           <property name="fill">False</property> 
    122         </packing> 
    123       </child> 
    124     </widget> 
    125   </child> 
    126 </widget> 
    127  
     35                <signal name="changed" handler="on_info_combo_changed"/> 
     36                <child internal-child="entry"> 
     37                  <widget class="GtkEntry" id="comboboxentry-entry1"> 
     38                  </widget> 
     39                </child> 
     40              </widget> 
     41              <packing> 
     42                <property name="position">1</property> 
     43              </packing> 
     44            </child> 
     45          </widget> 
     46          <packing> 
     47            <property name="expand">False</property> 
     48            <property name="fill">False</property> 
     49          </packing> 
     50        </child> 
     51        <child> 
     52          <widget class="GtkScrolledWindow" id="scrolledwindow1"> 
     53            <property name="visible">True</property> 
     54            <property name="can_focus">True</property> 
     55            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property> 
     56            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 
     57            <property name="shadow_type">GTK_SHADOW_IN</property> 
     58            <child> 
     59              <widget class="GtkTreeView" id="list_treeview"> 
     60                <property name="visible">True</property> 
     61                <property name="can_focus">True</property> 
     62                <property name="headers_clickable">True</property> 
     63                <property name="rules_hint">True</property> 
     64              </widget> 
     65            </child> 
     66          </widget> 
     67          <packing> 
     68            <property name="position">1</property> 
     69          </packing> 
     70        </child> 
     71      </widget> 
     72    </child> 
     73  </widget> 
    12874</glade-interface> 
  • trunk/plugins/zfs/zfs/__init__.py

    r19 r21  
    22from misc.SimpleGladeApp import SimpleGladeApp 
    33from misc.SimpleGladeApp import bindtextdomain 
    4 from misc.pexpect import pexpect, pxssh 
     4from misc.utils import Treeview 
    55import simplepanels 
    66import gtk 
     
    1717 
    1818 
    19 class Treeview: 
    20     """TODO: remove this fast!!!!""" 
    21     def __init__(self, type, columns, data, treeview, headers=True): 
    22         # type: 'tree' or 'list' 
    23         # columns: hidden|visible, 'int'|'str'|'pix', name 
    24         # data: pairs -> parent|None, (columns_data) 
    25         # treeview: treeview object 
    26         COLUMNS = [] 
    27         self.store = treeview.get_model() 
    28         if self.store: 
    29             self.store.clear() 
    30             for i in treeview.get_columns(): 
    31                 treeview.remove_column(i) 
    3219 
    33         # creating store and columns 
    34         for index, column in enumerate(columns): 
    35             if column[1] == 'int': 
    36                 COLUMNS.append('int') 
    37                 renderer = gtk.CellRendererText() 
    38                 if column[0] == 'visible': 
    39                     column = gtk.TreeViewColumn(column[2], renderer, text=index) 
    40                     treeview.append_column(column) 
    41             elif column[1] == 'str': 
    42                 COLUMNS.append('str') 
    43                 renderer = gtk.CellRendererText() 
    44                 if column[0] == 'visible': 
    45                     column = gtk.TreeViewColumn(column[2], renderer, text=index) 
    46                     treeview.append_column(column) 
    47             elif column[1] == 'bool': 
    48                 COLUMNS.append('str') 
    49                 renderer = gtk.CellRendererToggle() 
    50                 if column[0] == 'visible': 
    51                     column = gtk.TreeViewColumn(column[2], renderer, active=index) 
    52                     treeview.append_column(column) 
    53             elif column[1] == 'pix': 
    54                 COLUMNS.append('gtk.gdk.Pixbuf') 
    55                 renderer = gtk.CellRendererPixbuf() 
    56                 if column[0] == 'visible': 
    57                     column = gtk.TreeViewColumn(column[2], renderer, pixbuf=index) 
    58                     treeview.append_column(column) 
    59  
    60         if type == 'tree': 
    61             self.store = eval('gtk.TreeStore(%s)'%', '.join(COLUMNS)) 
    62         else: 
    63             self.store = eval('gtk.ListStore(%s)'%', '.join(COLUMNS)) 
    64         treeview.set_model(self.store) 
    65         treeview.set_headers_visible(headers) 
    66         treeview.show() 
    67  
    68         # feeding store with data: {parent: (childrens, )} 
    69         rows = [] 
    70         if type == 'tree': #treeview 
    71             for header in data.keys(): 
    72                 row_data = (None, header, None) 
    73                 parent = self.store.append(None, row_data) 
    74                 #rows.append(parent) #add parent 
    75                 for child in data[header]: 
    76                     self.store.append(parent, child) 
    77         else: #listview 
    78             for row in data: 
    79                 self.store.append(row) 
    80  
    81         treeview.set_headers_visible(headers) 
    8220 
    8321class ZFSPlugin(object, SimpleGladeApp):