コード例 #1
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def on_add_agt(self, _):
     dialog = gtk.MessageDialog(
         None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
     dialog.set_alternative_button_order(
         [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
     dialog.set_default_response(2)
     dialog.set_markup('Introduceți numele <b>agentului</b>:')
     dialog.set_position(gtk.WIN_POS_CENTER)
     entry = gtk.Entry()
     set_autocomp(entry, self.match, self.agent_store)
     entry.connect("activate", resp_to_dialog, dialog, gtk.RESPONSE_OK)
     hbox = gtk.HBox()
     hbox.pack_start(gtk.Label("Nume:"), False, 5, 5)
     hbox.pack_end(entry)
     dialog.format_secondary_markup(
         "Adăugți un <i>agent</i> la obiectivul\n<b>%s</b>" %
         self.cal.current.nume)
     dialog.vbox.pack_end(hbox, True, True, 0)
     dialog.show_all()
     resp = dialog.run()
     text = unicode(entry.get_text()).title()
     dialog.destroy()
     if resp == gtk.RESPONSE_OK:
         self.disp.add_agent_at(text, self.cal.current.id)
         if self.is_in_store(text):
             self.agent_store.append([text])
         self.toggled(self.btlist[self.cal.current.nume], self.last_ord)
         env.log('add agent', text, self.cal.current.nume)
コード例 #2
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def do_del_agent(self, agt):
     self.disp.del_agent(agt, self.cal.current)
     env.log('del_agt', agt.nume, self.cal.current.nume)
     self.cal.redraw(self.cal.current)
     self.make_agent_store()
     self.check_unmark()
     del agt
コード例 #3
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def log_user(self, bt):
     dialog = gtk.MessageDialog(
         None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
     dialog.set_alternative_button_order(
         [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
     dialog.set_default_response(2)
     dialog.set_markup('Dispecer:')
     store = gtk.ListStore(str)
     for n in self.agenda.dis:
         store.append([n])
     entry = gtk.combo_box_entry_new_with_model(store, 0)
     entry.child.set_text(env.last_user)
     entry.show_all()
     dialog.vbox.pack_end(entry, True, True, 0)
     dialog.set_position(gtk.WIN_POS_CENTER)
     dialog.show_all()
     resp = dialog.run()
     text = unicode(entry.get_active_text())
     dialog.destroy()
     if resp == gtk.RESPONSE_OK:
         if not text:
             return
         ou = context.USER
         context.USER = text
         env.last_user = text
         self.userbt.child.set_text(text)
         env.log('dispecer', 'old', ou, 'new', text)
コード例 #4
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def on_edit_agt(self, _):
     if not self.cal.agent_selected or self.cal.agent_selected == -1:
         self.set_status('Selectați unul din agenții din obiective!',
                         '#c00')
         return
     agt = self.disp.aids[self.cal.agent_selected]
     oa = agt.nume[:]
     dialog = gtk.MessageDialog(
         None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
     dialog.set_alternative_button_order(
         [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
     dialog.set_default_response(2)
     dialog.set_markup('Modificați numele <b>agentului</b>:')
     dialog.set_position(gtk.WIN_POS_CENTER)
     eid = gtk.Entry()
     eid.set_text(str(agt.id))
     eid.set_size_request(80, -1)
     entry = gtk.Entry()
     entry.set_text(agt.nume)
     entry.connect("activate", resp_to_dialog, dialog, gtk.RESPONSE_OK)
     v = gtk.VBox(False, 5)
     hbox = gtk.HBox(False, 5)
     hbox.pack_start(gtk.Label("Nume:"), False, True)
     hbox.pack_end(entry)
     v.add(hbox)
     hbox = gtk.HBox(False, 5)
     hbox.pack_start(gtk.Label("ID:"), False, True)
     hbox.pack_end(eid, False, True)
     v.add(hbox)
     dialog.format_secondary_markup("<i>agent:</i> \n<b>%s</b>" % agt.nume)
     dialog.vbox.pack_end(v, True, True, 0)
     dialog.show_all()
     resp = dialog.run()
     text = entry.get_text()
     eid = eid.get_text()
     dialog.destroy()
     if resp == gtk.RESPONSE_OK:
         ret = self.disp.modify_agent(text, agt, self.cal.current)
         if ret == -2:
             self.set_status('Nume identic!')
             return
         elif ret == -3:
             self.set_status('S-a produs o eroare!')
             return
         self.cal.agent_selected = text
         self.toggled(self.btlist[self.cal.current.nume], self.last_ord)
         self.make_agent_store()
         env.log('mod_agent', oa, text, self.cal.current.nume)
コード例 #5
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def on_add_obv(self, _):
     dialog = gtk.MessageDialog(
         None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, None)
     dialog.set_alternative_button_order(
         [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
     dialog.set_default_response(2)
     dialog.set_markup('Introduceți numele <i>noului</i> <b>obiectiv</b>:')
     dialog.set_position(gtk.WIN_POS_CENTER)
     entry = gtk.Entry()
     entry.connect("activate", resp_to_dialog, dialog, gtk.RESPONSE_OK)
     hbox = gtk.HBox()
     hbox.pack_start(gtk.Label("Nume:"), False, 5, 5)
     hbox.pack_end(entry)
     # dialog.format_secondary_markup("Adăugți un <i>obiectiv</i> nou")
     dialog.vbox.pack_end(hbox, True, True, 0)
     dialog.show_all()
     resp = dialog.run()
     text = entry.get_text().title()
     dialog.destroy()
     if resp == gtk.RESPONSE_OK:
         post = self.disp.add_post(text)
         self.cal.redraw(post)
         hh, ww = self.bt_tab.get_data('hh'), self.bt_tab.get_data('ww')
         if hh % 3 == 0:
             hh = 0
             ww += 1
         bt = gtk.Button('')
         bt.connect('clicked', self.toggled, post.id)
         bt.child.set_markup('<span size="%s">%s</span>' %
                             (env.BT_FONT, post.nume))
         bt.child.modify_font(
             FontDescription('Calibri %s' % int(env.BT_FONT / 1000)))
         self.bt_tab.attach(bt, hh, hh + 1, ww, ww + 1)
         bt.set_data('ord', post.id)
         bt.show_all()
         self.bt_tab.show_all()
         self.bt_frame.show_all()
         self.bt_frame.set_size_request(-1, -1)
         self.btlist[post.nume] = bt
         env.log('add_obiectiv', text.title(), text)
         self.check_unmark()
コード例 #6
0
ファイル: main.py プロジェクト: coxmin/g3-master
 def on_del_obv(self, _):
     obv = self.cal.current
     dialog = gtk.MessageDialog(
         None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         gtk.MESSAGE_ERROR, gtk.BUTTONS_OK_CANCEL, None)
     dialog.set_alternative_button_order(
         [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
     dialog.set_default_response(2)
     dialog.set_markup(
         '<span color="#900"><u>Ștergeți</u></span> obiectiv <b>\n%s</b>?' %
         obv.nume)
     dialog.set_position(gtk.WIN_POS_CENTER)
     dialog.show_all()
     resp = dialog.run()
     dialog.destroy()
     if resp == gtk.RESPONSE_OK:
         env.log('del_obiectiv', obv.nume)
         self.disp.del_post(obv)
         self.cal.redraw(self.disp.posturi[0])
         bt = self.btlist.pop(obv.nume)
         self.bt_tab.remove(bt)
         del obv
コード例 #7
0
ファイル: main.py プロジェクト: coxmin/g3-master
    def on_edit_obv(self, _):
        o = self.cal.current

        def lentry(txt, etxt=''):
            h = gtk.HBox(False, 5)
            l = gtk.Label(txt)
            e = gtk.Entry()
            if etxt:
                e.set_text(etxt)
            h.pack_start(l, False, True)
            h.pack_end(e, True, True)
            return h, e, l

        def hour_adj():
            m_adj = gtk.Adjustment(0, 0, 24, 1, 10, 0)
            sp_m = gtk.SpinButton(m_adj, 1, 0)
            sp_m.set_numeric(True)
            sp_m.set_size_request(40, 27)
            return sp_m

        def make_orar_tab():
            tab = gtk.Table()
            l = gtk.Label()
            l.set_markup('<b>Orar:</b>')
            tab.attach(l, 0, 1, 0, 1)
            l = gtk.Label()
            l.modify_font(FontDescription('Segoe UI Symbol 14'))
            l.set_markup('<span color="#080"><b>🔓</b></span>')
            tab.attach(l, 1, 2, 0, 1)
            l = gtk.Label()
            l.modify_font(FontDescription('Segoe UI Symbol 14'))
            l.set_markup('<span color="#800"><b>🔒</b></span>')
            tab.attach(l, 2, 3, 0, 1)
            k = 1
            ore = []
            for z in [
                    'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă',
                    'Duminică'
            ]:
                l = gtk.Label(z)
                l.set_size_request(100, -1)
                tab.attach(l, 0, 1, k, k + 1)
                os, oe = hour_adj(), hour_adj()
                olds, olde = o.orar[str(k - 1)]
                if olds is None:
                    olds = 0
                if olde is None:
                    olde = 0
                os.set_value(olds)
                oe.set_value(olde)
                ore.append((os, oe))
                tab.attach(os, 1, 2, k, k + 1)
                tab.attach(oe, 2, 3, k, k + 1)
                k += 1
            return tab, ore

        v = gtk.VBox(False, 5)
        h, enume, _ = lentry('Nume:', o.nume)
        v.add(h)
        h, eadr, _ = lentry('Adresă:', o.adr)
        v.add(h)
        h, etel, _ = lentry('Telefon:', o.tel)
        v.add(h)
        h, edest, _ = lentry('Destinație:', o.dest)
        v.add(h)
        h, eobv, _ = lentry('Obiectiv:', o.obv)
        v.add(h)
        t, ore = make_orar_tab()
        v.add(t)

        dialog = gtk.MessageDialog(
            None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
            gtk.MESSAGE_INFO, gtk.BUTTONS_OK_CANCEL, None)
        dialog.set_alternative_button_order(
            [gtk.RESPONSE_CANCEL, gtk.RESPONSE_OK])
        dialog.set_default_response(2)
        dialog.set_markup('Editați <i>atributele</i> obiectivului')
        dialog.set_position(gtk.WIN_POS_CENTER)
        dialog.format_secondary_markup('<b>%s</b>' % o.nume)
        dialog.vbox.pack_end(v, True, True, 0)
        dialog.show_all()
        oldtel = o.tel
        oldadr = o.adr
        olddest = o.dest
        oldlore = dict(enumerate(ore))
        oldobv = o.obv
        resp = dialog.run()
        tenume = unicode(enume.get_text())
        teadr = unicode(eadr.get_text())
        tetel = unicode(etel.get_text())
        tedest = unicode(edest.get_text())
        teobv = unicode(eobv.get_text())
        lore = {}
        for x in ore:
            lore[str(ore.index(x))] = (x[0].get_value_as_int(),
                                       x[1].get_value_as_int())
        old = o.nume
        dialog.destroy()
        if resp == gtk.RESPONSE_OK:

            o = self.disp.pids[o.id]
            o.nume = tenume
            o.obv = teobv or False
            o.tel = tetel or False
            o.dest = tedest or False
            o.adr = teadr or False
            o.orar = lore
            l = []

            def app(lst):
                for x in lst:
                    l.append(str(x))

            app([old, o.nume])
            if oldtel != o.tel:
                app(['TEL', oldtel, o.tel])
            if oldadr != o.adr:
                app(['ADR', oldadr, o.adr])
            if olddest != o.dest:
                app(['DEST', olddest, o.dest])
            if oldlore != o.orar:
                app(['ORAR'])
            if oldobv != o.obv:
                app(['OBV', oldobv, o.obv])
            self.disp.modify_post(o, old)
            self.btlist[old].child.set_text(o.nume)
            self.btlist[o.nume] = self.btlist[old]
            del self.btlist[old]
            env.log('mod_obiectiv', *l)