# ListedSubWindow.py -- Pamhyr # Copyright (C) 2023 INRAE # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # -*- coding: utf-8 -*- import logging from functools import reduce logger = logging.getLogger() class ListedSubWindow(object): def __init__(self): super(ListedSubWindow, self).__init__() self.sub_win_cnt = 0 self.sub_win_list = [] def sub_win_count(self): return self.sub_win_cnt def sub_win_list(self): return self.sub_win_list.copy() def sub_win_add(self, name, win): self.sub_win_list.append((name, win)) self.sub_win_cnt += 1 logger.info(f"Open window: {name} ({self.sub_win_cnt})") def sub_win_del(self, name): self.sub_win_list = list( filter( lambda x: x[0] != name, self.sub_win_list ) ) self.sub_win_cnt = len(self.sub_win_list) logger.info(f"Close window: {name} ({self.sub_win_cnt})") def sub_win_exists(self, name): return reduce( lambda acc, n: (acc or (n[0] == name)), self.sub_win_list, False )