View difference between Paste ID: 1gUUebzv and
SHOW: | | - or go back to the newest paste.
1-
1+
# toggleMenubar plugin v1.1.0 by Shoozza
2
#
3
# Forum Thread:
4
#	http://www.sublimetext.com/forum/viewtopic.php?f=5&t=1080
5
#
6
# example keybinding:
7
#	<binding key="leftalt+m" command="toggleMenubar"/>
8
#
9
# Known issues:
10
#	fullscreen mode menu toggling can cause issues in normal and fullscreen mode
11
12
import sublime, sublimeplugin, os
13
from ctypes import *
14
15
firstRun = 1
16
needSave = 1
17
show  = 1
18
hwnd  = windll.User32.GetActiveWindow()
19
hmenu = windll.User32.GetMenu(hwnd)
20
21
def doToggleMenubar():
22
	if globals()["firstRun"] == 1:
23
		globals()["firstRun"] = 0
24
		globals()["hwnd"]  = windll.User32.GetActiveWindow()
25
		globals()["hmenu"] = windll.User32.GetMenu(globals()["hwnd"])
26
27
	if globals()["hmenu"] == 0 or globals()["hwnd"] == 0:
28
		loadToggleMenubarState()
29
30
	newMenu = windll.User32.GetMenu(globals()["hwnd"])
31
	if newMenu != 0 and newMenu != globals()["hmenu"]:
32
		globals()["hmenu"] = newMenu
33
	
34
	if globals()["show"] == 0:
35
		windll.User32.SetMenu(globals()["hwnd"], globals()["hmenu"])
36
		globals()["show"] = 1
37
	else:
38
		windll.User32.SetMenu(globals()["hwnd"], 0)
39
		globals()["show"] = 0		
40
41
	globals()["needSave"] = 1
42
43
def loadToggleMenubarState():
44
	if os.path.isfile(sublime.packagesPath()+"\\User\\toggleMenubar.tmp"):
45
		file = open(sublime.packagesPath()+"\\User\\toggleMenubar.tmp", 'r')
46
		try:
47
			globals()["show"]  = int(file.readline())
48
			globals()["hmenu"] = int(file.readline())
49
			globals()["hwnd"]  = int(file.readline())
50
		except:
51
			pass
52
		file.close()
53
	else:
54
		globals()["hwnd"]  = windll.User32.GetActiveWindow()
55
		globals()["hmenu"]  = windll.User32.GetMenu(globals()["hwnd"])
56
		
57
def saveToggleMenubarState():
58
	if globals()["needSave"] == 1:
59
		globals()["needSave"] = 0
60
		file = open(sublime.packagesPath()+"\\User\\toggleMenubar.tmp", 'w')
61
		file.write(str(globals()["show"]))
62
		file.write("\n")
63
		file.write(str(globals()["hmenu"]))
64
		file.write("\n")
65
		file.write(str(globals()["hwnd"]))
66
		file.close()
67
68
def cleanUpToggleMenubarStateFile():
69
	if os.path.isfile(sublime.packagesPath()+"\\User\\toggleMenubar.tmp"):
70
		os.remove(sublime.packagesPath()+"\\User\\toggleMenubar.tmp")
71
72
class toggleMenubarCommand(sublimeplugin.TextCommand):
73
	def run(self, view, args):
74
		doToggleMenubar()
75
		saveToggleMenubarState()
76
77
class toggleMenubarStartup(sublimeplugin.Plugin):
78
	def onActivated(self, view):
79
		if globals()["firstRun"] == 1:
80
			if os.path.isfile(sublime.packagesPath()+"\\User\\toggleMenubar.tmp"):
81
				file = open(sublime.packagesPath()+"\\User\\toggleMenubar.tmp", 'r')
82
				try:
83
					globals()["show"] = int(file.readline())
84
				except:
85
					pass
86
				file.close()
87
				if globals()["show"] == 0:
88
					globals()["show"] = 1
89
					doToggleMenubar()
90
				else:
91
					cleanUpToggleMenubarStateFile()