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
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
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
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
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
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),
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),
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):
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),
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):
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,
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),
self._slider = self._add_slider(s)
def __build_fullscreen(self):
- c = CheckButtonInfo(
+ c = CheckButtonArgs(
id='fullscreen',
text=_('Fullscreen'),
pos=(0, .3),
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,
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),
self._add_check_button(c)
def __build_shadows(self):
- c = CheckButtonInfo(
+ c = CheckButtonArgs(
id='shadows',
text=_('Shadows'),
pos=(0, -.45),
self._add_check_button(c)
def __build_back(self):
- back_button = ButtonInfo(
+ back_button = ButtonArgs(
id='back',
text=_('Back'),
pos=(0, -.8),
-from ya2.utils.gui.base_page import BasePage, ButtonInfo
+from ya2.utils.gui.base_page import BasePage, ButtonArgs
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),
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),
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
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)
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
def run(self):
s = ScreenshotsBuilder(Pmachines.scenes())
s.build()
- find_info = FindFileNamesInfo(
+ find_info = FindFileNamesArgs(
['jpg', 'png'],
['models', 'gltf', 'bam'],
['_png.png'])
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')
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
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))
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):
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',
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):
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())
return ret_ver
-class FindFileNamesInfo:
+class FindFileNamesArgs:
def __init__(self, extensions, excluding_directories=None,
excluding_files_ending_with=None, root_path='.'):
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
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:
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 '
@dataclass
-class BaseInfo:
+class BaseArgs:
id: ... = ''
text: ... = None
pos: ... = None
@dataclass
-class ButtonInfo(BaseInfo):
+class ButtonArgs(BaseArgs):
command: ... = None
command_args: ... = None
size: ... = None
@dataclass
-class SliderInfo(ButtonInfo):
+class SliderArgs(ButtonArgs):
range: ... = None
scale: ... = None
value: ... = None
@dataclass
-class OptionMenuInfo(ButtonInfo):
+class OptionMenuArgs(ButtonArgs):
items: ... = None
initial_item: ... = None
item_color: ... = None
@dataclass
-class CheckButtonInfo(ButtonInfo):
+class CheckButtonArgs(ButtonArgs):
value: ... = None
def to_p3d_args(self):
@dataclass
-class TextInfo(BaseInfo):
+class TextArgs(BaseArgs):
align: ... = None
def to_p3d_args(self):
@dataclass
-class MouseCursorInfo:
+class MouseCursorArgs:
image_path: ...
functional_test: ...
scale: ... = 1
@dataclass
-class PageInfo:
+class PageArgs:
set_page: ...
test_positions: ...
running_functional_tests: ...
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')