ya2 · news · projects · code · about

housekeeping: ya2.utils.gui
authorFlavio Calva <f.calva@gmail.com>
Sat, 11 Feb 2023 07:12:32 +0000 (09:12 +0200)
committerFlavio Calva <f.calva@gmail.com>
Sat, 11 Feb 2023 07:12:32 +0000 (09:12 +0200)
19 files changed:
pmachines/editor/inspector.py
pmachines/editor/scene.py
pmachines/editor/start_items.py
pmachines/gui/credits_page.py
pmachines/gui/main_page.py
pmachines/gui/menu.py
pmachines/gui/options_page.py
pmachines/gui/play_page.py
pmachines/scene/scene.py
setup.py
tests/functional_test.py
tests/test_functional.py
tests/ya2/build/test_build.py
tests/ya2/utils/gui/test_cursor.py
ya2/build/build.py
ya2/build/lang.py
ya2/utils/gui/base_page.py
ya2/utils/gui/cursor.py
ya2/utils/gui/menu.py

index 3c39a357823074836bd24fc7c97243c9d6ae27d7..5b114b8823aafa5c28ecd1b09211bf01b6433976 100644 (file)
@@ -1,16 +1,12 @@
 from collections import namedtuple
-from glob import glob
 from logging import info
-from importlib import import_module
-from os.path import basename
-from inspect import isclass
 from panda3d.core import Texture, TextNode, LPoint3f
 from direct.gui.OnscreenImage import OnscreenImage
 from direct.gui.DirectGui import DirectButton, DirectFrame, DirectEntry, DirectOptionMenu, OkDialog
 from direct.gui.DirectGuiGlobals import FLAT, NORMAL
 from direct.gui.OnscreenText import OnscreenText
 from direct.showbase.DirectObject import DirectObject
-from pmachines.items.item import ItemStrategy, FixedStrategy, StillStrategy
+from pmachines.items.item import FixedStrategy, StillStrategy
 from pmachines.items.box import HitStrategy
 from pmachines.items.domino import DownStrategy, UpStrategy
 from pmachines.editor.augmented_frame import AugmentedDirectFrame
index f85d0c51c02a9e2fc2001691e322d42e64035876..d67203f43f6907d2e1879d8656812a7ab5b70480 100644 (file)
@@ -1,9 +1,5 @@
 from copy import deepcopy
 from json import dumps
-from importlib import import_module
-from inspect import isclass
-from glob import glob
-from os.path import basename
 from logging import info
 import hashlib
 from panda3d.core import Texture, TextNode, LPoint3f
@@ -13,7 +9,6 @@ from direct.gui.DirectGui import DirectButton, DirectEntry, \
 from direct.gui.DirectGuiGlobals import FLAT, NORMAL
 from direct.gui.OnscreenText import OnscreenText
 from direct.showbase.DirectObject import DirectObject
-from pmachines.items.item import Item
 from pmachines.items.test_item import PixelSpaceTestItem, WorldSpaceTestItem
 from pmachines.editor.scene_list import SceneList
 from pmachines.editor.inspector import Inspector, PixelSpaceInspector, WorldSpaceInspector
index 3eac6f56e861e396c30e6d408ca12a16814cfe27..52cbd1c22e699ab65dae66ae7b353ddad7ab45a8 100644 (file)
@@ -1,8 +1,4 @@
 from collections import namedtuple
-from glob import glob
-from importlib import import_module
-from os.path import basename
-from inspect import isclass
 from panda3d.core import Texture, TextNode, LPoint3f
 from direct.gui.OnscreenImage import OnscreenImage
 from direct.gui.DirectGui import DirectButton, DirectEntry, DirectOptionMenu, OkDialog, DirectFrame
@@ -10,7 +6,6 @@ from direct.gui.DirectGuiGlobals import FLAT, NORMAL
 from direct.gui.OnscreenText import OnscreenText
 from direct.showbase.DirectObject import DirectObject
 from ya2.utils.gfx import DirectGuiMixin
-from pmachines.items.item import Item, ItemStrategy
 from pmachines.editor.augmented_frame import AugmentedDirectFrame
 from ya2.utils.gui.base_page import DirectOptionMenuTestable
 
index a0d617216b5b7491e366552c6cb749bc77407a87..0d1d730ba428011361afff57623b2d03199e246f 100644 (file)
@@ -1,30 +1,30 @@
 from sys import platform
 from os import environ, system
 from webbrowser import open_new_tab
-from ya2.utils.gui.base_page import BasePage, TextInfo, ButtonInfo
+from ya2.utils.gui.base_page import BasePage, TextArgs, ButtonArgs
 
 
 class CreditsPage(BasePage):
 
     def _build_widgets(self):
-        text_dev = TextInfo(
+        text_dev = TextArgs(
             text=_('Code and gfx\n  \1scale\1Flavio Calva\2\n\n\nMusic\n  \1scale\1Stefan Grossmann\2'),
             pos=(-.9, .55),
             align='left')
         self._add_text(text_dev)
-        website_button = ButtonInfo(
+        website_button = ButtonArgs(
             id='website',
             text=_('Website'),
             pos=(-.6, .29),
             command=self.__on_website,
             scale=.08)
         self._add_button(website_button)
-        thanks_text = TextInfo(
+        thanks_text = TextArgs(
             text=_('Special thanks to:\n  \1scale\1rdb\2\n  \1scale\1Luisa Tenuta\2\n  \1scale\1Damiana Ercolani\2'),
             pos=(.1, .55),
             align='left')
         self._add_text(thanks_text)
-        back_button = ButtonInfo(
+        back_button = ButtonArgs(
             id='back',
             text=_('Back'),
             pos=(0, -.8),
index e2ad88073459b36b4d5c56c6b4186cf5b6638c2e..318e45690c28f6b19789ad390b68733613cbd5e9 100644 (file)
@@ -1,33 +1,33 @@
 from sys import exit
 from xmlrpc.client import ServerProxy
-from ya2.utils.gui.base_page import BasePage, ButtonInfo
+from ya2.utils.gui.base_page import BasePage, ButtonArgs
 
 
 class MainPage(BasePage):
 
     def _build_widgets(self):
-        play_args = ButtonInfo(
+        play_args = ButtonArgs(
             id='play',
             text=_('Play'),
             pos=(0, .6),
             command=self._set_page,
             command_args=['play'])
         self._add_button(play_args)
-        option_args = ButtonInfo(
+        option_args = ButtonArgs(
             id='options',
             text=_('Options'),
             pos=(0, .2),
             command=self._set_page,
             command_args=['options'])
         self._add_button(option_args)
-        credits_args = ButtonInfo(
+        credits_args = ButtonArgs(
             id='credits',
             text=_('Credits'),
             pos=(0, -.2),
             command=self._set_page,
             command_args=['credits'])
         self._add_button(credits_args)
-        exit_args = ButtonInfo(
+        exit_args = ButtonArgs(
             id='exit',
             text=_('Exit'),
             pos=(0, -.6),
index c1bfd5a2bd1adbcadc35e07b46ecca4e3d2d7db5..08f06c56921f3c54a6a808c0dd2e2ae99743c494 100644 (file)
@@ -3,7 +3,7 @@ from pmachines.gui.play_page import PlayPage
 from pmachines.gui.options_page import OptionsPage
 from pmachines.gui.credits_page import CreditsPage
 from ya2.utils.gui.menu import BaseMenu
-from ya2.utils.gui.cursor import MouseCursorInfo
+from ya2.utils.gui.cursor import MouseCursorArgs
 
 
 class Menu(BaseMenu):
@@ -11,7 +11,7 @@ class Menu(BaseMenu):
     def __init__(self, start_scene, set_language, option_file,
                  gfx_pipeline, scenes,
                  running_functional_tests, test_positions):
-        c = MouseCursorInfo(
+        c = MouseCursorArgs(
             'assets/images/buttons/arrowUpLeft.dds',
             running_functional_tests,
             (.04, 1, .04),
index 4f479a3c2622a65ecad42539ac9840b1d5970f7a..8ad16a9622f4522e06f7428c63e1558a6f38b2db 100644 (file)
@@ -4,7 +4,7 @@ from direct.showbase.DirectObject import DirectObject
 from direct.gui.DirectGui import DirectFrame
 from ya2.utils.gfx import DirectGuiMixin, pos_pixel
 from ya2.utils.audio import AudioTools
-from ya2.utils.gui.base_page import BasePage, OptionMenuInfo, TextInfo, SliderInfo, CheckButtonInfo, ButtonInfo
+from ya2.utils.gui.base_page import BasePage, OptionMenuArgs, TextArgs, SliderArgs, CheckButtonArgs, ButtonArgs
 
 
 class OptionsPage(BasePage, DirectObject):
@@ -42,7 +42,7 @@ class OptionsPage(BasePage, DirectObject):
                 btn.__class__ = type('DirectFrameMixed', (DirectFrame, DirectGuiMixin), {})
                 pos = btn.pos_pixel()
                 self._page_info.test_positions[lng] = (pos[0] + 5, pos[1])
-        language_menu = OptionMenuInfo(
+        language_menu = OptionMenuArgs(
             id='languages',
             text=_('Language'),
             items=items,
@@ -52,12 +52,12 @@ class OptionsPage(BasePage, DirectObject):
         self._add_option_menu(language_menu, lang_cb)
 
     def __build_volume(self):
-        t = TextInfo(
+        t = TextArgs(
             text=_('Volume'),
             pos=(-.56, .55),
             align='left')
         self._add_text(t)
-        s = SliderInfo(
+        s = SliderArgs(
             pos=(.3, 1, .57),
             value=self.__option_file['settings']['volume'],
             scale=(.28, 1, .5),
@@ -65,7 +65,7 @@ class OptionsPage(BasePage, DirectObject):
         self._slider = self._add_slider(s)
 
     def __build_fullscreen(self):
-        c = CheckButtonInfo(
+        c = CheckButtonArgs(
             id='fullscreen',
             text=_('Fullscreen'),
             pos=(0, .3),
@@ -96,7 +96,7 @@ class OptionsPage(BasePage, DirectObject):
                     if btn['text'] == tgt_res:
                         pos = pos_pixel(btn)
                         self._page_info.test_positions['res_' + tgt_res] = (pos[0] + 5, pos[1])
-        r = OptionMenuInfo(
+        r = OptionMenuArgs(
             id='resolutions',
             text=_('Resolution'),
             items=resolutions,
@@ -109,7 +109,7 @@ class OptionsPage(BasePage, DirectObject):
         self._page_info.test_positions['res_1360x768'] = [pos_res[0] + 430, pos_res[1] -285]
 
     def __build_aa(self):
-        c = CheckButtonInfo(
+        c = CheckButtonArgs(
             id='aa',
             text=_('Antialiasing'),
             pos=(0, -.2),
@@ -118,7 +118,7 @@ class OptionsPage(BasePage, DirectObject):
         self._add_check_button(c)
 
     def __build_shadows(self):
-        c = CheckButtonInfo(
+        c = CheckButtonArgs(
             id='shadows',
             text=_('Shadows'),
             pos=(0, -.45),
@@ -127,7 +127,7 @@ class OptionsPage(BasePage, DirectObject):
         self._add_check_button(c)
 
     def __build_back(self):
-        back_button = ButtonInfo(
+        back_button = ButtonArgs(
             id='back',
             text=_('Back'),
             pos=(0, -.8),
index 117b98db96b5ebc5788d1a5d23ef604d005cc486..a38ab7ef4a6a6255a8c51bd34095876b2ee1db0a 100644 (file)
@@ -1,4 +1,4 @@
-from ya2.utils.gui.base_page import BasePage, ButtonInfo
+from ya2.utils.gui.base_page import BasePage, ButtonArgs
 
 
 class PlayPage(BasePage):
@@ -14,7 +14,7 @@ class PlayPage(BasePage):
         for i, scene_name in enumerate(self.__scenes):
             top = .1 if len(self.__scenes) < 5 else .6
             row = 0 if i < 4 else 1
-            i = ButtonInfo(
+            i = ButtonArgs(
                 id=scene_name.lower(),
                 text=Scene.name(scene_name),
                 pos=(left + dx * (i % 4), top - dx * row),
@@ -27,7 +27,7 @@ class PlayPage(BasePage):
                 color=(1, 1, 1, .4) if Scene.is_done(scene_name) else (1, 1, 1, .8),
                 text_color=(.9, .9, .9, .4) if Scene.is_done(scene_name) else (.9, .9, .9, 1))
             self._add_button(i, True)
-        back_button = ButtonInfo(
+        back_button = ButtonArgs(
             id='back',
             text=_('Back'),
             pos=(0, -.8),
index e8172f9f85141c8913974303a5238179362bc66e..60e08755caf77e32f8e06dd4d6166e8f5471861b 100644 (file)
@@ -22,7 +22,7 @@ from pmachines.items.shelf import Shelf
 from pmachines.items.teetertooter import TeeterTooter
 from pmachines.items.test_item import PixelSpaceTestItem, WorldSpaceTestItem
 from pmachines.editor.scene import SceneEditor
-from ya2.utils.gui.cursor import MouseCursor, MouseCursorInfo
+from ya2.utils.gui.cursor import MouseCursor, MouseCursorArgs
 from ya2.utils.gfx import GfxTools, DirectGuiMixin
 from ya2.utils.gui.gui import GuiTools
 
@@ -52,7 +52,7 @@ class Scene(DirectObject):
         self.json = {}
         self.accept('enforce_result', self.enforce_result)
         self._set_camera()
-        c = MouseCursorInfo(
+        c = MouseCursorArgs(
             'assets/images/buttons/arrowUpLeft.dds', testing, (.04, 1, .04), (.5, .5, .5, 1),
             (.01, .01))
         self._cursor = MouseCursor(c)
index 1b151a5e952e611b5fc8d8413d1831b7e35a042a..bff22e564a11f9f3e2f38e6b30c8bf842e0f717d 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -13,7 +13,7 @@ from multiprocessing import cpu_count
 from textwrap import dedent
 from direct.dist.commands import bdist_apps
 from p3d_appimage import AppImageBuilder
-from ya2.build.build import _branch, find_file_names, _version, FindFileNamesInfo
+from ya2.build.build import _branch, find_file_names, _version, FindFileNamesArgs
 from ya2.build.lang import LanguageBuilder
 from ya2.build.screenshots import ScreenshotsBuilder
 from ya2.build.images import ImagesBuilder
@@ -61,7 +61,7 @@ class ImagesCommand(BaseCommand):
     def run(self):
         s = ScreenshotsBuilder(Pmachines.scenes())
         s.build()
-        find_info = FindFileNamesInfo(
+        find_info = FindFileNamesArgs(
             ['jpg', 'png'],
             ['models', 'gltf', 'bam'],
             ['_png.png'])
index 123a212bdab51258f36764ce53d24e628396a51d..2e21403af92e72f93d8871206ec6ec3e02accbd6 100644 (file)
@@ -1,17 +1,14 @@
 from panda3d.core import load_prc_file_data
 load_prc_file_data('', 'window-type none')
-import datetime, sys
-from pathlib import Path
+import sys
 from time import sleep
 from os import system
 from xmlrpc.client import ServerProxy
-from os import makedirs
-from os.path import exists
 from sys import exit, argv
 from direct.showbase.ShowBase import ShowBase
 import asyncio
 import xmlrpc
-from logging import basicConfig, debug, info, DEBUG, getLogger, Formatter, FileHandler, StreamHandler
+from logging import basicConfig, debug, info, DEBUG, getLogger, StreamHandler
 
 
 basicConfig(level=DEBUG, format='(evt-test) %(asctime)s.%(msecs)03d %(message)s', datefmt='%H:%M:%S')
index c1ce61ccefb4a9e9460acd72e8381098781b3fff..dbb72aaf1911a7aa21b22d6d9da34f8f22fa904d 100644 (file)
@@ -11,7 +11,7 @@ from time import sleep
 from os import system, remove, environ
 from os.path import exists, basename, join
 from glob import glob
-from subprocess import PIPE, Popen, STDOUT
+from subprocess import Popen, STDOUT
 from panda3d.core import Filename
 from ya2.build.build import exec_cmd, _branch, _version
 
@@ -88,7 +88,7 @@ class FunctionalTests(TestCase):
             sleep(30)
             info('launching ' + test_cmd)
             print('launching ' + test_cmd)
-            p_test = Popen(test_cmd, shell=True, stderr=STDOUT, universal_newlines=True
+            p_test = Popen(test_cmd, shell=True, stderr=STDOUT, universal_newlines=True)
             p_app_out, p_app_err = p_app.communicate()
             t_out, t_err = p_test.communicate()
             info('output (%s): %s' % (app_cmd, p_app_out))
index f9712fce4229c3f89b31555d60038f1515f363ff..5b1ccb1c5bb3d8bae51394f1ef54d2304c7267a6 100644 (file)
@@ -10,7 +10,7 @@ from shutil import rmtree
 from unittest import TestCase
 import re
 from ya2.build.build import InsideDir, find_file_names, exec_cmd, _branch, _version, \
-    to_be_built, FindFileNamesInfo
+    to_be_built, FindFileNamesArgs
 
 
 class BuildTests(TestCase):
@@ -49,7 +49,7 @@ class BuildTests(TestCase):
         self.assertTrue(any(matches))
 
     def test_get_files(self):
-        find_info = FindFileNamesInfo(['ext2'], 'c')
+        find_info = FindFileNamesArgs(['ext2'], 'c')
         _files = find_file_names(find_info)
         self.assertSetEqual(set(_files),
                             set(['./test_get_files/a/d.ext2',
index 8a8a011e9b1c2d53f0b92bf5a2f80e104c37c096..6ac9b8ceb9ac008d2b9f2064f15e8091baa1c000 100644 (file)
@@ -6,7 +6,7 @@ if '' in sys.path: sys.path.remove('')
 sys.path.append(str(Path(__file__).parent.parent.parent))
 from unittest import TestCase
 from direct.showbase.ShowBase import ShowBase
-from ya2.utils.gui.cursor import MouseCursor, MouseCursorInfo
+from ya2.utils.gui.cursor import MouseCursor, MouseCursorArgs
 
 
 class CursorTests(TestCase):
@@ -18,7 +18,7 @@ class CursorTests(TestCase):
         self.__app.destroy()
 
     def test_cursor(self):
-        i = MouseCursorInfo('tests/assets/images/icon16.png', False, (1, 1, 1), (1, 1, 1, 1), (0, 0))
+        i = MouseCursorArgs('tests/assets/images/icon16.png', False, (1, 1, 1), (1, 1, 1, 1), (0, 0))
         c = MouseCursor(i)
         c.set_image('tests/assets/images/icon32.png')
         self.assertEqual('tests/assets/images/icon32.png', c._MouseCursor__image.get_texture().get_filename())
index aefeb08ad73185d7f813a217be45c952cc264a75..400c55eb7fd0be7c785423e49ef8614e9e7f69e6 100644 (file)
@@ -97,7 +97,7 @@ def _version():
     return ret_ver
 
 
-class FindFileNamesInfo:
+class FindFileNamesArgs:
 
     def __init__(self, extensions, excluding_directories=None,
                  excluding_files_ending_with=None, root_path='.'):
@@ -108,7 +108,7 @@ class FindFileNamesInfo:
 
 
 def find_file_names(find_info):
-    #TODO avoid FindFileNamesInfo, write multiple functions with different
+    #TODO avoid FindFileNamesArgs, write multiple functions with different
     # behaviors: this is a function which does more than one thing
     _extensions = find_info.extensions
     excl_dirs = find_info.excluding_directories
index 54fafdce1fc1e2f9d275272cb3827312c4c40c39..1592fb59ffd60c5d8d8465a92ccd0ffdc47f50a5 100644 (file)
@@ -4,7 +4,7 @@ from os.path import exists, isfile, join
 from shutil import move, copy
 from json import loads
 from polib import pofile, POEntry
-from ya2.build.build import find_file_names, FindFileNamesInfo
+from ya2.build.build import find_file_names, FindFileNamesArgs
 
 
 class LanguageBuilder:
@@ -26,7 +26,7 @@ class LanguageBuilder:
 
     def __build_pot(self):
         '''Builds the pot file in the lng_dir_code directory.'''
-        find_info = FindFileNamesInfo(['py'], ['tests'])
+        find_info = FindFileNamesArgs(['py'], ['tests'])
         src_files = ' '.join(find_file_names(find_info))
         cmd_tmpl = 'xgettext -ci18n -d {appname} -L python ' + \
             '-o {pot_path}{appname}.pot '
index 6b3a0df3786d13c13626a1da28f8d412011bd949..359ed7656fb2f958d22c6ee1aa409e1f7910f3d2 100644 (file)
@@ -21,7 +21,7 @@ class DirectOptionMenuTestable(DirectOptionMenu):
 
 
 @dataclass
-class BaseInfo:
+class BaseArgs:
     id: ... = ''
     text: ... = None
     pos: ... = None
@@ -43,7 +43,7 @@ class BaseInfo:
 
 
 @dataclass
-class ButtonInfo(BaseInfo):
+class ButtonArgs(BaseArgs):
     command: ... = None
     command_args: ... = None
     size: ... = None
@@ -84,7 +84,7 @@ class ButtonInfo(BaseInfo):
 
 
 @dataclass
-class SliderInfo(ButtonInfo):
+class SliderArgs(ButtonArgs):
     range: ... = None
     scale: ... = None
     value: ... = None
@@ -104,7 +104,7 @@ class SliderInfo(ButtonInfo):
 
 
 @dataclass
-class OptionMenuInfo(ButtonInfo):
+class OptionMenuArgs(ButtonArgs):
     items: ... = None
     initial_item: ... = None
     item_color: ... = None
@@ -135,7 +135,7 @@ class OptionMenuInfo(ButtonInfo):
 
 
 @dataclass
-class CheckButtonInfo(ButtonInfo):
+class CheckButtonArgs(ButtonArgs):
     value: ... = None
 
     def to_p3d_args(self):
@@ -149,7 +149,7 @@ class CheckButtonInfo(ButtonInfo):
 
 
 @dataclass
-class TextInfo(BaseInfo):
+class TextArgs(BaseArgs):
     align: ... = None
 
     def to_p3d_args(self):
index 69d4e9a518977eb07b9d2ffe8ea43b750de7d2ab..7f0b0314870a089e1192bdbddb4d83493f3c1541 100644 (file)
@@ -5,7 +5,7 @@ from ya2.utils.logics import LogicsTools
 
 
 @dataclass
-class MouseCursorInfo:
+class MouseCursorArgs:
     image_path: ...
     functional_test: ...
     scale: ... = 1
index 59cf84eaece0253880139638513a0e7a8dac2bbd..af2e5b2341c066368de855eefddeb2c20d686fee 100644 (file)
@@ -3,7 +3,7 @@ from ya2.utils.gui.cursor import MouseCursor
 
 
 @dataclass
-class PageInfo:
+class PageArgs:
     set_page: ...
     test_positions: ...
     running_functional_tests: ...
@@ -12,7 +12,7 @@ class PageInfo:
 class BaseMenu:
 
     def __init__(self, cursor_info, running_functional_tests, test_positions):
-        self._page_info = PageInfo(self.set_page, test_positions, running_functional_tests)
+        self._page_info = PageArgs(self.set_page, test_positions, running_functional_tests)
         self._page = None
         self._cursor = MouseCursor(cursor_info)
         self.set_page('main')