From 3936f652e951ad96ae864e9ebdc0c2fc6f24f111 Mon Sep 17 00:00:00 2001 From: ingvar1995 Date: Mon, 20 Jun 2016 23:25:35 +0300 Subject: [PATCH] menu fixes, inlines update, stickers pack --- src/list_items.py | 16 ++++++++-------- src/mainscreen_widgets.py | 10 ++++++---- src/menu.py | 29 ++++++++++++++--------------- src/smileys.py | 2 +- src/stickers/tox/black.png | Bin 0 -> 2155 bytes src/stickers/tox/red.png | Bin 0 -> 3581 bytes src/stickers/tox/white.png | Bin 0 -> 4446 bytes 7 files changed, 29 insertions(+), 28 deletions(-) create mode 100755 src/stickers/tox/black.png create mode 100755 src/stickers/tox/red.png create mode 100755 src/stickers/tox/white.png diff --git a/src/list_items.py b/src/list_items.py index 399c081..8246441 100644 --- a/src/list_items.py +++ b/src/list_items.py @@ -435,29 +435,29 @@ class InlineImageItem(QtGui.QScrollArea): self._full_size = not self._resize_needed if not self._resize_needed: self._image_label.setPixmap(self._pixmap) - self.resize(QtCore.QSize(self._max_size + 5, self._pixmap.height())) - self._image_label.setGeometry(5, 0, self._max_size + 5, self._pixmap.height()) + self.resize(QtCore.QSize(self._max_size + 5, self._pixmap.height() + 5)) + self._image_label.setGeometry(5, 0, self._pixmap.width(), self._pixmap.height()) else: pixmap = self._pixmap.scaled(self._max_size, self._max_size, QtCore.Qt.KeepAspectRatio) self._image_label.setPixmap(pixmap) - self.resize(QtCore.QSize(self._max_size, pixmap.height())) + self.resize(QtCore.QSize(self._max_size + 5, pixmap.height())) self._image_label.setGeometry(5, 0, self._max_size + 5, pixmap.height()) self._elem.setSizeHint(QtCore.QSize(self.width(), self.height())) def mouseReleaseEvent(self, event): - if event.button() == QtCore.Qt.LeftButton and self._resize_needed: + if event.button() == QtCore.Qt.LeftButton and self._resize_needed: # scale inline if self._full_size: pixmap = self._pixmap.scaled(self._max_size, self._max_size, QtCore.Qt.KeepAspectRatio) self._image_label.setPixmap(pixmap) self.resize(QtCore.QSize(self._max_size, pixmap.height())) - self._image_label.setGeometry(5, 0, self._max_size + 5, pixmap.height()) + self._image_label.setGeometry(5, 0, pixmap.width(), pixmap.height()) else: self._image_label.setPixmap(self._pixmap) - self.resize(QtCore.QSize(self._max_size, self._pixmap.height() + 15)) - self._image_label.setGeometry(5, 0, self._pixmap.width(), self._pixmap.height() + 15) + self.resize(QtCore.QSize(self._max_size, self._pixmap.height() + 17)) + self._image_label.setGeometry(5, 0, self._pixmap.width(), self._pixmap.height()) self._full_size = not self._full_size self._elem.setSizeHint(QtCore.QSize(self.width(), self.height())) - elif event.button() == QtCore.Qt.RightButton: + elif event.button() == QtCore.Qt.RightButton: # save inline directory = QtGui.QFileDialog.getExistingDirectory(self, QtGui.QApplication.translate("MainWindow", 'Choose folder', None, diff --git a/src/mainscreen_widgets.py b/src/mainscreen_widgets.py index 915de5e..0678836 100644 --- a/src/mainscreen_widgets.py +++ b/src/mainscreen_widgets.py @@ -286,17 +286,19 @@ class StickerWindow(QtGui.QWidget): def __init__(self, parent): super(StickerWindow, self).__init__() self.setWindowFlags(QtCore.Qt.FramelessWindowHint) - self.setMaximumSize(150, 200) - self.setMinimumSize(150, 200) + self.setMaximumSize(250, 200) + self.setMinimumSize(250, 200) self.list = QtGui.QListWidget(self) - self.list.setGeometry(QtCore.QRect(0, 0, 150, 200)) + self.list.setGeometry(QtCore.QRect(0, 0, 250, 200)) self.arr = smileys.sticker_loader() for sticker in self.arr: item = StickerItem(sticker) elem = QtGui.QListWidgetItem() - elem.setSizeHint(QtCore.QSize(150, item.height())) + elem.setSizeHint(QtCore.QSize(250, item.height())) self.list.addItem(elem) self.list.setItemWidget(elem, item) + self.list.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel) + self.list.setSpacing(3) self.list.clicked.connect(self.click) self.parent = parent diff --git a/src/menu.py b/src/menu.py index 7e1f130..2c76440 100644 --- a/src/menu.py +++ b/src/menu.py @@ -39,7 +39,7 @@ class AddContact(CenteredWidget): font.setPointSize(10) font.setWeight(30) self.error_label.setFont(font) - self.error_label.setStyleSheet("QLabel { color: red; }") + self.error_label.setStyleSheet("QLabel { color: #BC1C1C; }") self.label.setObjectName("label") self.message_edit = QtGui.QTextEdit(self) self.message_edit.setGeometry(QtCore.QRect(50, 110, 471, 151)) @@ -145,12 +145,12 @@ class ProfileSettings(CenteredWidget): self.set_password.setGeometry(QtCore.QRect(40, 470, 300, 30)) self.set_password.clicked.connect(self.new_password) self.not_match = QtGui.QLabel(self) - self.not_match.setGeometry(QtCore.QRect(340, 420, 300, 30)) + self.not_match.setGeometry(QtCore.QRect(350, 420, 300, 30)) self.not_match.setVisible(False) - self.not_match.setStyleSheet('QLabel { color: #F70D1A; }') + self.not_match.setStyleSheet('QLabel { color: #BC1C1C; }') self.warning = QtGui.QLabel(self) self.warning.setGeometry(QtCore.QRect(40, 510, 500, 30)) - self.warning.setStyleSheet('QLabel { color: #F70D1A; }') + self.warning.setStyleSheet('QLabel { color: #BC1C1C; }') self.default = QtGui.QPushButton(self) self.default.setGeometry(QtCore.QRect(40, 550, 620, 30)) path, name = Settings.get_auto_profile() @@ -310,7 +310,7 @@ class NetworkSettings(CenteredWidget): self.http.setChecked(settings['proxy_type'] == 1) self.warning = QtGui.QLabel(self) self.warning.setGeometry(QtCore.QRect(5, 270, 290, 60)) - self.warning.setStyleSheet('QLabel { color: #F70D1A; }') + self.warning.setStyleSheet('QLabel { color: #BC1C1C; }') self.retranslateUi() self.proxy.stateChanged.connect(lambda x: self.activate()) self.activate() @@ -508,18 +508,17 @@ class InterfaceSettings(CenteredWidget): def initUI(self): self.setObjectName("interfaceForm") - self.setMinimumSize(QtCore.QSize(300, 420)) - self.setMaximumSize(QtCore.QSize(300, 420)) - self.setBaseSize(QtCore.QSize(300, 420)) + self.setMinimumSize(QtCore.QSize(400, 420)) + self.setMaximumSize(QtCore.QSize(400, 420)) self.label = QtGui.QLabel(self) - self.label.setGeometry(QtCore.QRect(30, 10, 100, 20)) + self.label.setGeometry(QtCore.QRect(30, 10, 370, 20)) font = QtGui.QFont() font.setPointSize(16) font.setWeight(75) font.setBold(True) self.label.setFont(font) self.themeSelect = QtGui.QComboBox(self) - self.themeSelect.setGeometry(QtCore.QRect(30, 40, 160, 30)) + self.themeSelect.setGeometry(QtCore.QRect(30, 40, 120, 30)) list_of_themes = ['dark'] self.themeSelect.addItems(list_of_themes) settings = Settings.get_instance() @@ -530,23 +529,23 @@ class InterfaceSettings(CenteredWidget): index = 0 self.themeSelect.setCurrentIndex(index) self.lang_choose = QtGui.QComboBox(self) - self.lang_choose.setGeometry(QtCore.QRect(30, 110, 160, 30)) + self.lang_choose.setGeometry(QtCore.QRect(30, 110, 120, 30)) supported = Settings.supported_languages() for key in supported: self.lang_choose.insertItem(0, key) if settings['language'] == key: self.lang_choose.setCurrentIndex(0) self.lang = QtGui.QLabel(self) - self.lang.setGeometry(QtCore.QRect(30, 80, 121, 20)) + self.lang.setGeometry(QtCore.QRect(30, 80, 370, 20)) self.lang.setFont(font) self.mirror_mode = QtGui.QCheckBox(self) - self.mirror_mode.setGeometry(QtCore.QRect(30, 160, 120, 20)) + self.mirror_mode.setGeometry(QtCore.QRect(30, 160, 370, 20)) self.mirror_mode.setChecked(settings['mirror_mode']) self.smileys = QtGui.QCheckBox(self) self.smileys.setGeometry(QtCore.QRect(30, 190, 120, 20)) self.smileys.setChecked(settings['smileys']) self.smiley_pack_label = QtGui.QLabel(self) - self.smiley_pack_label.setGeometry(QtCore.QRect(30, 230, 120, 20)) + self.smiley_pack_label.setGeometry(QtCore.QRect(30, 230, 370, 20)) self.smiley_pack_label.setFont(font) self.smiley_pack = QtGui.QComboBox(self) self.smiley_pack.setGeometry(QtCore.QRect(30, 260, 160, 30)) @@ -558,7 +557,7 @@ class InterfaceSettings(CenteredWidget): ind = sm.get_packs_list().index('default') self.smiley_pack.setCurrentIndex(ind) self.messages_font_size_label = QtGui.QLabel(self) - self.messages_font_size_label.setGeometry(QtCore.QRect(30, 300, 270, 20)) + self.messages_font_size_label.setGeometry(QtCore.QRect(30, 300, 370, 20)) self.messages_font_size_label.setFont(font) self.messages_font_size = QtGui.QComboBox(self) self.messages_font_size.setGeometry(QtCore.QRect(30, 330, 160, 30)) diff --git a/src/smileys.py b/src/smileys.py index e90bb8c..5a430e9 100644 --- a/src/smileys.py +++ b/src/smileys.py @@ -85,6 +85,6 @@ def sticker_loader(): for key in keys: path = d + key + '/' files = filter(lambda f: f.endswith('.png'), os.listdir(path)) - files = map(lambda f: path + f, files) + files = map(lambda f: unicode(path + f), files) result.extend(files) return result diff --git a/src/stickers/tox/black.png b/src/stickers/tox/black.png new file mode 100755 index 0000000000000000000000000000000000000000..5d1e0ebf9d684186455f794189d485a2515003f0 GIT binary patch literal 2155 zcmV-x2$c7UP)dS4~b!r1wqyqt&G+#lv$Zz(wb#dA6&~D z-crlT%v=bV`{^PD|D7?xdTXP!C#bDepfXA0<}FEA1q3Jd}+0D1#w z09~5v{0saI>;bj{>wzDD)xfS)t?fWu1H1_Q0yF|mF-s#*2h0IRq&k9(QVmQ)u7bFt zlq>6isX$dqW6BI&ff>LbxD%&s+1uP_w-m;wp4)-#q$f_>vIDrw`6!ig7EnX7=Z($s z5pa&v5i4U9at8Yrrft~++~9EBYPb)1UG^35jFw4;~2$~t_ z5U6!|!O4*bl!wqKP)m8j!SN_dA?5zY0G|RC7TWp^ScOdYYyx%z2apq>8_)}xG8&9b zBV9)F@iqc?0!tFM6D<9ZkH#ct^6$W0V0euF`yej?Ye;q_{{sw+(SPt1ftAERFgt?is`r~|G{!M-YB z0nx9j!@z|p*p~_mh%V5F$Sio8Oa-%m?=nO{fOo3NMyg zB7JF}RNqLoMFE@Ssn3Y%ImKnBVq(@?>Ko&c}R!yOAaH5UIgz42{6Wu8eT?kiH4?d9wM) zvnxbqAtIEcfQ(rci!eI_>yeM$kog+3vApZcz_@I}Y+$Q=85n^_FdNHOPxi&48u`dG z8Q8O)Y>dK1m_1(`fYV(V;NqDyAVRy}I_TdvTM(y|aug9kt>Z$Zei7=fchJ8J)*068 z>!NcPBK0(^*MJ`9`JIOKdb#M_g-E8e*N1`s9Q5yk{f70_Jd;fQ7mhjT+ZBz5^_WZF_6H~u%8(vT+;ZvjndX}FD7}j%gJbf>)4e{K+30*K> zM(O0j0N)~A=ed6qh6AS=)^*}+>RY6n1F)eSH%6$NNs;;jqdnVDj$3^j;9DdRSE^7M zNIJfMB?&>K+X(js;sMeRYB-4yL@EOFd>e5Js(=S0{*TEjZe&6b3E+ApZYd-tApzG> z$h1fxSJP16Ml{odcy3ym7pWT(n&02IA;3)HEjwghB#;HeFAh$=L;~?& zTMb<8q3_PX8w3_07NSTXzSS#{Gy+cM!`k6FU|53x?=V+V3zbM%{u5Zc@GjoQvkXnC*DBhmA-p(-L@1Em*@#;7#op##J_w6#E%TuQhqFPAf5@pzEY)* z=G$Uum%8mTza4=lV(t#@vy3PLm$x&Btg!SHf4c?00n||#Ttt^^RaE{0mbdxaI3!FZ zs1Mc>RBAYrlCY2yy=3n|qW4stm{}I70eGd=?~fuW2rB)U6CWqee1Wh8c|ETHUP3Z- zd0%CXLsms<0GDBn9LmDIga~0l7#D$VE~>E|LPW@G-j!cpq{7+K$XP^g^->k3)9B zR5`KQ8sE#qamy}bldN(l+Es`%hi`l1mdRR0`hsX-DFq}-LW563CPZ3>c{F%i9!B5Z zO_Q~~IBZ3>7>%1a>b2&g3T+}ihIz)U_Lz?B!=wgHBCSI<8cE6l+V{l^5=|n#ZLzJl zko&y~G>P<;#kMx1Cu^lDkv3ayZ;R#joS{i1+gbPzTW-%8nnbdl-?WG2_MD+fq)RQf zRUoXbfJ&lCq$nxP$}tQ$(_(v0(InCY;!g*)<$g=;q=F`q&O_$jlF}c^zNH3DB7y8@ zlw>ohA`(32YI9*HXcOsl;A13cIVuGt6lRQ7i&8+FNFX^TYLUe}Q+goLeUqG6 z?APSm{>Uq{1Ym?|X$0nw?CP%q-V0zXnH6cau@t2#0&fN|p3I4~ID!Z!bOJsJU|dEb zX?St?75kZv8<1$g9hTd5f(DUhlHB>^RP5t;@~fZ;U8G$|B)Ka-0M_Y}JC30PZ1 zVUoTM#7f}jmS1Y{A3czl6U#neP;131f!EQOpERpwBa*cRIN1SXC@>z$yA$+6SO#eV h_9E%AYiN~c_J1Rr#YLaXz<&S$002ovPDHLkV1g&M*CPM` literal 0 HcmV?d00001 diff --git a/src/stickers/tox/red.png b/src/stickers/tox/red.png new file mode 100755 index 0000000000000000000000000000000000000000..3185319c443e6868fc69d8954674ecb8d193d944 GIT binary patch literal 3581 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 D)-cXE literal 0 HcmV?d00001 diff --git a/src/stickers/tox/white.png b/src/stickers/tox/white.png new file mode 100755 index 0000000000000000000000000000000000000000..745b597462693aa53209ccbf8c00d456c4150c55 GIT binary patch literal 4446 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 N%uQ^LRUGxY{2v*g&*}gG literal 0 HcmV?d00001