Repository navigation
Expand file tree
/
Copy pathdbview.py
More file actions
120 lines (85 loc) · 3.38 KB
/
Copy pathdbview.py
File metadata and controls
120 lines (85 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from tkinter import *
from tkinter.ttk import *
from tkinter import font
import movieDB
def view(gui):
db_window = Toplevel()
db_window.wm_title("Results")
db_info = Treeview(db_window)
db_info.pack(fill='both', expand=True)
dropdown_selected = gui.get_drop_down_value()
state = dropdown_selected.get()
query = gui.get_search_box_text()
view_controller(db_window, db_info, state, query)
def view_controller(window, table, state, query):
if state == 'All Movies':
movie_search(table)
elif state == 'Movie By Name':
movie_name_search(table, query)
elif state == 'Movie By Year':
movie_year_search(table, query)
elif state == 'Movie By Genre':
movie_genre_search(table, query)
elif state == 'Find Cast':
cast_search(table, query)
elif state == 'Movie By Distributor':
convert_db(table, movieDB.findMoviesDistributedBy(query))
elif state == 'Distributor By Movie':
convert_db(table, movieDB.findDistributorsForMovie(query))
elif state == 'Both Actor and Director':
convert_db(table, movieDB.bothActorAndDirector())
elif state == 'Find Person\'s Awards':
convert_db(table, movieDB.findAwardsBy(query))
elif state == 'Find Movie\'s Crew':
convert_db(table, movieDB.findCrewForMovie(query))
else:
window.destroy()
def movie_search(table):
convert_db(table, movieDB.viewMoviesAlpha())
def movie_name_search(table, query):
convert_db(table, movieDB.everythingAboutMovie(query))
def movie_year_search(table, query):
convert_db(table, movieDB.selectYear(query))
def cast_search(table, query):
convert_db(table, movieDB.findPerson(query))
def movie_genre_search(table, query):
convert_db(table, movieDB.findGenre(query))
def movie_distributor_search(table, query):
convert_db(table, movieDB.findMoviesDistributedBy(query))
def convert_db(table, db):
data = db.splitlines()
columns = data[0].strip().split('\t')
set_columns(table, columns)
for row in data[1:]:
insert_table(table, row.strip().split('\t'))
autosize_cols(table, columns)
def set_columns(table, columns):
table['columns'] = columns
table.column('#0', anchor='center', width=30, stretch=1)
for val in columns:
table.heading(str(val), text=str(val))
table.column(str(val), anchor='center', stretch=1)
def autosize_cols(table, columns):
entries = table.get_children()
default_font = font.Font(font='TkDefaultFont')
for x in range(len(columns)):
maxsize = 100
maxnum_size = 30;
for child in entries:
# cellsize = len(str((table.item(child)['values'][x]))) * 8
current_item = table.item(child)['values'][x]
current_index = table.item(child)['text']
cellsize = default_font.measure(str(current_item)) + 50
indexsize = default_font.measure(str(current_index))
if cellsize > maxsize:
maxsize = cellsize
if indexsize > maxnum_size:
maxnum_size = indexsize
table.column(columns[x], anchor='center', width=maxsize)
table.column('#0', anchor='center', width=maxnum_size)
def insert_table(table, values):
num_rows = len(table.get_children()) + 1
table.insert('', 'end', text=num_rows, values=values)
def split_query(string):
query = string.split()
return query