diff --git a/dcc/concat.py b/dcc/concat.py index 6198de3..33a3a8b 100644 --- a/dcc/concat.py +++ b/dcc/concat.py @@ -85,11 +85,7 @@ class Concat(dcc.doom_base.Wad): ) mapstring = v.name[-6:-4] text = self._config["map_names"][f"map{mapstring}"] - self.draw_text( - img, - f"MAP{mapstring}: {text}", - font_size=120 - ) + dcc.text.draw_text(img, f"MAP{mapstring}: {text}", font_size=120) img.trim(reset_coords=True) img.border("graya(25%, 25%)", 10, 10) img.border(dcc.config.TEXT_STROKE_COLOR, 16, 16) diff --git a/dcc/config.py b/dcc/config.py index c1ed346..6d1c4b3 100644 --- a/dcc/config.py +++ b/dcc/config.py @@ -26,36 +26,25 @@ class Base(Command): "required key 'dsda' not set in config " + f"{self.doom.joinpath(self.config_name)}.") for d in ("iwads", "pwads", "demos", "fabricate"): - self._init_attr([d], d, fn=self.doom.joinpath) + self._init_attr(d, d, fn=self.doom.joinpath) - self._init_attr(["thumbnail", "height"], 720) - self._init_attr(["thumbnail", "width"], 1280) - self._init_attr(["thumbnail", "font"], None) - self._init_attr(["thumbnail", "text_fill"], "white") - self._init_attr(["thumbnail", "text_stroke"], "red") - self._init_attr( - ["fetch", "mirror"], - "https://youfailit.net/pub/idgames" - ) + self._init_attr("thumbnail.height", 1280) + self._init_attr("thumbnail.width", 720) + self._init_attr("thumbnail.font", None) + self._init_attr("thumbnail.text_fill", "white") + self._init_attr("thumbnail.text_stroke", "red") + self._init_attr("fetch.mirror", "https://youfailit.net/pub/idgames") def run(self, parsed_args): self.init_base(parsed_args) self.take_action(parsed_args) def _init_attr(self, what, default, fn=lambda x: x): - propname = "_".join(what) - val = self._config - for w in what: - val = val[w] - if val is None: - val = default - break - - setattr(self, f"_{propname}", fn(val)) + what = what.replace(".", "_") setattr( - type(self), propname, - property(lambda self: getattr(self, f"_{propname}")) - ) + self, f"_{what}", fn(self._config.get(what, default))) + setattr( + type(self), what, property(lambda self: getattr(self, f"_{what}"))) @property def doom(self): diff --git a/dcc/configure.py b/dcc/configure.py index 0bc0e5f..e5a6c6a 100644 --- a/dcc/configure.py +++ b/dcc/configure.py @@ -1,10 +1,12 @@ -import dcc.doom_base -import tomlkit.toml_file +import dcc.config +import tomlkit +from tomlkit.toml_file import TOMLFile -class Configure(dcc.doom_base.Wad): +class Configure(dcc.config.Base): def get_parser(self, prog_name): parser = super().get_parser(prog_name) + parser.add_argument("wad") parser.add_argument("complevel") parser.add_argument("--iwad") return parser @@ -12,12 +14,12 @@ class Configure(dcc.doom_base.Wad): def take_action(self, parsed_args): new_config = self.pwad_path.joinpath(self.config_name) if new_config.exists(): - raise Exception(f"Config {new_config} already exists.") + raise Exception("Config %s already exists.".format(new_config)) doc = tomlkit.document() doc.add("complevel", parsed_args.complevel) if parsed_args.iwad is not None: doc.add("iwad", parsed_args.iwad) - f = tomlkit.toml_file.TOMLFile(new_config) + f = TOMLFile(new_config) f.write(doc) diff --git a/dcc/ss.py b/dcc/ss.py index de610ff..9ec2f54 100644 --- a/dcc/ss.py +++ b/dcc/ss.py @@ -22,7 +22,7 @@ class SS(dcc.doom_base.WadMap): height = self.thumbnail_height with wand.image.Image(width=width, height=height, pseudo="x:") as img: img.reset_coords() - if (img.width < width or img.height < height): + if (img.size[0] < width or img.size[1] < height): if not messagebox.askretrycancel( title="DCC", message=f"Image too small ({img.width}x{img.height})." + diff --git a/dcc/text.py b/dcc/text.py index 8e1ace9..5df6ed4 100644 --- a/dcc/text.py +++ b/dcc/text.py @@ -1,11 +1,10 @@ -import dcc.config import dcc.doom_base import sys import wand.drawing import wand.image -def draw_text(self, img, text, font_size=64): +def draw_text(img, text, font_size=64): with wand.drawing.Drawing() as draw: draw.font = self.thumbnail_font draw.font_size = font_size @@ -21,9 +20,6 @@ def draw_text(self, img, text, font_size=64): draw(img) -dcc.config.Base.draw_text = draw_text - - class Text(dcc.doom_base.WadMap): def get_parser(self, prog_name): parser = super().get_parser(prog_name) @@ -38,11 +34,9 @@ class Text(dcc.doom_base.WadMap): text = "{}\n{}".format(text, parsed_args.demotype) with wand.image.Image( height=self.thumbnail_height, - width=self.thumbnail_width + width=self.thumbnail_height ) as img: - self.draw_text( - img, text, - ) + draw_text(img, text) img.trim() img.reset_coords() img.save(filename=self.text_thumb_path())