Skip to content

Commit 85cfe2c

Browse files
authored
Add the hability to disable the context menu and render JSON (#21)
1 parent b15acb8 commit 85cfe2c

File tree

5 files changed

+49
-27
lines changed

5 files changed

+49
-27
lines changed

pypulse/Socket/handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def __check_request(self):
3333

3434
self.response = view[0](request) if not view[1] else view[0](request, **view[1])
3535

36-
if type(self.response).__name__ not in ["Redirect", "RenderTemplate", "Reload"]:
36+
if type(self.response).__name__ not in ["Redirect", "RenderTemplate", "Reload", "RenderJson"]:
3737
return False
3838

3939
return True

pypulse/Template/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pypulse.Template.render import RenderTemplate
1+
from pypulse.Template.render import RenderTemplate, RenderJson
22
from pypulse.Template.redirect import Redirect
33
from pypulse.Template.reload import Reload
4-
from pypulse.Template.template import Template
4+
from pypulse.Template.template import Template

pypulse/Template/render.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,43 @@
1+
from __future__ import annotations
2+
3+
import json
4+
from typing import TYPE_CHECKING, Union
5+
16
from jinja2 import Environment, FileSystemLoader
7+
28
from .template import Template
39

10+
if TYPE_CHECKING:
11+
from ..Socket.handler import Request
412

5-
class RenderTemplate():
6-
def __init__(self, template_route: str, variables_dict: dict = None) -> None:
7-
self.template_route = template_route
8-
self.variables_dict = variables_dict
913

10-
self.envirenemnt = Environment(
11-
loader=FileSystemLoader(Template.TEMPLATE_PATH))
14+
class RenderTemplate:
15+
16+
def __init__(self, template_route: str, variables_dict: dict = None):
17+
self.template_route: str = template_route
18+
self.variables_dict: dict = variables_dict
1219

13-
def render_template(self, request):
20+
self.jinja_env: Environment = Environment(loader=FileSystemLoader(Template.TEMPLATE_PATH))
21+
22+
def render_template(self, request: Request) -> Union[str, bool]:
1423
request.send_response(200)
15-
request.send_header('Content-type', 'text/html')
24+
request.send_header('Content-Type', 'text/html')
1625

17-
template = self.envirenemnt.get_template(self.template_route)
26+
jinja_template = self.jinja_env.get_template(self.template_route)
27+
1828
if self.variables_dict is not None:
19-
output = template.render(self.variables_dict)
20-
else:
21-
output = template.render()
29+
return jinja_template.render(self.variables_dict), False
30+
31+
return jinja_template.render(), False
32+
33+
34+
class RenderJson:
35+
36+
def __init__(self, json_to_render: Union[dict, list]):
37+
self.json_to_render: Union[dict, list] = json_to_render
38+
39+
def render_template(self, request: Request) -> Union[str, bool]:
40+
request.send_response(200)
41+
request.send_header('Content-Type', 'application/json')
2242

23-
return output, False
43+
return json.dumps(self.json_to_render), False

pypulse/Window/cef.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,17 @@ def event(self, type: Event) -> None:
9090
...
9191

9292

93+
class Handler:
94+
"""
95+
See [CEFPython handlers](https://github.com/cztomczak/cefpython/blob/master/api/API-categories.md#client-handlers-interfaces) if you want to check all the
96+
handlers currently available.
97+
"""
98+
99+
def OnGotFocus(self, browser):
100+
if system() == 'Linux':
101+
browser.SetFocus(True)
102+
103+
93104
class Browser(CEF):
94105
"""
95106
A more friendly way to manage CEF browser.
@@ -102,15 +113,6 @@ def __init__(self, url: str, *args, **kwargs) -> None:
102113
window_info=self.window,
103114
url=url,
104115
*args, **kwargs)
105-
106-
class Handler:
107-
"""
108-
See [CEFPython handlers](https://github.com/cztomczak/cefpython/blob/master/api/API-categories.md#client-handlers-interfaces) if you want to check all the
109-
handlers currently available.
110-
"""
111-
def OnGotFocus(self, browser):
112-
if system() == 'Linux':
113-
browser.SetFocus(True)
114116

115117
def event(self, type: Event) -> None:
116118
"""
@@ -119,4 +121,4 @@ def event(self, type: Event) -> None:
119121
"""
120122
if type is not Event.BROWSER_AFTER:
121123
return
122-
self.instance.SetClientHandler(self.Handler())
124+
self.instance.SetClientHandler(Handler())

pypulse/Window/frames.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def __init__(self,
6161

6262
self.browser.config['product_version'] = 'PyPulse/0.1.9'
6363
self.browser.config['debug'] = debug
64+
self.browser.config['context_menu'] = dict(enabled=debug)
6465
if log_file:
6566
self.browser.config['log_file'] = log_file
6667

@@ -116,7 +117,6 @@ def __init__(self,
116117
log(LogTypes.SUCCESS, 'Window added')
117118

118119
self.browser.open()
119-
# os.system('clear' if self.browser.os != 'Windows' else 'cls')
120120

121121
log(LogTypes.INFO, 'Browser open')
122122

0 commit comments

Comments
 (0)