Ene Uran 638 Posting Virtuoso

When you use Tm = [[0]*8]*24 you are creating 24 alias copies of an eight zero list. That means all 24 sublists have the same memory address.

To create the proper list of lists use this approach:

# create a 24 by 8 list of lists initialized with zero
zerolist24x8 = []
for x in range(24):
    # create a fresh list of 8 zeros 24 times
    zerolist8 = []
    for y in range(8):
        zerolist8.append(0)
    zerolist24x8.append(zerolist8)

Now you can use module copy to make your copy of zerolist24x8, for instance:

import copy
Tm = copy.deepcopy(zerolist24x8)
Tr = copy.deepcopy(zerolist24x8)
Ene Uran 638 Posting Virtuoso

Since a lot of wars are fought because of religious beliefs, it makes sense to apply a little religion to the weapons used.

Ene Uran 638 Posting Virtuoso

The folks at the NSA will pick your super secret password in less than a second. So, pick something simple you can easily type and remember in the hope that it is safe from the boss or your underage sister.

Ene Uran 638 Posting Virtuoso

The US spends much more effort on destroying its leaders, than in creating solutions to our problems. It's so much easier to be a brainless loud mouth than a leader.

Ene Uran 638 Posting Virtuoso

You are getting into trouble with escaped characters caused by \ since '\r' is read as CR (carriage return).
Try to use:

bright = wx.Image(r'C:\Users\Alexander\Desktop\New Folder\right.jpg', wx.BITMAP_TYPE_ANY)

or:

bright = wx.Image('C:\\Users\\Alexander\\Desktop\\New Folder\\right.jpg', wx.BITMAP_TYPE_ANY)

or:

bright = wx.Image('C:/Users/Alexander/Desktop/New Folder/right.jpg', wx.BITMAP_TYPE_ANY)

for all your Window paths.

Ene Uran 638 Posting Virtuoso

The Designer program that comes with the PyQt installations lets you drag and drop widgets on a form, modify properties and connect them. When done you save your work to a XML (.ui extension) file. You can load this XML file directly into a simple PyQt program and access it this way:

# run_combobox2.py
# a simple loader for .ui XML files generated with QTDesigner
# the XML file "combobox2.ui"
# contains a QWidget Form with a QComboBox on it
# the QComboBox signal is connected to the Form slot
# setWindowTitle(QString) via currentIndexChanged(QString)
# ene

import sys

from PyQt4 import QtGui, uic


app = QtGui.QApplication(sys.argv)
widget = uic.loadUi("combobox2.ui")
widget.show()

combo = widget.comboBox
# load the combobox with some string items
pasta_list = ['Spaghetti', 'Fettuccine', 'Ziti', 'Penne', 'Lasagne']
for pasta in pasta_list:
    combo.addItem(pasta)

app.exec_()

By the way, my XML file generated by the Qt Designer program looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>392</width>
    <height>129</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <family>Arial</family>
    <pointsize>12</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>Select a pasta from the combo box</string>
  </property>
  <widget class="QComboBox" name="comboBox">
   <property name="geometry">
    <rect>
     <x>20</x>
     <y>10</y>
     <width>181</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>comboBox</sender>
   <signal>currentIndexChanged(QString)</signal>
   <receiver>Form</receiver>
   <slot>setWindowTitle(QString)</slot>
   <hints>
    <hint type="sourcelabel">
     <x>136</x>
     <y>21</y>
    </hint>
    <hint type="destinationlabel">
     <x>136</x>
     <y>45</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

You can see that the design information is all in there. If you are brave enough, you can carefully edit the XML file (leave the tags alone!) and …

Ene Uran 638 Posting Virtuoso

Okay, for a rough comparison here is the Tkinter GUI toolkit. Tkinter itself does not have a combo box widget, but the module ttk added since Python 3.1 has one:

# ttk_combobox3.py
# exploring the Tkinter expansion module ttk combobox
# tested with Python 3.1.1 and Tkinter 8.5
# ene

import tkinter as tk
import tkinter.ttk as ttk

def selection_changed(event):
    """a combo box item has been selected, show the item"""
    s = "You selected %s" % combo.get()
    root.title(s)

pasta_list = [
'Spaghetti',
'Vermicelli',
'Bucatini',
'Fettuccine',
'Linguine',
'Lasagne',
'Cavatappi',
'Manicotti',
'Macaroni',
'Penne',
'Rigatoni',
'Ziti',
'Farfalle',
'Spatzen',
'Orzo'
]

root = tk.Tk()
# window geometry is width x height + x_offset + y_offset
root.geometry("340x120+320+200")
root.title('Select a pasta from the combo box')

combo = ttk.Combobox()
# position the combobox
combo.place(x=10, y=10)
# bind selection to an action
combo.bind('<<ComboboxSelected>>', selection_changed)

# sort the pasta list
pasta_list = sorted(pasta_list)
# load the combo box with the pasta list
combo['values'] = pasta_list

# set the initial pasta
combo.set(pasta_list[0])

root.mainloop()
Ene Uran 638 Posting Virtuoso

I know it belongs in the wxPython sticky, but for comparison purposes here it is, the pasta combobox in wx code:

# wx_combobox1.py
# test the wxPython wx.ComboBox() widget
# wx.ComboBox(parent, id, value, pos, size, choices, style)
# a combination of a wx.TextCtrl() and a drop down listbox
# ene

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, pasta_list):
        wx.Frame.__init__(self, parent, id=-1,
            pos=(320, 200), size=(340, 120),
            title='Select a pasta from the combo box')
        panel = wx.Panel(self)
        panel.SetBackgroundColour("brown")

        self.pasta_list = sorted(pasta_list)
        self.combo = wx.ComboBox(panel, id=-1,
            value=self.pasta_list[0],
            pos=(10, 10), size=(150, 100),
            choices=self.pasta_list)
        # bind mouse click in the dropdown list to an action
        self.combo.Bind(wx.EVT_COMBOBOX, self.selection_changed)

    def selection_changed(self, event):
        """selected item has changed"""
        s = "Selected pasta is %s" % self.combo.GetValue()
        self.SetTitle(s)


pasta_list = [
'Spaghetti',
'Vermicelli',
'Bucatini',
'Fettuccine',
'Linguine',
'Lasagne',
'Cavatappi',
'Manicotti',
'Macaroni',
'Penne',
'Rigatoni',
'Ziti',
'Farfalle',
'Spatzen',
'Orzo'
]

app = wx.App(0)
# create a MyFrame instance and show it
MyFrame(None, pasta_list).Show()
app.MainLoop()
Ene Uran 638 Posting Virtuoso

It took a while, but I rewrote my pasta combobox program using Ironpython, not too bad if you know a little C#. PyQT is simpler code, but this one adds some color:

# ip_combobox1.py
# ironpython gives access to the Windows .NET or Linux Mono libraries
# download ironpython from:
# http://www.codeplex.com/ironpython
# ComboBox widget load items, select an item
# ene

import clr

clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

import System
from System.Windows.Forms import *
from System.Drawing import *


class MyForm(System.Windows.Forms.Form):
    def __init__(self, pasta_list):
        self.initializeComponent()
        self.comboBox1.Sorted = True
        for item in pasta_list:
            self.comboBox1.Items.Add(item)
        # show first item
        self.comboBox1.Text = self.comboBox1.Items[0]

    def initializeComponent(self):
        self.comboBox1 = System.Windows.Forms.ComboBox()
        self.SuspendLayout()
        #
        # comboBox1
        #
        self.comboBox1.FormattingEnabled = True
        self.comboBox1.Location = System.Drawing.Point(12, 12)
        self.comboBox1.Name = 'comboBox1'
        self.comboBox1.Size = System.Drawing.Size(150, 26)
        self.comboBox1.TabIndex = 0
        self.comboBox1.SelectedValueChanged += \
            self.comboBox1_SelectedValueChanged
        #
        # Form1
        #
        self.BackColor = System.Drawing.Color.Brown
        self.ClientSize = System.Drawing.Size(323, 121)
        self.Controls.Add(self.comboBox1)
        self.Font = System.Drawing.Font('Courier New', 12.0,
            System.Drawing.FontStyle.Regular,
            System.Drawing.GraphicsUnit.Point, 0)
        self.Name = 'Form1'
        self.Text = 'Select a pasta from the combo box'
        self.ResumeLayout(False)

    def comboBox1_SelectedValueChanged(self, sender, e):
        """display present selction"""
        s = "Selected pasta is %s" % self.comboBox1.Text
        self.Text = s
        pass


pasta_list = [
'Spaghetti',
'Vermicelli',
'Bucatini',
'Fettuccine',
'Linguine',
'Lasagne',
'Cavatappi',
'Manicotti',
'Macaroni',
'Penne',
'Rigatoni',
'Ziti',
'Farfalle',
'Spatzen',
'Orzo'
]
Application.Run(MyForm(pasta_list))
Ene Uran 638 Posting Virtuoso

Bill Gates was riding a small private airplane in a remote region, along with some economists and a wilderness hiker. The hiker marveled that the world's smartest man was riding in the same plane.

All of a sudden, the pilot and copilot ran from the cockpit, grabbed two parachutes from the rack, and jumped out of the plane. Inspection showed the left engine was on fire, and that there were five people left on the plane, and four remaining parachutes.

They were discussing how to decide who got the parachutes, when Bill gates said, "The world needs my genius. He grabbed a pack and jumped out of the plane.

The hiker said, "I'm the least valuable, so the rest of you can go."

One of the economists then said, "That's not necessary. We have enough parachutes now. The world's smartest man just jumped out of the plane wearing your knapsack."

Oh darn, another one of those rather frequent DaniWeb double posts. sorry!

Ene Uran 638 Posting Virtuoso

Bill Gates was riding a small private airplane in a remote region, along with some economists and a wilderness hiker. The hiker marveled that the world's smartest man was riding in the same plane.

All of a sudden, the pilot and copilot ran from the cockpit, grabbed two parachutes from the rack, and jumped out of the plane. Inspection showed the left engine was on fire, and that there were five people left on the plane, and four remaining parachutes.

They were discussing how to decide who got the parachutes, when Bill gates said, "The world needs my genius. He grabbed a pack and jumped out of the plane.

The hiker said, "I'm the least valuable, so the rest of you can go."

One of the economists then said, "That's not necessary. We have enough parachutes now. The world's smartest man just jumped out of the plane wearing your knapsack."

Ene Uran 638 Posting Virtuoso

Here is a nice circular one:

Being a good leader, he then went to a phone booth, called the
National Weather Service and asked, "Is this winter to be cold?"

The man on the phone responded, "This winter is indeed going to be
very cold."

So the Chief went back to encourage his people to collect even more
wood to be prepared. A week later he called the National Weather
Service again, and asked again, "Is it going to be a very cold
winter?"

"Yes," the man replied, "it's going to be a very cold winter."

The Chief went back to his people and ordered them to go out and
bring back every scrap of wood they could find.

Two weeks later he called the National Weather Service again. "Are
you absolutely sure that this winter is going to be very cold?"

"Absolutely" the man replies, "the Indians are collecting wood like
crazy!"

Ene Uran 638 Posting Virtuoso

Yes - it reminds me that we gave up immortality to have sex - worth it?

Well worth it!

Ene Uran 638 Posting Virtuoso

Thanks nezachem!
Looks like my .png image file only has RGB and not RGBA. You could use this modified code:

# convert a .png image file to a .bmp image file using PIL

from PIL import Image

file_in = "test.png"
img = Image.open(file_in)

file_out = "test2.bmp"
print len(img.split())  # test
if len(img.split()) == 4:
    # prevent IOError: cannot write mode RGBA as BMP
    r, g, b, a = img.split()
    img = Image.merge("RGB", (r, g, b))
    img.save(file_out)
else:
    img.save(file_out)

Not sure what is going on, but I get these double posts with DaniWeb.

Ene Uran 638 Posting Virtuoso

Thanks nezachem!
Looks like my .png image file only has RGB and not RGBA. You could use this modified code:

# convert a .png image file to a .bmp image file using PIL

from PIL import Image

file_in = "test.png"
img = Image.open(file_in)

file_out = "test2.bmp"
print len(img.split())  # test
if len(img.split()) == 4:
    # prevent IOError: cannot write mode RGBA as BMP
    r, g, b, a = img.split()
    img = Image.merge("RGB", (r, g, b))
    img.save(file_out)
else:
    img.save(file_out)
Ene Uran 638 Posting Virtuoso

Strange, my test1.png image file is full color and I have no problems.

Ene Uran 638 Posting Virtuoso

Let's hope the lawyers are not winning in that one!

Ene Uran 638 Posting Virtuoso

I understand it has been the Chinese government and their cronies (includes Baidu) that blatantly have been stealing Google technology that has Google upset!

Ene Uran 638 Posting Virtuoso

Ziti with pasta sauce and a glass of OJ.

Ene Uran 638 Posting Virtuoso

I don't know if this is what your looking for - i just did a quick google!

http://www.devshed.com/c/a/Python/Database-Programming-in-Python-Accessing-MySQL/

You can also use this:
http://www.lmgtfy.com/

Ene Uran 638 Posting Virtuoso

It's as simple as this:

# convert a .png image file to a .bmp image file using PIL

from PIL import Image

file_in = "test1.png"
img = Image.open(file_in)

file_out = "test1.bmp"
img.save(file_out)
rasizzle commented: Great help. +1
maxvanden commented: very helpful +0
Ene Uran 638 Posting Virtuoso

A combobox is a selection widget that displays the current item, and can pop up a list of selectable items. It takes up a minimum amount of screen space.

# pqt_combobox1.py
# explore the PyQT QComboBox widget
# load, select
# ene

from PyQt4.QtCore import *
from PyQt4.QtGui import *

class ComboBox(QWidget):
    def __init__(self, pasta_list, parent=None):
        QWidget.__init__(self, parent)
        # setGeometry(x_pos, y_pos, width, height)
        self.setGeometry(320, 200, 340, 120)
        self.setWindowTitle('Select a pasta from the combo box')

        self.cb = QComboBox(self)
        self.cb.setFocusPolicy(Qt.NoFocus)
        self.cb.move(10, 10)
        # sort the list
        self.pasta_list = sorted(pasta_list)
        # load the combobox
        for pasta in self.pasta_list:
            self.cb.addItem(pasta)
        # bind/connect selection to an action
        self.connect(self.cb, SIGNAL('currentIndexChanged(QString)'),
            self.changedIndex)

    def changedIndex(self, value):
        """item in the combox has been changed/selected"""
        #print("value = %s" % value)  # test
        s = "You selected %s" % value
        self.setWindowTitle(s)


pasta_list = [
'Spaghetti',
'Vermicelli',
'Bucatini',
'Fettuccine',
'Linguine',
'Lasagne',
'Cavatappi',
'Manicotti',
'Macaroni',
'Penne',
'Rigatoni',
'Ziti',
'Farfalle',
'Spatzen',
'Orzo'
]

app = QApplication([])
cobo = ComboBox(pasta_list)
cobo.show()
app.exec_()
Ene Uran 638 Posting Virtuoso

Thanks for letting us know. I would have done it the same way too, since Frame has the convenient borderwidth arg.

Ene Uran 638 Posting Virtuoso

Hint, generally you iterate over the string like this:

mystring = "abcdefghijklmnop"

# newstring starts as an empty string (no char in it)
newstring = ""
count = 0
for c in mystring:
    # every third character is added to newstring
    if count % 3 == 0:
        #print( c )  # test
        # build up newstring
        newstring += c
    # increment count by 1
    count += 1

print( newstring )  # adgjmp
Ene Uran 638 Posting Virtuoso

We need a lot more information here. Also you have to come up with some pseudo code showing what you want to do and how you want tp proceed.

Ene Uran 638 Posting Virtuoso

There is some important information missing here. What module are you using/importing?

Also I have a dislike for people who post two threads on the same subject. That is very rude. Which one of your threads are we supposed to help with?

Ene Uran 638 Posting Virtuoso

Give your thread a meaningful title and more people will help.

Ene Uran 638 Posting Virtuoso

Maybe you should give your thread a more meaningful title.

Ene Uran 638 Posting Virtuoso

---
Though, I am assigned to write this function just using the String library to write my own parser.
---

You need to tell us this sort of thing right away!

You could use find() assuming each line has one opening and one closing tag. Here is an example of string function find():

line = '<h1>hi my name is Fred</h1>'

# find index of first '<'
ix1 = line.find('<')

# find index of first '>'
ix2 = line.find('>')

# find index of first '</'
ix3 = line.find('</')

# find index of second '>' (past ix2)
ix4 = line.find('>', ix2+1)

# test
print( ix1, ix2, ix3, ix4 )

# now get tags using string slicing and the indexes found
tag1 = line[ix1:ix2+1]
tag2 = line[ix3:ix4+1]

print( tag1 )  # <h1>
print( tag2 )  # </h1>
Ene Uran 638 Posting Virtuoso

This will give your program a certain eloquence:

# convert temperatures using Python2 or Python3

def f2c( fahrenheit ):
    """convert Fahrenheit to Celsius"""
    return ( fahrenheit - 32 ) * 5.0 / 9.0

def c2f( celsius ):
    """convert Celsius to Fahrenheit"""
    return 9.0 / 5.0 * celsius + 32

def main(info):
    print( info )
    while True:
        t = str(input( "Enter the temperature: " )).lower()
        if 'q' in t:
            break
        if 'f' in t:
            # remove last char, convert to number
            num = float(t[:-1])
            celsius = f2c(num)
            print( "%0.1f F = %0.1f C" % (num, celsius) )
        elif 'c' in t:
            # remove last char, convert to number
            num = float(t[:-1])
            fahrenheit = c2f(num)
            print( "%0.1f C = %0.1f F" % (num, fahrenheit) )


info = """\
Enter the temperature with the unit of measurement,
for instance ...
100F will give the temperature in Celsius
100C will give the temperature in Fahrenheit
(enter just q to quit the program)
"""

# program starts here
main(info)

Not totally fool proof, but what is?

Ene Uran 638 Posting Virtuoso

We just discussed that in detail, all you have to do is to slightly modify the solution:

# extract tag names in html code

try:
    # Python2
    import HTMLParser as hp
except ImportError:
    # Python3
    import html.parser as hp

class MyHTMLParser(hp.HTMLParser):
    def __init__(self):
        hp.HTMLParser.__init__(self)
        self.tag_list = list()

    def handle_starttag(self, tag, attrs):
        self.tag_list.append("<%s>" % tag)

    def handle_endtag(self, tag):
        self.tag_list.append("</%s>" % tag)


parser = MyHTMLParser()
html_str = """<h1>hi my name is</h1>"""
parser.feed(html_str)
parser.close()
for tag in parser.tag_list:
    print(tag)

"""my result -->
<h1>
</h1>
"""
Ene Uran 638 Posting Virtuoso

Cooked apple slices in caramel sauce.

Ene Uran 638 Posting Virtuoso

Python3

import antigravity
Ene Uran 638 Posting Virtuoso

What is the last date to cast ones e-ballot and most importantly what the winner takes home :D

I have heard that the first prize is a weekend at a secret location. The second prize is a whole week at the same secret location.

Ene Uran 638 Posting Virtuoso

A handful of dark chocolate covered Macadamia nuts from Trader Joe.

Ene Uran 638 Posting Virtuoso

No holidays at the beach on Mars?

Ene Uran 638 Posting Virtuoso

sorry i forgot to mention.. its graphics.py

Sorry, I am using Python 3.1.1 and graphics.py does not work with Python3.

Ene Uran 638 Posting Virtuoso

Solved the second problem.

def cans(n):
	if n == 1:
		return 1
	else:
		return n*n + cans(n-1)

print(cans(4))

Why I was trying to mess with the + blabla(n-1) part I'll never know. It's so simple once you leave it alone.

Going to check out the inorder traversal of a binary tree now.

Thanks :)

Oh no, what is this? You are using tabs for your Python indentations, a very bad habit. Four spaces are the custom. If you use tabs, then sooner or later you will mix them with spaces and then you are at the mercy of the editor setting and can get hard to trace errors.

For instance DaniWeb gives you 8 spaces per tab and if you have a couple of nested blocks, your code will look like dung!

Ene Uran 638 Posting Virtuoso

Note that recursive functions have a lot of stack overhead and are slow. There is a limit to recursions:
print( sys.getrecursionlimit() ) # --> usually 1000 default setting
which can be changed to limit x with:
sys.setrecursionlimit(x)

Ene Uran 638 Posting Virtuoso

... and what kind of GUI toolkit is this?

Ene Uran 638 Posting Virtuoso

Good show! So the question is, can you use your program to compute all the trig functions you wanted (sin, cos, tan, arcsin, etc.).

Ene Uran 638 Posting Virtuoso

I tried Netbeans and found it very awkward, especially for Python code. I have Windows and mostly use PyScripter. I can run code initially from memory and don't have to make a project out of it.

Ene Uran 638 Posting Virtuoso

Just a general example of functions and their parameters/arguments:

# example of passing parameters/arguments to and from functions

def get_data():
    """get the data from the user, from a file, or hard coded"""
    mydata = [1, 2, 3, 4]
    # return requested data to caller
    return mydata

def process_data(data=None):
    """this is also the main function of the program"""
    # if no data is passed, get it with this function call
    if not data:
        data = get_data()
    minimum_data = min(data)
    maximum_data = max(data)
    # pass the 2 needed data paramters/arguments to this function
    show_result(minimum_data, maximum_data)

def show_result(min_data, max_data):
    """display the result, needs 2 data paramters/arguments"""
    print( "result: min=%s  max=%s" % (min_data, max_data) )

# call the main function to start
# use default data via function get_data()
process_data()

# you can also supply the needed data to the main function
data = list("abcd")
process_data(data)

"""overall result -->
result: min=1  max=4
result: min=a  max=d
"""

Study it carefully! If you have questions, ask. Avoid global variables, as your program gets larger, they can easily create hard to find bugs.

Note: this code will work with Python2 or Python3

Ene Uran 638 Posting Virtuoso

Just testing out some of the many PyQT GUI toolkit widgets:

# explore PyQT QLineEdit, QPushButton, QLabel, QMessageBox,
# QHBoxLayout, QWidget, QMainWindow
# tested with Python 3.1.1 and PyQT 4.6.2.2
# ene

# easy import
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MyWindow(QMainWindow):
    def __init__(self, parent= None):
        QMainWindow.__init__(self, parent)
        # setGeometry(x_pos, y_pos, width, height)
        self.setGeometry(100, 150, 320, 100)
        self.setWindowTitle("Explore QLineEdit")
        self.create_widgets()

    def create_widgets(self):
        self.label = QLabel("Say hello:")
        self.edit = QLineEdit()
        self.button = QPushButton("Push Me!")
        # connect signal to button
        #QObject.connect(self.button, SIGNAL("clicked()"), self.on_click)
        # newer connect style used with PyQT 4.5+
        self.button.clicked.connect(self.on_click)

        # use horizontal layout
        h_box = QHBoxLayout()
        h_box.addWidget(self.label)
        h_box.addWidget(self.edit)
        h_box.addWidget(self.button)
        # create central widget, add layout and set
        central_widget = QWidget()
        central_widget.setLayout(h_box)
        self.setCentralWidget(central_widget)

    def on_click(self):
        """the button has been clicked"""
        msg = "Good day %s" % self.edit.displayText()
        QMessageBox.information(self, "Title", msg, QMessageBox.Ok)


# test potential module
if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec_()
Ene Uran 638 Posting Virtuoso

The only one that comes to mind is the Wing IDE from:
http://wingide.com/wingide

There might be a trial version you can test drive.

Ene Uran 638 Posting Virtuoso

Oprah is actually a typo. Her parents wanted to use the biblical name Orpah, but the midwife couldn’t spell too well, so it became Oprah.

Ene Uran 638 Posting Virtuoso

Please vote for jbennet, he is such a cute looking lad!

Ene Uran 638 Posting Virtuoso

Age is strictly a case of mind over matter. If you don't mind, it doesn't matter.
-- Jack Benny

Ene Uran 638 Posting Virtuoso

Xmas dances and music

Ene Uran 638 Posting Virtuoso

A typical Italian meal