Changeset 3796


Ignore:
Timestamp:
Mar 1, 2017, 6:31:23 PM (3 years ago)
Author:
hectorgh
Message:

wip

Location:
lliurex-store/trunk/fuentes/lliurex-store-gui
Files:
1 added
11 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Core.py

    r3734 r3796  
    11import random
     2import string
    23import MainWindow
    34import MainMenu
     
    67import ScreenshotViewer
    78import LoadingBox
     9import SearchBox
    810
    911RSRC_DIR="./"
     
    2325
    2426                return Core.singleton
     27       
     28        @classmethod
     29        def get_random_id(self):
     30               
     31                chars=string.ascii_lowercase
     32                size=10
     33               
     34                return ''.join(random.choice(chars) for _ in range(size))
     35               
     36        #def get_random_id
     37
    2538               
    2639       
     
    3649        def init(self):
    3750               
     51                self.dprint("Creating loading screen...")
     52                self.loading_box=LoadingBox.LoadingBox()
    3853                self.dprint("Creating main menu...")
    3954                self.main_menu=MainMenu.MainMenu()
    40                 self.dprint("Creating loading screen...")
    41                 self.loading_box=LoadingBox.LoadingBox()
    42                
    4355                self.dprint("Creating popup menu...")
    4456                self.popup_menu=PopupMenu.PopupMenu()
     
    4759                self.dprint("Creating screenshot viewer...")
    4860                self.screenshot_viewer=ScreenshotViewer.ScreenshotViewer()
     61                self.dprint("Creating search box...")
     62                self.search_box=SearchBox.SearchBox()
    4963               
    5064               
  • lliurex-store/trunk/fuentes/lliurex-store-gui/DetailsBox.py

    r3734 r3796  
    2727                self.banner_small=150
    2828                self.icon_size=64
     29               
     30                self.details_max_width=25
     31                self.app_max_width=8
     32                self.short_description_max_width=10
    2933               
    3034                self.full_info_box=Gtk.HBox()
     
    6973                self.version_value_label=Gtk.Label()
    7074                self.version_value_label.set_alignment(1,0.5)
     75                self.version_value_label.set_max_width_chars(self.details_max_width)
     76                self.version_value_label.set_ellipsize(Pango.EllipsizeMode.END)
    7177                self.category_value_label=Gtk.Label()
    7278                self.category_value_label.set_alignment(1,0.5)
     79                self.category_value_label.set_max_width_chars(self.details_max_width)
     80                self.category_value_label.set_ellipsize(Pango.EllipsizeMode.END)
    7381                self.license_value_label=Gtk.Label()
    7482                self.license_value_label.set_alignment(1,0.5)
     83                self.license_value_label.set_max_width_chars(self.details_max_width)
     84                self.license_value_label.set_ellipsize(Pango.EllipsizeMode.END)
    7585                self.size_value_label=Gtk.Label()
    7686                self.size_value_label.set_alignment(1,0.5)
     87                self.size_value_label.set_max_width_chars(self.details_max_width)
     88                self.size_value_label.set_ellipsize(Pango.EllipsizeMode.END)
    7789                self.website_value_label=Gtk.Label()
    7890                self.website_value_label.set_alignment(1,0.5)
     91                self.website_value_label.set_max_width_chars(self.details_max_width)
     92                self.website_value_label.set_ellipsize(Pango.EllipsizeMode.END)
    7993               
    8094               
     
    116130               
    117131                self.app_name_label=Gtk.Label("")
     132                self.app_name_label.set_max_width_chars(self.app_max_width)
     133                self.app_name_label.set_ellipsize(Pango.EllipsizeMode.END)
    118134                self.app_name_label.set_alignment(0,1)
    119135                self.short_description_label=Gtk.Label("")
    120136                self.short_description_label.set_alignment(0,0)
     137                self.short_description_label.set_max_width_chars(self.short_description_max_width)
     138                self.short_description_label.set_ellipsize(Pango.EllipsizeMode.END)
    121139               
    122140                vbox=Gtk.VBox()
     
    304322                        b.set_size_request(self.banner_small,self.banner_small)
    305323                        b.set_margin_top(10)
    306                         b.connect("clicked",self.related_app_clicked,None)
     324                        b.connect("clicked",self.related_app_clicked,p)
    307325                        b.set_name("RELATED_BUTTON")
    308326                        b.set_valign(Gtk.Align.CENTER)
     
    357375        def related_app_clicked(self,widget,app):
    358376               
    359                 print "app clicked"
     377                self.core.main_window.load_pkg_data(app.debian_name)
    360378               
    361379        #def related_app_clicked
  • lliurex-store/trunk/fuentes/lliurex-store-gui/ImageManager.py

    r3773 r3796  
    66
    77from gi.repository import Gtk,GdkPixbuf,GLib,Gdk, PangoCairo, Pango
     8
    89
    910
     
    6263        ctx=cairo.Context(surface)
    6364       
     65       
     66       
    6467        lg1 = cairo.LinearGradient(0.0,0.0, 0.0, size_y)
    65         lg1.add_color_stop_rgba(0, 80/255.0, 117/255.0, 190/255.0, 1)
    66         lg1.add_color_stop_rgba(0.5, 24/255.0, 73/255.0, 168/255.0, 1)
     68        lg1.add_color_stop_rgba(0, 0/255.0, 95/255.0, 219/255.0, 1)
     69        lg1.add_color_stop_rgba(1, 0/255.0, 56/255.0, 134/255.0, 1)
    6770        ctx.rectangle(0, 0, size_x, size_y)
    6871        ctx.set_source(lg1)
    6972        ctx.fill()
    7073       
     74
     75        '''
    7176        ctx.move_to(0,size_y)
    7277        ctx.line_to(size_x*0.7,0)
     
    7479        ctx.line_to(size_x,size_y)
    7580        ctx.line_to(0,size_y)
    76         ctx.set_source_rgba(  24/255.0, 73/255.0, 168/255.0, 1)
     81        ctx.set_source_rgba(   0/255.0, 56/255.0, 134/255.0, 1)
    7782        ctx.fill()
     83        '''
    7884       
    7985        img_offset_x=offset_x
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainMenu.py

    r3773 r3796  
    8383                self.forward_button.connect("clicked",self.forward_clicked)
    8484               
    85                 #self.build_related()
    8685                self.build_categories()
    8786                self.set_css_names()
    88                
    8987               
    9088                GLib.timeout_add(3000,self.next_image)
     
    227225               
    228226                       
    229                 #self.categories_grid.show_all()
     227                self.categories_grid.show_all()
    230228               
    231229        #def build_categories
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainWindow.py

    r3773 r3796  
    77
    88import threading
     9import multiprocessing
    910import gettext
    1011import signal
     
    2223                self.core=Core.Core.get_core()
    2324                self.load_thread=threading.Thread()
     25                self.search_process=multiprocessing.Process()
    2426                self.thread_aborted=False
     27                self.search_aborted=False
     28                self.last_search=""
    2529                self.load_gui()
    2630               
    2731        #def init
     32       
     33
     34       
     35        # ### MAIN UI FUNCTIONS # ####################
    2836       
    2937        def load_gui(self):
     
    4149                self.main_box=builder.get_object("main_box")
    4250                self.header_box=builder.get_object("header_box")
    43                 test_box=builder.get_object("box1")
    44                 test_box.set_name("INSTALL_BUTTON")
    45                
     51               
     52                self.main_menu=self.core.main_menu
     53                self.loading_box=self.core.loading_box
    4654                self.details_box=self.core.details_box
    47                
     55                self.popup_menu=self.core.popup_menu
     56                self.screenshot_viewer=self.core.screenshot_viewer
     57                self.search_box=self.core.search_box
    4858               
    4959                self.stack=Gtk.Stack()
     
    5161                self.stack.set_transition_duration(500)
    5262               
    53                 self.main_menu=self.core.main_menu
    54                
    55                 import random
    56                 id=int(random.random()*2)
    57                 #self.main_menu.testbutton.connect("clicked",self.load_pkg_data,id)
    58                
    59                 self.loading_box=self.core.loading_box
    60                
    6163                self.stack.add_titled(self.loading_box,"loading","Loading")
    6264                self.stack.add_titled(self.main_menu,"main","Main")
    6365                self.stack.add_titled(self.details_box,"details","Details")
    64                
     66                self.stack.add_titled(self.search_box,"search","Search")
    6567                self.main_scroll.add(self.stack)
    66                
    67                 self.load_thread=threading.Thread(target=self.download_home_info_thread)
    68                 self.load_thread.daemon=True
    69                 self.load_thread.start()
    70                
    71                 GLib.timeout_add(500,self.load_home)
    72                
    73                
    74                
     68       
    7569                self.overlay=Gtk.Overlay()
    7670                self.main_eb=Gtk.EventBox()
     
    8377                self.overlay.show_all()
    8478               
    85                 self.popup_menu=self.core.popup_menu
    86                
    87                
    88                 self.screenshot_viewer=self.core.screenshot_viewer
    89 
    9079                self.fade_box_revealer=Gtk.Revealer()
    9180                self.fade_box_revealer.set_valign(Gtk.Align.END)
     
    10796                self.overlay.add_overlay(self.popup_menu)
    10897                self.overlay.add_overlay(self.screenshot_viewer)
    109                
    110                
    111                
    112                 for x in self.details_box.screenshots_box.get_children():
    113                         x.connect("clicked",self.screenshot_clicked)
    114                
     98
    11599                self.window.add(self.overlay)
     100               
     101                self.connect_signals()
    116102                self.set_css_info()
    117                
    118                 self.window.connect("size-allocate",self.window_size_changed)
    119                 self.window.connect("destroy",Gtk.main_quit)
    120                 self.menu_button.connect("clicked",self.menu_button_clicked)
    121                
     103                self.build_home()
    122104               
    123105                self.window.show_all()
    124                
    125106               
    126107        #def load_gui
     
    141122               
    142123        #def set-css_info       
     124
     125       
     126        def connect_signals(self):
     127               
     128                self.window.connect("size-allocate",self.window_size_changed)
     129                self.window.connect("destroy",Gtk.main_quit)
     130                self.menu_button.connect("clicked",self.menu_button_clicked)
     131                self.search_entry.connect("changed",self.search_entry_changed)
     132               
     133        #def connect_signals
    143134       
    144135       
     
    150141        #def start_gui
    151142
     143        # #################################################### ##
     144
     145
     146
     147        # #### STACK FAST ACCESS FUNCTIONS # #################
     148       
     149        def show_loading(self):
     150               
     151                self.stack.set_visible_child_name("loading")
     152               
     153        #def kk
     154
     155
     156        def show_details_box(self):
     157               
     158                self.thread_aborted=True
     159                self.search_aborted=True
     160                self.stack.set_visible_child_name("details")
     161               
     162        #def show_details_box
     163
     164
     165        def show_home(self):
     166               
     167                self.thread_aborted=True
     168                self.search_aborted=True
     169                self.search_entry.set_text("")
     170                self.location_label.set_text("Home")
     171                self.stack.set_visible_child_name("main")
     172               
     173        #def show_details_box
     174       
     175        def show_search_results(self):
     176               
     177                self.location_label.set_text("Search")
     178                self.stack.set_visible_child_name("search")
     179               
     180        #def show_search_results
     181       
     182        # ############################################
     183
     184
     185
    152186        # ### HOME LOADING FUNCTIONS # ##############
    153187       
    154         def load_home(self):
     188        def build_home(self):
     189               
     190                self.load_thread=threading.Thread(target=self.download_home_info_thread)
     191                self.load_thread.daemon=True
     192                self.load_thread.start()
     193               
     194                GLib.timeout_add(500,self.build_home_listener)
     195               
     196        #def build_home
     197
     198
     199        def build_home_listener(self):
    155200               
    156201                if self.thread_aborted:
     
    177222       
    178223        # #################################
     224
     225       
    179226       
    180227        # ### LOAD PKG FUNCTIONS # ##################
     
    217264       
    218265        # #################################
    219        
    220        
    221         def show_loading(self):
    222                
    223                 self.stack.set_visible_child_name("loading")
    224                
    225         #def kk
    226                
    227         def show_details_box(self):
    228                
    229                 self.stack.set_visible_child_name("details")
    230                
    231         #def show_details_box
    232        
    233         def show_home(self):
    234                
    235                 self.stack.set_visible_child_name("main")
    236                
    237         #def show_details_box
    238        
    239 
     266
     267
     268        # ## SEARCH FUNCTIONS ######################
     269       
     270        def search_entry_changed(self,widget):
     271               
     272                txt=widget.get_text()
     273                current_stack=self.stack.get_visible_child_name()
     274                txt=txt.strip(" ")
     275               
     276                if self.last_search!=txt:
     277                        self.last_search=txt
     278                else:
     279                        return
     280               
     281                if len(txt)==0:
     282                        self.show_home()
     283                        return
     284                       
     285                if len(txt)>2:
     286                        self.search_aborted=False
     287                        self.show_loading()
     288                        self.search_package(txt)
     289               
     290        #def search_entry_changed
     291       
     292        def search_package(self,pkg_id):
     293               
     294                if self.search_process.is_alive():
     295                        self.search_process.terminate()
     296               
     297                self.current_search_id=self.core.get_random_id()
     298                self.search_queue=multiprocessing.Queue()
     299                self.search_process=multiprocessing.Process(target=self.search_package_thread,args=(pkg_id,self.search_queue,))
     300               
     301                self.search_process.daemon=True
     302                self.search_process.start()
     303               
     304                GLib.timeout_add(500, self.search_listener,self.current_search_id)
     305               
     306        #def search_package
     307       
     308        def search_package_thread(self,pkg_id,search_queue):
     309               
     310                time.sleep(2)
     311                self.core.dprint("Search complete")
     312               
     313                ret=[]
     314               
     315                for x in range(0,10):
     316                        pkg={}
     317                        pkg["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
     318                        pkg["name"]=pkg_id.capitalize()
     319                        pkg["debian_name"]=pkg_id
     320                        pkg["short_description"]="Package that does a lot of things very well done askdjlaskl jdaklsdjkl asjkl dasjkl djkl asdjkl asdjkl asdjkl asdjkl asdjkl asdjkl asd"
     321                        ret.append(pkg)
     322               
     323                search_queue.put(ret)
     324               
     325        #def search_package_thread
     326       
     327        def search_listener(self,search_id):
     328               
     329                if self.current_search_id!=search_id:
     330                        return False
     331               
     332                if self.search_aborted:
     333                        self.thread_aborted=False
     334                        return False
     335               
     336                if self.search_process.is_alive():
     337                        return True
     338                       
     339                       
     340                search_result=self.search_queue.get()
     341                if search_result!=None:
     342                        self.core.search_box.populate_search_results(search_result)
     343                        self.show_search_results()
     344               
     345                return False
     346               
     347        #def search_listener
     348       
     349
     350        # ########################################
     351       
     352
     353        # ## SCREENSHOTVIEWER FUNCTIONS ## ##############
     354       
    240355        def window_size_changed(self,widget,allocation):
    241356               
     
    267382        #def screenshot_clicked
    268383       
     384        # ####################################### #
     385
     386
     387
     388        # ## POPUP MENU FUNCTIONS # #####################
    269389
    270390        def main_eb_clicked(self,widget,event):
     
    302422        #def check_fade_out
    303423       
    304        
     424        # ########################################## #
     425       
     426
    305427
    306428       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Package.py

    r3773 r3796  
    1212                self.website=dic.setdefault("website")
    1313                self.name=dic.setdefault("name")
     14                self.debian_name=dic.setdefault("debian_name")
    1415                self.short_description=dic.setdefault("short_description")
    1516                self.full_description=dic.setdefault("full_description")
     
    3031       
    3132       
     33        def pprint(self):
     34               
     35                print "BANNER_URL:",self.banner_url
     36                print "BANNER_ID:",self.banner_id
     37                print "VERSION:",self.version
     38                print "CATEGORY:",self.category
     39                print "LICENSE:",self.license
     40                print "SIZE:",self.size
     41                print "WEBSITE:",self.website
     42                print "NAME",self.name
     43                print "DEBIAN_NAME",self.debian_name
     44                print "SHORT_DESCRIPTION",self.short_description
     45                print "SECTION:",self.section
     46                print "ICON_URL:",self.icon_url
     47                print "ICON_ID:",self.icon_id
     48                print "PREVIEW_IMAGE:",self.video_preview_image
     49                print "VIDEO_ID:",self.video_id
     50                print "VIDEO_URL:",self.video_url
     51                print "SCREENSHOT_URL:",self.screenshot_url
     52                print "SCREENSHOT_ID:",self.screenshot_id
     53                print "VIDEOS:",self.videos
     54                print "SCREENSHOTS:",self.screenshots
     55                print "RELATED_PACKAGES:",self.related_packages
     56               
     57        #def pprint
     58       
     59       
    3260        @classmethod
    3361        def get_demo_package(self,id="ardour"):
     
    4674                        dic["website"]="http://www.google.es"
    4775                        dic["name"]="Ardour"
     76                        dic["debian_name"]="ardour"
    4877                        dic["short_description"]="Record, mix and master multi-track audio."
    4978                        dic["full_description"]="""
     
    111140                        tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
    112141                        tmp["banner_id"]="rosegarden_banner"
     142                        tmp["debian_name"]="rosegarden"
    113143                        p=Package(tmp)
    114144                        dic["related_packages"].append(p)
     
    119149                        tmp["icon_url"]="https://cdn2.iconfinder.com/data/icons/squareplex/512/audacity.png"
    120150                        tmp["banner_id"]="audacity_banner"
     151                        tmp["debian_name"]="audacity"
    121152                        p=Package(tmp)
    122153                        dic["related_packages"].append(p)
     
    125156                        tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
    126157                        tmp["banner_id"]="lmms_banner"
    127                         p=Package(tmp)
    128                         dic["related_packages"].append(p)
    129                         '''
    130                         tmp={}
    131                         tmp["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
    132                         tmp["banner_id"]="firefox_banner"
    133                         tmp["name"]="Firefox"
    134                         p=Package(tmp)
    135                         dic["related_packages"].append(p)
    136                         '''
    137                        
    138                        
    139                        
     158                        tmp["debian_name"]="lmms"
     159                        p=Package(tmp)
     160                        dic["related_packages"].append(p)
     161       
    140162               
    141163                else:
     
    149171                        dic["website"]="http://www.google.es"
    150172                        dic["name"]="Clementine"
     173                        dic["debian_name"]="clementine"
    151174                        dic["short_description"]="Plays music and last.fm streams"
    152175                        dic["full_description"]="""
     
    220243                        tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
    221244                        tmp["banner_id"]="rosegarden_banner"
     245                        tmp["debian_name"]="rosegarden"
    222246                        p=Package(tmp)
    223247                        dic["related_packages"].append(p)
     
    226250                        tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
    227251                        tmp["banner_id"]="audacity_banner"
     252                        tmp["debian_name"]="audacity"
    228253                        p=Package(tmp)
    229254                        dic["related_packages"].append(p)
     
    232257                        tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
    233258                        tmp["banner_id"]="lmms_banner"
     259                        tmp["debian_name"]="lmms"
    234260                        p=Package(tmp)
    235261                        dic["related_packages"].append(p)
     
    239265                        tmp["banner_id"]="firefox_banner"
    240266                        tmp["name"]="Firefox"
     267                        tmp["debian_name"]="firefox"
    241268                        p=Package(tmp)
    242269                        dic["related_packages"].append(p)
  • lliurex-store/trunk/fuentes/lliurex-store-gui/PopupMenu.py

    r3773 r3796  
    104104        def go_home(self,widget):
    105105               
    106                 self.core.main_window.thread_aborted=True
    107                 self.core.main_window.location_label.set_text("Home")
    108                 self.core.main_window.stack.set_visible_child_name("main")
     106               
     107                self.core.main_window.show_home()
    109108                # Forcing main_eb_clicked call to hide both popup menu and fade_box
    110109                self.core.main_window.main_eb_clicked(None,None)
  • lliurex-store/trunk/fuentes/lliurex-store-gui/home_content.json

    r3773 r3796  
    3737            "icon_url": "http://mib.pianetalinux.org/miblight/wp-content/uploads/2008/11/ardour-logo.png",
    3838            "name": "Ardour",
    39             "banner_url": null
     39            "banner_url": "https://teoten.files.wordpress.com/2010/02/splash1.png"
    4040        },
    4141        {
     
    4343            "icon_url": "https://www.mozilla.org/media/img/styleguide/identity/thunderbird/logo.8e4d6e7ae7de.png",
    4444            "name": "Thunderbird",
    45             "banner_url": null
     45            "banner_url": "https://emailclientexpert.files.wordpress.com/2010/11/mozilla_thunderbird.jpg"
    4646        },
    4747        {
     
    4949            "icon_url": "https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png",
    5050            "name": "Firefox",
    51             "banner_url": null
     51            "banner_url": "http://www.dosbit.com/images/2014/05/cinco-complementos-indispensables-para-mozilla-firefox-01.png"
    5252        },
    5353        {
     
    5555            "icon_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Darktable_icon.svg/768px-Darktable_icon.svg.png",
    5656            "name": "Darktable",
    57             "banner_url": null
     57            "banner_url": "http://www.darktable.org/wp-content/uploads/2011/07/screenshot-2.png"
    5858        },
    5959        {
     
    6161            "icon_url": "http://timotheegiet.com/images/krita/icon-kritaDesktop01.png",
    6262            "name": "Krita",
    63             "banner_url": null
     63            "banner_url": "https://upload.wikimedia.org/wikipedia/commons/d/d8/Krita_steam_boxart_Feb_2014.png"
    6464        }
    6565    ]
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.css

    r3773 r3796  
    385385
    386386                }
     387               
     388               
     389                #PKG_BOX {
     390
     391                                background-image: -gtk-gradient (linear,        left top, left bottom, from (rgba(0,95,219,1)),  to (rgba(0,56,134,1)));
     392               
     393                                /* 0/255.0, 95/255.0, 219/255.0 */
     394                                /* 0/255.0, 56/255.0, 134/255.0 */
     395                /*box-shadow: -0.5px 3px 2px #cdcdcd;*/
     396
     397        }
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.py

    • Property executable set to on
    r3649 r3796  
     1#!/usr/bin/env python
     2
    13import Core
    24
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.ui

    r3773 r3796  
    634634        <property name="visible">True</property>
    635635        <property name="can_focus">False</property>
     636        <property name="halign">center</property>
    636637        <property name="margin_left">10</property>
    637638        <property name="margin_right">10</property>
     
    10941095    </child>
    10951096  </object>
     1097  <object class="GtkBox" id="search_box">
     1098    <property name="visible">True</property>
     1099    <property name="can_focus">False</property>
     1100    <property name="orientation">vertical</property>
     1101    <child>
     1102      <object class="GtkScrolledWindow" id="scrolledwindow2">
     1103        <property name="visible">True</property>
     1104        <property name="can_focus">True</property>
     1105        <child>
     1106          <object class="GtkViewport" id="viewport3">
     1107            <property name="visible">True</property>
     1108            <property name="can_focus">False</property>
     1109            <child>
     1110              <object class="GtkBox" id="results_search_box">
     1111                <property name="visible">True</property>
     1112                <property name="can_focus">False</property>
     1113                <property name="halign">center</property>
     1114                <property name="margin_top">10</property>
     1115                <property name="margin_bottom">10</property>
     1116                <property name="orientation">vertical</property>
     1117                <child>
     1118                  <placeholder/>
     1119                </child>
     1120              </object>
     1121            </child>
     1122          </object>
     1123        </child>
     1124      </object>
     1125      <packing>
     1126        <property name="expand">True</property>
     1127        <property name="fill">True</property>
     1128        <property name="position">0</property>
     1129      </packing>
     1130    </child>
     1131  </object>
    10961132  <object class="GtkWindow" id="window1">
    10971133    <property name="can_focus">False</property>
     1134    <property name="window_position">center</property>
    10981135    <property name="default_width">800</property>
    10991136    <property name="default_height">800</property>
Note: See TracChangeset for help on using the changeset viewer.