def _begin_print_cb(self, operation, context): alcada_pagina = context.get_height() self._pagines = [] pagina = [] y = 0 horaris = [self._horari_impressio(context, h) for h in sorted(domini.horaris_preferits(), reverse=True)] while len(horaris) > 0: horari = horaris.pop() alcada_horari = horari.alcada() if y + alcada_horari <= alcada_pagina: pagina.append(horari) y += alcada_horari else: horari_div = horari.divideix(alcada_pagina) if horari_div is None: continue self._pagines.append(pagina) pagina = [horari_div[0]] y = horari_div[0].alcada() if horari_div[1]: horaris.append(horari_div[1]) self._pagines.append(pagina) operation.set_n_pages(len(self._pagines))
def imprimeix(self, widget=None): if not gtk_versio_2_10: return if len(domini.horaris_preferits()) == 0: d = gtk.MessageDialog(self._finestra, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "No hi ha horaris preferits per imprimir!") d.run() d.destroy() return po = gtk.PrintOperation() if self._settings != None: po.set_print_settings(self._settings) if self._page_setup != None: po.set_default_page_setup(self._page_setup) po.connect("begin-print", self._begin_print_cb) po.connect("draw-page", self._draw_page_cb) res = po.run(gtk.PRINT_OPERATION_ACTION_PRINT_DIALOG, self._finestra) if res == gtk.PRINT_OPERATION_RESULT_ERROR: d = gtk.MessageDialog(self._finestra, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "S'ha produït un error en imprimir.") d.run() d.destroy() elif res == gtk.PRINT_OPERATION_RESULT_APPLY: self._settings = po.get_print_settings() self._page_setup = po.get_default_page_setup()
def imprimeix(self, widget=None): if len(domini.horaris_preferits()) == 0: d = Gtk.MessageDialog(transient_for=self._finestra, modal=True, message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, text="No hi ha horaris preferits per imprimir!") d.run() d.destroy() return po = Gtk.PrintOperation() if self._settings != None: po.set_print_settings(self._settings) if self._page_setup != None: po.set_default_page_setup(self._page_setup) po.connect("begin-print", self._begin_print_cb) po.connect("draw-page", self._draw_page_cb) res = po.run(Gtk.PrintOperationAction.PRINT_DIALOG, self._finestra) if res == Gtk.PrintOperationResult.ERROR: d = Gtk.MessageDialog(transient_for=self._finestra, modal=True, message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK, text="S'ha produït un error en imprimir.") d.run() d.destroy() elif res == Gtk.PrintOperationResult.APPLY: self._settings = po.get_print_settings() self._page_setup = po.get_default_page_setup()
def _mostra_web(self, widget=None): horaris = domini.horaris_preferits() if len(horaris) == 0: d = gtk.MessageDialog(self.finestra, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_OK, "No hi ha horaris preferits per mostrar!") d.run() d.destroy() return for horari in horaris: params = "&".join("a=%s%%23%s" % (a, g) for a, g in horari) obre_enllac_web(None, self.BASE_URL + params)
def _mostra_web(self, widget=None): horaris = domini.horaris_preferits() if len(horaris) == 0: d = Gtk.MessageDialog(transient_for=self.finestra, modal=True, message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.OK, text="No hi ha horaris preferits per mostrar!") d.run() d.destroy() return for horari in horaris: params = "&".join("a=%s_%s" % (a, g) for a, g in horari) obre_enllac_web(None, self.BASE_URL + params)
def actualitza(self, widget=None, horaris=[]): grups_seleccionats = self.get_model()[self._fila_grups_sel.get_path()][0] # ¿¿ redefineix model en comptes d'obtenir-lo amb self.get_model() ?? model = gtk.ListStore(object, bool, int, int, int, int, int, bool) # utilitzem una funcio de comparació per a ordenar cada columna for i in range(0, 7): model.set_sort_func(i, self._cmp_horaris_cb, i) path_sel = None for h in domini.horaris_preferits(): it = model.append([h.grups(), True, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, False]) if not path_sel and h.grups() == grups_seleccionats: path_sel = model.get_path(it) for h in horaris: if not domini.es_horari_preferit(h.grups()): it = model.append([h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, False]) if not path_sel and h.grups() == grups_seleccionats: path_sel = model.get_path(it) model.set_value(it, 7, True) self._mantenir_sel = path_sel is not None if not path_sel: h = Horari(grups_seleccionats) it = model.insert(0, [h.grups(), False, h.hores, h.hores_mati, h.hores_tarda, h.solapaments, h.fragments, True]) path_sel = model.get_path(it) self.set_model(model) self._fila_grups_sel = gtk.TreeRowReference(model, path_sel) self.set_cursor(path_sel) self.columns_autosize()