Skip to content
This repository was archived by the owner on Jun 25, 2020. It is now read-only.

Commit 3a95d3b

Browse files
committed
Plugins now uses beta features for menu
1 parent 4a1896a commit 3a95d3b

File tree

2 files changed

+86
-61
lines changed

2 files changed

+86
-61
lines changed

plugins/snippet.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,42 @@
11
import libjuci, os, gi
22
gi.require_version('Gtk', '3.0')
33

4-
from gi.repository import Gtk
4+
from gi.repository import Gtk, Gio
55
from libjuci import beta, editor, terminal
66
from os import path
77

8+
def add_menu(position, label, items) :
9+
plugin_menu = beta.get_menu_from_name("plugin_menu")
10+
if not plugin_menu :
11+
libjuci.terminal.println("plugin_menu menu does not exist")
12+
return
13+
sub_menu = Gio.Menu.new()
14+
i = 0
15+
app = beta.get_gtk_application()
16+
for item in items :
17+
sub_menu.insert(i, item["label"], "app."+item["action"])
18+
i = i + 1
19+
python_action = Gio.SimpleAction.new(item["action"], None)
20+
python_action.connect("activate", item["method"])
21+
app.add_action(python_action)
22+
app.add_accelerator(item["accel"], "app."+item["action"], None)
23+
24+
if plugin_menu.get_n_items() >= position :
25+
plugin_menu.remove(position)
26+
27+
plugin_menu.insert_submenu(position, label, sub_menu)
28+
829
def init() :
9-
append = """
10-
[
11-
{
12-
"label": "_Edit",
13-
"menu_elements": [
30+
items = [
1431
{
15-
"label":"_Snippet",
16-
"menu_elements": [
17-
{
18-
"label":"Insert snippet",
19-
"keybinding":"<primary>space",
20-
"action":"snippet.insert_snippet"
21-
}
22-
]
32+
"label": "Insert snippet",
33+
"action": "insert_snippet",
34+
"accel": "<primary>space",
35+
"method": insert_snippet
2336
}
24-
]
25-
}
26-
]
27-
"""
28-
libjuci.add_menu_element(append)
29-
37+
]
38+
add_menu(1, "_Snippet", items)
39+
3040
def get_ifndef() :
3141
file_name = editor.get_file_name()
3242
package, file_name = path.split(file_name)
@@ -98,7 +108,7 @@ def add_indention(text_line, output) :
98108
res += text_indent + text_line + '\n'
99109
return res[indent:len(res)]
100110

101-
def insert_snippet() :
111+
def insert_snippet(action, param) :
102112
gtk_text_buffer = editor.get_current_gtk_text_buffer()
103113
if not gtk_text_buffer :
104114
return
@@ -118,5 +128,5 @@ def insert_snippet() :
118128
end_iter = gtk_text_buffer.get_iter_at_line_offset(line_number,line_offset)
119129
gtk_text_buffer.delete(begin_iter, end_iter)
120130
gtk_text_buffer.insert_at_cursor(snippet, len(snippet))
121-
122-
init()
131+
132+
init()

plugins/tools.py

Lines changed: 53 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,64 @@
1-
import libjuci, os
1+
import libjuci, gi, os
2+
gi.require_version('Gtk', '3.0')
3+
from gi.repository import Gtk, Gio
24

3-
favorite = "/home/zalox/projects" # change to your favorite project
4-
favorite_file = "/home/zalox/.juci/plugins/gtkplugin.py"
5+
from libjuci import beta
6+
7+
favorite = os.environ['HOME']
8+
plugin = os.environ['HOME']
9+
favorite_file = os.environ['HOME']
10+
11+
def add_menu(position, label, items) :
12+
plugin_menu = beta.get_menu_from_name("plugin_menu")
13+
if not plugin_menu :
14+
libjuci.terminal.println("plugin_menu menu does not exist")
15+
return
16+
sub_menu = Gio.Menu.new()
17+
i = 0
18+
app = beta.get_gtk_application()
19+
for item in items :
20+
sub_menu.insert(i, item["label"], "app."+item["action"])
21+
i = i + 1
22+
python_action = Gio.SimpleAction.new(item["action"], None)
23+
python_action.connect("activate", item["method"])
24+
app.add_action(python_action)
25+
app.add_accelerator(item["accel"], "app."+item["action"], None)
26+
27+
if plugin_menu.get_n_items() >= position :
28+
plugin_menu.remove(position)
29+
30+
plugin_menu.insert_submenu(position, label, sub_menu)
531

632
def init() :
7-
append_project = """
8-
[
9-
{
10-
"label": "_Plugins",
11-
"menu_elements": [
33+
items = [
34+
{
35+
"label": "Open plugin folder",
36+
"action": "open_plugin_folder",
37+
"accel": "<primary>p",
38+
"method": open_plugin_folder
39+
},
40+
{
41+
"label": "Open favorite folder",
42+
"action": "open_favorite_folder",
43+
"accel": "<primary>j",
44+
"method": open_favorite_folder
45+
},
1246
{
13-
"label":"_Tools",
14-
"menu_elements": [
15-
{
16-
"label":"Open favorite folder",
17-
"keybinding":"<primary>j",
18-
"action":"tools.open_favorite_folder"
19-
},
20-
{
21-
"label":"Open plugins folder",
22-
"keybinding":"<primary>p",
23-
"action":"tools.open_plugin_folder"
24-
},
25-
{
26-
"label":"Open plugins folder",
27-
"keybinding":"<primary>i",
28-
"action":"tools.open_favorite_file"
29-
}
30-
]
47+
"label": "Open favorite file",
48+
"action": "open_favorite_file",
49+
"accel": "<primary><shift>j",
50+
"method": open_favorite_file
3151
}
32-
]
33-
}
34-
]
35-
"""
36-
libjuci.add_menu_element(append_project)
52+
]
53+
add_menu(0, "_Tools", items)
3754

38-
def open_favorite_folder() :
55+
def open_favorite_folder(action, param) :
3956
libjuci.directories.open(favorite)
4057

41-
def open_favorite_file() :
58+
def open_favorite_file(action, param) :
4259
libjuci.directories.open(favorite_file)
4360

44-
def open_plugin_folder() :
45-
folder = libjuci.get_juci_home()
46-
folder += "/plugins" # may break windows
47-
libjuci.directories.open(folder)
61+
def open_plugin_folder(action, param) :
62+
libjuci.directories.open(plugin)
4863

49-
init()
64+
init()

0 commit comments

Comments
 (0)