Example #1
0
def cityWeatherAction():  #Triggered when "Weather by City" button is pressed
    cwWindow = Toplevel()
    cwWindow.geometry("400x400")
    cwWindow.title('CityWeather')
    cwWindow.configure(background="light sky blue")

    global weatherDisplay
    global cityEntry

    innerFrame = Frame(cwWindow)
    outterFrame = Frame(cwWindow)

    cityLabel = Label(cwWindow)
    cityEntry = Entry(cwWindow)
    weatherButton = Button(cwWindow)
    weatherDisplay = ScrolledText(cwWindow)

    cityLabel.pack(in_=innerFrame, side=LEFT)  #Packs inner Frame
    cityEntry.pack(in_=innerFrame, side=RIGHT)

    innerFrame.pack(in_=outterFrame, side=TOP)  #Packs outter Frame
    weatherDisplay.pack(in_=outterFrame, side=BOTTOM)
    weatherButton.pack(in_=outterFrame, side=BOTTOM)

    outterFrame.grid(column=0, row=0, padx=3, pady=3)  #Places outter Frame

    outterFrame.configure(background="light sky blue")
    innerFrame.configure(pady=4, background="light sky blue")
    weatherButton.configure(width=10,
                            height=1,
                            text="GET WEATHER",
                            command=getCityWeatherAction)  #Configures widgets
    cityLabel.configure(width=7, height=1, text="City", relief=SUNKEN)
    weatherDisplay.configure(width=45, height=17, pady=3, padx=3)
Example #2
0
class GredAboutBox(GatoDialogs.AboutBox):

    def body(self, master):
        self.resizable(0,0)
        self.catIconImage = PhotoImage(data=GatoIcons.gred)
        self.catIcon = Label(master, image=self.catIconImage)
        self.catIcon.pack(side=TOP)
        label = Label(master, text=GatoDialogs.crnotice1)
        label.pack(side=TOP)
        label = Label(master, font="Helvetica 10", 
                      text=GatoDialogs.crnotice2, justify=CENTER)
        label.pack(side=TOP)
        color = self.config("bg")[4]
        self.infoText = ScrolledText(master, relief=FLAT, 
                                     padx=3, pady=3,
                                     background=color, 
                                     #foreground="black",
                                     wrap='word',
                                     width=60, height=12,
                                     font="Times 10")
        self.infoText.pack(expand=0, fill=X, side=BOTTOM)
        self.infoText.delete('0.0', END)
        self.infoText.insert('0.0', GatoGlobals.gLGPLText)	
        self.infoText.configure(state=DISABLED)
        self.title("Gred - About")
Example #3
0
def cityForecastAction():
    cfWindow = Toplevel()
    cfWindow.geometry("400x400")
    cfWindow.title('CityForecast')
    cfWindow.configure(background="light sky blue")

    global forecastDisplay
    global cityFEntry

    innerFrame = Frame(cfWindow)
    outterFrame = Frame(cfWindow)

    cityLabel = Label(cfWindow)
    cityFEntry = Entry(cfWindow)
    forecastButton = Button(cfWindow)
    forecastDisplay = ScrolledText(cfWindow)

    cityLabel.pack(in_=innerFrame, side=LEFT)  # Packs inner Frame
    cityFEntry.pack(in_=innerFrame, side=RIGHT)

    innerFrame.pack(in_=outterFrame, side=TOP)  # Packs outter Frame
    forecastDisplay.pack(in_=outterFrame, side=BOTTOM)
    forecastButton.pack(in_=outterFrame, side=BOTTOM)

    outterFrame.grid(column=0, row=0, padx=3, pady=3)  # Places outter Frame

    outterFrame.configure(background="light sky blue")
    innerFrame.configure(pady=4, background="light sky blue")
    forecastButton.configure(
        width=11, height=1, text="GET FORECAST",
        command=getCityForecastAction)  # Configures widgets
    cityLabel.configure(width=7, height=1, text="City", relief=SUNKEN)
    forecastDisplay.configure(width=45, height=17, pady=3, padx=3)
Example #4
0
class GredAboutBox(GatoDialogs.AboutBox):
    def body(self, master):
        self.resizable(0, 0)
        self.catIconImage = PhotoImage(data=GatoIcons.gred)
        self.catIcon = Label(master, image=self.catIconImage)
        self.catIcon.pack(side=TOP)
        label = Label(master, text=GatoDialogs.crnotice1)
        label.pack(side=TOP)
        label = Label(master,
                      font="Helvetica 10",
                      text=GatoDialogs.crnotice2,
                      justify=CENTER)
        label.pack(side=TOP)
        color = self.config("bg")[4]
        self.infoText = ScrolledText(
            master,
            relief=FLAT,
            padx=3,
            pady=3,
            background=color,
            #foreground="black",
            wrap='word',
            width=60,
            height=12,
            font="Times 10")
        self.infoText.pack(expand=0, fill=X, side=BOTTOM)
        self.infoText.delete('0.0', END)
        self.infoText.insert('0.0', GatoGlobals.gLGPLText)
        self.infoText.configure(state=DISABLED)
        self.title("Gred - About")
Example #5
0
def zipWeatherAction():
    zwWindow = Toplevel()
    zwWindow.geometry("400x400")
    zwWindow.title('ZipWeather')
    zwWindow.configure(background="light sky blue")

    global zipWeatherDisplay
    global zipEntry

    innerFrame = Frame(zwWindow)
    outterFrame = Frame(zwWindow)

    zipLabel = Label(zwWindow)
    zipEntry = Entry(zwWindow)
    weatherButton = Button(zwWindow)
    zipWeatherDisplay = ScrolledText(zwWindow)

    zipLabel.pack(in_=innerFrame, side=LEFT)  # Packs inner Frame
    zipEntry.pack(in_=innerFrame, side=RIGHT)

    innerFrame.pack(in_=outterFrame, side=TOP)  # Packs outter Frame
    zipWeatherDisplay.pack(in_=outterFrame, side=BOTTOM)
    weatherButton.pack(in_=outterFrame, side=BOTTOM)

    outterFrame.grid(column=0, row=0, padx=3, pady=3)  # Places outter Frame

    outterFrame.configure(background="light sky blue")
    innerFrame.configure(pady=4, background="light sky blue")
    weatherButton.configure(width=10,
                            height=1,
                            text="GET WEATHER",
                            command=getZipWeatherAction)  # Configures widgets
    zipLabel.configure(width=7, height=1, text="Zip Code", relief=SUNKEN)
    zipWeatherDisplay.configure(width=45, height=17, pady=3, padx=3)
Example #6
0
class App(Thread):
  client = socket()
  def __init__(self, master):
    Thread.__init__(self)
    frame = Frame(master)    
    frame.pack()
    
    gframe = Frame(frame)
    gframe.pack(anchor='w')
    self.lblserver = Label(gframe, text="IP Server :")
    self.txtserver =  Entry(gframe,width=40)
    self.lblserver.pack(side=LEFT)
    self.txtserver.pack(side=LEFT)
    self.lblport = Label(gframe, text="Port :")
    self.txtport =  Entry(gframe,width=40)
    self.lblport.pack(side=LEFT)
    self.txtport.pack(side=LEFT)
    self.koneksi = Button(gframe, text='Connect', command=self.Connect).pack(side=LEFT)
    
    self.gettext = ScrolledText(frame, height=10,width=100)    
    self.gettext.pack()    
    self.gettext.configure(state=DISABLED)
    
    sframe = Frame(frame)
    sframe.pack(anchor='w')
    self.pro = Label(sframe, text="Client>>")
    self.sendtext = Entry(sframe,width=80)
    self.sendtext.focus_set()
    self.sendtext.bind(sequence="<Return>", func=self.Send)
    self.pro.pack(side=LEFT)
    self.sendtext.pack(side=LEFT)

  def Connect(self):     
    try:      
      self.client.connect((str(self.txtserver.get()), int(self.txtport.get())))
      self.gettext.configure(state=NORMAL)
      self.gettext.insert(END,'Start to Chat\n')
      self.gettext.configure(state=DISABLED)
      self.start()      
    except:      
      tkMessageBox.showinfo("Error", "Unconnected")
    
  def Send(self, args):
    self.gettext.configure(state=NORMAL)
    text = self.sendtext.get()
    if text=="": text=" "
    self.gettext.insert(END,'Me >> %s\n'%text)
    self.sendtext.delete(0,END)
    self.client.send(text)
    self.sendtext.focus_set()
    self.gettext.configure(state=DISABLED)
    self.gettext.see(END)
    
  def run(self):
    Receive(self.client, self.gettext)

  def __del__(self):
    self.client.close()
Example #7
0
class AboutBox(tkSimpleDialog.Dialog):
    """ The application's about box """
    def buttonbox(self):
        # Stolen from tkSimpleDialog.py
        # add standard button box. override if you don't want the
        # standard buttons
        box = Frame(self)
        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=RIGHT, padx=5, pady=5)
        self.bind("<Return>", self.ok)
        box.pack(side=BOTTOM, fill=X)

    def body(self, master):
        self.resizable(0, 0)
        self.catIconImage = PhotoImage(data=GatoIcons.gato)  # statt file=
        self.catIcon = Label(master, image=self.catIconImage)
        self.catIcon.pack(side=TOP)
        label = Label(master, text=crnotice1)
        label.pack(side=TOP)
        label = Label(master,
                      font="Helvetica 10",
                      text=crnotice2,
                      justify=CENTER)
        label.pack(side=TOP)
        color = self.config("bg")[4]
        self.infoText = ScrolledText(
            master,
            relief=FLAT,
            padx=3,
            pady=3,
            background=color,
            #foreground="black",
            wrap='word',
            width=60,
            height=12,
            font="Times 10")
        self.infoText.pack(expand=0, fill=X, side=BOTTOM)
        self.infoText.delete('0.0', END)
        self.infoText.insert('0.0', GatoGlobals.gLGPLText)
        self.infoText.configure(state=DISABLED)
        self.title("Gato - About")
Example #8
0
class App(Thread):
  client = socket()
  client.connect(('localhost', input("Port: ")))
  def __init__(self, master):
    Thread.__init__(self)
    frame = Frame(master)
    frame.pack()
    self.gettext = ScrolledText(frame, height=10,width=100)
    self.gettext.pack()
    self.gettext.insert(END,'Welcome to Chat\n')
    self.gettext.configure(state='disabled')
    sframe = Frame(frame)
    sframe.pack(anchor='w')
    self.pro = Label(sframe, text="Client>>");
    self.sendtext = Entry(sframe,width=80)
    self.sendtext.focus_set()
    self.sendtext.bind(sequence="<Return>", func=self.Send)
    self.pro.pack(side=LEFT)
    self.sendtext.pack(side=LEFT)
  def Send(self, args):
    self.gettext.configure(state='normal')
    text = self.sendtext.get()
    if text=="": text=" "
    self.gettext.insert(END,'Me >> %s\n'%text)
    self.sendtext.delete(0,END)
    self.client.send(text)
    self.sendtext.focus_set()
    self.gettext.configure(state='disabled')
    self.gettext.see(END)
  def run(self):
    Receive(self.client, self.gettext)
class App(Thread):
  server = socket()
  server.bind(('localhost', input("Port: ")))
  server.listen(5)
  client,addr = server.accept()
  def __init__(self, master):
    Thread.__init__(self)
    frame = Frame(master)
    frame.pack()
    self.gettext = ScrolledText(frame, height=10,width=100, state=NORMAL)
    self.gettext.pack()
    sframe = Frame(frame)
    sframe.pack(anchor='w')
    self.pro = Label(sframe, text="Server>>");
    self.sendtext = Entry(sframe,width=80)
    self.sendtext.focus_set()
    self.sendtext.bind(sequence="<Return>", func=self.Send)
    self.pro.pack(side=LEFT)
    self.sendtext.pack(side=LEFT)
    self.gettext.insert(END,'Welcome to Chat\n')
    self.gettext.configure(state=DISABLED)
  def Send(self, args):
    self.gettext.configure(state=NORMAL)
    text = self.sendtext.get()
    if text=="": text=" "
    self.gettext.insert(END,'Me >> %s \n'%text)
    self.sendtext.delete(0,END)
    self.client.send(text)
    self.sendtext.focus_set()
    self.gettext.configure(state=DISABLED)
    self.gettext.see(END)
  def run(self):
    Receive(self.client, self.gettext)
Example #10
0
class AboutBox(tkSimpleDialog.Dialog):
    """ The application's about box """
    
    def buttonbox(self):
        # Stolen from tkSimpleDialog.py
        # add standard button box. override if you don't want the
        # standard buttons
        box = Frame(self)
        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=RIGHT, padx=5, pady=5)
        self.bind("<Return>", self.ok)
        box.pack(side=BOTTOM,fill=X)
        
        
    def body(self, master):
        self.resizable(0,0)
        self.catIconImage = PhotoImage(data=GatoIcons.gato) # statt file=
        self.catIcon = Label(master, image=self.catIconImage)
        self.catIcon.pack(side=TOP)
        label = Label(master, text=crnotice1)
        label.pack(side=TOP)
        label = Label(master, font="Helvetica 10", text=crnotice2, justify=CENTER)
        label.pack(side=TOP)
        color = self.config("bg")[4]
        self.infoText = ScrolledText(master, relief=FLAT, 
                                     padx=3, pady=3,
                                     background=color, 
                                     #foreground="black",
                                     wrap='word',
                                     width=60, height=12,
                                     font="Times 10")
        self.infoText.pack(expand=0, fill=X, side=BOTTOM)
        self.infoText.delete('0.0', END)
        self.infoText.insert('0.0', GatoGlobals.gLGPLText)	
        self.infoText.configure(state=DISABLED)
        self.title("Gato - About")
Example #11
0
class App(Thread):
    server = socket()
    server.bind(('localhost', input("Port : ")))
    server.listen(5)
    client, addr = server.accept()

    def __init__(self, master):
        Thread.__init__(self)
        frame = Frame(master)
        frame.pack()
        self.gettext = ScrolledText(frame, height=10, width=100, state=NORMAL)
        self.gettext.pack()
        sframe = Frame(frame)
        sframe.pack(anchor='w')
        self.pro = Label(sframe, text="Server>>")
        self.sendtext = Entry(sframe, width=80)
        self.sendtext.focus_set()
        self.sendtext.bind(sequence="<Return>", func=self.Send)
        self.pro.pack(side=LEFT)
        self.sendtext.pack(side=LEFT)
        self.gettext.insert(END, 'Welcome to Chat\n')
        self.gettext.configure(state=DISABLED)

    def Send(self, args):
        self.gettext.configure(state=NORMAL)
        text = self.sendtext.get()
        if text == "": text = " "
        self.gettext.insert(END, 'Me >> %s \n' % text)
        self.sendtext.delete(0, END)
        pass_phrase = ""
        i = 0
        while i < 32:
            a = random.randint(0, 1)
            pass_phrase += str(a)
            i += 1
        variable = AES()
        variable.pass_phrase = pass_phrase
        variable.secret_key = generate_secret_key(pass_phrase)
        variable.cipher = AESCipher(variable.secret_key)
        variable.encrypt_text = variable.cipher.encrypt(text)
        data_string = pickle.dumps(variable)
        self.client.send(data_string)
        self.sendtext.focus_set()
        self.gettext.configure(state=DISABLED)
        self.gettext.see(END)

    def run(self):
        Receive(self.client, self.gettext)
class App(Thread):
    #Socket
    client = socket()
    client.connect(('localhost', input("Port: ")))

    def __init__(self, master):
        Thread.__init__(self)
        frame = Frame(master)
        frame.pack()
        self.gettext = ScrolledText(frame, height=10, width=100)
        self.gettext.pack()
        self.gettext.insert(END, 'Welcome to Chat\n')
        self.gettext.configure(state='disabled')
        sframe = Frame(frame)
        sframe.pack(anchor='w')
        self.pro = Label(sframe, text="Client>>")
        self.sendtext = Entry(sframe, width=80)
        self.sendtext.focus_set()
        self.sendtext.bind(sequence="<Return>", func=self.Send)
        self.pro.pack(side=LEFT)
        self.sendtext.pack(side=LEFT)

    def Send(self, args):
        self.gettext.configure(state='normal')
        plaintext = self.sendtext.get()
        # encrypt
        text = ""
        for c in plaintext.lower():
            if c.isalpha(): text += I2L[(L2I[c] + key) % 26]
            else: text += c
        print("cipher text sent :" + text)
        if text == "": text = " "
        self.gettext.insert(END, 'Me >> %s\n' % plaintext)
        self.sendtext.delete(0, END)
        self.client.send(text)
        self.sendtext.focus_set()
        self.gettext.configure(state='disabled')
        self.gettext.see(END)

    def run(self):
        Receive(self.client, self.gettext)
Example #13
0
class App(Thread):
    server = socket()
    server.bind(('localhost', input("Port: ")))
    server.listen(5)
    client, addr = server.accept()

    def __init__(self, master):
        Thread.__init__(self)
        frame = Frame(master)
        frame.pack()
        self.gettext = ScrolledText(frame, height=10, width=100, state=NORMAL)
        self.gettext.pack()
        sframe = Frame(frame)
        sframe.pack(anchor='w')
        self.pro = Label(sframe, text="Server>>")
        self.sendtext = Entry(sframe, width=80)
        self.sendtext.focus_set()
        self.sendtext.bind(sequence="<Return>", func=self.Send)
        self.pro.pack(side=LEFT)
        self.sendtext.pack(side=LEFT)
        self.gettext.insert(END, 'Welcome to Chat\n')
        self.gettext.configure(state=DISABLED)

    def Send(self, args):
        self.gettext.configure(state=NORMAL)
        text = self.sendtext.get()
        if text == "": text = " "
        self.gettext.insert(END, 'Me >> %s \n' % text)
        self.sendtext.delete(0, END)
        self.client.send(text)
        self.sendtext.focus_set()
        self.gettext.configure(state=DISABLED)
        self.gettext.see(END)

    def run(self):
        Receive(self.client, self.gettext)
Example #14
0
class MyTkAppFrame(ttk.Notebook):

    # the req is a list
    def cb_task(self, tid, req):
        L.debug("do task: tid=" + str(tid) + ", req=" + str(req))
        reqstr = req[0]
        resp = self.serv.get_request_block(reqstr)
        if resp != None:
            if resp.strip() != "":
                self.mymailbox.mailbox_serv.put(req[1], resp)

    def do_stop(self):
        isrun = False;
        if self.runth_svr != None:
            if self.runth_svr.isAlive():
                #L.info('signal server to stop ...')
                self.server.shutdown()
                #L.info('server close ...')
                self.server.server_close()
                #L.info('server closed.')
                isrun = True
        if isrun == False:
            L.info('server is not running. skip')
        if self.serv != None:
            self.serv.close()
            self.serv = None

        self.btn_svr_start.config(state=tk.NORMAL)
        self.btn_svr_stop.config(state=tk.DISABLED)

        #return

    def do_start(self):
        import socketserver as ss
        import neatocmdsim as nsim

        class ThreadedTCPRequestHandler(ss.BaseRequestHandler):
            # override base class handle method
            def handle(self):
                BUFFER_SIZE = 4096
                MAXIUM_SIZE = BUFFER_SIZE * 5
                data = ""
                L.info("server connectd by client: " + str(self.client_address))
                mbox_id = self.server.mydata.mailbox_serv.declair()

                cli_log_head = "CLI" + str(self.client_address)
                while 1:
                    try:
                        # receive the requests
                        recvdat = self.request.recv(BUFFER_SIZE)
                        if not recvdat:
                            # EOF, client closed, just return
                            L.info(cli_log_head + " disconnected: " + str(self.client_address))
                            break
                        data += str(recvdat, 'ascii')
                        L.debug(cli_log_head + " all of data: " + data)
                        cntdata = data.count('\n')
                        L.debug(cli_log_head + " the # of newline: %d"%cntdata)
                        if (cntdata < 1):
                            L.debug(cli_log_head + " not receive newline, skip: " + data)
                            continue
                        # process the requests after a '\n'
                        requests = data.split('\n')
                        for i in range(0, cntdata):
                            # for each line:
                            request = requests[i].strip()
                            L.info(cli_log_head + " request [" + str(i+1) + "/" + str(cntdata) + "] '" + request + "'")
                            self.server.serv.request ([request, mbox_id])
                            response = self.server.mydata.mailbox_serv.get(mbox_id)
                            if response != "":
                                L.debug(cli_log_head + 'send data back: sz=' + str(len(response)))
                                self.request.sendall(bytes(response, 'ascii'))

                        data = requests[-1]

                    except BrokenPipeError:
                        L.error (cli_log_head + 'remote closed: ' + str(self.client_address))
                        break
                    except ConnectionResetError:
                        L.error (cli_log_head + 'remote reset: ' + str(self.client_address))
                        break
                    except Exception as e1:
                        L.error (cli_log_head + 'Error in read serial: ' + str(e1))
                        break

                L.error (cli_log_head + 'close: ' + str(self.client_address))
                self.server.mydata.mailbox_serv.close(mbox_id)


        # pass the data strcture from main frame to all of subclasses
        # mailbox_serv, mailbox_servcli

        class ThreadedTCPServer(ss.ThreadingMixIn, ss.TCPServer):
            daemon_threads = True
            allow_reuse_address = True
            # pass the serv to handler
            def __init__(self, host_port_tuple, streamhandler, serv, mydata):
                super().__init__(host_port_tuple, streamhandler)
                self.serv = serv
                self.mydata = mydata

        if self.runth_svr != None:
            if self.runth_svr.isAlive():
                L.info('server is already running. skip')
                return True

        L.info('connect to ' + self.conn_port.get())
        self.serv = neatocmdapi.NCIService(target=self.conn_port.get().strip(), timeout=0.5)
        if self.serv.open(self.cb_task) == False:
            L.error ('Error in open serial')
            return False

        L.info('start server ' + self.bind_port.get())
        b = self.bind_port.get().split(":")
        L.info('b=' + str(b))
        HOST=b[0]
        PORT=3333
        if len(b) > 1:
            PORT=int(b[1])
        L.info('server is running ...')
        try:
            self.server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler, self.serv, self.mymailbox)
        except Exception as e:
            L.error("Error in starting service: " + str(e))
            return False
        ip, port = self.server.server_address
        L.info("server listened to: " + str(ip) + ":" + str(port))
        self.runth_svr = Thread(target=self.server.serve_forever)
        self.runth_svr.setDaemon(True) # When closing the main thread, which is our GUI, all daemons will automatically be stopped as well.
        self.runth_svr.start()

        self.btn_svr_start.config(state=tk.DISABLED)
        self.btn_svr_stop.config(state=tk.NORMAL)
        L.info('server started.')
        return True

    def get_log_text(self):
        return self.text_log

    def __init__(self, tk_frame_parent):
        global config_use_textarea_log
        ttk.Notebook.__init__(self, tk_frame_parent)
        nb = self
        self.runth_svr = None
        self.serv = None
        self.serv_cli = None

        class MyMailbox(object):
            "mymailbox"
            def __init__(self):
                self.mailbox_serv = neatocmdapi.MailPipe()
                self.mailbox_servcli = neatocmdapi.MailPipe()

        self.mymailbox = MyMailbox()

        guilog.rClickbinder(tk_frame_parent)

        # page for About
        page_about = ttk.Frame(nb)
        lbl_about_head = tk.Label(page_about, text=_("About"), font=LARGE_FONT)
        lbl_about_head.pack(side="top", fill="x", pady=10)
        lbl_about_main = tk.Label(page_about
                , font=NORM_FONT
                , text="\n" + str_progname + "\n" + str_version + "\n"
                    + _("Forward Neato XV control over network") + "\n"
                    + "\n"
                    + _("Copyright © 2015–2016 The nxvForward Authors") + "\n"
                    + "\n"
                    + _("This program comes with absolutely no warranty.") + "\n"
                    + _("See the GNU General Public License, version 3 or later for details.")
                )
        lbl_about_main.pack(side="top", fill="x", pady=10)

        # page for server
        page_server = ttk.Frame(nb)
        lbl_svr_head = tk.Label(page_server, text=_("Server"), font=LARGE_FONT)
        lbl_svr_head.pack(side="top", fill="x", pady=10)

        frame_svr = ttk.LabelFrame(page_server, text=_("Setup"))

        line=0
        bind_port_history = ('localhost:3333', '127.0.0.1:4444', '0.0.0.0:3333')
        self.bind_port = tk.StringVar()
        lbl_svr_port = tk.Label(frame_svr, text=_("Bind Address:"))
        lbl_svr_port.grid(row=line, column=0, padx=5, sticky=tk.N+tk.S+tk.W)
        combobox_bind_port = ttk.Combobox(frame_svr, textvariable=self.bind_port)
        combobox_bind_port['values'] = bind_port_history
        combobox_bind_port.grid(row=line, column=1, padx=5, pady=5, sticky=tk.N+tk.S+tk.W)
        combobox_bind_port.current(0)

        line += 1
        conn_port_history = ('dev://ttyACM0:115200', 'dev://ttyUSB0:115200', 'dev://COM11:115200', 'dev://COM12:115200', 'sim:', 'tcp://localhost:3333', 'tcp://192.168.3.163:3333')
        self.conn_port = tk.StringVar()
        lbl_svr_port = tk.Label(frame_svr, text=_("Connect to:"))
        lbl_svr_port.grid(row=line, column=0, padx=5, sticky=tk.N+tk.S+tk.W)
        combobox_conn_port = ttk.Combobox(frame_svr, textvariable=self.conn_port)
        combobox_conn_port['values'] = conn_port_history
        combobox_conn_port.grid(row=line, column=1, padx=5, pady=5, sticky=tk.N+tk.S+tk.W)
        combobox_conn_port.current(0)

        line -= 1
        self.btn_svr_start = tk.Button(frame_svr, text=_("Start"), command=self.do_start)
        self.btn_svr_start.grid(row=line, column=2, padx=5, sticky=tk.N+tk.S+tk.W+tk.E)
        #self.btn_svr_start.pack(side="right", fill="both", padx=5, pady=5, expand=True)

        line += 1
        self.btn_svr_stop = tk.Button(frame_svr, text=_("Stop"), command=self.do_stop)
        self.btn_svr_stop.grid(row=line, column=2, padx=5, sticky=tk.N+tk.S+tk.W+tk.E)
        #self.btn_svr_stop.pack(side="right", fill="both", padx=5, pady=5, expand=True)

        frame_svr.pack(side="top", fill="x", pady=10)

        self.text_log = None
        if config_use_textarea_log:
            self.text_log = tk.scrolledtext.ScrolledText(page_server, wrap=tk.WORD, height=1)
            self.text_log.configure(state='disabled')
            self.text_log.pack(expand=True, fill="both", side="top")
            #self.text_log.grid(row=line, column=1, columnspan=2, padx=5)
            self.text_log.bind("<1>", lambda event: self.text_log.focus_set()) # enable highlighting and copying
            #set_readonly_text(self.text_log, "Version Info\nver 1\nver 2\n")

            btn_log_clear = tk.Button(page_server, text=_("Clear"), command=lambda: (set_readonly_text(self.text_log, ""), self.text_log.update_idletasks()))
            #btn_log_clear.grid(row=line, column=0, columnspan=2, padx=5, sticky=tk.N+tk.S+tk.W+tk.E)
            btn_log_clear.pack(side="right", fill="both", padx=5, pady=5, expand=True)

        # page for client
        page_client = ttk.Frame(nb)
        lbl_cli_head = tk.Label(page_client, text=_("Test Client"), font=LARGE_FONT)
        lbl_cli_head.pack(side="top", fill="x", pady=10)

        frame_cli = ttk.LabelFrame(page_client, text=_("Connection"))

        line=0
        client_port_history = ('tcp://192.168.3.163:3333', 'dev://ttyACM0:115200', 'dev://ttyUSB0:115200', 'dev://COM11:115200', 'dev://COM12:115200', 'sim:', 'tcp://localhost:3333')
        self.client_port = tk.StringVar()
        lbl_cli_port = tk.Label(frame_cli, text=_("Connect to:"))
        lbl_cli_port.grid(row=line, column=0, padx=5, sticky=tk.N+tk.S+tk.W)
        combobox_client_port = ttk.Combobox(frame_cli, textvariable=self.client_port)
        combobox_client_port['values'] = client_port_history
        combobox_client_port.grid(row=line, column=1, padx=5, pady=5, sticky=tk.N+tk.S+tk.W)
        combobox_client_port.current(0)

        self.btn_cli_connect = tk.Button(frame_cli, text=_("Connect"), command=self.do_cli_connect)
        self.btn_cli_connect.grid(row=line, column=2, columnspan=1, padx=5, sticky=tk.N+tk.S+tk.W+tk.E)
        #self.btn_cli_connect.pack(side="left", fill="both", padx=5, pady=5, expand=True)

        self.btn_cli_disconnect = tk.Button(frame_cli, text=_("Disconnect"), command=self.do_cli_disconnect)
        self.btn_cli_disconnect.grid(row=line, column=3, columnspan=1, padx=5, sticky=tk.N+tk.S+tk.W+tk.E)
        #self.btn_cli_disconnect.pack(side="left", fill="both", padx=5, pady=5, expand=True)

        frame_cli.pack(side="top", fill="x", pady=10)

        page_command = page_client
        frame_top = tk.Frame(page_command)#, background="green")
        frame_bottom = tk.Frame(page_command)#, background="yellow")
        frame_top.pack(side="top", fill="both", expand=True)
        frame_bottom.pack(side="bottom", fill="x", expand=False)

        self.text_cli_command = ScrolledText(frame_top, wrap=tk.WORD)
        #self.text_cli_command.insert(tk.END, "Some Text\ntest 1\ntest 2\n")
        self.text_cli_command.configure(state='disabled')
        self.text_cli_command.pack(expand=True, fill="both", side="top")
        # make sure the widget gets focus when clicked
        # on, to enable highlighting and copying to the
        # clipboard.
        self.text_cli_command.bind("<1>", lambda event: self.text_cli_command.focus_set())

        btn_clear_cli_command = tk.Button(frame_bottom, text=_("Clear"), command=lambda: (set_readonly_text(self.text_cli_command, ""), self.text_cli_command.update_idletasks()) )
        btn_clear_cli_command.pack(side="left", fill="x", padx=5, pady=5, expand=False)
        self.cli_command = tk.StringVar()
        self.combobox_cli_command = ttk.Combobox(frame_bottom, textvariable=self.cli_command)
        self.combobox_cli_command['values'] = ('Help', 'GetAccel', 'GetButtons', 'GetCalInfo', 'GetCharger', 'GetDigitalSensors', 'GetErr', 'GetLDSScan', 'GetLifeStatLog', 'GetMotors', 'GetSchedule', 'GetTime', 'GetVersion', 'GetWarranty', 'PlaySound 0', 'Clean House', 'DiagTest MoveAndBump', 'DiagTest DropTest', 'RestoreDefaults', 'SetDistanceCal DropMinimum', 'SetFuelGauge Percent 100', 'SetIEC FloorSelection carpet', 'SetLCD BGWhite', 'SetLDSRotation On', 'SetLED BacklightOn', 'SetMotor VacuumOn', 'SetSchedule Day Sunday Hour 17 Min 0 House ON', 'SetSystemMode Shutdown', 'SetTime Day Sunday Hour 12 Min 5 Sec 25', 'SetWallFollower Enable', 'TestMode On', 'Upload' )
        self.combobox_cli_command.pack(side="left", fill="both", padx=5, pady=5, expand=True)
        self.combobox_cli_command.bind("<Return>", self.do_cli_run_ev)
        self.combobox_cli_command.bind("<<ComboboxSelected>>", self.do_select_clicmd)
        self.combobox_cli_command.current(0)
        btn_run_cli_command = tk.Button(frame_bottom, text=_("Run"), command=self.do_cli_run)
        btn_run_cli_command.pack(side="right", fill="x", padx=5, pady=5, expand=False)

        self.check_mid_cli_command()


        # last
        nb.add(page_server, text=_("Server"))
        nb.add(page_client, text=_("Test Client"))
        nb.add(page_about, text=_("About"))
        combobox_bind_port.focus()

        self.do_stop()
        self.do_cli_disconnect()
        return

    #
    # connection and command: support functions
    #
    def do_select_clicmd(self, event):
        self.combobox_cli_command.select_range(0, tk.END)
        return

    # the req is a list
    def cb_task_cli(self, tid, req):
        L.debug("do task: tid=" + str(tid) + ", req=" + str(req))
        reqstr = req[0]
        resp = self.serv_cli.get_request_block(reqstr)
        if resp != None:
            if resp.strip() != "":
                self.mymailbox.mailbox_servcli.put(req[1], resp.strip())
        return

    def do_cli_connect(self):
        self.do_cli_disconnect()
        L.info('client connect ...')
        L.info('connect to ' + self.client_port.get())
        self.serv_cli = neatocmdapi.NCIService(target=self.client_port.get().strip(), timeout=0.5)
        if self.serv_cli.open(self.cb_task_cli) == False:
            L.error ('Error in open serial')
            return
        self.mid_cli_command = self.mymailbox.mailbox_servcli.declair();
        L.info ('serial opened')
        self.btn_cli_connect.config(state=tk.DISABLED)
        self.btn_cli_disconnect.config(state=tk.NORMAL)
        return

    def do_cli_disconnect(self):
        if self.serv_cli != None:
            L.info('client disconnect ...')
            self.serv_cli.close()
        else:
            L.info('client is not connected, skip.')
        self.serv_cli = None
        self.mid_cli_command = -1;
        self.btn_cli_connect.config(state=tk.NORMAL)
        self.btn_cli_disconnect.config(state=tk.DISABLED)
        return

    def do_cli_run(self):
        if self.serv_cli == None:
            L.error('client is not connected, please connect it first!')
            return
        L.info('client run ...')
        reqstr = self.cli_command.get().strip()
        if reqstr != "":
            self.serv_cli.request([reqstr, self.mid_cli_command])
        return

    def do_cli_run_ev(self, event):
        self.do_cli_run()
        return

    def check_mid_cli_command(self):
        if self.serv_cli != None and self.mid_cli_command >= 0:
            try:
                resp = self.mymailbox.mailbox_servcli.get(self.mid_cli_command, False)
                respstr = resp.strip() + "\n\n"
                # put the content to the end of the textarea
                guilog.textarea_append (self.text_cli_command, respstr)
                self.text_cli_command.update_idletasks()
            except queue.Empty:
                # ignore
                pass
        # setup next
        self.after(300, self.check_mid_cli_command)
        return
Example #15
0
                 command=lambda: menu(5))
button5.grid(row=602, column=3, sticky=W, columnspan=1)

button6 = Button(app,
                 text="Exit App",
                 font='Lato 20',
                 width=15,
                 bg='blue',
                 fg='red',
                 command=lambda: menu(6))
button6.grid(row=1000, column=1, sticky=N, columnspan=2)

# set up the text widget
user_view = ScrolledText(app, width=60, height=45, wrap=WORD)
user_view.grid(row=0, column=4, rowspan=1000)
user_view.configure(state='normal')
x = ''' 
	Welcome to the IOT Vulnerability Scanner

This is version number 3.1 of the Scanner. 
This tool has been created as a final year project by 
the Cybersecurity MSc student Elis Achim.


In order to start nay of the tests, please select one of 
the buttons on the left in order to test your network 
for vulnerabilities in regards to your IOT devices.

For more information about this software as well as 
step by step instructions on how to use it please click 
the 'About' button.
Example #16
0
def construct():

    sample_prog = '''int main (void)
{
    int x;
    int y;

    x = (1 + 2) * (3 / 4);
    y = 1 + 2 * 3 - 4 / 5;

    return x + y;
}'''

    def callback():

        input = inputBox.get(1.0, END)

        # Lexical tab
        message, output, tokens = lexical(input)
        lexTab = tabs['Lexical']
        lexTab.configure(state=NORMAL)
        lexTab.delete(1.0, END)
        lexTab.insert(INSERT, message + output)
        lexTab.configure(state=DISABLED)

        # Syntax tab
        message, output, root, syn_pass = syntax(tokens)
        synTab = tabs['Syntax']
        synTab.configure(state=NORMAL)
        synTab.delete(1.0, END)
        synTab.insert(INSERT, message + output)
        synTab.configure(state=DISABLED)

        # Semantics tab
        if syn_pass:
            message = semantic(root)
        else:
            message = "Couldn't perform semantic analysis"
        semTab = tabs['Semantics']
        semTab.configure(state=NORMAL)
        semTab.delete(1.0, END)
        semTab.insert(INSERT, message)
        semTab.configure(state=DISABLED)

    master = Tk()
    master.title("C- Compiler")

    # Frames
    buttonFrame = Frame(master)
    buttonFrame.grid(row=1, column=1)

    # Labels
    Label(master, text="Input").grid(row=0, column=0)
    Label(master, text="Output").grid(row=0, column=1)

    # Buttons
    compileButton = Button(buttonFrame, text='Compile', command=callback)
    compileButton.grid(row=0, column=0)

    # Text Boxes
    inputBox = ScrolledText(master, width=50, height=40)
    inputBox.grid(row=2, column=0)
    inputBox.insert(INSERT, sample_prog)

    # Notebook to hold tabs
    notebook = ttk.Notebook(master)
    notebook.grid(row=2, column=1)
    tabs = {"Lexical": [], "Syntax": [], "Semantics": []}
    tab_order = ["Lexical", "Syntax", "Semantics"]

    for tabname in tab_order:
        tab = ScrolledText(notebook, width=50, height=40)
        tab.configure(state=DISABLED)
        tabs[tabname] = tab
        notebook.add(tab, text=tabname)

    master.mainloop()
Example #17
0
class OcsGenericEntityGui(Frame):

    # +
    # __init__ method
    # -
    def __init__(self, parent=None, system='', entity='', standalone=True):

        # get arguments
        self._parent = parent
        self._system = system
        self._entity = entity
        self._standalone = standalone

        # declare some variables and initialize them
        self._device = None
        self._parameter = None
        self._startid = None
        self._value = None

        self.result = None

        # create an instance of this generic entity
        self._this = OcsGenericEntity(self._system, self._entity, False)

        # now add the GUI stuff
        Frame.__init__(self,
                       self._parent,
                       bd=1,
                       relief=SUNKEN,
                       bg=ocsGenericEntityBackgroundColour.get(
                           self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR))
        Label(self._parent,
              text='{0:s} {1:s}'.format(self._system, self._entity),
              foreground='blue',
              bg=ocsGenericEntityBackgroundColour.get(
                  self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
              font=('helvetica', 12, 'normal')).grid(row=0, sticky=NSEW)
        # Label(self._parent, text=self._entity, foreground='blue', bg=ocsGenericEntityBackgroundColour.get(
        #    self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
        #    font=('helvetica', 12, 'bold')).grid(row=1, sticky=NSEW)
        self.create_generic_buttons(self._parent, self._system)

        # Add text widget to display logging info
        self._st = ScrolledText(self._parent, state='disabled')
        self._st.configure(font='TkFixedFont')
        self._st.grid(column=0, row=1, sticky='w', columnspan=1)
        self._th = OcsTextHandler(self._st)

        # Add the handler to logger
        self._this.logger.addHandler(self._th)

        self._simFlag = BooleanVar()
        self._simFlag.set(False)
        self._this._simulate = self._simFlag.get()
        # self._this.logger.debug("self._this._simulate = {0:d}".format(self._this._simulate))

        self.sim_widget = Checkbutton(self._parent,
                                      text='SIMULATION',
                                      variable=self._simFlag,
                                      height=2)
        self.sim_widget.config(fg='black',
                               bg=ocsGenericEntityBackgroundColour.get(
                                   self._system,
                                   OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                               font=('helvetica', 10, 'roman'))
        self.sim_widget.grid(row=2, sticky=NSEW)

        self._simFlag.trace('w', self.sim_change)
        self._simFlag.set(True)

        Label(self._parent,
              text='Generic Commands',
              foreground='blue',
              bg=ocsGenericEntityBackgroundColour.get(
                  self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
              font=('helvetica', 10, 'italic')).grid(row=3, sticky=NSEW)
        Label(self._parent,
              text='Business Logic Commands',
              foreground='blue',
              bg=ocsGenericEntityBackgroundColour.get(
                  self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
              font=('helvetica', 10, 'italic')).grid(row=11, sticky=NSEW)
        Label(self._parent,
              text='Behavioural Commands',
              foreground='blue',
              bg=ocsGenericEntityBackgroundColour.get(
                  self._system, OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
              font=('helvetica', 10, 'italic')).grid(row=14, sticky=NSEW)

        if self._standalone:
            OcsQuitButton(self._parent).grid(row=23, sticky=NSEW)

    # +
    # (trace) method(s)
    # -
    def sim_change(self, *args):
        self._this.logger.debug("args = {0:s}".format(str(args)))
        simflag = self._simFlag.get()
        self._this._simulate = simflag
        if simflag:
            self.sim_widget.config(bg='#ff4040',
                                   font=('helvetica', 12, 'bold'))
        else:
            self.sim_widget.config(bg="#00ee00",
                                   font=('helvetica', 12, 'roman'))
        # self._this.logger.debug("self._this._simulate = {0:d}".format(self._this._simulate))

    # +
    # (deferred) methods()
    # -
    def get_command_dialog_string(self, name=''):
        s = 'generic command dialog box'
        for e1 in self._this.generic_help:
            t = e1.split()
            if t[0].lower() == name.lower():
                return e1
        return s

    # +
    # (command) methods()
    # -
    def abort_handler(self):
        if self._this:
            self._this.abort()

    def disable_handler(self):
        if self._this:
            self._this.disable()

    def enable_handler(self):
        if self._this:
            self._this.enable()

    def entercontrol_handler(self):
        if self._this:
            self._this.entercontrol()

    def exitcontrol_handler(self):
        if self._this:
            self._this.exitcontrol()

    def setvalue_handler(self):
        OcsEntryDialog(self, self.get_command_dialog_string('setvalue'),
                       ['Parameter', 'Value'])
        if self._this:
            if self.result:
                self._parameter = self.result['Parameter']
                self._value = self.result['Value']
                self._this.logger.debug(
                    "calling self._this.setvalue('{0:s}', '{1:s}')".format(
                        str(self._parameter), str(self._value)))
                self._this.setvalue(parameter=self._parameter,
                                    value=self._value)
            else:
                self._parameter = ''
                self._value = ''
                self._this.logger.debug(
                    "self._this.setvalue('{0:s}', '{1:s}') cancelled".format(
                        str(self._parameter), str(self._value)))

    def standby_handler(self):
        if self._this:
            self._this.standby()

    def start_handler(self):
        OcsEntryDialog(self, self.get_command_dialog_string('start'),
                       ['StartId'])
        if self._this:
            if self.result:
                self._startid = self.result['StartId']
                self._this.logger.debug(
                    "calling self._this.start('{0:s}')".format(
                        str(self._startid)))
                self._this.start(startid=self._startid)
            else:
                self._startid = ''
                self._this.logger.debug(
                    "self._this.start('{0:s}') cancelled".format(
                        str(self._startid)))

    def stop_handler(self):
        OcsEntryDialog(self, self.get_command_dialog_string('stop'),
                       ['Device'])
        if self._this:
            if self.result:
                self._device = self.result['Device']
                self._this.logger.debug(
                    "calling self._this.stop('{0:s}')".format(str(
                        self._device)))
                self._this.stop(device=self._device)
            else:
                self._device = ''
                self._this.logger.debug(
                    "self._this.stop('{0:s}') cancelled".format(
                        str(self._device)))

    # +
    # createGenericButtons() method
    # -
    def create_generic_buttons(self, _parent=None, system=''):
        self._parent = _parent
        self._system = system
        for e2 in self._this.generic_help:
            t = e2.split()
            tl = t[0].lower()
            if tl == 'abort':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.abort_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=12, sticky=NSEW)
            elif tl == 'disable':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.disable_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=4, sticky=NSEW)
            elif tl == 'enable':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.enable_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=5, sticky=NSEW)
            elif tl == 'entercontrol':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.entercontrol_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=6, sticky=NSEW)
            elif tl == 'exitcontrol':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.exitcontrol_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=7, sticky=NSEW)
            elif tl == 'setvalue':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.setvalue_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=8, sticky=NSEW)
            elif tl == 'start':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.start_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=9, sticky=NSEW)
            elif tl == 'standby':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.standby_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=10, sticky=NSEW)
            elif tl == 'stop':
                widget = Button(self._parent,
                                text=t[0],
                                bg=ocsGenericEntityBackgroundColour.get(
                                    self._system,
                                    OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                                command=self.stop_handler,
                                font=('helvetica', 12, 'normal'),
                                state=NORMAL)
                widget.grid(row=13, sticky=NSEW)
            else:
                pass

        for e3 in range(15, 23):
            widget = Button(self._parent,
                            text='-',
                            bg=ocsGenericEntityBackgroundColour.get(
                                self._system,
                                OCS_GENERIC_ENTITY_BACKGROUND_COLOUR),
                            font=('helvetica', 12, 'normal'),
                            state=DISABLED)
            widget.grid(row=e3, sticky=NSEW)
Example #18
0
def OnDoubleClick(event, param):

    global fileview_l

    if len(fileview_l) > 0:
        fileview_l[0].destroy()
    item = treeview_l[param].selection()[0]
    filename = treeview_l[param].item(item, "text")
    linenumber = treeview_l[param].item(item, "values")
    fileview = Toplevel()
    fileview.title(target_path)
    fileview.geometry("700x560+450+450")
    fileview_l.append(fileview)

    filename_text = Text(fileview,
                         state='normal',
                         height=2,
                         width=100,
                         bg='#f5f5f0')
    filename_text.pack()
    filename_text.tag_configure('color3',
                                background='#0077b3',
                                foreground='#ffffff',
                                font=('Verdana', 12, 'bold'),
                                justify=CENTER)
    filename_text.tag_configure('color2',
                                background='#808000',
                                foreground='#ffffff',
                                font=('Verdana', 9, 'bold'))
    filename_text.insert(END, filename + "\n", 'color3')

    if len(linenumber[1]) > 90:
        firstpart = linenumber[1][0:90]
        secondpart = '        - ' + linenumber[1][90:len(linenumber[1]) - 1]
    else:
        firstpart = linenumber[1]
        secondpart = ''

    filename_text.insert(END, "        Reason: " + firstpart + "\n", 'color2')
    filename_text.insert(END, secondpart, 'color2')

    filename_text.configure(state='disabled')
    style_text = Text(fileview,
                      state='normal',
                      height=35,
                      width=2,
                      bg='#808080')
    style_text.pack(side=LEFT)
    #fileview_text.tag_configure('color1', background='#808080',foreground='#808080', font=('Verdana', 9, 'bold'))

    fileview_text = ScrolledText(fileview,
                                 state='normal',
                                 height=35,
                                 width=100,
                                 bg='#FFFCFC')
    fileview_text.pack(side=LEFT)

    fileview_text.tag_configure('big1',
                                font=('Verdana', 11, 'bold'),
                                justify=CENTER)
    fileview_text.tag_configure('big0', font=('Verdana', 10, 'bold'))
    fileview_text.tag_configure('big2', font=('Verdana', 9, 'bold'))
    fileview_text.tag_configure('big', font=('Verdana', 7))
    fileview_text.tag_configure('color',
                                background='#b30000',
                                foreground='#ffffff',
                                font=('Verdana', 8, 'bold'))

    #fileview_text.add_separator()

    fileview_text.insert(END, "\n", 'color2')
    #fileview_text.insert(END, "\n", 'big0')
    i = 1
    with open(target_path, 'r') as f:
        for line in f:
            if str(i) == linenumber[0]:
                #fileview_text.insert(END, ".>     ", 'color1')
                fileview_text.insert(END, str(i) + "" + ".>     ", 'color')
                fileview_text.insert(END, line, 'color')
            else:
                #fileview_text.insert(END, ".>     ", 'color1')
                fileview_text.insert(END, str(i) + "" + ".>     ", 'big')
                fileview_text.insert(END, line, 'big')
            #style_text.insert(END, "  "+ str(i)+".>     ", 'big')

            i += 1
    f.close()
    #fileview_text.insert(END, ".>     ", 'color1')
    # create a popup menu
    popmenu = Menu(fileview)
    popmenu.add_command(label="Undo", command=save)
    popmenu.add_command(label="Redo", command=save)

    # attach popup to frame
    fileview_text.bind("<Button-3>", functools.partial(popup, param=popmenu))
    fileview_text.configure(state='disabled')
Example #19
0
class GUI():
    def __init__(self, player):
        self.window = Tk()
        self.window.title("Pong-Hau-Ki")
        self.player = player

        self.main_frame = Frame(self.window)
        self.main_frame.pack()

        self.game_frame = Frame(self.main_frame, width=400, height=400)
        self.game_frame.pack()

        self.action_frame = Frame(self.main_frame)
        self.action_frame.pack()

        self.chat_frame = Frame(self.main_frame)
        self.chat_frame.pack(side=BOTTOM)

        self.setup_game_lines()
        self.setup_game_buttons()

        self.setup_action_text_field()
        self.setup_action_button()

        self.setup_text_box()
        self.setup_text_field()
        self.setup_send_button()

        self.window.protocol("WM_DELETE_WINDOW", self.on_closing)

        self.player.setup_gui(self)
        self.window.mainloop()

    def setup_game_buttons(self):
        self.left_up_button = Button(self.game_frame,
                                     text="",
                                     command=lambda: self.send_button_click(0))
        self.left_up_button.place(x=25, y=25, height=50, width=50)

        self.right_up_button = Button(
            self.game_frame,
            text="",
            command=lambda: self.send_button_click(1))
        self.right_up_button.place(x=300, y=25, height=50, width=50)

        self.center_button = Button(self.game_frame,
                                    text="",
                                    command=lambda: self.send_button_click(2))
        self.center_button.place(x=162, y=113, height=50, width=50)

        self.left_bottom_button = Button(
            self.game_frame,
            text="",
            command=lambda: self.send_button_click(3))
        self.left_bottom_button.place(x=25, y=200, height=50, width=50)

        self.right_bottom_button = Button(
            self.game_frame,
            text="",
            command=lambda: self.send_button_click(4))
        self.right_bottom_button.place(x=300, y=200, height=50, width=50)

    def setup_game_lines(self):
        self.canvas = Canvas(self.game_frame)
        self.canvas.create_line(75, 75, 300, 200)
        self.canvas.create_line(300, 75, 75, 200)
        self.canvas.create_line(50, 50, 50, 225)
        self.canvas.create_line(325, 50, 325, 225)
        self.canvas.create_line(50, 225, 325, 225)

        self.canvas.pack()

    def setup_action_text_field(self):
        self.action_text_field = Label(self.action_frame, text="Press Start!")
        self.action_text_field.pack(side=TOP)

    def setup_action_button(self):
        self.action_button = Button(self.action_frame,
                                    text="Start",
                                    command=self.send_action_message)
        self.action_button.pack(side=BOTTOM)

    def setup_send_button(self):
        self.send_button = Button(self.chat_frame,
                                  text="Send",
                                  command=lambda: self.send_chat_message([]))
        self.send_button.pack(side=RIGHT)

    def setup_text_field(self):
        self.text_field = Entry(self.chat_frame, width=80)
        self.text_field.focus_set()
        self.text_field.bind(sequence="<Return>", func=self.send_chat_message)
        self.text_field.pack(side=LEFT)

    def setup_text_box(self):
        self.text_box = ScrolledText(self.main_frame, height=10, width=100)
        self.text_box.configure(state='disabled')
        self.text_box.pack(side=TOP)

    def disable_game_buttons(self):
        self.left_up_button['state'] = 'disable'
        self.right_up_button['state'] = 'disable'
        self.center_button['state'] = 'disable'
        self.left_bottom_button['state'] = 'disable'
        self.right_bottom_button['state'] = 'disable'

    def enable_game_buttons(self):
        self.left_up_button['state'] = 'normal'
        self.right_up_button['state'] = 'normal'
        self.center_button['state'] = 'normal'
        self.left_bottom_button['state'] = 'normal'
        self.right_bottom_button['state'] = 'normal'

    def update_text_box(self, message):
        self.text_box.configure(state='normal')
        self.text_box.insert(END, 'Oponent >> %s\n' % message)
        self.text_box.configure(state='disabled')
        self.text_box.see(END)

    def update_game_buttons_color(self, colors):
        self.left_up_button['bg'] = colors[0]
        self.right_up_button['bg'] = colors[1]
        self.center_button['bg'] = colors[2]
        self.left_bottom_button['bg'] = colors[3]
        self.right_bottom_button['bg'] = colors[4]

    def update_action_button(self, message):
        self.action_button["text"] = message

    def update_action_text_field(self, message):
        self.action_text_field["text"] = message

    def show_error_message(self, message):
        tkMessageBox.showerror("Error", message)

    def send_chat_message(self, args):
        self.text_box.configure(state='normal')
        text = self.text_field.get()
        if text != "":
            self.text_box.insert(END, 'Me >> %s\n' % text)
            self.text_field.delete(0, END)
            self.player.send_chat_message(text)
            self.text_field.focus_set()
            self.text_box.configure(state='disabled')
            self.text_box.see(END)

    def send_action_message(self):
        self.player.action_button_pressed()

    def send_button_click(self, button_number):
        self.player.game_button_pressed(button_number)

    def on_closing(self):
        self.player.close_button_pressed()
Example #20
0
    def __init__(self, master=None):
        Frame.__init__(self, master)
        # self.master.title("[JIMAP]")
        self.master.minsize(300, 300)
        self.master.maxsize(2000, 2000)
        self.master.geometry("1000x600")  # window size
        self.mode = "{0}".format("Select")
        self.zoom_level = Jimapn.MIN_ZOOM_LEVEL
        self.latitude = 35.43134
        self.longitude = 139.26086
        self.aaom_x = 0
        self.aaom_y = 0
        self.map_area = [['' for i in xrange(Jimapn.CANVAS_X)]
                         for j in xrange(Jimapn.CANVAS_Y)]
        # self.print_map = [[ '' for i in xrange(Jimapn.CANVAS_X)] for j in xrange(Jimapn.CANVAS_Y)]
        self.cid = [['' for i in xrange(Jimapn.CANVAS_X)]
                    for j in xrange(Jimapn.CANVAS_Y)]
        for i in xrange(Jimapn.CANVAS_X):
            for j in xrange(Jimapn.CANVAS_Y):
                self.map_area[i][j] = {
                    "img_file_path": "",
                    "img_file": "",
                }
        # ## Layout
        # Menu
        menubar = Menu(self)
        files = Menu(menubar, tearoff=False)
        menubar.add_cascade(label="Files", underline=0, menu=files)
        exit = Menu(menubar, tearoff=False)
        menubar.add_cascade(label="Exit", underline=0, menu=exit)
        exit.add_command(label="Exit", underline=0, command=sys.exit)
        self.master.configure(menu=menubar)

        # # Left side
        left_side_frame = LabelFrame(self)
        left_side_frame.configure(labelanchor="nw",
                                  text="layer",
                                  relief="groove")
        left_side_frame.grid(row=0, column=0, padx=1, pady=1, sticky="W")
        # display my place point
        myplace_display = ScrolledText(left_side_frame)
        myplace_display.configure(
            height=4,
            width=20,
        )
        myplace_display.grid(row=0, column=0, padx=1, pady=5)

        # # Center
        center_frame = Frame(self)
        center_frame.configure(relief="raised")
        center_frame.grid(row=0, column=1, sticky="W" + "E" + "N" + "S")

        # Top
        # # search place input
        self.search_place_text = StringVar()
        self.search_place = Entry(center_frame)
        self.bind_search_place()
        self.search_place.configure(width=50,
                                    relief="sunken",
                                    textvariable=self.search_place_text)
        self.search_place.grid(row=0, column=0, padx=5, pady=5)
        # search button
        self.search_button = Button(center_frame)
        self.search_button.configure(
            foreground="#3f3f3f",
            background="#cfcfcf",
            text="Search",
            cursor="arrow",
            command=self.search_place_start,
        )
        self.search_button.grid(row=0, column=1, padx=5, pady=5)

        # Draw maps
        self.print_map = Canvas(center_frame)
        self.bind_canvas()
        self.print_map.configure(height=Jimapn.DISPLAY_CANVAS_HEIGHT,
                                 width=Jimapn.DISPLAY_CANVAS_WIDTH,
                                 scrollregion=("0", "0", Jimapn.CANVAS_WIDTH,
                                               Jimapn.CANVAS_HEIGHT))
        self.print_map.grid(row=1, column=0, sticky="W" + "E" + "N" + "S")

        self.xscroll = Scrollbar(center_frame)
        self.xscroll.configure(
            orient="horizontal",
            background="#0f0f0f",
            activebackground="#0f0f0f",
            highlightbackground="#0f0f0f",
            troughcolor="#2f8fff",
            relief="groove",
            activerelief="flat",
            width=10,
            command=self.print_map.xview,
        )
        self.xscroll.grid(row=2, column=0, sticky="E" + "W")

        self.yscroll = Scrollbar(center_frame)
        self.yscroll.configure(
            orient="vertical",
            command=self.print_map.yview,
        )
        self.yscroll.grid(row=1, column=1, sticky='N' + 'S')

        self.print_map.config(xscrollcommand=self.xscroll.set,
                              yscrollcommand=self.yscroll.set)
        center_frame.grid_rowconfigure(0, weight=1, minsize=0)
        center_frame.grid_columnconfigure(0, weight=1, minsize=0)

        # # Right side
        right_side_frame = LabelFrame(self)
        right_side_frame.configure(labelanchor="nw",
                                   text="tools",
                                   relief="groove")
        right_side_frame.grid(row=0, column=2)

        # select button
        select_button = Button(right_side_frame)
        select_button.configure(foreground="#3f3f3f",
                                background="#cfcfcf",
                                text="➩",
                                cursor="man")
        select_button.grid(row=0, column=0, padx=5, pady=5)
        # draw button
        draw_button = Button(right_side_frame)
        draw_button.configure(foreground="#3f3f3f",
                              background="#cfcfcf",
                              text="✎",
                              cursor="pencil")
        draw_button.grid(row=0, column=1, padx=5, pady=5)
        # Map zoom
        zoom_in_button = Button(right_side_frame)
        zoom_in_button.configure(foreground="#5f5f5f",
                                 background="#ffffff",
                                 text="+",
                                 relief="groove",
                                 command=lambda: self.scale_change(1))
        zoom_in_button.grid(row=10, column=0, padx=5, pady=5)

        print_zoom_level = Label(right_side_frame)
        self.zoom_level_label = StringVar()
        self.zoom_level_label.set(self.zoom_level)
        print_zoom_level.configure(width=2,
                                   textvariable=self.zoom_level_label,
                                   foreground="#cfcfcf",
                                   background="#0f0f0f",
                                   relief="groove")
        print_zoom_level.grid(row=11, column=0, padx=5, pady=5)

        zoom_out_button = Button(right_side_frame)
        zoom_out_button.configure(foreground="#5f5f5f",
                                  background="#ffffff",
                                  text="-",
                                  relief="groove",
                                  command=lambda: self.scale_change(-1))
        zoom_out_button.grid(row=12, column=0, padx=5, pady=5)

        # # Bottom
        bottom_frame = LabelFrame(self)
        bottom_frame.configure(bg="#efefef",
                               labelanchor="nw",
                               text="debug space",
                               relief="ridge")
        bottom_frame.grid(row=1, column=1, padx=10, pady=10)

        # print mode
        self.mode_print = Label(bottom_frame)
        self.mode_print.configure(foreground="#5f5f5f",
                                  background="#dfdfdf",
                                  height=1,
                                  width=10,
                                  relief="groove",
                                  text="{0}".format(self.mode))
        self.mode_print.grid(row=1, column=0, padx=5, pady=5)

        # print mouse cursor postion
        self.print_xy = Label(bottom_frame)
        self.print_xy.configure(foreground="#5f5f5f",
                                background="#dfdfdf",
                                height=1,
                                width=25,
                                relief="groove")
        self.print_xy.grid(row=1, column=1, padx=5, pady=5)

        # print log
        # # log print space
        font = tkFont.Font(family="Consolas", size=10)
        self.log_place = ScrolledText(bottom_frame)
        self.log_place.configure(
            foreground="#5f5f5f",
            background="#dfdfdf",
            selectforeground="#cfcfcf",
            selectbackground="#2f2f8f",
            height=5,
            width=50,
            relief="sunken",
            font=font,
        )
        self.log_place.grid(row=0, column=1, padx=5, pady=5)
        self.log_place.insert("end",
                              "zoom_level : {0}\n".format(self.zoom_level))
        self.log_place.see("end")
        self.map_draw(latitude=self.latitude, longitude=self.longitude)
        self.show_place()

        # right click menu
        self.right_click_menu = Menu(self.print_map, tearoff=False)
        place_recode = Menu(self.right_click_menu)
        self.right_click_menu.add_cascade(label=u"場所",
                                          menu=place_recode,
                                          under=2)
        place_recode.add_command(label=u"この場所を登録",
                                 underline=1,
                                 command=self.recode_place)
        exit_menu = Menu(self.right_click_menu)
        self.right_click_menu.add_cascade(label=u"終了",
                                          underline=0,
                                          menu=exit_menu)
        exit_menu.add_command(label=u"終了", underline=1, command=sys.exit)
Example #21
0
class EditorMain(object):
    def __init__(self):
        self.root = tk.Tk(className="PyNestML IDE")
        self.after_id = None

        self.text_frame = tk.Frame(self.root,
                                   width=self.root.winfo_screenwidth(),
                                   height=self.root.winfo_screenheight() *
                                   0.70)
        self.text_frame.pack_propagate(False)
        self.textPad = ScrolledText(self.text_frame,
                                    height=1,
                                    width=1,
                                    undo=True)
        self.textPad.pack(side="top", fill="both", expand=True)
        self.text_frame.pack(side="top", fill="both", expand=True)

        self.line_nr_frame = tk.Frame(self.root,
                                      width=self.root.winfo_screenwidth())
        self.line_nr_frame.pack_propagate(False)
        self.line_nr = tk.Text(self.root,
                               width=self.root.winfo_screenwidth(),
                               height=1)
        self.line_nr.pack(side="top", fill="both", expand=True)
        self.line_nr_frame.pack(side="top", fill="both", expand=True)

        self.console_frame = tk.Frame(self.root,
                                      width=self.root.winfo_screenwidth(),
                                      height=self.root.winfo_screenheight() *
                                      0.20)
        self.console_frame.pack_propagate(False)
        self.console = ScrolledText(self.console_frame, width=1, height=1)
        self.console.pack(side="top", fill="both", expand=True)
        self.console_frame.pack(side="top", fill="both", expand=True)

        self.menu = Menu(root=self.root, text_pad=self.textPad, editor=self)
        self.highlighter = Highlighter(self.textPad, self)

        # insert empty model
        self.textPad.insert('1.0', 'PyNestML             \n')
        self.textPad.insert('2.0', '         Model       \n')
        self.textPad.insert('3.0', '               Editor\n')
        self.textPad.tag_add("l1", "%s.%s" % (1, 0),
                             "%s.%s" % (1, len('PyNestML')))
        self.textPad.tag_add("l2", "%s.%s" % (2, 0),
                             "%s.%s" % (2, len('         Model')))
        self.textPad.tag_add("l3", "%s.%s" % (3, 0),
                             "%s.%s" % (3, len('               Editor')))
        self.textPad.tag_config("l1", background="white", foreground="blue")
        self.textPad.tag_config("l2", background="white", foreground="red")
        self.textPad.tag_config("l3", background="white", foreground="green")
        self.last = self.textPad.get('0.0', tk.END)
        # insert start position of cursor
        self.console.pack(side=tk.BOTTOM)
        self.console.configure(state='disabled')
        self.line_nr.insert('1.0', 'Position: 0:0')
        self.line_nr.configure(state='disabled')
        # bind keys
        self.bind_keys()
        self.root.mainloop()

    def change_button_state(self, active=True):
        if not active:
            self.menu.modelmenu.entryconfig('Check CoCos', state=tk.DISABLED)
            self.menu.modelmenu.entryconfig('Compile Model', state=tk.DISABLED)
        else:
            self.menu.modelmenu.entryconfig('Check CoCos', state=tk.NORMAL)
            self.menu.modelmenu.entryconfig('Compile Model', state=tk.NORMAL)

    def exit_editor(self, _):
        self.menu.exit_command()

    def store_command(self, _):
        self.menu.save_command()

    def check_model(self):
        self.change_button_state(False)
        thread = threading.Thread(target=self.check_model_in_separate_thread)
        thread.start()
        return thread  # returns immediately after the thread starts

    def check_model_in_separate_thread(self):
        self.textPad.configure(state='disabled')
        ModelChecker.check_model_with_cocos(self.textPad.get('0.0', tk.END))
        self.report_findings()
        self.textPad.configure(state='normal')

    def check_syntax_in_separate_thread(self):
        ModelChecker.check_model_syntax(self.textPad.get('0.0', tk.END))
        self.report_findings()

    def check_model_syntax(self, _):
        self.update_line_number()
        # cancel the old job
        if self.after_id is not None:
            self.textPad.after_cancel(self.after_id)

        # create a new job
        self.after_id = self.textPad.after(800, self.do_check_model_syntax)

    def do_check_model_syntax(self):
        if self.textPad.get('0.0', tk.END) != self.last:
            if self.last is None or "".join(
                    self.textPad.get('0.0', tk.END).split()) != "".join(
                        self.last.split()):
                thread = threading.Thread(
                    target=self.check_syntax_in_separate_thread)
                thread.start()
                self.last = self.textPad.get('0.0', tk.END)
                return thread  # returns immediately after the thread starts

    def update_line_number(self):
        self.line_nr.configure(state='normal')
        self.line_nr.delete('1.0', tk.END)
        pos = self.textPad.index(tk.INSERT).split('.')
        self.line_nr.insert('1.0', 'Position: %s:%s' % (pos[0], pos[1]))
        self.line_nr.configure(state='disabled')

    def report_findings(self):
        # print('process complete!')
        self.highlighter.process_report()
        self.change_button_state(True)

    def bind_keys(self):
        # bind the events
        self.textPad.bind('<Control-q>', self.exit_editor)
        self.textPad.bind('<KeyRelease>', self.check_model_syntax)
        self.textPad.bind('<Control-s>', self.store_command)

    def clear_console(self):
        self.console.delete('1.0', tk.END)

    def report(self, text):
        if self.menu.show_syntax_errors_var.get() == 1:
            self.console.configure(state='normal')
            self.console.insert(tk.END, text + '\n')
            self.console.configure(state='disabled')

    def inc_font_size(self):
        f = tkFont.Font(self.textPad, self.textPad.cget('font'))
        self.textPad.configure(font=("Courier", f.configure()['size'] + 1))

    def dec_font_size(self):
        f = tkFont.Font(self.textPad, self.textPad.cget('font'))
        if not f.configure()['size'] - 1 < 4:
            self.textPad.configure(font=("Courier", f.configure()['size'] - 1))
Example #22
0
import sys

v = sys.version

from Tkinter import *
import tkFileDialog
from ScrolledText import *

root = Tk("Text Editor")
text = ScrolledText(root)

# add some color fam
text.configure(background='black')
text.configure(insertbackground='green')
text.configure(foreground='green')
text.configure(font=("Courier", 12))
text.grid()


# Saving a file
def saveas():
    global text
    t = text.get("1.0", "end-1c")
    #savelocation = raw_input("> ")
    savelocation = tkFileDialog.asksaveasfilename()
    file1 = open(savelocation, "w+")
    file1.write(t)
    file1.close()


# Open a file function
Example #23
0
class App(Thread):
    server = socket()
    print("SERVER")
    server.bind((input("IP Client: "), input("Port: ")))
    server.listen(5)
    client, addr = server.accept()

    def __init__(self, master):
        Thread.__init__(self)
        frame = Frame(master)
        frame.pack()
        self.gettext = ScrolledText(frame, height=10, width=100, state=NORMAL)
        self.gettext.pack()
        sframe = Frame(frame)
        sframe.pack(anchor="w")
        self.pro = Label(sframe, text="Server>>")
        self.sendtext = Entry(sframe, width=80)
        self.sendtext.focus_set()
        self.sendtext.bind(sequence="<Return>", func=self.Send)
        self.pro.pack(side=LEFT)
        self.sendtext.pack(side=LEFT)
        self.gettext.insert(END, "Welcome to Chat\n")
        self.gettext.configure(state=DISABLED)

    def Send(self, args):
        self.gettext.configure(state=NORMAL)
        text = self.sendtext.get()
        if text == "":
            text = " "
        self.gettext.insert(END, "Me >> %s \n" % text)
        self.sendtext.delete(0, END)
        self.client.send(text)
        self.sendtext.focus_set()
        self.gettext.configure(state=DISABLED)
        self.gettext.see(END)

        def sendFile(self, sock, file):
            sock.send(filFlag)
            user = os.environ["USER"]
            command = filFlag
            size = os.stat(file)[6]
            try:
                f = open(file, "r")
            except:
                ret = 0
            else:
                pos = 0
                while 1:
                    if pos == 0:
                        buffer = f.read(5000000 - 282)
                        if not buffer:
                            break
                        count = sock.send(
                            command
                            + ":"
                            + string.rjust(os.path.basename(file), 214)
                            + ":"
                            + string.rjust(str(size).strip(), 30)
                            + ":"
                            + string.rjust(str(user).strip(), 30)
                            + buffer
                        )
                        pos = 1
                    else:
                        buffer = f.read(5000000)
                        if not buffer:
                            break
                        count = sock.send(buffer)
                    ret = 1
                return ret

            def recvFile(self, sock):
                pjg = 0
                msg1 = sock.recv(283).split(":")
                flag = msg1[0].strip()
                namafile = msg1[1].strip()
                total = msg1[2].strip()
                user = msg1[3].strip()
                file = namafile
                if flag == filFlag:
                    try:
                        f = open(file, "w")
                    except:
                        ret = 0
                    else:
                        try:
                            while 1:
                                leftToRead = int(total) - pjg
                                if not leftToRead:
                                    break
                                msg = sock.recv(5000000)
                                pjg = pjg + len(msg)
                                f.write(msg)
                            f.close()
                        except:
                            os.remove(file)
                            ret = 0
                        else:
                            ret = 1
                        ret = 1
                    return ret

    def run(self):
        Receive(self.client, self.gettext, self.client)  # buat class menerima data
Example #24
0
class App(Thread):
  client = socket()
  print ("CLIENT")
  client.connect((input("IP Server: "), input("Port: ")))
  def __init__(self, master):
    Thread.__init__(self)
    frame = Frame(master)
    frame.pack()
    self.gettext = ScrolledText(frame, height=10,width=100)
    self.gettext.pack()
    self.gettext.insert(END,'Welcome to Chat\n')
    self.gettext.configure(state=DISABLED)
    sframe = Frame(frame)
    sframe.pack(anchor='w')
    self.pro = Label(sframe, text="Client>>");
    self.sendtext = Entry(sframe,width=80)
    self.sendtext.focus_set()
    self.sendtext.bind(sequence="<Return>", func=self.Send)
    self.pro.pack(side=LEFT)
    self.sendtext.pack(side=LEFT)
    
  def Send(self, args):
    self.gettext.configure(state=NORMAL)
    text = self.sendtext.get()
    if text=="": text=" "
    self.gettext.insert(END,'Me >> %s\n'%text)
    self.sendtext.delete(0,END)
    self.client.send(text)
    self.sendtext.focus_set()
    self.gettext.configure(state=DISABLED)
    self.gettext.see(END)

    def sendFile(self,sock,file):
        sock.send(filFlag)
        user = os.environ['USER']
        command = filFlag
        size = os.stat(file)[6]
        f = open(file,'r')
        pos = 0
        while 1:
            if pos == 0:
                buffer = f.read(5000000-282)
                if not buffer: break
                count = sock.send(command + ':' + \
                string.rjust(os.path.basename(file),214) + ':' + \
                string.rjust(str(size).strip(),30) + ':' + \
                string.rjust(str(user).strip(),30) + \
                buffer)
                pos = 1
            else:
                buffer = f.read(5000000)
                if not buffer: break
                count = sock.send(buffer)

    def recvFile(self,sock):
        pjg = 0
        msg1 = sock.recv(283).split(':')
        flag = msg1[0].strip()
        namafile = msg1[1].strip()
        total = msg1[2].strip()
        user = msg1[3].strip()
        file = namafile

        if flag == filFlag:
            try:
                f = open(file,'w')
            except:
                ret = 0
                print 'Tidak dapat menyimpan file'
                sys.exit()
            else:
                try:
                    while 1:
                        leftToRead = int(total) - pjg
                        if not leftToRead: break
                        msg = sock.recv(5000000)
                        pjg = pjg + len(msg)
                        f.write(msg)
                        os.system('echo -n !')
                        f.close()
                except:
                    os.remove(file)
                    ret = 0
                else:
                    ret = 1

  def run(self):
    Receive(self.client, self.gettext)
Example #25
0
class Jimapn(Frame):

    # Max zoom level
    MAX_ZOOM_LEVEL = 18
    # Min zoom level
    MIN_ZOOM_LEVEL = 5
    # Tile size
    TILE_HEIGHT = 256
    TILE_WIDTH = 256
    # Canvas size
    CANVAS_HEIGHT = 768
    CANVAS_WIDTH = 768
    # Display canvas size
    DISPLAY_CANVAS_HEIGHT = 480
    DISPLAY_CANVAS_WIDTH = 500
    # Canvas TILE
    CANVAS_X = 5
    CANVAS_Y = 5
    CANVAS_XY = CANVAS_X * CANVAS_Y

    def __init__(self, master=None):
        Frame.__init__(self, master)
        # self.master.title("[JIMAP]")
        self.master.minsize(300, 300)
        self.master.maxsize(2000, 2000)
        self.master.geometry("1000x600")  # window size
        self.mode = "{0}".format("Select")
        self.zoom_level = Jimapn.MIN_ZOOM_LEVEL
        self.latitude = 35.43134
        self.longitude = 139.26086
        self.aaom_x = 0
        self.aaom_y = 0
        self.map_area = [['' for i in xrange(Jimapn.CANVAS_X)]
                         for j in xrange(Jimapn.CANVAS_Y)]
        # self.print_map = [[ '' for i in xrange(Jimapn.CANVAS_X)] for j in xrange(Jimapn.CANVAS_Y)]
        self.cid = [['' for i in xrange(Jimapn.CANVAS_X)]
                    for j in xrange(Jimapn.CANVAS_Y)]
        for i in xrange(Jimapn.CANVAS_X):
            for j in xrange(Jimapn.CANVAS_Y):
                self.map_area[i][j] = {
                    "img_file_path": "",
                    "img_file": "",
                }
        # ## Layout
        # Menu
        menubar = Menu(self)
        files = Menu(menubar, tearoff=False)
        menubar.add_cascade(label="Files", underline=0, menu=files)
        exit = Menu(menubar, tearoff=False)
        menubar.add_cascade(label="Exit", underline=0, menu=exit)
        exit.add_command(label="Exit", underline=0, command=sys.exit)
        self.master.configure(menu=menubar)

        # # Left side
        left_side_frame = LabelFrame(self)
        left_side_frame.configure(labelanchor="nw",
                                  text="layer",
                                  relief="groove")
        left_side_frame.grid(row=0, column=0, padx=1, pady=1, sticky="W")
        # display my place point
        myplace_display = ScrolledText(left_side_frame)
        myplace_display.configure(
            height=4,
            width=20,
        )
        myplace_display.grid(row=0, column=0, padx=1, pady=5)

        # # Center
        center_frame = Frame(self)
        center_frame.configure(relief="raised")
        center_frame.grid(row=0, column=1, sticky="W" + "E" + "N" + "S")

        # Top
        # # search place input
        self.search_place_text = StringVar()
        self.search_place = Entry(center_frame)
        self.bind_search_place()
        self.search_place.configure(width=50,
                                    relief="sunken",
                                    textvariable=self.search_place_text)
        self.search_place.grid(row=0, column=0, padx=5, pady=5)
        # search button
        self.search_button = Button(center_frame)
        self.search_button.configure(
            foreground="#3f3f3f",
            background="#cfcfcf",
            text="Search",
            cursor="arrow",
            command=self.search_place_start,
        )
        self.search_button.grid(row=0, column=1, padx=5, pady=5)

        # Draw maps
        self.print_map = Canvas(center_frame)
        self.bind_canvas()
        self.print_map.configure(height=Jimapn.DISPLAY_CANVAS_HEIGHT,
                                 width=Jimapn.DISPLAY_CANVAS_WIDTH,
                                 scrollregion=("0", "0", Jimapn.CANVAS_WIDTH,
                                               Jimapn.CANVAS_HEIGHT))
        self.print_map.grid(row=1, column=0, sticky="W" + "E" + "N" + "S")

        self.xscroll = Scrollbar(center_frame)
        self.xscroll.configure(
            orient="horizontal",
            background="#0f0f0f",
            activebackground="#0f0f0f",
            highlightbackground="#0f0f0f",
            troughcolor="#2f8fff",
            relief="groove",
            activerelief="flat",
            width=10,
            command=self.print_map.xview,
        )
        self.xscroll.grid(row=2, column=0, sticky="E" + "W")

        self.yscroll = Scrollbar(center_frame)
        self.yscroll.configure(
            orient="vertical",
            command=self.print_map.yview,
        )
        self.yscroll.grid(row=1, column=1, sticky='N' + 'S')

        self.print_map.config(xscrollcommand=self.xscroll.set,
                              yscrollcommand=self.yscroll.set)
        center_frame.grid_rowconfigure(0, weight=1, minsize=0)
        center_frame.grid_columnconfigure(0, weight=1, minsize=0)

        # # Right side
        right_side_frame = LabelFrame(self)
        right_side_frame.configure(labelanchor="nw",
                                   text="tools",
                                   relief="groove")
        right_side_frame.grid(row=0, column=2)

        # select button
        select_button = Button(right_side_frame)
        select_button.configure(foreground="#3f3f3f",
                                background="#cfcfcf",
                                text="➩",
                                cursor="man")
        select_button.grid(row=0, column=0, padx=5, pady=5)
        # draw button
        draw_button = Button(right_side_frame)
        draw_button.configure(foreground="#3f3f3f",
                              background="#cfcfcf",
                              text="✎",
                              cursor="pencil")
        draw_button.grid(row=0, column=1, padx=5, pady=5)
        # Map zoom
        zoom_in_button = Button(right_side_frame)
        zoom_in_button.configure(foreground="#5f5f5f",
                                 background="#ffffff",
                                 text="+",
                                 relief="groove",
                                 command=lambda: self.scale_change(1))
        zoom_in_button.grid(row=10, column=0, padx=5, pady=5)

        print_zoom_level = Label(right_side_frame)
        self.zoom_level_label = StringVar()
        self.zoom_level_label.set(self.zoom_level)
        print_zoom_level.configure(width=2,
                                   textvariable=self.zoom_level_label,
                                   foreground="#cfcfcf",
                                   background="#0f0f0f",
                                   relief="groove")
        print_zoom_level.grid(row=11, column=0, padx=5, pady=5)

        zoom_out_button = Button(right_side_frame)
        zoom_out_button.configure(foreground="#5f5f5f",
                                  background="#ffffff",
                                  text="-",
                                  relief="groove",
                                  command=lambda: self.scale_change(-1))
        zoom_out_button.grid(row=12, column=0, padx=5, pady=5)

        # # Bottom
        bottom_frame = LabelFrame(self)
        bottom_frame.configure(bg="#efefef",
                               labelanchor="nw",
                               text="debug space",
                               relief="ridge")
        bottom_frame.grid(row=1, column=1, padx=10, pady=10)

        # print mode
        self.mode_print = Label(bottom_frame)
        self.mode_print.configure(foreground="#5f5f5f",
                                  background="#dfdfdf",
                                  height=1,
                                  width=10,
                                  relief="groove",
                                  text="{0}".format(self.mode))
        self.mode_print.grid(row=1, column=0, padx=5, pady=5)

        # print mouse cursor postion
        self.print_xy = Label(bottom_frame)
        self.print_xy.configure(foreground="#5f5f5f",
                                background="#dfdfdf",
                                height=1,
                                width=25,
                                relief="groove")
        self.print_xy.grid(row=1, column=1, padx=5, pady=5)

        # print log
        # # log print space
        font = tkFont.Font(family="Consolas", size=10)
        self.log_place = ScrolledText(bottom_frame)
        self.log_place.configure(
            foreground="#5f5f5f",
            background="#dfdfdf",
            selectforeground="#cfcfcf",
            selectbackground="#2f2f8f",
            height=5,
            width=50,
            relief="sunken",
            font=font,
        )
        self.log_place.grid(row=0, column=1, padx=5, pady=5)
        self.log_place.insert("end",
                              "zoom_level : {0}\n".format(self.zoom_level))
        self.log_place.see("end")
        self.map_draw(latitude=self.latitude, longitude=self.longitude)
        self.show_place()

        # right click menu
        self.right_click_menu = Menu(self.print_map, tearoff=False)
        place_recode = Menu(self.right_click_menu)
        self.right_click_menu.add_cascade(label=u"場所",
                                          menu=place_recode,
                                          under=2)
        place_recode.add_command(label=u"この場所を登録",
                                 underline=1,
                                 command=self.recode_place)
        exit_menu = Menu(self.right_click_menu)
        self.right_click_menu.add_cascade(label=u"終了",
                                          underline=0,
                                          menu=exit_menu)
        exit_menu.add_command(label=u"終了", underline=1, command=sys.exit)
        # place_recode.add_cascade(label = "Recode place", underline = 0, menu = place_recode)

    def map_draw(self, **args):
        if "latitude" in args or "longitude" in args:
            x, y = convert_longlati_topixcel(args["latitude"],
                                             args["longitude"],
                                             self.zoom_level)
            self.offset_x = int(math.floor(x))
            self.offset_y = int(math.floor(y))
        else:
            self.offset_x = args["offset_x"]
            self.offset_y = args["offset_y"]

        tile_x, position_in_tile_x = divmod(self.offset_x, Jimapn.TILE_WIDTH)
        tile_y, position_in_tile_y = divmod(self.offset_y, Jimapn.TILE_WIDTH)

        # 必要なタイル数
        rows = Jimapn.CANVAS_HEIGHT / Jimapn.TILE_HEIGHT
        columns = Jimapn.CANVAS_WIDTH / Jimapn.TILE_WIDTH

        if position_in_tile_x != 0:
            columns += 1
        if position_in_tile_y != 0:
            rows += 1

        for i in xrange(rows):
            for j in xrange(columns):
                self.log_place.insert("end",
                                      "i : {0} / j : {1}\n".format(i, j))
                self.log_place.see("end")
                self.map_area[i][j]["img_path"] = self.set_img_path(
                    tile_x + j, tile_y + i)
                # print "img_path : {0}".format(img_path)
                if self.map_area[i][j]["img_path"]:
                    image = Image.open(self.map_area[i][j]["img_path"])
                    self.map_area[i][j]["img_file"] = ImageTk.PhotoImage(image)
                    padding_x = j * Jimapn.TILE_WIDTH + (
                        Jimapn.TILE_WIDTH / 2) - position_in_tile_x
                    padding_y = i * Jimapn.TILE_HEIGHT + (
                        Jimapn.TILE_HEIGHT / 2) - position_in_tile_y

                    # padding_x = (j-1) * Jimapn.TILE_WIDTH + (Jimapn.TILE_WIDTH / 2)
                    # padding_y = (i-1) * Jimapn.TILE_HEIGHT + (Jimapn.TILE_HEIGHT / 2)
                    # self.cid[i][j] = self.print_map.create_image(padding_x, padding_y, image =
                    # self.map_area[i][j]["img_file"])
                    self.cid[i][j] = self.print_map.create_image(
                        padding_x,
                        padding_y,
                        image=self.map_area[i][j]["img_file"],
                        tags="map_tile")
                    #                     map_tile(padding_x, padding_y, self.map_area[i][j]["img_file"])
                    self.log_place.insert(
                        "end", "Canvas id : {0} \n".format(self.cid[i][j]))
                    self.log_place.insert("end",
                                          "Canvas_row : {0:d} \n".format(rows))
                    self.log_place.insert(
                        "end", "canvas_column : {0:d}\n".format(columns))
                    self.log_place.insert(
                        "end", "map_tile-{0}-{1} : {2}\n".format(
                            i, j, self.map_area[i][j]["img_file"]))
                    self.log_place.see("end")

        # draw line that tile size


#         for i in xrange(3):
#             line_padding_x = (i + 1) * Jimapn.TILE_WIDTH
#             line_padding_y = (i + 1) * Jimapn.TILE_HEIGHT
#             self.log_place.insert("end", "line_padding_x : {0:d}\n".format(line_padding_x))
#             self.log_place.insert("end", "line_padding_y : {0:d}\n".format(line_padding_y))
#             self.log_place.see("end")
#             self.print_map.create_line(line_padding_x, 0, line_padding_x, Jimapn.CANVAS_HEIGHT)
#             self.print_map.create_line(0, line_padding_y, Jimapn.CANVAS_WIDTH, line_padding_y)

# draw center mark
        self.print_map.create_rectangle(Jimapn.CANVAS_HEIGHT / 2 - 8,
                                        Jimapn.CANVAS_WIDTH / 2 - 8,
                                        Jimapn.CANVAS_HEIGHT / 2 + 8,
                                        Jimapn.CANVAS_WIDTH / 2 + 8,
                                        fill="#0f0f3f")
        # draw copyright
        copyright = u"©地理図院地図"
        ctx = Jimapn.DISPLAY_CANVAS_HEIGHT - 50
        cty = Jimapn.DISPLAY_CANVAS_WIDTH - 50
        self.print_map.create_text(ctx, cty, text=copyright)

    def loop_range(self):
        """ get loop range """
        start_x = 1
        start_y = 1
        if self.aaom_x % Jimapn.TILE_WIDTH == 0 or self.aaom_x == 0:
            start_x = 1
        elif self.aaom_x > 0:
            start_x = 0
        elif self.aaom_x < 0:
            start_x = 2
        if self.aaom_y % Jimapn.TILE_WIDTH == 0 or self.aaom_y == 0:
            start_y = 1
        elif self.aaom_y > 0:
            start_y = 0
        elif self.aaom_y < 0:
            start_y = 2
        end_x = start_x + 3
        end_y = start_y + 3

        return start_x, start_y, end_x, end_y

    def set_img_path(self, lat, lon):
        """ return maptile file path """
        x = lat
        y = lon
        data_id = "std"
        ext = "png"

        map_tile_file = "{0}/map_tile/{1}/{2}-{3}.{4}".format(
            DATA_DIR, self.zoom_level, x, y, ext)
        if not (os.path.exists(map_tile_file)):
            # map tile file download
            try:
                request_url = "http://cyberjapandata.gsi.go.jp/xyz/" + \
                        "{0}/{1}/{2}/{3}.{4}".format(
                        data_id, self.zoom_level,
                        x, y, ext)
                request = urllib2.urlopen(request_url)
                with open(map_tile_file, "wb") as picf:
                    picf.write(request.read())
            except urllib2.URLError:
                # Request file not exists ...
                map_tile_file = DATA_DIR + "/No_Image/No_Image.png"

        return map_tile_file

    def scale_change(self, n):
        old_level = self.zoom_level
        self.zoom_level += n
        if self.zoom_level < Jimapn.MIN_ZOOM_LEVEL:
            self.zoom_level = Jimapn.MIN_ZOOM_LEVEL
            return self.zoom_level
        elif self.zoom_level > Jimapn.MAX_ZOOM_LEVEL:
            self.zoom_level = Jimapn.MAX_ZOOM_LEVEL
            return self.zoom_level

        self.zoom_level_label.set(self.zoom_level)
        self.log_place.insert(
            "end", "*** zoom change : {0}->{1} <{2}> ***\n".format(
                old_level, self.zoom_level, n))
        self.log_place.see("end")
        self.offset_x = int(self.offset_x * math.pow(2, n))
        self.offset_y = int(self.offset_y * math.pow(2, n))

        if n > 0:
            ajust_x = Jimapn.TILE_WIDTH
            ajust_y = Jimapn.TILE_HEIGHT
        else:
            ajust_x = -Jimapn.TILE_WIDTH
            ajust_y = -Jimapn.TILE_HEIGHT

        self.map_draw(offset_x=self.offset_x + ajust_x,
                      offset_y=self.offset_y + ajust_y)

    def recode_place_draw(self):
        pass

    # Canvas event
    def bind_canvas(self):
        self.print_map.bind("<Motion>", self.get_canvas_postion)
        self.print_map.bind("<Button-1>", self.drag_start)
        self.print_map.bind("<ButtonRelease-1>", self.move_map)
        self.print_map.bind("<Button-3>", self.show_right_menu)

    # Search event
    def bind_search_place(self):
        self.search_place.bind("<Return>", self.call_search_place_start)

    # display candidate list event
    def bind_display_candidate(self):
        self.candidate_box.bind("<Button-1>", self.select_position)

    def select_position(self, event):
        selection = self.candidate_box.selection()
        if selection:
            item = self.candidate_box.item(selection)
            latitude = item["values"][1]
            longitude = item["values"][2]
            print "latitude : {0}".format(latitude)
            print "longitude : {0}".format(longitude)
            self.map_draw(latitude=float(latitude), longitude=float(longitude))
        # print select

    def call_search_place_start(self, event):
        self.search_place_start()

    def search_place_start(self):
        print " start search place"
        search_place_string = self.search_place_text.get()
        if search_place_string == "":
            print "None input"
            return False
        self.log_place.insert(
            "end",
            "search : {0}\n".format(search_place_string.encode('utf-8')))
        # latitude, longitude
        match = re.match(r"(\d+\.*\d*[,\s]+\d+\.*\d*)", search_place_string)
        # Zenkaku
        match2 = re.match(r"([^\x01-\x7E])", search_place_string)
        if match:
            print "search case latitude, longitude"
            position = re.split(r"([,\s])+", search_place_string)
            # self.log_place.insert("end", "search : {0}\n".format(match))
            latitude = position[0]
            longitude = position[2]
            self.log_place.see("end")
            self.map_draw(latitude=float(latitude), longitude=float(longitude))
            return True
        elif match2:
            print "search case place name"
            candidate = get_place_candidate(search_place_string)
            if candidate:
                candi_win = Toplevel(self)
                candi_win.title("Candidate List")
                candi_win.configure(
                    background="#0f0f0f",
                    highlightcolor="#2faf2f",
                    highlightbackground="#0f0faf",
                    relief="groove",
                )
                cwf = Frame(candi_win)
                cwf.pack(fill="both", expand=1)
                style = ttk.Style()
                style.configure('Treeview',
                                width=50,
                                height=30,
                                foreground="#5f5f5f",
                                background="#ffefef",
                                highlightcolor="#2faf2f",
                                highlightbackground="#0f0faf",
                                scrollregion=("0", "0", 200, 200))
                self.candidate_box = ttk.Treeview(cwf)
                self.candidate_box.configure(columns=('place_name', 'latitude',
                                                      'longitude'), )
                self.cbxscroll = Scrollbar(cwf,
                                           orient="horizontal",
                                           command=self.candidate_box.xview)
                self.cbyscroll = Scrollbar(cwf,
                                           orient="vertical",
                                           command=self.candidate_box.yview)
                self.candidate_box.configure(
                    selectmode="browse",
                    xscroll=self.cbxscroll.set,
                    yscroll=self.cbyscroll.set,
                )
                # self.candidate_box.pack()
                # self.cbyscroll.pack()
                self.candidate_box.grid(row=0,
                                        column=0,
                                        sticky='W' + 'E' + 'N' + 'S')
                self.cbxscroll.grid(row=1, column=0, sticky='W' + 'E')
                self.cbyscroll.grid(row=0, column=1, sticky='N' + 'S')

                self.candidate_box.column("#0", width=0)
                self.candidate_box.heading("place_name", text=u"地名")
                self.candidate_box.heading("latitude", text=u"緯度")
                self.candidate_box.heading("longitude", text=u"経度")
                for i in xrange(len(candidate)):
                    # print "place_name : {0}".format(candidate[i]["place_name"])
                    # print "latitude : {0}".format(candidate[i]["latitude"])
                    # print "longitude : {0}".format(candidate[i]["longitude"])
                    self.candidate_box.insert(
                        "",
                        "end",
                        values=(candidate[i]["place_name"].decode('shift-jis'),
                                candidate[i]["latitude"],
                                candidate[i]["longitude"]))
                    #    candidate_box.insert("end", "{0} | {1} | {2}".format( \
                    #            candidate[i]["place_name"].decode('shift-jis'),\
                    #            candidate[i]["latitude"], \
                    #            candidate[i]["longitude"],
                    #            ))
                    pass
                self.bind_display_candidate()
                # print candidate
            else:
                print "Not found ..."
        else:
            print "Sorry Not found ..."
            pass

    def get_canvas_postion(self, event):
        pos_x = event.x
        pos_y = event.y
        # self.master.title("[JIMAP] x:{0} / y:{1}".format(str(pos_x),str(pos_y)))
        latitude, longitude = self.oncursor_position(pos_x, pos_y)
        # print "x : {0} / y : {1}".format(pos_x, pos_y)
        self.print_xy.configure(
            text="x : {0:4d} / y : {1:4d}".format(pos_x, pos_y))

    def oncursor_position(self, x, y):
        scroll_x1, _ = self.xscroll.get()
        scroll_y1, _ = self.yscroll.get()
        pad_x = scroll_x1 * Jimapn.CANVAS_WIDTH
        pad_y = scroll_y1 * Jimapn.CANVAS_HEIGHT
        # print "xscroll : {0}".format(pad_x)
        # print "yscroll : {0}".format(pad_y)
        # cursor_tile_x = x / Jimapn.TILE_WIDTH
        # cursor_tile_y = y / Jimapn.TILE_HEIGHT
        cursor_position_x = (self.offset_x + x + pad_x)
        cursor_position_y = (self.offset_y + y + pad_y)
        self.log_place.insert(
            "end", "cursor tile x : {0}\n".format(cursor_position_x))
        self.log_place.insert(
            "end", "cursor tile y : {0}\n".format(cursor_position_y))
        self.latitude, self.longitude = convert_pixcel_tolonglati(
            cursor_position_x, cursor_position_y, self.zoom_level)
        self.log_place.insert("end",
                              "zoom level : {0}\n".format(self.zoom_level))
        self.log_place.insert("end", "latitude : {0}\n".format(self.latitude))
        self.log_place.insert("end",
                              "longitude : {0}\n".format(self.longitude))
        # self.log_place.see("end")
        self.master.title("[JIMAP] x:{0} / y:{1}".format(
            str(self.latitude), str(self.longitude)))
        return self.latitude, self.longitude

    def drag_start(self, event):
        self.drag_start_x = event.x
        self.drag_start_y = event.y
        self.print_map.configure(cursor="hand2")
        self.log_place.insert(
            "end", "x : {0} / y : {1}\n".format(self.drag_start_x,
                                                self.drag_start_y))

    def move_map(self, event):
        x = event.x
        y = event.y
        aom_x = x - self.drag_start_x
        aom_y = y - self.drag_start_y
        self.offset_x -= aom_x
        self.offset_y -= aom_y
        # self.print_map.move("map_tile", aom_x, aom_y)
        self.map_draw(offset_x=self.offset_x, offset_y=self.offset_y)

    def show_right_menu(self, event):
        self.right_click_menu.post(event.x_root, event.y_root)

    def recode_place(self):
        win = edit_window(self, self.latitude, self.longitude)
        win.setter()

    def show_place(self):
        # recode place exists?
        place = {}
        recode_dir = DATA_DIR + "/" + "place_data"
        # layer directory
        for layer in glob.glob(recode_dir + "/*"):
            if os.path.isdir(layer):
                # kind directory
                for kind in glob.glob(layer + "/*"):
                    if os.path.isdir(kind):
                        # recode file
                        for place_file in glob.glob(kind + "/*"):
                            if os.path.isdir(place_file):
                                print "Not found ..."
                                pass
                            else:
                                print "Found : {0}".format(place_file)
                                with open(place_file, "rb") as pf:
                                    reader = csv.reader(pf)
                                    for row in reader:
                                        place = {
                                            layer: {
                                                kind: {
                                                    "place_name":
                                                    row[0].decode('utf-8'),
                                                    "place_name_kana":
                                                    row[1].decode('utf-8'),
                                                    "layer":
                                                    row[2],
                                                    "kind":
                                                    row[3],
                                                    "latitude":
                                                    row[4],
                                                    "longitude":
                                                    row[5],
                                                    "memo":
                                                    row[6].decode('utf-8'),
                                                }
                                            }
                                        }

                    else:
                        pass
            else:
                pass
            print place