Skip to content

Commit

Permalink
Use popover (#140)
Browse files Browse the repository at this point in the history
* reduced ui update period to 1 sec

* replaced trading history menu with gtk popover
  • Loading branch information
ilcardella committed Feb 22, 2020
1 parent 46b20d2 commit 50108bc
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 27 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -109,3 +109,4 @@ pid.txt
Pipfile.lock

*~
*.glade#
2 changes: 1 addition & 1 deletion src/UI/DataInterface.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def __init__(self, client, data_callback):
self._client = client
self._data_callback = data_callback
# This interval determines how often the UI is updated
self._interval = 10
self._interval = 1

def task(self):
# Get the portfolios and call the callback to update the UI
Expand Down
61 changes: 45 additions & 16 deletions src/UI/assets/gtk/notebook_page_layout.glade
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,48 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkMenu" id="trading_history_menu">
<property name="visible">True</property>
<object class="GtkPopoverMenu" id="trading_history_popover">
<property name="can_focus">False</property>
<property name="position">bottom</property>
<child>
<object class="GtkMenuItem" id="add_trade_menu_item">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Add...</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="delete_trade_menu_item">
<object class="GtkBox" id="trading_history_popover_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Delete...</property>
<property name="use_underline">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkModelButton" id="trading_history_popover_add">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="text" translatable="yes">Add</property>
<property name="centered">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">3</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkModelButton" id="trading_history_popover_delete">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="text" translatable="yes">Delete</property>
<property name="centered">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">3</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="submenu">main</property>
</packing>
</child>
</object>
<object class="GtkListStore" id="trading_history_tree_model">
Expand Down Expand Up @@ -465,14 +489,15 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">positions_tree_model</property>
<property name="reorderable">True</property>
<property name="headers_clickable">False</property>
<property name="enable_search">False</property>
<property name="search_column">0</property>
<property name="fixed_height_mode">True</property>
<property name="show_expanders">False</property>
<property name="enable_grid_lines">horizontal</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="positions_tree_selection"/>
<object class="GtkTreeSelection" id="positions_tree_selection">
<property name="mode">none</property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="column_symbol">
Expand Down Expand Up @@ -603,7 +628,11 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">trading_history_tree_model</property>
<property name="headers_clickable">False</property>
<property name="enable_search">False</property>
<property name="search_column">0</property>
<property name="show_expanders">False</property>
<property name="enable_grid_lines">horizontal</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="trading_history_tree_selection"/>
</child>
Expand Down
30 changes: 20 additions & 10 deletions src/UI/gtk/PortfolioPage.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk as gtk
from gi.repository import Gdk as gdk

currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
Expand Down Expand Up @@ -37,9 +38,9 @@
TREE_POSITIONS_MODEL = "positions_tree_model"
TREE_TRADING_HISTORY_MODEL = "trading_history_tree_model"
TREE_TRADING_HISTORY = "trading_history_tree"
TREE_TRADING_HISTORY_MENU = "trading_history_menu"
TREE_TRADING_HISTORY_ADD_MENU_ITEM = "add_trade_menu_item"
TREE_TRADING_HISTORY_DELETE_MENU_ITEM = "delete_trade_menu_item"
TREE_TRADING_HISTORY_MENU = "trading_history_popover"
TREE_TRADING_HISTORY_MENU_ADD = "trading_history_popover_add"
TREE_TRADING_HISTORY_MENU_DELETE = "trading_history_popover_delete"


class PortfolioPage(gtk.Box):
Expand Down Expand Up @@ -78,11 +79,10 @@ def _load_UI(self, filepath):
self._history_tree = builder.get_object(TREE_TRADING_HISTORY)
# Get the popup menu
self._history_menu = builder.get_object(TREE_TRADING_HISTORY_MENU)
_history_menu_add_item = builder.get_object(TREE_TRADING_HISTORY_ADD_MENU_ITEM)
_history_menu_add_item = builder.get_object(TREE_TRADING_HISTORY_MENU_ADD)
_history_menu_delete_item = builder.get_object(
TREE_TRADING_HISTORY_DELETE_MENU_ITEM
TREE_TRADING_HISTORY_MENU_DELETE
)
self._history_menu.show_all()
# Link callbacks to widgets
save_button.connect("clicked", self._on_save_event)
save_as_button.connect("clicked", self._on_save_as_event)
Expand All @@ -92,8 +92,8 @@ def _load_UI(self, filepath):
self._history_tree.connect(
"button_press_event", self._on_trading_history_button_press
)
_history_menu_add_item.connect("activate", self._on_add_event)
_history_menu_delete_item.connect("activate", self._on_delete_event)
_history_menu_add_item.connect("clicked", self._on_add_event)
_history_menu_delete_item.connect("clicked", self._on_delete_event)
# Set initial status of refresh switch and button based on portfolio status
self._update_refresh_box()
# Add the top level container to self
Expand All @@ -102,8 +102,18 @@ def _load_UI(self, filepath):
self.add(top_level)

def _on_trading_history_button_press(self, widget, event):
if event.button == 3: # Right click
self._history_menu.popup(None, None, None, None, event.button, event.time)
# Shows the contect menu only on right click
if event.button != 3:
return False
rect = gdk.Rectangle()
rect.x = event.x
rect.y = event.y + 30
rect.width = rect.height = 1
self._history_menu.set_relative_to(self._history_tree)
self._history_menu.set_pointing_to(rect)
self._history_menu.show_all()
self._history_menu.popup()
return True

def _reset_cache(self):
self._cache = {"trade_history": []}
Expand Down

0 comments on commit 50108bc

Please sign in to comment.