Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Developer
authored and
Developer
committed
Nov 5, 2012
0 parents
commit 4f67626
Showing
78 changed files
with
23,695 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,339 @@ | ||
#!/usr/bin/env python | ||
|
||
import sys, os, glib | ||
import collections | ||
import sqlite3 as lite | ||
import pygtk | ||
import gtk | ||
import gtk.glade | ||
|
||
# Gui Class | ||
class movieManager: | ||
wTree = None | ||
|
||
genreListSelected = [] | ||
|
||
CURRENT_LIST_VIEW = 'list' | ||
MOVIE_LIST_VIEW_LABEL = "list view"; | ||
MOVIE_ICON_VIEW_LABEL = "icon view"; | ||
|
||
|
||
def __init__( self ): | ||
try: | ||
self.wTree = gtk.Builder() | ||
self.wTree.add_from_file("gui/main.glade") | ||
|
||
#Create the genre treeView | ||
self.createGenreListView() | ||
|
||
#Create the movieView | ||
self.search_callback(self) | ||
|
||
dic = { | ||
"search_callback" : self.search_callback, | ||
"set_movie_view" : self.bindMovieListView, | ||
"on_windowMain_destroy" : self.quit | ||
} | ||
|
||
self.wTree.connect_signals( dic ) | ||
self.wTree.get_object("toolbutton6") | ||
window = self.wTree.get_object("windowMain") | ||
window.show_all() | ||
except: | ||
print "Unexpected error:", sys.exc_info()[0] | ||
#raise | ||
#print("Unable to load GUI GT Glade") | ||
sys.exit(1) | ||
|
||
|
||
|
||
#set movie list view | ||
def bindMovieListView(self, button): | ||
buttonLabel = button.get_label() | ||
|
||
if(buttonLabel == self.MOVIE_LIST_VIEW_LABEL): | ||
if button.get_active(): | ||
self.CURRENT_LIST_VIEW = "list" | ||
|
||
elif(buttonLabel == self.MOVIE_ICON_VIEW_LABEL): | ||
if button.get_active(): | ||
self.CURRENT_LIST_VIEW = "icon" | ||
|
||
#search movie | ||
self.search_callback(self) | ||
|
||
#Create the genre treeView | ||
def createGenreListView(self): | ||
self.treeviewGenre = self.wTree.get_object("treeviewGenre") | ||
#it create the gtk.TreeViewColumn and then set some needed properties | ||
title = "Genre" | ||
columnId = 0 | ||
column = gtk.TreeViewColumn(title, gtk.CellRendererText() , text=columnId) | ||
column.set_resizable(True) | ||
column.set_sort_column_id(columnId) | ||
column.set_property('visible', False)#hide the genre column | ||
self.treeviewGenre.append_column(column) | ||
|
||
column = gtk.TreeViewColumn('column2', gtk.CellRendererText(), text=1) | ||
column.set_clickable(True) | ||
column.set_resizable(True) | ||
self.treeviewGenre.append_column(column) | ||
|
||
|
||
self.genreList = gtk.ListStore(str, str) | ||
self.treeviewGenre.set_model(self.genreList) | ||
tree_selection = self.treeviewGenre.get_selection() | ||
tree_selection.set_mode(gtk.SELECTION_MULTIPLE) | ||
# Bind clicked event | ||
#self.treeviewGenre.connect('button-press-event' , self.genreClickEvent) | ||
|
||
tree_selection.connect('changed',lambda s: self.genreClickEvent(s)) | ||
|
||
#load treeview data | ||
imdbObj = Imdb() | ||
genreModelData = imdbObj.getGenreList() | ||
self.genreList.clear() | ||
for row in genreModelData: | ||
genreName = row[0] | ||
genreCount = str(row[1]) | ||
genreDesc = row[0]+" ("+str(row[1])+")" | ||
|
||
self.genreList.append([genreName, genreDesc]) | ||
|
||
|
||
#Create the Movies iconView | ||
def createMoviesListView(self, condition=""): | ||
DEFAULT_MOVIE_IMAGE = 'default_movie_photo.jpg' | ||
|
||
#Create the movieView | ||
self.iconviewMovie = self.wTree.get_object("iconviewMovie") | ||
self.liststoreMovie = gtk.ListStore(str, gtk.gdk.Pixbuf) | ||
|
||
self.iconviewMovie.set_model(self.liststoreMovie) | ||
self.iconviewMovie.set_text_column(0) | ||
self.iconviewMovie.set_pixbuf_column(1) | ||
|
||
imdbObj = Imdb() | ||
moviesModelData = imdbObj.getMoviesList(condition) | ||
|
||
for movie in moviesModelData: | ||
movieName = movie[0] | ||
movieImageId = movie[2] | ||
movieImageFile = "images/" + movieImageId + ".jpg" | ||
|
||
|
||
if not os.path.exists(movieImageFile): | ||
movieImageFile = DEFAULT_MOVIE_IMAGE | ||
|
||
|
||
# Create a tuple with image files | ||
try: | ||
pixbuf = gtk.gdk.pixbuf_new_from_file(movieImageFile) | ||
pix_w = pixbuf.get_width() | ||
pix_h = pixbuf.get_height() | ||
new_h = pix_h | ||
#new_h = (pix_h * 140) / pix_w # Calculate the scaled height before resizing image | ||
scaled_pix = pixbuf.scale_simple(pix_w, new_h, gtk.gdk.INTERP_TILES) | ||
self.liststoreMovie.append((movieName, scaled_pix)) | ||
|
||
except glib.GError: | ||
print "image not found:" | ||
|
||
|
||
#Create the movie treeView | ||
def createMoviesListTreeView(self, condition=""): | ||
self.treeviewMovie = self.wTree.get_object("treeviewMovie") | ||
#it create the gtk.TreeViewColumn and then set some needed properties | ||
|
||
#Image column | ||
cell = gtk.CellRendererPixbuf() | ||
column = gtk.TreeViewColumn("Photo", cell) | ||
column.add_attribute(cell, "pixbuf", 0) | ||
self.treeviewMovie.append_column(column) | ||
|
||
#Name column | ||
column = gtk.TreeViewColumn("Name", gtk.CellRendererText() , text=1) | ||
column.set_resizable(True) | ||
self.treeviewMovie.append_column(column) | ||
|
||
#Desc column | ||
column = gtk.TreeViewColumn('desc', gtk.CellRendererText(), text=2) | ||
column.set_clickable(True) | ||
column.set_resizable(True) | ||
self.treeviewMovie.append_column(column) | ||
|
||
|
||
self.listStoreMovie = gtk.ListStore(gtk.gdk.Pixbuf, str, str) | ||
self.treeviewMovie.set_model(self.listStoreMovie) | ||
tree_selection = self.treeviewMovie.get_selection() | ||
|
||
#tree_selection.connect('changed',lambda s: self.genreClickEvent(s)) | ||
|
||
#load treeview data | ||
imdbObj = Imdb() | ||
moviesModelData = imdbObj.getMoviesList(condition) | ||
|
||
for movie in moviesModelData: | ||
movieName = movie[0] | ||
movieImageId = str(movie[6]) | ||
movieImageFile = "images/" + movieImageId + ".jpg" | ||
|
||
|
||
if not os.path.exists(movieImageFile): | ||
movieImageFile = 'default_movie_photo.jpg' | ||
|
||
|
||
pixbuf = gtk.gdk.pixbuf_new_from_file(movieImageFile) | ||
pix_w = pixbuf.get_width() | ||
pix_h = pixbuf.get_height() | ||
new_h = pix_h | ||
scaled_pix = pixbuf.scale_simple(pix_w, new_h, gtk.gdk.INTERP_TILES) | ||
|
||
self.listStoreMovie.append((pixbuf, movieName, movieImageId)) | ||
|
||
|
||
def genreClickEvent(self, treeselection): | ||
genreList = [] | ||
|
||
(model,pathlist) = treeselection.get_selected_rows() | ||
for path in pathlist : | ||
tree_iter = model.get_iter(path) | ||
genreValue = model.get_value(tree_iter,0) | ||
|
||
genreList.append(genreValue) | ||
|
||
self.genreListSelected = genreList | ||
|
||
#call the movie search | ||
self.search_callback(self) | ||
|
||
def search_callback(self, widget): | ||
condition = " WHERE 1 " | ||
sortBy = "name" | ||
sortOrder = "ASC" | ||
userFilter = "all" | ||
#add search code here | ||
searchText = self.wTree.get_object("entry1").get_text() | ||
|
||
#search by text | ||
if searchText != "": | ||
condition = condition + " AND name LIKE '%"+searchText+"%'"; | ||
|
||
#search by genre | ||
if len(self.genreListSelected) > 0: | ||
genreCondition = "" | ||
for thisGenre in self.genreListSelected: | ||
if thisGenre != "All": | ||
genreCondition = genreCondition + " AND genres LIKE '%"+thisGenre+"%'" | ||
|
||
condition = condition + genreCondition | ||
|
||
#glu all sql condition, sort and order | ||
condition = condition + " ORDER BY "+sortBy+" "+sortOrder; | ||
|
||
#tooltip advance | ||
#http://www.daa.com.au/pipermail/pygtk/2004-February/006954.html | ||
|
||
#r1 = gtk.RadioButton(None, label='icon view') | ||
#r2 = gtk.RadioButton(r1, label='list view') | ||
|
||
#active_radios = [r for r in r1.get_group() if r.get_active()] | ||
#activeLabel = active_radios[0].get_label() | ||
|
||
#for r in r1.get_group(): | ||
# print r.get_label() | ||
# print r.get_active() | ||
# | ||
#active_radios = [r for r in r1.get_group() if r.get_active()][0] | ||
#activeLabel = active_radios.get_label() | ||
#print activeLabel | ||
print self.CURRENT_LIST_VIEW | ||
if(self.CURRENT_LIST_VIEW == 'icon'): | ||
self.createMoviesListView(condition) | ||
elif(self.CURRENT_LIST_VIEW == 'list'): | ||
self.createMoviesListTreeView(condition) | ||
else: | ||
self.createMoviesListView(condition) | ||
|
||
def add(self, widget): | ||
try: | ||
thistime = adder( self.wTree.get_object("inputEntry1").get_text(), self.wTree.get_object("inputEntry2").get_text() ) | ||
self.wTree.get_object("warningHbox").hide() | ||
self.wTree.get_object("entryResult").set_text(thistime.giveResult()) | ||
except ValueError: | ||
self.wTree.get_object("warningHbox").show() | ||
self.wTree.get_object("entryResult").set_text("ERROR") | ||
return 0 | ||
|
||
def quit(self, widget): | ||
gtk.main_quit() | ||
sys.exit(0) | ||
|
||
#IMDB Class | ||
class Imdb: | ||
"""This class represents all the wine information""" | ||
|
||
def __init__(self): | ||
self.genreList = [] | ||
self.moviesList = [] | ||
|
||
self.db = 'movies.db'; | ||
|
||
def getDbconn(self): | ||
return lite.connect(self.db) | ||
|
||
#function for Genre List | ||
def getGenreList(self): | ||
"""This function returns a list of Movie Genre list""" | ||
allGenreList = [] | ||
con = self.getDbconn() | ||
with con: | ||
cur = con.cursor() | ||
cur.execute("SELECT genres FROM movie_list") | ||
allGenresList = cur.fetchall() | ||
|
||
#total movie count | ||
totalMovies = len(allGenresList) | ||
|
||
for row in allGenresList: | ||
genres = row[0].split(', ') | ||
genres = filter(None, genres) | ||
#allGenreList = list(set(allGenreList + genres)) | ||
allGenreList = allGenreList + genres | ||
#allGenreList = list(set(allGenreList + genres)) | ||
|
||
|
||
|
||
#count genre with counter | ||
genreListCounter = collections.Counter(allGenreList) | ||
|
||
#make the counter to list item | ||
uniqueGenreList = genreListCounter.items() | ||
|
||
# remove empty genre and Add "All" genre to the list | ||
#uniqueGenreList = filter(None, uniqueGenreList) | ||
uniqueGenreList.sort() | ||
uniqueGenreList.insert(0, ["All", totalMovies]) | ||
|
||
|
||
return uniqueGenreList | ||
|
||
#function for Genre List | ||
def getMoviesList(self, condition=""): | ||
"""This function returns a list of Movies""" | ||
|
||
con = self.getDbconn() | ||
with con: | ||
cur = con.cursor() | ||
sqlText = "SELECT * FROM movie_list "+condition | ||
cur.execute(sqlText) | ||
self.moviesList = cur.fetchall() | ||
|
||
#print sqlText | ||
|
||
return self.moviesList | ||
|
||
#create application | ||
if __name__ == "__main__": | ||
app = movieManager() | ||
gtk.main() |
Oops, something went wrong.