diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index a3bf7ec3..42fcc8df 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -23,6 +23,7 @@ from specialaddressbehavior import * from settings import * from about import * from help import * +from hashtag import * from iconglossary import * from connect import * import sys @@ -57,6 +58,64 @@ except AttributeError: def _translate(context, text): return QtGui.QApplication.translate(context, text) +class hashtag(object): + + _instance = None + class Singleton: + def __init__(self): + #define class variables here + self.string = "" + self.dic = {} + self.array = [] + + def __init__(self): + if hashtag._instance is None: + # Create and remember instanc + hashtag._instance = hashtag.Singleton() + self._EventHandler_instance = hashtag._instance + + def __getattr__(self, aAttr): + return getattr(self._instance, aAttr) + + def __setattr__(self, aAttr, aValue): + return setattr(self._instance, aAttr, aValue) + + def update_array(self): + for w in sorted(self.dic, key=self.dic.get, reverse=True): + self.array.append(w) + + def extract (self,sentence): + array = [] + pattern='#' + count = 0 + for word in sentence.split(' '): + for word2 in word.split('\\n'): + if word2.startswith(pattern): + for word3 in word2.split('#'): + if(word3 != ''): + array.append('#'+word3.lower()) + print " "+word3+"\n" + count+=1 + self.update_dic(array) + return count + #return array + + def update_dic (self, array): + for item in array: + if (self.dic.get(item)==None): + self.dic[item]=1 + else: + self.dic[item]=self.dic[item]+1 + + def get_color(self, value , sum): + x = value/float(sum) + if(x==0.5): + return 0xffff + elif(x>0.5): + return int(x * 255) + else: + return int(255*x)+0xff00 + def identiconize(address): size = 48 @@ -223,6 +282,8 @@ class MyForm(QtGui.QMainWindow): "triggered()"), self.click_actionAbout) QtCore.QObject.connect(self.ui.actionHelp, QtCore.SIGNAL( "triggered()"), self.click_actionHelp) + QtCore.QObject.connect(self.ui.actionHashtag, QtCore.SIGNAL( + "triggered()"), self.click_actionHashtag) def init_inbox_popup_menu(self): # Popup menu for the Inbox tab @@ -2166,6 +2227,10 @@ class MyForm(QtGui.QMainWindow): def click_actionAbout(self): self.aboutDialogInstance = aboutDialog(self) self.aboutDialogInstance.exec_() + + def click_actionHashtag(self): + self.hashtagDialogInstance = hashtagDialog(self) + self.hashtagDialogInstance.exec_() def click_actionSettings(self): self.settingsDialogInstance = settingsDialog(self) @@ -3213,6 +3278,53 @@ class aboutDialog(QtGui.QDialog): self.ui.setupUi(self) self.parent = parent self.ui.labelVersion.setText('version ' + shared.softwareVersion) + +class hashtagDialog(QtGui.QDialog): + + def __init__(self, parent): + QtGui.QWidget.__init__(self, parent) + self.ui = Ui_hashtagDialog() + self.ui.setupUi(self) + self.parent = parent + + self.h1 = hashtag() + self.h1.dic.clear() + self.h1.array = [] + self.size= 7 + self.sum = 0 + + day = 86400 + week = 604800 + month = 1814400 #assume a month is 30 days + + self.ui.tableWidgetHashtag.setRowCount(self.size) + + queryreturn = sqlQuery('''SELECT message FROM inbox WHERE folder='inbox' AND received > ? ''', time.time()-day) + self.ExtractAndUpdateUI(queryreturn,0,self.size) + + queryreturn = sqlQuery('''SELECT message FROM inbox WHERE folder='inbox' AND received BETWEEN ? AND ?''', time.time()-week,time.time()-day) + self.ExtractAndUpdateUI(queryreturn,1,self.size) + + + queryreturn = sqlQuery('''SELECT message FROM inbox WHERE folder='inbox' AND received BETWEEN ? AND ?''', time.time()-month,time.time()-week) + self.ExtractAndUpdateUI(queryreturn,2,self.size) + + queryreturn = sqlQuery('''SELECT message FROM inbox WHERE folder='inbox' AND received < ?''', time.time()-month) + self.ExtractAndUpdateUI(queryreturn,3,self.size) + + def ExtractAndUpdateUI(self,queryreturn,column,size): + for row in queryreturn: + self.sum+=self.h1.extract(str(row)[2:-3]) + self.h1.update_array() + + for i in range(0,size): + if len(self.h1.array) > i: + newItem = QtGui.QTableWidgetItem(unicode(self.h1.array[i], 'utf-8')) + ##the following two lines show the hashtags in colors varying from green to red + #color = self.h1.get_color(self.h1.dic[self.h1.array[i]],self.sum) + #newItem.setTextColor(QtGui.QColor((color>>8)&0xff, color&0xff, 0)) + self.ui.tableWidgetHashtag.setItem(i, column, newItem) + self.h1.array = [] class regenerateAddressesDialog(QtGui.QDialog): diff --git a/src/bitmessageqt/bitmessageui.py b/src/bitmessageqt/bitmessageui.py index b80367dd..bea5599d 100644 --- a/src/bitmessageqt/bitmessageui.py +++ b/src/bitmessageqt/bitmessageui.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'bitmessageui.ui' # -# Created: Sat Nov 2 18:01:09 2013 -# by: PyQt4 UI code generator 4.10 +# Created: Mon Nov 11 13:45:10 2013 +# by: PyQt4 UI code generator 4.9.3 # # WARNING! All changes made in this file will be lost! @@ -12,16 +12,7 @@ from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: - def _fromUtf8(s): - return s - -try: - _encoding = QtGui.QApplication.UnicodeUTF8 - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) -except AttributeError: - def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + _fromUtf8 = lambda s: s class Ui_MainWindow(object): def setupUi(self, MainWindow): @@ -439,7 +430,7 @@ class Ui_MainWindow(object): self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 885, 27)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 885, 25)) self.menubar.setObjectName(_fromUtf8("menubar")) self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName(_fromUtf8("menuFile")) @@ -447,6 +438,8 @@ class Ui_MainWindow(object): self.menuSettings.setObjectName(_fromUtf8("menuSettings")) self.menuHelp = QtGui.QMenu(self.menubar) self.menuHelp.setObjectName(_fromUtf8("menuHelp")) + self.menuView = QtGui.QMenu(self.menubar) + self.menuView.setObjectName(_fromUtf8("menuView")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setMaximumSize(QtCore.QSize(16777215, 22)) @@ -488,6 +481,8 @@ class Ui_MainWindow(object): icon = QtGui.QIcon.fromTheme(_fromUtf8("contact-new")) self.actionJoinChan.setIcon(icon) self.actionJoinChan.setObjectName(_fromUtf8("actionJoinChan")) + self.actionHashtag = QtGui.QAction(MainWindow) + self.actionHashtag.setObjectName(_fromUtf8("actionHashtag")) self.menuFile.addAction(self.actionManageKeys) self.menuFile.addAction(self.actionDeleteAllTrashedMessages) self.menuFile.addAction(self.actionRegenerateDeterministicAddresses) @@ -496,8 +491,10 @@ class Ui_MainWindow(object): self.menuSettings.addAction(self.actionSettings) self.menuHelp.addAction(self.actionHelp) self.menuHelp.addAction(self.actionAbout) + self.menuView.addAction(self.actionHashtag) self.menubar.addAction(self.menuFile.menuAction()) self.menubar.addAction(self.menuSettings.menuAction()) + self.menubar.addAction(self.menuView.menuAction()) self.menubar.addAction(self.menuHelp.menuAction()) self.retranslateUi(MainWindow) @@ -532,113 +529,125 @@ class Ui_MainWindow(object): MainWindow.setTabOrder(self.tableWidgetConnectionCount, self.pushButtonStatusIcon) def retranslateUi(self, MainWindow): - MainWindow.setWindowTitle(_translate("MainWindow", "Bitmessage", None)) - self.inboxSearchLineEdit.setPlaceholderText(_translate("MainWindow", "Search", None)) - self.inboxSearchOptionCB.setItemText(0, _translate("MainWindow", "All", None)) - self.inboxSearchOptionCB.setItemText(1, _translate("MainWindow", "To", None)) - self.inboxSearchOptionCB.setItemText(2, _translate("MainWindow", "From", None)) - self.inboxSearchOptionCB.setItemText(3, _translate("MainWindow", "Subject", None)) - self.inboxSearchOptionCB.setItemText(4, _translate("MainWindow", "Message", None)) + MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Bitmessage", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchLineEdit.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "Search", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchOptionCB.setItemText(0, QtGui.QApplication.translate("MainWindow", "All", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchOptionCB.setItemText(1, QtGui.QApplication.translate("MainWindow", "To", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchOptionCB.setItemText(2, QtGui.QApplication.translate("MainWindow", "From", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchOptionCB.setItemText(3, QtGui.QApplication.translate("MainWindow", "Subject", None, QtGui.QApplication.UnicodeUTF8)) + self.inboxSearchOptionCB.setItemText(4, QtGui.QApplication.translate("MainWindow", "Message", None, QtGui.QApplication.UnicodeUTF8)) self.tableWidgetInbox.setSortingEnabled(True) item = self.tableWidgetInbox.horizontalHeaderItem(0) - item.setText(_translate("MainWindow", "To", None)) + item.setText(QtGui.QApplication.translate("MainWindow", "To", None, QtGui.QApplication.UnicodeUTF8)) item = self.tableWidgetInbox.horizontalHeaderItem(1) - item.setText(_translate("MainWindow", "From", None)) + item.setText(QtGui.QApplication.translate("MainWindow", "From", None, QtGui.QApplication.UnicodeUTF8)) item = self.tableWidgetInbox.horizontalHeaderItem(2) - item.setText(_translate("MainWindow", "Subject", None)) + item.setText(QtGui.QApplication.translate("MainWindow", "Subject", None, QtGui.QApplication.UnicodeUTF8)) item = self.tableWidgetInbox.horizontalHeaderItem(3) - item.setText(_translate("MainWindow", "Received", None)) - self.tabWidget.setTabText(self.tabWidget.indexOf(self.inbox), _translate("MainWindow", "Inbox", None)) - self.pushButtonLoadFromAddressBook.setText(_translate("MainWindow", "Load from Address book", None)) - self.pushButtonFetchNamecoinID.setText(_translate("MainWindow", "Fetch Namecoin ID", None)) - self.label_4.setText(_translate("MainWindow", "Message:", None)) - self.label_3.setText(_translate("MainWindow", "Subject:", None)) - self.radioButtonSpecific.setText(_translate("MainWindow", "Send to one or more specific people", None)) - self.textEditMessage.setHtml(_translate("MainWindow", "\n" + item.setText(QtGui.QApplication.translate("MainWindow", "Received", None, QtGui.QApplication.UnicodeUTF8)) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.inbox), QtGui.QApplication.translate("MainWindow", "Inbox", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButtonLoadFromAddressBook.setText(QtGui.QApplication.translate("MainWindow", "Load from Address book", None, QtGui.QApplication.UnicodeUTF8)) + self.pushButtonFetchNamecoinID.setText(QtGui.QApplication.translate("MainWindow", "Fetch Namecoin ID", None, QtGui.QApplication.UnicodeUTF8)) + self.label_4.setText(QtGui.QApplication.translate("MainWindow", "Message:", None, QtGui.QApplication.UnicodeUTF8)) + self.label_3.setText(QtGui.QApplication.translate("MainWindow", "Subject:", None, QtGui.QApplication.UnicodeUTF8)) + self.radioButtonSpecific.setText(QtGui.QApplication.translate("MainWindow", "Send to one or more specific people", None, QtGui.QApplication.UnicodeUTF8)) + self.textEditMessage.setHtml(QtGui.QApplication.translate("MainWindow", "\n" "
\n" -"