[gnome-devel-docs] tutorials python: buttonbox



commit 36dcffb07c3d344b9d41bc66eb071778b72473a0
Author: Marta Maria Casetti <mmcasetti gmail com>
Date:   Wed Aug 15 15:49:35 2012 +0100

    tutorials python: buttonbox

 platform-demos/C/buttonbox.py.page              |   41 ++++++++
 platform-demos/C/media/buttonbox_calculator.png |  Bin 0 -> 5929 bytes
 platform-demos/C/samples/buttonbox.py           |  118 +++++++++++++++++++++++
 platform-demos/Makefile.am                      |    3 +
 4 files changed, 162 insertions(+), 0 deletions(-)
---
diff --git a/platform-demos/C/buttonbox.py.page b/platform-demos/C/buttonbox.py.page
new file mode 100644
index 0000000..6f19031
--- /dev/null
+++ b/platform-demos/C/buttonbox.py.page
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<page xmlns="http://projectmallard.org/1.0/";
+      xmlns:xi="http://www.w3.org/2001/XInclude";
+      type="guide" style="task"
+      id="buttonbox.py">
+  <info>
+	  <link type="guide" xref="beginner.py#layout"/>
+	  <link type="seealso" xref="button.py"/>
+    <revision version="0.2" date="2012-08-01" status="stub"/>
+
+    <credit type="author copyright">
+      <name>Marta Maria Casetti</name>
+      <email>mmcasetti gmail com</email>
+      <years>2012</years>
+    </credit>
+
+    <desc>A container for arranging buttons</desc>
+  </info>
+
+  <title>ButtonBox</title>
+
+  <media type="image" mime="image/png" src="media/buttonbox_calculator.png"/>
+  <p>Some labels in a grid.</p>
+
+  <links type="section" />
+
+  <section id="code">
+    <title>Code used to generate this example</title>
+    <code mime="text/python" style="numbered"><xi:include href="samples/buttonbox.py" parse="text"><xi:fallback/></xi:include></code>
+  </section>
+
+  <section id="references">
+    <title>API References</title>
+    <p>In this sample we used the following:</p>
+    <list>
+      <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkButtonBox.html";>GtkButtonBox</link></p></item>
+      <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkButton.html";>GtkButton</link></p></item>
+      <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkEntry.html";>GtkEntry</link></p></item>
+    </list>
+  </section>
+</page>
diff --git a/platform-demos/C/media/buttonbox_calculator.png b/platform-demos/C/media/buttonbox_calculator.png
new file mode 100644
index 0000000..f110c4d
Binary files /dev/null and b/platform-demos/C/media/buttonbox_calculator.png differ
diff --git a/platform-demos/C/samples/buttonbox.py b/platform-demos/C/samples/buttonbox.py
new file mode 100644
index 0000000..1ed7872
--- /dev/null
+++ b/platform-demos/C/samples/buttonbox.py
@@ -0,0 +1,118 @@
+from gi.repository import Gtk
+import sys
+
+class MyWindow(Gtk.ApplicationWindow):
+    def __init__(self, app):
+        Gtk.Window.__init__(self, title="Calculator", application=app)
+        self.set_default_size(450, 100)
+        self.set_border_width(10)
+
+        box = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)
+        
+        button_plus = Gtk.Button(label="+")
+        button_plus.connect("clicked", self.plus_callback)
+        box.add(button_plus)
+
+        button_minus = Gtk.Button(label="-")
+        button_minus.connect("clicked", self.minus_callback)
+        box.add(button_minus)
+
+        button_multi = Gtk.Button(label="*")
+        button_multi.connect("clicked", self.multi_callback)
+        box.add(button_multi)
+        
+        button_divided = Gtk.Button(label="/")
+        button_divided.connect("clicked", self.divided_callback)
+        box.add(button_divided)
+        
+        button_equal = Gtk.Button(label="=")
+        button_equal.connect("clicked", self.equal_callback)
+        box.add(button_equal)
+                
+        button_cancel = Gtk.Button(label="C")
+        button_cancel.connect("clicked", self.cancel_callback)
+        box.add(button_cancel)
+        
+        box.set_child_non_homogeneous(button_cancel, True)
+              
+        self.entry = Gtk.Entry()
+        self.entry.set_text('0.0')
+        self.entry.connect("activate", self.equal_callback)
+
+        self.second_number = 0.0
+        self.result = 0.0
+
+        self.operation = ""
+
+        grid = Gtk.Grid()
+        grid.attach(self.entry, 0, 0, 1, 1)
+        grid.attach(box, 0, 1, 1, 1)
+        
+        self.add(grid)
+        
+    def plus_callback(self, button):
+        if self.entry.get_text() == "":
+            self.first_number = 0.0
+        else:
+            self.first_number = float(self.entry.get_text())
+        self.operation = "plus"
+
+    def minus_callback(self, button):
+        if self.entry.get_text() == "":
+            self.first_number = 0.0
+        else:
+            self.first_number = float(self.entry.get_text())
+        self.operation = "minus"
+
+    def multi_callback(self, button):
+        if self.entry.get_text() == "":
+            self.first_number = 0.0
+        else:
+            self.first_number = float(self.entry.get_text())
+        self.operation = "multiplication"
+
+    def divided_callback(self, button):
+        if self.entry.get_text() == "":
+            self.first_number = 0.0
+        else:
+            self.first_number = float(self.entry.get_text())
+        self.operation = "division"
+
+    def equal_callback(self, button):
+        self.second_number =  float(self.entry.get_text())
+        if self.operation == "plus":
+            self.result = self.first_number + self.second_number
+        elif self.operation == "minus":
+            self.result = self.first_number - self.second_number
+        elif self.operation == "multiplication":
+            self.result = self.first_number * self.second_number
+        elif self.operation == "division":
+            self.result = self.first_number / self.second_number
+        else:
+            print "Error!"
+        self.first_number = self.result
+        self.entry.set_text(str(self.result))
+
+    def cancel_callback(self, button):
+        if self.entry.get_text() == "":
+            self.first_number = 0.0
+        else:
+            self.first_number = float(self.entry.get_text())
+        self.second_number = 0.0
+        self.result = 0.0
+        self.entry.set_text('0.0')
+
+class MyApplication(Gtk.Application):
+    def __init__(self):
+        Gtk.Application.__init__(self)
+
+    def do_activate(self):
+        win = MyWindow(self)
+        win.show_all()
+
+    def do_startup(self):
+        Gtk.Application.do_startup(self)
+
+app = MyApplication()
+exit_status = app.run(sys.argv)
+sys.exit(exit_status)
diff --git a/platform-demos/Makefile.am b/platform-demos/Makefile.am
index 7fa265f..d016dd6 100644
--- a/platform-demos/Makefile.am
+++ b/platform-demos/Makefile.am
@@ -35,6 +35,7 @@ demo_sources = \
 	samples/button.js			\
 	samples/button.py			\
 	samples/button.vala			\
+	samples/buttonbox.py			\
 	samples/checkbutton.c			\
 	samples/checkbutton.js			\
 	samples/checkbutton.py			\
@@ -183,6 +184,7 @@ DOC_FIGURES = \
 	media/03_jssignal_04.png		\
 	media/aboutdialog_GMenu.png		\
 	media/button.png			\
+	media/buttonbox_calculator.png		\
 	media/checkbutton.png			\
 	media/colorbutton.png			\
 	media/combobox.png			\
@@ -276,6 +278,7 @@ DOC_PAGES =				\
 	button.js.page			\
 	button.py.page			\
 	button.vala.page		\
+	buttonbox.py.page		\
 	c.page				\
 	checkbutton.c.page		\
 	checkbutton.js.page		\



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]