def card(content, title=None, background_color=None, size=(.7, .5)): '''Вывод диалоговых окон с кастомным контентом.''' if not background_color: background_color = [1.0, 0, 0, 1] card = MDCard(size_hint=(1, 1), padding=5) #, background_color=background_color) if title: box = BoxLayout(orientation='vertical', padding=dp(8)) box.add_widget( MDLabel(text=title, theme_text_color='Secondary', font_style="Title", size_hint_y=None, height=dp(36))) box.add_widget(MDSeparator(height=dp(1))) box.add_widget(content) card.add_widget(box) else: card.add_widget(content) dialog = ModalView(size_hint=size, background_color=[0, 0, 0, .2]) dialog.add_widget(card) dialog.open() return dialog
def pop1(self): p = Popup(title='IT 2017-2021', title_color=[1, 0, 0, 1], background='', size_hint=[0.75, 0.6]) b = BoxLayout(orientation='vertical') #b.add_widget(Image(source='a1.jpg')) b1 = BoxLayout(orientation='vertical') b1.add_widget(MDSeparator(height=dp(1))) b1.add_widget( MDLabel( text= 'Developed by IT 2017 Batch\n Special Thanks to All who helped this', halign='left')) b1.add_widget(MDSeparator(height=dp(1))) b.add_widget(b1) p.add_widget(b) p.open()
def add_info_for_post(self, items_dict=None, add_commented_post=False): '''Добавляет аватар, имя автора, дату поста и иконку статуса автора (online/offline).''' def add_name_avatar_date_post(): '''Добавляет имя, аватар, дату автора поста/комментария,''' def set_height_commented_post(instance, value): '''Смотрите метод set_height_post.''' post.height = \ dp(value[1] + post.ids.title_post.height + self.label_count_comments.height) def set_height_post(instance, value): '''Смотрите метод open_real_size_post класса Post.''' if post.not_set_height_label: return if instance not in self.list_labels_posts and \ value != [0, 0]: self.list_labels_posts.append(instance) post._texture_height = value[1] else: # Устанавливает фиксированную высоту текста поста. instance.text_size = \ (dp(self._app.window.width - 30), dp(70)) if not add_commented_post: # для постов/комментариев # Имя, аватар, дата, текст. author_name = \ self.profiles_dict[items_dict['from_id']]['author_name'] post.ids.title_post.icon = \ self.profiles_dict[items_dict['from_id']]['avatar'] post.ids.title_post.text = author_name date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(items_dict['date'])) post.ids.title_post.secondary_text = date # FIXME: UnicodeError: A Unicode character above '\uFFFF' # was found; not supported - ошибка при присутствии в тексте # постов/комментариев ебаных смайлов (как их я их ненавижу) # при использовании третьей версии Python. post.ids.text_posts.text = text_post # print(text_post.encode().decode("utf-8", 'ignore')) post.ids.text_posts.bind(texture_size=set_height_post) else: # для шапки комментируемого поста author_name = self.commented_post_info[0] post.ids.title_post.text = author_name post.ids.title_post.icon = self.commented_post_info[1] post.ids.title_post.secondary_text = \ self.commented_post_info[2] post.ids.text_posts.text = text_post + u'\n' # Выделяем имя автора комментрируемого поста канвасом # темнее, чем комментарии к нему. canvas_color = [ 0.9686274509803922, 0.9686274509803922, 0.9686274509803922, 1 ] add_canvas(post.ids.title_post, canvas_color) post.ids.text_posts.bind( texture_size=set_height_commented_post) # Строка с количеством комментариев к посту. box_comments = AnchorLayout(size_hint_y=None, height=dp(20)) self.label_count_comments = Label( text=self._app.translation._(u'Комментариев: %s') % self.count_issues, font_size='11sp') add_canvas(box_comments, self._app.theme_cls.primary_color) box_comments.add_widget(self.label_count_comments) post.add_widget(box_comments) self.ids.list_posts.add_widget(post) return author_name def add_icon_status(): '''Добавляем иконку статуса пользователя: с компьютера/мобильного/offline.''' if not add_commented_post: if self.profiles_dict[items_dict['from_id']]['author_online']: icon = self._app.DEVISE_ONLINE[self.profiles_dict[ items_dict['from_id']]['device']] else: icon = self._app.DEVISE_ONLINE[0] else: icon = self._app.DEVISE_ONLINE[0] post.ids.title_post.add_widget(RightButton(source=icon)) if items_dict is None: items_dict = {} post = self._app.Post(height=dp(200), _box_posts=self) # Для комментариев. if self.comments and not add_commented_post: text_post = items_dict['text'] # Ищем в комментариях, кому адресованно - # подстроку вида '[id12345|NameAuthor]'. count = re.match(self._app.PATTERN_WHOM_COMMENT, text_post) if count: count = count.group() # id и имя автора, которому написан комментарий. whom_id, whom_name = \ count.replace('[', '').replace(']', '').split('|') text_post = text_post.replace(count, '') text_post = u'[ref=Text post][b][color=%s]\n%s[/b][/color]' \ '%s[/ref]' % ( get_hex_from_color(self._app.theme_cls.primary_color), whom_name, self._app.mark_links_in_post(text_post)) else: text_post = u'\n' + text_post if 'reply_to_comment' in items_dict: commented_post_id = items_dict['id'] else: commented_post_id = '' # Подпись 'Ответить'. answer_label = Label( text=u'[ref={answer}]{answer}[/ref]'.format( answer=self._app.translation._(u'Ответить')), markup=True, halign="left", font_size='11sp', color=self._app.theme_cls.primary_color, ) whom_name = \ self.profiles_dict[items_dict['from_id']]['author_name'] answer_label.bind( size=answer_label.setter('text_size'), on_ref_press=lambda *args: post.answer_on_comments( self.post_id, self.count_issues, commented_post_id, whom_name, self.ids.input_text_form)) post.add_widget(answer_label) # Для комментируемого поста. elif self.comments and add_commented_post: text_post = self._app.mark_links_in_post( u'\n' + self.commented_post_info[3]) # Для поста. else: text_post = u'[ref=Post]%s[/ref]' % (self._app.mark_links_in_post( items_dict['text'])) # Иконка количества коментариев к посту. post.add_widget( IconCountComments(callback=lambda *args: post.show_comments( str(items_dict['id']), str(items_dict['comments']['count']) ))) # Количество коментариев к посту. post.children[0].ids.comments_post.text = \ str(items_dict['comments']['count']) # Тень поста/комментария. add_canvas(post, [0, 0, 0, .2], shift=(2.5, 3)) # Фон поста/комментария. add_canvas(post, self._app.list_color) author_name = add_name_avatar_date_post() add_icon_status() # Добавляем разделительную линию между комментариями. if self.comments: post.add_widget(MDSeparator()) return post, author_name