Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Squashed commit of the following:

commit 6c503fa8942122e8e8d730ca93c4af1959f6f470
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 19:11:05 2011 +0200

    direct disk download

commit 896b39f3929b23d19ff3b78d923ef82f91f1f2be
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 18:03:14 2011 +0200

    fix Browser cmd, higher settings tab for warren

commit 4ad7644e14dc7da0d41677c02902ec810d17798d
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 15:47:31 2011 +0200

    re-organize the context menu

commit 72d9deab427b3349ff61fcb5f79d62a223402423
Merge: 8385528 2b07fdc
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 15:40:55 2011 +0200

    Merge branch 'master' into clipboard

commit 838552894f74b94fa3ff3a69f97d66011320a388
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 11:50:41 2011 +0200

    make max clipboard keys useful

commit 48e08c3c58d965ab4ab340bafed5655f730efbe9
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 11:48:13 2011 +0200

    config option for max clipboard keys

commit 2916063b3e185a77950507760d75a7a2650001cc
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 11:12:47 2011 +0200

    file get for seclevel > 0

commit 7c903b870caefb02623f770759b05fc1c3208718
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 10:28:47 2011 +0200

    open keys in browser

commit cba98ca242a64f3f91c0279722b995c089275406
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 10:15:00 2011 +0200

    settings for fproxy port and browser command

commit 433c823966908bec4c02cfae0039c1cab95e7e26
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu May 5 09:50:58 2011 +0200

    add open in browser menu

commit c5aaa2ee1eee1a2590ac90da841ed7fef0f2e77f
Merge: 6894ad4 9dc16be
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Wed May 4 20:30:32 2011 +0200

    Merge branch 'master' into clipboard

    Conflicts:
    	warren/ui/MainWindow.py

commit 6894ad464684259cc33918ea70e7cf60df3157a2
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Wed May 4 20:14:07 2011 +0200

    make menu entries for keys in clipboard

commit 1f0037a1c1702fc2700370dd8126ea9ce38a7d13
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Tue May 3 19:57:57 2011 +0200

    clipboard changes make context menu entry

commit 4d88c5f7fc3eea806cc5351f7b57c8338f948da3
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Sun May 1 18:49:33 2011 +0200

    remove old code

commit 35dfdba8cec4fef56498a02790aa45656260522f
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Sun May 1 18:28:19 2011 +0200

    move clipboard test to Clipboard class

commit 3728c9a32f0d5fb897a9f4f6cc2d35e24dde3eb3
Merge: 556c3bb 51bfe21
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Sun May 1 18:10:16 2011 +0200

    Merge branch 'master' into clipboard

commit 556c3bb72ddb30af66060e70a3c48bb944e518c5
Author: Ratchet <klaus@sentinel.dyndns.info>
Date:   Thu Apr 28 18:47:19 2011 +0200

    small test with clipboard
  • Loading branch information...
commit 92fcbc05011ce18cc08a0e3cc896212c341c04b4 1 parent 2b07fdc
@Ratchet Ratchet authored
View
16 warren/core/Browser.py
@@ -0,0 +1,16 @@
+import webbrowser
+
+class Browser(object):
+
+ def __init__(self, config):
+ self.config = config
+
+ def openKeyInBrowser(self,key):
+ bcmd = self.config['warren']['browser_command']
+ if bcmd:
+ browser = webbrowser.get(using=bcmd)
+ else:
+ browser = webbrowser.get()
+
+ url = 'http://'+self.config['node']['host']+':'+str(self.config['node']['fproxy_port'])+'/'+key
+ browser.open_new_tab(url)
View
4 warren/core/Config.py
@@ -1,9 +1,11 @@
import sys, os, os.path
from configobj import ConfigObj
-CONFIG_DEFAULTS = {'node' : {'host':'127.0.0.1','fcp_port':9481},
+CONFIG_DEFAULTS = {'node' : {'host':'127.0.0.1','fcp_port':9481, 'fproxy_port':8888},
'proxy' : {'http':{'host':'','port':8118}},
'warren' : {'file_keytype':'SSK@', 'pastebin_keytype':'SSK@',
+ 'browser_command' : '',
+ 'max_clipboard_keys' : 5,
'show_file_dropped_dialog':True},
}
View
2  warren/core/FileManager.py
@@ -49,7 +49,7 @@ def run(self):
try:
directory = os.path.split(plainUrl)[0]
testDDA = self.nodeManager.node.testDDA(async=False, Directory=directory, WantReadDirectory=True, timeout=5)
- if 'TestDDAComplete' in str(testDDA.items()):
+ if 'TestDDAComplete' in str(testDDA.items()): #TODO check for the real keys
testDDAResult = True
except Exception, e:
testDDAResult = False
View
31 warren/core/NodeManager.py
@@ -19,6 +19,7 @@ def __init__(self,config):
self.standby = True
self.physicalSeclevel = None
self.nodeDownloadDir = None
+ self.downloadDDA = False
self.start()
def run(self):
@@ -29,7 +30,7 @@ def run(self):
def connectNode(self):
try:
- self.node = FCPNode(name="FripeClient",host=self.config['node']['host'],port=int(self.config['node']['fcp_port']),verbosity=0)
+ self.node = FCPNode(name="WarrenClient",host=self.config['node']['host'],port=int(self.config['node']['fcp_port']),verbosity=0)
self.updateNodeConfigValues()
self.emit(SIGNAL("nodeConnected()"))
except Exception, e:
@@ -39,6 +40,7 @@ def updateNodeConfigValues(self):
nconfig = self.node.getconfig(async=False,WithCurrent=True,WithExpertFlag=True)
self.physicalSeclevel = SECLEVELS[nconfig['current.security-levels.physicalThreatLevel']]
self.nodeDownloadDir = nconfig['current.node.downloadsDir']
+ self.downloadDDA = nconfig['expertFlag.fcp.assumeDownloadDDAIsAllowed']=='true'
if not os.path.isabs(self.nodeDownloadDir):
self.nodeDownloadDir = os.path.join(nconfig['current.node.cfgDir'], self.nodeDownloadDir)
@@ -49,6 +51,30 @@ def nodeNotConnected(self):
self.node = None
self.connectNode()
+ def putKeyOnQueue(self, key):
+ if self.physicalSeclevel > 0:
+ testDDAResult = False
+ else:
+ if self.downloadDDA:
+ testDDAResult = True
+ else:
+ testDDAResult = False
+ try:
+ testDDA = self.node.testDDA(async=False, Directory=self.nodeDownloadDir, WantWriteDirectory=True, timeout=5)
+
+ if 'TestDDAComplete' in str(testDDA.items()) and "'WriteDirectoryAllowed', 'true'" in str(testDDA.items()): #TODO check for the real keys
+ testDDAResult = True
+ except Exception, e:
+ testDDAResult = False
+
+ if testDDAResult:
+ filename = os.path.join(self.nodeDownloadDir, key.split('/')[-1])
+ self.node.get(key,async=True, Global=True, persistence='forever',priority=4, id='Warren:'+key.split('/')[-1], file=filename)
+ else:
+ self.node.get(key,async=True, Global=True, persistence='forever',priority=4, id='Warren:'+key.split('/')[-1])
+
+
+
def pasteCanceled(self):
if hasattr(self, 'pasteInsert'):
# TODO cancel request in node, too (FCP message "RemoveRequest")
@@ -65,12 +91,9 @@ def newPaste(self,qPaste):
self.pasteInsert.message.connect(self.pasteInsertDialog.messageReceived)
self.pasteInsertDialog.ui.buttonBox.rejected.connect(self.pasteCanceled)
-# self.pasteInsertDialog.pasteFinished.connect(self.pasteFinished)
self.pasteInsert.start()
-# def pasteFinished(self):
-# self.pasteInsert.close()
def pasteMessageForwarder(self, msg):
self.emit(SIGNAL("inserterMessage(QString)"),QString(msg))
View
48 warren/ui/Clipboard.py
@@ -0,0 +1,48 @@
+from PyQt4.QtGui import QWidget, qApp, QClipboard
+from PyQt4.QtCore import QString, pyqtSignal
+import re
+
+#KEY_PATTERN = re.compile('([USK@|CHK@|SSK@|KSK@].*)[\s|\r|\n]')
+#KEY_PATTERN = re.compile('USK@.*|CHK@.*|SSK@.*|KSK@.*?$')
+#KEY_PATTERN = re.compile('(USK|SSK)@[a-zA-Z0-9,-\/]*')
+KEY_PATTERN = re.compile("(USK|SSK|CHK|KSK)@([a-zA-Z0-9\,\-\/\~\.]*)")
+
+class Clipboard(QWidget):
+
+ clipboardKey = pyqtSignal(object)
+
+ def __init__(self, parent):
+ QWidget.__init__(self, None)
+
+ self.clip = qApp.clipboard()
+ self.clip.changed.connect(self.cbChanged)
+
+ if self.clip.supportsSelection():
+ self.clip.selectionChanged.connect(self.selChanged)
+
+
+ def cbChanged(self,event):
+
+ cb = self.clip.mimeData()
+ if cb.hasText():
+ self.findKeys(unicode(cb.text()).encode('utf-8'))
+
+ def selChanged(self):
+
+ text = unicode(self.clip.text("plain",QClipboard.Selection)).encode('utf-8')
+ self.findKeys(text)
+
+ def findKeys(self, text):
+ keys = KEY_PATTERN.findall(text)
+ if len(keys) > 0:
+# print keys
+ self.clipboardKey.emit(keys)
+# textList = text.split(' ')
+# for line in textList:
+# m = KEY_PATTERN.findall(line)
+# if len(m) > 0:
+# self.clipboardKey.emit(m[0].strip())
+# break
+
+
+
View
65 warren/ui/MainWindow.py
@@ -1,7 +1,7 @@
-from PyQt4.QtGui import QWidget, QLabel, QHBoxLayout, QMenu, qApp, QPixmap, QFrame
+from PyQt4.QtGui import QWidget, QLabel, QHBoxLayout, QMenu, qApp, QPixmap, QFrame, QClipboard, QContextMenuEvent
from PyQt4.QtCore import Qt, SIGNAL
-from warren.core import Config, NodeManager, FileManager
-from warren.ui import Settings, Pastebin, DropZone
+from warren.core import Config, NodeManager, FileManager, Browser
+from warren.ui import Settings, Pastebin, DropZone, Clipboard
import sys, os
def determine_path ():
@@ -27,7 +27,7 @@ def __init__(self):
self.imagePath = determine_path()
self.dropZone.setPixmap(QPixmap(self.imagePath+'dropzone_nocon.png'))
# use a little frame until we have nice icons
- self.dropZone.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel)
+# self.dropZone.setFrameStyle(QFrame.Sunken | QFrame.StyledPanel)
self.dropZone.dropped.connect(self.dropEvent)
self.dropZone.entered.connect(self.enterEvent)
@@ -38,6 +38,11 @@ def __init__(self):
self.setMouseTracking(True)
self.moving = False
+ self.clipboard = Clipboard.Clipboard(self)
+ self.clipboard.clipboardKey.connect(self.clipboardNewKey)
+ self.clipboardKeys = list()
+ self.clipboardKey = None
+
self.nodeManagerConnected = False
self.dropData = {'accepted' : False, 'url' : None, 'content-type' : None}
@@ -51,6 +56,8 @@ def __init__(self):
self.connect(self.pastebin, SIGNAL("newPaste(QString)"), self.nodeManager.newPaste)
self.connect(self.nodeManager, SIGNAL("pasteFinished()"), self.pastebin.reject)
+ self.browser = Browser.Browser(self.config)
+
def contextMenuEvent(self, event):
if self.keepOnTop:
@@ -59,9 +66,31 @@ def contextMenuEvent(self, event):
self.keepOnTopMenuText = 'Keep icon on top'
menu = QMenu(self)
pastebinAction = menu.addAction("Pastebin")
- settingsAction = menu.addAction("Settings")
+ menu.addSeparator()
+
+ if len(self.clipboardKeys)>0:
+ downloadMenu = QMenu('Put on download queue', self)
+ for idx,key in enumerate(self.clipboardKeys):
+ label = key[0]+'@'+key[1][:7]+'...'+key[1][-20:]
+ mItem = downloadMenu.addAction(label)
+ receiver = lambda taskType=idx:self.dlAction(taskType)
+ self.connect(mItem, SIGNAL('triggered()'), receiver)
+ downloadMenu.addAction(mItem)
+ menu.addMenu(downloadMenu)
+
+ browserMenu = QMenu('Open in Browser', self)
+ for idx,key in enumerate(self.clipboardKeys):
+ label = key[0]+'@'+key[1][:7]+'...'+key[1][-14:]
+ bItem = browserMenu.addAction(label)
+ receiver = lambda taskType=idx:self.brAction(taskType)
+ self.connect(bItem, SIGNAL('triggered()'), receiver)
+ browserMenu.addAction(bItem)
+ menu.addMenu(browserMenu)
+
+
menu.addSeparator()
keepOnTopAction = menu.addAction(self.keepOnTopMenuText)
+ settingsAction = menu.addAction("Settings")
menu.addSeparator()
quitAction = menu.addAction("Quit")
action = menu.exec_(self.mapToGlobal(event.pos()))
@@ -81,6 +110,32 @@ def contextMenuEvent(self, event):
self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)
self.show()
+ def dlAction(self,menuIdx):
+
+ key = self.clipboardKeys[menuIdx]
+
+ # put last active key to top of list
+ tmp = self.clipboardKeys.pop(menuIdx)
+ self.clipboardKeys.insert(0,tmp)
+ self.nodeManager.putKeyOnQueue(key[0]+'@'+key[1])
+
+ def brAction(self,menuIdx):
+
+ key = self.clipboardKeys[menuIdx]
+
+ # put last active key to top of list
+ tmp = self.clipboardKeys.pop(menuIdx)
+ self.clipboardKeys.insert(0,tmp)
+ self.browser.openKeyInBrowser(key[0]+'@'+key[1])
+
+
+ def clipboardNewKey(self,keys):
+ for key in keys:
+ if key not in self.clipboardKeys:
+ if len(self.clipboardKeys) >= self.config['warren']['max_clipboard_keys']:
+ self.clipboardKeys.pop(-1)
+ self.clipboardKeys.insert(0,key)
+
def enterEvent(self, mimeData = None):
if not mimeData or not hasattr(mimeData, 'formats'): return
View
7 warren/ui/Settings.py
@@ -23,8 +23,11 @@ def __init__(self, config):
def populate_fields(self):
self.ui.node_host_edit.setText(self.config['node']['host'])
self.ui.node_fcp_port_edit.setProperty("value", self.config['node']['fcp_port'])
+ self.ui.node_http_port_edit.setProperty("value", self.config['node']['fproxy_port'])
self.ui.proxy_host_edit.setText(self.config['proxy']['http']['host'])
self.ui.proxy_port_edit.setProperty("value", self.config['proxy']['http']['port'])
+ self.ui.browser_command.setText(self.config['warren']['browser_command'])
+ self.ui.max_clipboard_keys.setProperty("value", self.config['warren']['max_clipboard_keys'])
if self.config['warren']['pastebin_keytype']=='SSK@':
pbk = 0
else:
@@ -40,11 +43,13 @@ def accept(self):
#TODO if node change, warn user for reconnect if jobs running, then reconnect node after confirm or cancel
self.config['node']['host'] = str(self.ui.node_host_edit.text())
self.config['node']['fcp_port'] = self.ui.node_fcp_port_edit.value()
+ self.config['node']['fproxy_port'] = self.ui.node_http_port_edit.value()
self.config['proxy']['http']['host'] = str(self.ui.proxy_host_edit.text())
self.config['proxy']['http']['port'] = self.ui.proxy_port_edit.value()
self.config['warren']['pastebin_keytype'] = self.ui.pastebin_key_type_box.currentIndex() == 0 and 'SSK@' or 'CHK@'
self.config['warren']['file_keytype'] = self.ui.file_key_type_box.currentIndex() == 0 and 'SSK@' or 'CHK@'
-
+ self.config['warren']['browser_command'] = str(self.ui.browser_command.text())
+ self.config['warren']['max_clipboard_keys'] = self.ui.max_clipboard_keys.value()
self.config.write()
self.hide()
View
40 warren/ui/SettingsDialog.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'SettingsDialog.ui'
+# Form implementation generated from reading ui file 'warren/ui/SettingsDialog.ui'
#
-# Created: Mon Apr 25 16:47:17 2011
+# Created: Thu May 5 17:53:47 2011
# by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!
@@ -56,10 +56,20 @@ def setupUi(self, SettingsDialog):
self.gridLayout.addWidget(self.node_fcp_port_edit, 1, 1, 1, 1)
self.testResultsEdit = QtGui.QTextEdit(self.gridLayoutWidget)
self.testResultsEdit.setObjectName("testResultsEdit")
- self.gridLayout.addWidget(self.testResultsEdit, 2, 1, 1, 1)
+ self.gridLayout.addWidget(self.testResultsEdit, 3, 1, 1, 1)
self.testSettingsButton = QtGui.QPushButton(self.gridLayoutWidget)
self.testSettingsButton.setObjectName("testSettingsButton")
- self.gridLayout.addWidget(self.testSettingsButton, 2, 2, 1, 1)
+ self.gridLayout.addWidget(self.testSettingsButton, 3, 2, 1, 1)
+ self.node_http_port_edit = QtGui.QSpinBox(self.gridLayoutWidget)
+ self.node_http_port_edit.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.node_http_port_edit.setMinimum(1025)
+ self.node_http_port_edit.setMaximum(65535)
+ self.node_http_port_edit.setProperty("value", 8888)
+ self.node_http_port_edit.setObjectName("node_http_port_edit")
+ self.gridLayout.addWidget(self.node_http_port_edit, 2, 1, 1, 1)
+ self.fproxy_port_label = QtGui.QLabel(self.gridLayoutWidget)
+ self.fproxy_port_label.setObjectName("fproxy_port_label")
+ self.gridLayout.addWidget(self.fproxy_port_label, 2, 2, 1, 1)
self.tabWidget.addTab(self.node_settings_tab, "")
self.http_settings_tab = QtGui.QWidget()
self.http_settings_tab.setObjectName("http_settings_tab")
@@ -90,7 +100,7 @@ def setupUi(self, SettingsDialog):
self.warren_settings_tab = QtGui.QWidget()
self.warren_settings_tab.setObjectName("warren_settings_tab")
self.gridLayoutWidget_3 = QtGui.QWidget(self.warren_settings_tab)
- self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 10, 371, 61))
+ self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 10, 371, 171))
self.gridLayoutWidget_3.setObjectName("gridLayoutWidget_3")
self.gridLayout_3 = QtGui.QGridLayout(self.gridLayoutWidget_3)
self.gridLayout_3.setObjectName("gridLayout_3")
@@ -107,6 +117,22 @@ def setupUi(self, SettingsDialog):
self.pastebin_key_type_box = QtGui.QComboBox(self.gridLayoutWidget_3)
self.pastebin_key_type_box.setObjectName("pastebin_key_type_box")
self.gridLayout_3.addWidget(self.pastebin_key_type_box, 1, 1, 1, 1)
+ self.browser_command_label = QtGui.QLabel(self.gridLayoutWidget_3)
+ self.browser_command_label.setObjectName("browser_command_label")
+ self.gridLayout_3.addWidget(self.browser_command_label, 2, 0, 1, 1)
+ self.browser_command = QtGui.QLineEdit(self.gridLayoutWidget_3)
+ self.browser_command.setObjectName("browser_command")
+ self.gridLayout_3.addWidget(self.browser_command, 2, 1, 1, 1)
+ self.max_clipboard_keys_label = QtGui.QLabel(self.gridLayoutWidget_3)
+ self.max_clipboard_keys_label.setObjectName("max_clipboard_keys_label")
+ self.gridLayout_3.addWidget(self.max_clipboard_keys_label, 3, 0, 1, 1)
+ self.max_clipboard_keys = QtGui.QSpinBox(self.gridLayoutWidget_3)
+ self.max_clipboard_keys.setLayoutDirection(QtCore.Qt.LeftToRight)
+ self.max_clipboard_keys.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.max_clipboard_keys.setMinimum(1)
+ self.max_clipboard_keys.setProperty("value", 5)
+ self.max_clipboard_keys.setObjectName("max_clipboard_keys")
+ self.gridLayout_3.addWidget(self.max_clipboard_keys, 3, 1, 1, 1)
self.tabWidget.addTab(self.warren_settings_tab, "")
self.retranslateUi(SettingsDialog)
@@ -121,11 +147,15 @@ def retranslateUi(self, SettingsDialog):
self.node_host_label.setText(QtGui.QApplication.translate("SettingsDialog", "Host", None, QtGui.QApplication.UnicodeUTF8))
self.node_port_label.setText(QtGui.QApplication.translate("SettingsDialog", "FCP Port", None, QtGui.QApplication.UnicodeUTF8))
self.testSettingsButton.setText(QtGui.QApplication.translate("SettingsDialog", "Test Settings", None, QtGui.QApplication.UnicodeUTF8))
+ self.fproxy_port_label.setText(QtGui.QApplication.translate("SettingsDialog", "Fproxy Port", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.node_settings_tab), QtGui.QApplication.translate("SettingsDialog", "Node", None, QtGui.QApplication.UnicodeUTF8))
self.proxy_host_label.setText(QtGui.QApplication.translate("SettingsDialog", "Proxy Host", None, QtGui.QApplication.UnicodeUTF8))
self.proxy_port_label.setText(QtGui.QApplication.translate("SettingsDialog", "Proxy Port", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.http_settings_tab), QtGui.QApplication.translate("SettingsDialog", "HTTP", None, QtGui.QApplication.UnicodeUTF8))
self.file_key_type_label.setText(QtGui.QApplication.translate("SettingsDialog", "Insert files with this keytype", None, QtGui.QApplication.UnicodeUTF8))
self.pastebin_key_type_label.setText(QtGui.QApplication.translate("SettingsDialog", "Insert Pastebin with this keytype", None, QtGui.QApplication.UnicodeUTF8))
+ self.browser_command_label.setText(QtGui.QApplication.translate("SettingsDialog", "Browser command\n"
+"(empty for system default)", None, QtGui.QApplication.UnicodeUTF8))
+ self.max_clipboard_keys_label.setText(QtGui.QApplication.translate("SettingsDialog", "Max freenet keys in menu", None, QtGui.QApplication.UnicodeUTF8))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.warren_settings_tab), QtGui.QApplication.translate("SettingsDialog", "Warren", None, QtGui.QApplication.UnicodeUTF8))
View
63 warren/ui/SettingsDialog.ui
@@ -119,16 +119,39 @@
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<widget class="QTextEdit" name="testResultsEdit"/>
</item>
- <item row="2" column="2">
+ <item row="3" column="2">
<widget class="QPushButton" name="testSettingsButton">
<property name="text">
<string>Test Settings</string>
</property>
</widget>
</item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="node_http_port_edit">
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ <property name="minimum">
+ <number>1025</number>
+ </property>
+ <property name="maximum">
+ <number>65535</number>
+ </property>
+ <property name="value">
+ <number>8888</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLabel" name="fproxy_port_label">
+ <property name="text">
+ <string>Fproxy Port</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>
@@ -199,7 +222,7 @@
<x>10</x>
<y>10</y>
<width>371</width>
- <height>61</height>
+ <height>171</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
@@ -227,6 +250,40 @@
<item row="1" column="1">
<widget class="QComboBox" name="pastebin_key_type_box"/>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="browser_command_label">
+ <property name="text">
+ <string>Browser command
+(empty for system default)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="browser_command"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="max_clipboard_keys_label">
+ <property name="text">
+ <string>Max freenet keys in menu</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="max_clipboard_keys">
+ <property name="layoutDirection">
+ <enum>Qt::LeftToRight</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>5</number>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>
Please sign in to comment.
Something went wrong with that request. Please try again.