Skip to content
Snippets Groups Projects
Commit 39a9a792 authored by inso's avatar inso
Browse files

Merge branch 'dev0112' into dev

parents 178f6bd7 23e0f20d
Branches
Tags
No related merge requests found
Showing
with 16749 additions and 861 deletions
sudo: false os: linux
language: python matrix:
python: include:
# We don't actually use the Travis Python, but this keeps it organized. - os: osx
- "3.5" - dist: trusty
addons: sudo: required
apt: exclude:
packages: - os: linux
- libxcb1
- libxcb1-dev
- libx11-xcb1
- libx11-xcb-dev
- libxcb-keysyms1
- libxcb-keysyms1-dev
- libxcb-image0
- libxcb-image0-dev
- libxcb-shm0
- libxcb-shm0-dev
- libxcb-icccm4
- libxcb-icccm4-dev
- libxcb-sync0
- libxcb-sync0-dev
- libxcb-xfixes0-dev
- libxrender-dev
- libxcb-shape0-dev
- libxcb-randr0-dev
- libxcb-render-util0
- libxcb-render-util0-dev
- libxcb-glx0-dev
- libgl1-mesa-dri
- libegl1-mesa
- libpcre3-dev
before_install: env:
# Update - PYENV_PYTHON_VERSION=3.5.0
- pwd
# Install and configure conda
- wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PATH"
- hash -r
- conda config --set always_yes yes --set changeps1 no
- conda config --add channels inso/channel/sakia
- conda config --add channels pyzo
- conda config --add channels mmcauliffe
- conda update -q conda
# Useful for debugging any issues with conda
- conda info -a
before_install:
- ci/travis/before_install.sh
install: install:
- conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION pyqt5 libpng libsodium=1.0.3 - ci/travis/build.sh
- source activate test-environment
- ldd $HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms/*.so
- pip install coveralls cx_Freeze
- pip install -r requirements.txt
- python gen_resources.py
- python gen_translations.py
- python setup.py build
before_script:
# screen must be 24bpp otherwise pyqt5 crashes
# see: https://github.com/pytest-dev/pytest-qt/issues/35
- export XVFBARGS="-screen 0 1280x1024x24"
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
script: script:
- export QT_QPA_PLATFORM_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins/platforms; - ci/travis/test.sh
- export QT_PLUGIN_PATH=$HOME/miniconda/envs/test-environment/lib/qt5/plugins
- export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb
- coverage run --source=sakia.core,sakia.gui,sakia.models run_tests.py
after_success: after_success:
- coverage -rm - ci/travis/after_success.sh
- coveralls before_deploy:
- ci/travis/before_deploy.sh
deploy:
provider: releases
api_key:
secure: MUdvTDBeCxO9d/EpzIhr+QYra/KxgYkXX6177SjqWCWDqw9xB3fwSUj8I9ht9DGtwVdadtveumtvLw3pbtVIR0GtIPC9pyvtNz4j6T4Ei3TSE6+StXdMK4NnInvPeTRlobGL+9sZt9MwheJwZ8YGewhBcR0F5UzVfxWeSSrxmyk=
file: sakia-${TRAVIS_OS_NAME}.zip
skip_cleanup: true
on:
tags: true
#!/usr/bin/env bash
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
cd $HOME/build/ucoin-io/sakia
pyenv activate sakia-env
coverage -rm
coveralls
\ No newline at end of file
#!/usr/bin/env bash
if [ $TRAVIS_OS_NAME == "osx" ]
then
zip -r sakia-${TRAVIS_OS_NAME}.zip build/*.dmg
elif [ $TRAVIS_OS_NAME == "linux" ]
then
zip -r sakia-${TRAVIS_OS_NAME}.zip build/exe*
fi
#!/usr/bin/env bash
if [ $TRAVIS_OS_NAME == "osx" ]
then
brew update
brew install libsodium
## Ensure your brew QT version is up to date. (brew install qt -> qt 4.8)
brew install qt5
brew link --force qt5
brew install pyenv-virtualenv
elif [ $TRAVIS_OS_NAME == "linux" ]
then
sudo apt-get update
sudo apt-get install -qq -y libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 \
libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev \
libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0 \
libxcb-render-util0-dev libxcb-glx0-dev libgl1-mesa-dri libegl1-mesa libpcre3-dev \
curl qt5-qmake qtbase5-dev qttools5-dev-tools libqt5svg5-dev libdbus-1-dev libdbus-glib-1-dev autoconf automake libtool
wget http://archive.ubuntu.com/ubuntu/pool/universe/libs/libsodium/libsodium13_1.0.1-1_amd64.deb
sudo dpkg -i libsodium13_1.0.1-1_amd64.deb
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
fi
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv activate sakia-env
if [ $? -ne 0 ]
then
echo "Sakia env cache cleared, rebuilding it..."
if [ $TRAVIS_OS_NAME == "osx" ]
then
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install $PYENV_PYTHON_VERSION
elif [ $TRAVIS_OS_NAME == "linux" ]
then
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install $PYENV_PYTHON_VERSION
fi
pyenv shell $PYENV_PYTHON_VERSION
pyenv virtualenv sakia-env
cd $HOME
wget http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz
tar xzf sip-4.17.tar.gz
cd sip-4.17/
pyenv activate sakia-env
python configure.py
make && make install
pyenv rehash
cd $HOME
wget http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz
tar xzf PyQt-gpl-5.5.1.tar.gz
cd PyQt-gpl-5.5.1/
pyenv activate sakia-env
if [ $TRAVIS_OS_NAME == "osx" ]
then
python configure.py --confirm-license
elif [ $TRAVIS_OS_NAME == "linux" ]
then
python configure.py --qmake "/usr/lib/x86_64-linux-gnu/qt5/bin/qmake" --confirm-license
fi
make -j 2 && make install
pyenv rehash
fi
\ No newline at end of file
#!/usr/bin/env bash
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
cd $HOME/build/ucoin-io/sakia
pyenv activate sakia-env
pip install coveralls
pip install cx_Freeze
pip install -r requirements.txt
if [ $TRAVIS_OS_NAME == "linux" ]
then
pip install -U git+https://github.com/posborne/dbus-python.git
pip install notify2
fi
python gen_resources.py
python gen_translations.py
if [ $TRAVIS_OS_NAME == "osx" ]
then
python setup.py bdist_dmg
elif [ $TRAVIS_OS_NAME == "linux" ]
then
python setup.py build
cp ~/.pyenv/versions/$PYENV_PYTHON_VERSION/lib/libpython3.*m.so.1.0 build/exe.linux-x86_64-3.4/
fi
#!/usr/bin/env bash
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
cd $HOME/build/ucoin-io/sakia
pyenv activate sakia-env
if [ $TRAVIS_OS_NAME == "linux" ]
then
export XVFBARGS="-screen 0 1280x1024x24"
export DISPLAY=:99.0
sh -e /etc/init.d/xvfb start
sleep 3
fi
coverage run --source=sakia.core,sakia.gui,sakia.models run_tests.py
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
[Paths]
Plugins = '.'
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
<item> <item>
<widget class="QGroupBox" name="groupBox_2"> <widget class="QGroupBox" name="groupBox_2">
<property name="title"> <property name="title">
<string>Communities membership</string> <string>Communities</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
......
...@@ -16,7 +16,7 @@ includes = ["sip", "re", "json", "logging", ...@@ -16,7 +16,7 @@ includes = ["sip", "re", "json", "logging",
"ucoinpy", "pylibscrypt", "aiohttp", "asyncio", "ucoinpy", "pylibscrypt", "aiohttp", "asyncio",
"quamash", "jsonschema"] "quamash", "jsonschema"]
exclude = ['.git'] exclude = ['.git']
packages = ["libnacl", "encodings", "jsonschema"] packages = ["libnacl", "encodings"]
includefiles = [] includefiles = []
zipincludes = [] zipincludes = []
...@@ -53,22 +53,26 @@ if sys.platform == "win32": ...@@ -53,22 +53,26 @@ if sys.platform == "win32":
includefiles.append((os.path.join(path, "Scripts", "plugins", "iconengines", f), os.path.join("iconengines", f) )) includefiles.append((os.path.join(path, "Scripts", "plugins", "iconengines", f), os.path.join("iconengines", f) ))
includefiles.append(libEGL_path) includefiles.append(libEGL_path)
includefiles.append(libsodium_path) includefiles.append(libsodium_path)
elif sys.platform == "darwin":
pass
else: else:
libsodium_path = ""
print(QtCore.QCoreApplication.libraryPaths())
schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas") schemas = os.path.join(site.getsitepackages()[0], "jsonschema", "schemas")
onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ] onlyfiles = [ f for f in listdir(schemas) if isfile(join(schemas,f)) ]
for f in onlyfiles: for f in onlyfiles:
zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f))) zipincludes.append((os.path.join(schemas, f), os.path.join("jsonschema", "schemas", f)))
# Check if we are in Conda env if sys.platform == "darwin":
if 'CONDA_ENV_PATH' in os.environ: info = subprocess.check_output(["brew", "info", "libsodium"])
libsodium_path = os.path.join(os.environ['CONDA_ENV_PATH'], "lib", info = info.decode().splitlines(keepends=False)
"libsodium.so.13") if len(info) > 1:
includefiles.append((libsodium_path, "libsodium.so.13")) library_path = info[3].split(" ")[0]
libsodium_path = os.path.join(library_path, "lib",
"libsodium.dylib")
includefiles.append((libsodium_path, "lib/libsodium.dylib"))
print(libsodium_path)
else:
print("Erreur : libsodium not found. Please install it with brew install libsodium.")
qtconf_path = os.path.join(os.path.dirname(__file__), "res/osx/qt.conf")
includefiles.append((qtconf_path, "qt.conf"))
print("Includes : ") print("Includes : ")
print(includes) print(includes)
...@@ -80,6 +84,7 @@ print("Zip files : ") ...@@ -80,6 +84,7 @@ print("Zip files : ")
print(zipincludes) print(zipincludes)
print("Packages : ") print("Packages : ")
print(packages) print(packages)
print("Sys.path : ")
print(sys.path) print(sys.path)
options = {"path": sys.path, options = {"path": sys.path,
......
...@@ -9,7 +9,7 @@ import asyncio ...@@ -9,7 +9,7 @@ import asyncio
import time import time
from PyQt5.QtWidgets import QWidget, QMessageBox, QDialog, QPushButton, QTabBar, QAction from PyQt5.QtWidgets import QWidget, QMessageBox, QDialog, QPushButton, QTabBar, QAction
from PyQt5.QtCore import pyqtSlot, QDateTime, QLocale, QEvent from PyQt5.QtCore import pyqtSlot, QDateTime, QLocale, QEvent, QT_TRANSLATE_NOOP
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
...@@ -32,6 +32,16 @@ class CommunityWidget(QWidget, Ui_CommunityWidget): ...@@ -32,6 +32,16 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
classdocs classdocs
""" """
_tab_history_label = QT_TRANSLATE_NOOP("CommunityWidget", "Transactions")
_tab_wot_label = QT_TRANSLATE_NOOP("CommunityWidget", "Web of Trust")
_tab_identities_label = QT_TRANSLATE_NOOP("CommunityWidget", "Search Identities")
_tab_network_label = QT_TRANSLATE_NOOP("CommunityWidget", "Network")
_tab_informations_label = QT_TRANSLATE_NOOP("CommunityWidget", "Informations")
_action_showinfo_text = QT_TRANSLATE_NOOP("CommunityWidget", "Show informations")
_action_publish_uid_text = QT_TRANSLATE_NOOP("CommunityWidget", "Publish UID")
_action_revoke_uid_text = QT_TRANSLATE_NOOP("CommunityWidget", "Revoke UID")
def __init__(self, app, status_label): def __init__(self, app, status_label):
""" """
Constructor Constructor
...@@ -45,19 +55,19 @@ class CommunityWidget(QWidget, Ui_CommunityWidget): ...@@ -45,19 +55,19 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
self.status_info = [] self.status_info = []
super().setupUi(self)
self.tab_wot = WotTabWidget(self.app) self.tab_wot = WotTabWidget(self.app)
self.tab_identities = IdentitiesTabWidget(self.app) self.tab_identities = IdentitiesTabWidget(self.app)
self.tab_history = TransactionsTabWidget(self.app) self.tab_history = TransactionsTabWidget(self.app)
self.tab_informations = InformationsTabWidget(self.app) self.tab_informations = InformationsTabWidget(self.app)
self.tab_certifications = CertificationsTabWidget(self.app) self.tab_certifications = CertificationsTabWidget(self.app)
self.tab_network = NetworkTabWidget(self.app) self.tab_network = NetworkTabWidget(self.app)
self.action_publish_uid = QAction(self.tr(CommunityWidget._action_publish_uid_text), self)
self.action_revoke_uid = QAction(self.tr(CommunityWidget._action_revoke_uid_text), self)
self.action_showinfo = QAction(self.tr(CommunityWidget._action_showinfo_text), self)
super().setupUi(self)
self.tab_identities.view_in_wot.connect(self.tab_wot.draw_graph) self.tab_identities.view_in_wot.connect(self.tab_wot.draw_graph)
self.tab_identities.view_in_wot.connect(lambda: self.tabs.setCurrentWidget(self.tab_wot)) self.tab_identities.view_in_wot.connect(lambda: self.tabs.setCurrentWidget(self.tab_wot))
self.tab_history.view_in_wot.connect(self.tab_wot.draw_graph) self.tab_history.view_in_wot.connect(self.tab_wot.draw_graph)
...@@ -67,15 +77,15 @@ class CommunityWidget(QWidget, Ui_CommunityWidget): ...@@ -67,15 +77,15 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
self.tabs.addTab(self.tab_history, self.tabs.addTab(self.tab_history,
QIcon(':/icons/tx_icon'), QIcon(':/icons/tx_icon'),
self.tr("Transactions")) self.tr(CommunityWidget._tab_history_label))
self.tabs.addTab(self.tab_wot, self.tabs.addTab(self.tab_wot,
QIcon(':/icons/wot_icon'), QIcon(':/icons/wot_icon'),
self.tr("Web of Trust")) self.tr(CommunityWidget._tab_wot_label))
self.tabs.addTab(self.tab_identities, self.tabs.addTab(self.tab_identities,
QIcon(':/icons/members_icon'), QIcon(':/icons/members_icon'),
self.tr("Search Identities")) self.tr(CommunityWidget._tab_identities_label))
self.tabs.addTab(self.tab_network, self.tabs.addTab(self.tab_network,
QIcon(":/icons/network_icon"), QIcon(":/icons/network_icon"),
...@@ -86,11 +96,9 @@ class CommunityWidget(QWidget, Ui_CommunityWidget): ...@@ -86,11 +96,9 @@ class CommunityWidget(QWidget, Ui_CommunityWidget):
QIcon(":/icons/informations_icon"), self.tr("Informations"))) QIcon(":/icons/informations_icon"), self.tr("Informations")))
self.toolbutton_menu.addAction(action_showinfo) self.toolbutton_menu.addAction(action_showinfo)
self.action_publish_uid = QAction(self.tr("Publish UID"), self.toolbutton_menu)
self.action_publish_uid.triggered.connect(self.publish_uid) self.action_publish_uid.triggered.connect(self.publish_uid)
self.toolbutton_menu.addAction(self.action_publish_uid) self.toolbutton_menu.addAction(self.action_publish_uid)
self.action_revoke_uid = QAction(self.tr("Revoke UID"), self.toolbutton_menu)
self.action_revoke_uid.triggered.connect(self.revoke_uid) self.action_revoke_uid.triggered.connect(self.revoke_uid)
self.toolbutton_menu.addAction(self.action_revoke_uid) self.toolbutton_menu.addAction(self.action_revoke_uid)
...@@ -387,6 +395,22 @@ The process to join back the community later will have to be done again.""") ...@@ -387,6 +395,22 @@ The process to join back the community later will have to be done again.""")
await QAsyncMessageBox.critical(self, self.tr("UID"), await QAsyncMessageBox.critical(self, self.tr("UID"),
result[1]) result[1])
def retranslateUi(self, widget):
"""
Method to complete translations missing from generated code
:param widget:
:return:
"""
self.tabs.setTabText(self.tabs.indexOf(self.tab_wot), self.tr(CommunityWidget._tab_wot_label))
self.tabs.setTabText(self.tabs.indexOf(self.tab_network), self.tr(CommunityWidget._tab_network_label))
self.tabs.setTabText(self.tabs.indexOf(self.tab_informations), self.tr(CommunityWidget._tab_informations_label))
self.tabs.setTabText(self.tabs.indexOf(self.tab_history), self.tr(CommunityWidget._tab_history_label))
self.tabs.setTabText(self.tabs.indexOf(self.tab_identities), self.tr(CommunityWidget._tab_identities_label))
self.action_publish_uid.setText(self.tr(CommunityWidget._action_publish_uid_text))
self.action_revoke_uid.setText(self.tr(CommunityWidget._action_revoke_uid_text))
self.action_showinfo.setText(self.tr(CommunityWidget._action_showinfo_text))
super().retranslateUi(self)
def showEvent(self, QShowEvent): def showEvent(self, QShowEvent):
""" """
...@@ -394,6 +418,7 @@ The process to join back the community later will have to be done again.""") ...@@ -394,6 +418,7 @@ The process to join back the community later will have to be done again.""")
:return: :return:
""" """
self.refresh_status() self.refresh_status()
super().showEvent(QShowEvent)
def changeEvent(self, event): def changeEvent(self, event):
""" """
......
...@@ -7,7 +7,7 @@ Created on 2 févr. 2014 ...@@ -7,7 +7,7 @@ Created on 2 févr. 2014
import asyncio import asyncio
import logging import logging
from PyQt5.QtCore import Qt, pyqtSignal, QEvent from PyQt5.QtCore import Qt, pyqtSignal, QEvent, QT_TRANSLATE_NOOP
from PyQt5.QtGui import QCursor from PyQt5.QtGui import QCursor
from PyQt5.QtWidgets import QWidget, QAction, QMenu, QDialog, \ from PyQt5.QtWidgets import QWidget, QAction, QMenu, QDialog, \
QAbstractItemView QAbstractItemView
...@@ -33,6 +33,9 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab): ...@@ -33,6 +33,9 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
view_in_wot = pyqtSignal(Identity) view_in_wot = pyqtSignal(Identity)
money_sent = pyqtSignal() money_sent = pyqtSignal()
_members_action_text = QT_TRANSLATE_NOOP("IdentitiesTabWidget", "Members")
_direct_connections_text = QT_TRANSLATE_NOOP("IdentitiesTabWidget", "Direct connections")
def __init__(self, app): def __init__(self, app):
""" """
Init Init
...@@ -47,9 +50,11 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab): ...@@ -47,9 +50,11 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
self.account = None self.account = None
self.password_asker = None self.password_asker = None
self.members_action = QAction(self.tr(IdentitiesTabWidget._members_action_text), self)
self.direct_connections = QAction(self.tr(IdentitiesTabWidget._direct_connections_text), self)
self.setupUi(self) self.setupUi(self)
identities_model = IdentitiesTableModel(self.community) identities_model = IdentitiesTableModel()
proxy = IdentitiesFilterProxyModel() proxy = IdentitiesFilterProxyModel()
proxy.setSourceModel(identities_model) proxy.setSourceModel(identities_model)
self.table_identities.setModel(proxy) self.table_identities.setModel(proxy)
...@@ -60,12 +65,10 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab): ...@@ -60,12 +65,10 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
identities_model.modelAboutToBeReset.connect(lambda: self.table_identities.setEnabled(False)) identities_model.modelAboutToBeReset.connect(lambda: self.table_identities.setEnabled(False))
identities_model.modelReset.connect(lambda: self.table_identities.setEnabled(True)) identities_model.modelReset.connect(lambda: self.table_identities.setEnabled(True))
members_action = QAction(self.tr("Members"), self) self.members_action.triggered.connect(self._async_search_members)
members_action.triggered.connect(self._async_search_members) self.button_search.addAction(self.members_action)
self.button_search.addAction(members_action) self.direct_connections.triggered.connect(self._async_search_direct_connections)
direct_connections = QAction(self.tr("Direct connections"), self) self.button_search.addAction(self.direct_connections)
direct_connections.triggered.connect(self._async_search_direct_connections)
self.button_search.addAction(direct_connections)
self.button_search.clicked.connect(self._async_execute_search_text) self.button_search.clicked.connect(self._async_execute_search_text)
self.busy = Busy(self.table_identities) self.busy = Busy(self.table_identities)
...@@ -279,6 +282,11 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab): ...@@ -279,6 +282,11 @@ class IdentitiesTabWidget(QWidget, Ui_IdentitiesTab):
await self.table_identities.model().sourceModel().refresh_identities(identities) await self.table_identities.model().sourceModel().refresh_identities(identities)
self.table_identities.resizeColumnsToContents() self.table_identities.resizeColumnsToContents()
def retranslateUi(self, widget):
self.members_action.setText(self.tr(IdentitiesTabWidget._members_action_text))
self.direct_connections.setText(self.tr(IdentitiesTabWidget._direct_connections_text))
super().retranslateUi(self)
def resizeEvent(self, event): def resizeEvent(self, event):
self.busy.resize(event.size()) self.busy.resize(event.size())
super().resizeEvent(event) super().resizeEvent(event)
......
...@@ -24,6 +24,7 @@ class ImportAccountDialog(QDialog, Ui_ImportAccountDialog): ...@@ -24,6 +24,7 @@ class ImportAccountDialog(QDialog, Ui_ImportAccountDialog):
self.setupUi(self) self.setupUi(self)
self.app = app self.app = app
self.main_window = parent self.main_window = parent
self.selected_file = ""
self.button_box.button(QDialogButtonBox.Ok).setEnabled(False) self.button_box.button(QDialogButtonBox.Ok).setEnabled(False)
def accept(self): def accept(self):
......
...@@ -34,7 +34,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget): ...@@ -34,7 +34,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
self.setupUi(self) self.setupUi(self)
model = NetworkTableModel(self.community) model = NetworkTableModel(self.community)
proxy = NetworkFilterProxyModel(self) proxy = NetworkFilterProxyModel()
proxy.setSourceModel(model) proxy.setSourceModel(model)
self.table_network.setModel(proxy) self.table_network.setModel(proxy)
self.table_network.sortByColumn(2, Qt.DescendingOrder) self.table_network.sortByColumn(2, Qt.DescendingOrder)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment