[tor-commits] [arm/master] Initial commit for config panel.

atagar at torproject.org atagar at torproject.org
Thu Aug 11 15:27:56 UTC 2011


commit 86944555219eaa43bc7d14aa87082ed831877997
Author: Kamran Riaz Khan <krkhan at inspirated.com>
Date:   Wed Jul 20 17:04:57 2011 +0500

    Initial commit for config panel.
    
    List values and show desc in the text view.
---
 src/gui/arm.xml        |  155 ++++++++++++++++++++++++++++++++++++------------
 src/gui/configPanel.py |   59 ++++++++++++++++++
 src/gui/controller.py  |    3 +-
 3 files changed, 178 insertions(+), 39 deletions(-)

diff --git a/src/gui/arm.xml b/src/gui/arm.xml
index 2b9ad95..6c206fd 100644
--- a/src/gui/arm.xml
+++ b/src/gui/arm.xml
@@ -26,56 +26,32 @@
       <column type="gchararray"/>
     </columns>
   </object>
-  <object class="GtkListStore" id="liststore_config">
+  <object class="GtkListStore" id="liststore_log">
     <columns>
-      <!-- column-name key -->
+      <!-- column-name timestamp_raw -->
+      <column type="gulong"/>
+      <!-- column-name timestamp -->
       <column type="gchararray"/>
-      <!-- column-name value -->
+      <!-- column-name type -->
       <column type="gchararray"/>
-      <!-- column-name desc -->
+      <!-- column-name msg -->
       <column type="gchararray"/>
       <!-- column-name foreground -->
       <column type="gchararray"/>
     </columns>
-    <data>
-      <row>
-        <col id="0" translatable="yes">BandwidthRate</col>
-        <col id="1" translatable="yes">5242880</col>
-        <col id="2" translatable="yes">Average bandwidth usage limit</col>
-        <col id="3" translatable="yes">#368918</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">BandwidthBurst</col>
-        <col id="1" translatable="yes">10485760</col>
-        <col id="2" translatable="yes">Maximum bandwidth usage limit</col>
-        <col id="3" translatable="yes">#368918</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">RelayBandwidthBurst</col>
-        <col id="1" translatable="yes">0 B</col>
-        <col id="2" translatable="yes">Maximum bandwidth usage limit for relaying</col>
-        <col id="3" translatable="yes">#368918</col>
-      </row>
-      <row>
-        <col id="0" translatable="yes">ControlPort</col>
-        <col id="1" translatable="yes">9051</col>
-        <col id="2" translatable="yes">Port providing access to tor controllers (arm, vidalia, etc)</col>
-        <col id="3" translatable="yes">#368918</col>
-      </row>
-    </data>
   </object>
-  <object class="GtkListStore" id="liststore_log">
+  <object class="GtkListStore" id="liststore_config">
     <columns>
-      <!-- column-name timestamp_raw -->
-      <column type="gulong"/>
-      <!-- column-name timestamp -->
+      <!-- column-name option -->
       <column type="gchararray"/>
-      <!-- column-name type -->
+      <!-- column-name value -->
       <column type="gchararray"/>
-      <!-- column-name msg -->
+      <!-- column-name summary -->
       <column type="gchararray"/>
       <!-- column-name foreground -->
       <column type="gchararray"/>
+      <!-- column-name desc -->
+      <column type="gchararray"/>
     </columns>
   </object>
   <object class="GtkWindow" id="window_main">
@@ -410,6 +386,106 @@
                       </packing>
                     </child>
                     <child>
+                      <object class="GtkVPaned" id="vpaned_config">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow_config_desc">
+                            <property name="height_request">60</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <object class="GtkTextView" id="textview_config_desc">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="editable">False</property>
+                                <property name="wrap_mode">word</property>
+                                <property name="cursor_visible">False</property>
+                                <property name="buffer">textbuffer_config_desc</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="resize">False</property>
+                            <property name="shrink">True</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow_config">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <object class="GtkTreeView" id="treeview_config">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="model">liststore_config</property>
+                                <property name="headers_clickable">False</property>
+                                <property name="search_column">0</property>
+                                <child>
+                                  <object class="GtkTreeViewColumn" id="treeviewcolumn_config_option">
+                                    <property name="title">Option</property>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="cellrenderertext_config_option"/>
+                                      <attributes>
+                                        <attribute name="foreground">3</attribute>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkTreeViewColumn" id="treeviewcolumn_config_value">
+                                    <property name="title">Value</property>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="cellrenderertext_config_value"/>
+                                      <attributes>
+                                        <attribute name="foreground">3</attribute>
+                                        <attribute name="text">1</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="GtkTreeViewColumn" id="treeviewcolumn_config_summary">
+                                    <property name="title">Description</property>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="cellrenderertext_config_summary"/>
+                                      <attributes>
+                                        <attribute name="foreground">3</attribute>
+                                        <attribute name="text">2</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="resize">True</property>
+                            <property name="shrink">True</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child type="tab">
+                      <object class="GtkLabel" id="label_config">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Configuration</property>
+                      </object>
+                      <packing>
+                        <property name="position">3</property>
+                        <property name="tab_fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
                       <object class="GtkScrolledWindow" id="scrolledwindow_general">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
@@ -451,7 +527,7 @@
                         </child>
                       </object>
                       <packing>
-                        <property name="position">2</property>
+                        <property name="position">3</property>
                       </packing>
                     </child>
                     <child type="tab">
@@ -460,7 +536,7 @@
                         <property name="label" translatable="yes">General</property>
                       </object>
                       <packing>
-                        <property name="position">2</property>
+                        <property name="position">3</property>
                         <property name="tab_fill">False</property>
                       </packing>
                     </child>
@@ -1264,4 +1340,7 @@ Damian Johnson &lt;atagar1 at gmail.com&gt;</property>
     <property name="stock_id">gtk-about</property>
     <signal name="activate" handler="on_action_about_activate"/>
   </object>
+  <object class="GtkTextBuffer" id="textbuffer_config_desc">
+    <property name="text" translatable="yes">Select a configuration option to see its description.</property>
+  </object>
 </interface>
diff --git a/src/gui/configPanel.py b/src/gui/configPanel.py
new file mode 100644
index 0000000..4001058
--- /dev/null
+++ b/src/gui/configPanel.py
@@ -0,0 +1,59 @@
+"""
+Configuration panel.
+"""
+
+import random
+import sys
+import time
+
+import gobject
+import gtk
+
+from cli.configPanel import (ConfigPanel as CliConfigPanel, Field, State)
+from util import connections, gtkTools, sysTools, torTools, uiTools
+from TorCtl import TorCtl
+
+class ConfigPanel(CliConfigPanel):
+  def __init__(self, builder):
+    CliConfigPanel.__init__(self, None, State.TOR)
+
+    self.builder = builder
+
+    gobject.idle_add(self._fill_entries)
+    gobject.timeout_add(3000, self._timeout_fill_entries)
+
+  def pack_widgets(self):
+    treeView = self.builder.get_object('treeview_config')
+    treeView.connect('cursor-changed', self.on_treeview_config_cursor_changed)
+
+  def _timeout_fill_entries(self):
+    self._fill_entries()
+
+    return True
+
+  def _fill_entries(self):
+    self.valsLock.acquire()
+
+    listStore = self.builder.get_object('liststore_config')
+    listStore.clear()
+
+    for entry in self._getConfigOptions():
+      option = entry.get(Field.OPTION)
+      value = entry.get(Field.VALUE)
+      summary = entry.get(Field.SUMMARY)
+      desc = entry.get(Field.DESCRIPTION)
+      row = (option, value, summary, '#368918', desc)
+      listStore.append(row)
+
+    self.valsLock.release()
+
+  def on_treeview_config_cursor_changed(self, widget, data=None):
+    treeSelection = widget.get_selection()
+
+    (model, iter) = treeSelection.get_selected()
+    desc = model.get_value(iter, 4)
+
+    textBuffer = self.builder.get_object('textbuffer_config_desc')
+    textBuffer.set_text(desc)
+    print desc
+
diff --git a/src/gui/controller.py b/src/gui/controller.py
index 19b9513..52bb2c6 100644
--- a/src/gui/controller.py
+++ b/src/gui/controller.py
@@ -6,7 +6,7 @@ import gtk
 
 from connections import connPanel
 from gui.graphing import bandwidthStats
-from gui import generalPanel, logPanel
+from gui import configPanel, generalPanel, logPanel
 from util import log, torTools
 
 gobject.threads_init()
@@ -29,6 +29,7 @@ class GuiController:
     panelClasses = (logPanel.LogPanel,
               bandwidthStats.BandwidthStats,
               connPanel.ConnectionPanel,
+              configPanel.ConfigPanel,
               generalPanel.GeneralPanel)
     self.panels = {}
 





More information about the tor-commits mailing list