commit 86944555219eaa43bc7d14aa87082ed831877997 Author: Kamran Riaz Khan krkhan@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 <atagar1@gmail.com></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 = {}
tor-commits@lists.torproject.org