View difference between Paste ID: UYBKq4v9 and RGySN4Ux
SHOW: | | - or go back to the newest paste.
1-
from collections import OrderedDict
1+
from sys import exit as выйти
2-
from pprint import pprint
2+
from os import system as исполнить, name as операционка
3-
import sys
3+
from pickle import dump as запиклить, load as отпиклить
4-
import os
4+
5-
import pickle
5+
6
тип = type
7
ввод = input
8-
    def __init__(self, название):
8+
распечатать = print
9-
        self.название = название
9+
длина = len
10-
        self.меню_и_пункты = OrderedDict()
10+
переменные = dir
11-
        self.__name__ = self.название
11+
строка = str
12-
        
12+
целочисленное = int
13
открыть = open
14-
    def __init__(self, название, значение = None):
14+
НетФайлаОшибка = FileNotFoundError
15-
        self.название = название
15+
Ничто = None
16-
        self.значение = значение
16+
17-
        self.__name__ = self.название
17+
18-
        
18+
19
    def ну_с_богом(я, название):
20-
    def __init__(self):
20+
        я.название = название
21-
        self.предыдущий_пункт = []
21+
        я.меню_и_пункты = {}
22-
        self.текущий_пункт = None
22+
        я.__name__ = я.название
23
    __init__ = ну_с_богом
24-
    def цикл(self):
24+
25
26-
            консоль.clear_screen()
26+
27-
            self.отобразить_пункты()
27+
    def ну_с_богом(я, название, значение=Ничто):
28-
            выбор = input('>>> ')
28+
        я.название = название
29
        я.значение = значение
30-
                self.выбрать_пункт(выбор)
30+
        я.__name__ = я.название
31-
            
31+
    __init__ = ну_с_богом
32-
    def создать_главное_меню(self, название):
32+
33-
        self.меню = Меню(название)       
33+
34-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.создать_меню
34+
35-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.создать_пункт
35+
    def ну_с_богом(я):
36-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.назад
36+
        я.предыдущий_пункт = []
37-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.выход
37+
        я.текущий_пункт = Ничто
38-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.сохранить
38+
    __init__ = ну_с_богом
39-
        self.меню.меню_и_пункты[len(self.меню.меню_и_пункты)+1] = Консоль.загрузить
39+
40-
        self.текущий_пункт = self.меню
40+
    def цикл(я):
41-
        
41+
42-
    def создать_меню(self, название):
42+
            консоль.очистить()
43
            я.отобразить_пункты()
44
            выбор = ввод('>>> ')
45-
        if 'меню' in (dir(self)):
45+
46-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)+1] = Меню(название)
46+
                я.выбрать_пункт(выбор)
47-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
47+
48-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.создать_меню
48+
    def создать_главное_меню(я, название):
49-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
49+
        я.меню = Меню(название)
50-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.создать_пункт
50+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.создать_меню
51-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
51+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.создать_пункт
52-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.назад
52+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.назад
53-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
53+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.выход
54-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.выход
54+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.сохранить
55-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
55+
        я.меню.меню_и_пункты[длина(я.меню.меню_и_пункты) + 1] = Консоль.загрузить
56-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.сохранить
56+
        я.текущий_пункт = я.меню
57-
            размер = len(self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты)
57+
58-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер+1] = Консоль.загрузить
58+
    def создать_меню(я, название):
59
        if not название:
60
            return
61-
            
61+
        if 'меню' in (переменные(я)):
62-
    def создать_пункт(self, название):
62+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты) + 1] = Меню(название)
63
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
64-
            self.текущий_пункт.меню_и_пункты[len(self.текущий_пункт.меню_и_пункты)+1] = Пункт(название)
64+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.создать_меню
65-
        
65+
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
66-
    def отобразить_пункты(self):
66+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.создать_пункт
67-
        print('')
67+
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
68-
        print(self.текущий_пункт.название)
68+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.назад
69-
        if 'меню' in (dir(self)):
69+
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
70-
            for key in self.текущий_пункт.меню_и_пункты.keys():
70+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.выход
71-
                s = str(type(self.текущий_пункт.меню_и_пункты[key])).replace("'", '').replace('__main__', '')
71+
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
72-
                s = s.replace('.', '').replace('function', 'команда').replace('class', '')
72+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.сохранить
73-
                print(str(key)+'.) '+self.текущий_пункт.меню_и_пункты[key].__name__+'\t' + s)
73+
            размер = длина(я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты)
74-
                
74+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты)].меню_и_пункты[размер + 1] = Консоль.загрузить
75-
    def выбрать_пункт(self, выбор):
75+
76-
        def f():pass
76+
77
78-
            выбор = int(выбор)
78+
    def создать_пункт(я, название):
79-
            if выбор in self.текущий_пункт.меню_и_пункты.keys():
79+
80-
                if type(self.текущий_пункт.меню_и_пункты[выбор]) == Меню:
80+
            я.текущий_пункт.меню_и_пункты[длина(я.текущий_пункт.меню_и_пункты) + 1] = Пункт(название)
81-
                    self.предыдущий_пункт.append(self.текущий_пункт)
81+
82-
                    self.текущий_пункт = self.текущий_пункт.меню_и_пункты[выбор]
82+
    def отобразить_пункты(я):
83
        распечатать('')
84
        распечатать(я.текущий_пункт.название)
85-
                if type(self.текущий_пункт.меню_и_пункты[выбор]) == type(f):
85+
        if 'меню' in (переменные(я)):
86-
                    название = input('>>> '+self.текущий_пункт.меню_и_пункты[выбор].__name__+' >>> ')
86+
            for key in я.текущий_пункт.меню_и_пункты.keys():
87-
                    self.текущий_пункт.меню_и_пункты[выбор](self, название)
87+
                с = строка(тип(я.текущий_пункт.меню_и_пункты[key])).replace("'", '').replace('__main__', '')
88
                с = с.replace('.', '').replace('function', 'команда').replace('class', '')
89
                распечатать(строка(key) + '.) ' + я.текущий_пункт.меню_и_пункты[key].__name__ + '\t' + с)
90-
                пункт = self.текущий_пункт.меню_и_пункты[выбор]
90+
91-
                if type(пункт) == Пункт:
91+
    def выбрать_пункт(я, выбор):
92-
                    print(self.текущий_пункт.меню_и_пункты[выбор].значение)
92+
        def ф():
93-
                    значение = input('>>> значение >>> ')
93+
94
95-
                        self.текущий_пункт.меню_и_пункты[выбор].значение = значение
95+
96
            выбор = целочисленное(выбор)
97-
                        
97+
            if выбор in я.текущий_пункт.меню_и_пункты.keys():
98-
    def назад(self, название):
98+
                if тип(я.текущий_пункт.меню_и_пункты[выбор]) == Меню:
99-
        if len(self.предыдущий_пункт):
99+
                    я.предыдущий_пункт.append(я.текущий_пункт)
100-
            self.текущий_пункт = self.предыдущий_пункт[-1]
100+
                    я.текущий_пункт = я.текущий_пункт.меню_и_пункты[выбор]
101-
            self.предыдущий_пункт = self.предыдущий_пункт[:-1]
101+
102-
            
102+
103-
    def выход(self, название):
103+
                if тип(я.текущий_пункт.меню_и_пункты[выбор]) == тип(ф):
104
                    название = ввод('>>> ' + я.текущий_пункт.меню_и_пункты[выбор].__name__ + ' >>> ')
105
                    я.текущий_пункт.меню_и_пункты[выбор](я, название)
106-
        sys.exit()
106+
107-
    def clear_screen(self):
107+
108-
        clear = 'cls' if os.name == 'nt' else 'clear'
108+
                пункт = я.текущий_пункт.меню_и_пункты[выбор]
109-
        os.system(clear)
109+
                if тип(пункт) == Пункт:
110-
        
110+
                    распечатать(я.текущий_пункт.меню_и_пункты[выбор].значение)
111-
    def сохранить(self, название):
111+
                    значение = ввод('>>> значение >>> ')
112
                    if значение:
113-
            название = 'file.pickle'
113+
                        я.текущий_пункт.меню_и_пункты[выбор].значение = значение
114-
        try:    
114+
115-
            with open(название, 'wb') as f:
115+
116-
                pickle.dump(self, f)
116+
    def назад(я, название):
117-
        except FileNotFoundError:
117+
        if длина(я.предыдущий_пункт):
118
            я.текущий_пункт = я.предыдущий_пункт[-1]
119-
            
119+
            я.предыдущий_пункт = я.предыдущий_пункт[:-1]
120-
    def загрузить(self, название):
120+
121
    def выход(я, название):
122-
            название = 'file.pickle'
122+
123
            return
124-
            with open(название, 'rb') as f:
124+
        выйти()
125-
                консоль = pickle.load(f)
125+
126
    def очистить(я):
127-
        except FileNotFoundError:
127+
        кмд = 'cls' if операционка == 'nt' else 'clear'
128
        исполнить(кмд)
129-
            
129+
130
    def сохранить(я, название='file.pickle'):
131
        try:
132
            with открыть(название, 'wb') as файл:
133
                запиклить(я, файл)
134-
    
134+
        except НетФайлаОшибка:
135-
    
135+
136
137
    def загрузить(я, название='file.pickle'):
138
        try:
139
            with открыть(название, 'rb') as файл:
140
                консоль = отпиклить(файл)
141
                консоль.цикл()
142
        except НетФайлаОшибка:
143
            pass
144
145
146
консоль = Консоль()
147
консоль.создать_главное_меню('главное_меню')
148
консоль.цикл()
149