Changeset 17088 for lang/python

Show
Ignore:
Timestamp:
08/05/08 11:09:40 (4 months ago)
Author:
showyou
Message:

crochet いろいろ追加

Location:
lang/python/crochet
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/python/crochet/chat_allsrc.py

    r16960 r17088  
    66import wx 
    77import wx_utils 
    8 from wx_utils import XRC, XRCID, XRCCTRL 
    98 
    109import main_icon 
     
    1413import Image 
    1514 
    16 class MainFrame(wx.Frame): 
    17         u"""MainFrame class deffinition. 
    18         """ 
    19         binder = wx_utils.bind_manager() 
     15import threading 
     16 
     17""" 
     18画像取得用スレッド 
     19""" 
     20class ImageGetThread(threading.Thread): 
     21        def __init__(self,url,callbackFunc,result): 
     22                threading.Thread.__init__(self) 
     23                self.url = url  
     24                self.func = callbackFunc  
     25                self.result = result 
     26        def run(self): 
     27                import urllib,time 
     28                #ここに通信処理を書く 
     29                imagePath = urllib.urlopen(self.url).read() 
     30                #time.sleep(1) 
     31                self.func(imagePath,self.result) 
     32""" 
     33twitterにhttpRequestを投げるスレッド 
     34""" 
     35class TwDMHttpThread(threading.Thread): 
     36        def __init__(self,tw,func): 
     37                threading.Thread.__init__(self) 
     38                self.tw = tw 
     39                self.func = func 
     40        def run(self): 
     41                #ここに通信処理を書く 
     42                a = self.tw.getDM("") 
     43                self.func(a) 
     44""" 
     45twitterにhttpRequestを投げるスレッド 
     46""" 
     47class TwReplyHttpThread(threading.Thread): 
     48        def __init__(self,tw,func): 
     49                threading.Thread.__init__(self) 
     50                self.tw = tw 
     51                self.func = func 
     52        def run(self): 
     53                #ここに通信処理を書く 
     54                a = self.tw.getReplies("") 
     55                self.func(a) 
     56""" 
     57twitterにhttpRequestを投げるスレッド 
     58""" 
     59class TwHttpThread(threading.Thread): 
     60        def __init__(self,tw,func): 
     61                threading.Thread.__init__(self) 
     62                self.tw = tw 
     63                self.func = func 
     64        def run(self): 
     65                #ここに通信処理を書く 
     66                a = self.tw.get("") 
     67                self.func(a) 
     68 
     69""" 
     70最近のfriendsの発言一覧を表示するページ 
     71""" 
     72class RecentPage(wx.NotebookPage): 
     73 
    2074        dataList = [] 
    21         TIMER_ID = 1 
    22         imageList = {} 
    23         def loadUserData(self, fileName): 
    24                 #ファイルを開いて、データを読み込んで変換する 
    25                 #データ形式は(user,password) 
    26                 #try 
    27                 file = open(fileName,'r') 
    28                 a = simplejson.read(file.read()) 
    29                 file.close() 
    30                 return a 
    31                 #catch exit(1) 
    32                  
    33         def __init__(self, parent=None): 
    34                 twUserdata = self.loadUserData(".chat/twdata") 
    35                 wx.Frame.__init__(self,None, -1, "crochet") 
    36                  
    37                 self.CreateStatusBar() 
    38  
    39                 self.selectedRow = -1 
    40                 text = self.text = wx.TextCtrl(self,-1,style=wx.TE_PROCESS_ENTER) 
    41                 text.Bind(wx.EVT_TEXT_ENTER, self.OnSendTW) 
    42                 button = self.button = wx.Button(self, -1, "Send") 
    43                 self.button.Bind(wx.EVT_BUTTON, self.OnSendTW)  
    44          
    45                 notebook = wx.Notebook(self,-1) 
    46  
    47                 # Recent 
    48                 recentPage = wx.NotebookPage(notebook,-1) 
    49                 notebook.AddPage(recentPage,u'Recent') 
    50                 list = self.list = wx.ListCtrl(recentPage,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
     75        def __init__(self, parent): 
     76                self.owner = parent 
     77                wx.NotebookPage.__init__(self,parent.getNotebook(),-1) 
     78                parent.getNotebook().AddPage(self,'Recent') 
     79                list = self.list = wx.ListCtrl(self,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
    5180                list.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 
    5281                list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDoubleClick) 
    53                 # Reply 
    54                 replyPage = wx.NotebookPage(notebook,-1) 
    55                 notebook.AddPage(replyPage,u'Reply') 
    56                 replyList = self.replyList = wx.ListCtrl(replyPage,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
    57                 replyList.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 
    58  
    59                 # Direct 
    60                 directPage = wx.NotebookPage(notebook,-1) 
    61                 notebook.AddPage(directPage,u'Direct') 
    62                 directList = self.directList = wx.ListCtrl(directPage,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
    63                 directList.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 
    64  
    65                 inputSizer = wx.BoxSizer(wx.HORIZONTAL) 
    66                 inputSizer.Add(self.text,2,wx.EXPAND) 
    67                 inputSizer.Add(self.button,0) 
    68                  
    69  
    70                 messageText=self.messageText = wx.TextCtrl(self,-1,style=wx.TE_MULTILINE|wx.TE_AUTO_URL|wx.TE_READONLY) 
    71                 userIcon = self.userIcon = wx.StaticBitmap(self,-1,wx.NullBitmap,(0,0),(64,64)) 
    72                 userName = self.userName = wx.StaticText(self,-1,"test") 
    73                 twitTime = self.twitTime = wx.StaticText(self,-1,"") 
    74                  
    75                 messageSizer3 = wx.BoxSizer(wx.HORIZONTAL) 
    76                 messageSizer3.Add(userName,0) 
    77                 messageSizer3.Add(twitTime,0) 
    78  
    79                 messageSizer2 = wx.BoxSizer(wx.VERTICAL) 
    80                 messageSizer2.Add(messageSizer3,0,wx.EXPAND) 
    81                 messageSizer2.Add(messageText,1,wx.EXPAND) 
    82                  
    83                 messageSizer1 = wx.BoxSizer(wx.HORIZONTAL) 
    84                 messageSizer1.Add(userIcon,0) 
    85                 messageSizer1.Add(messageSizer2,1,wx.EXPAND) 
    86          
    87                 messageSizer = wx.BoxSizer(wx.VERTICAL)  
    88                 messageSizer.Add(messageSizer1,3,wx.EXPAND) 
    89                 messageSizer.Add(inputSizer,1,wx.EXPAND) 
    90                  
    91                 self.sizer = wx.BoxSizer(wx.VERTICAL) 
    92                 self.sizer.Add(notebook,1,wx.EXPAND) 
    93                 self.sizer.Add(messageSizer,0,wx.EXPAND) 
    94                  
    95                 self.SetSizer(self.sizer) 
    96                 self.SetAutoLayout(True) 
    97                 inputSizer.Fit(self) 
    98                 self.sizer.Fit(self) 
    99                 #pre = wx.PreFrame() 
    100                 #XRC().LoadOnFrame(pre, parent, 'MainFrame') 
    101          
    102                 self.tw = twitter3.Twitter(twUserdata) 
    103                 self.tw.setAuthService("twitter") 
    104                 #self.PostCreate(pre) 
    105                 #self.binder.bindall(self) 
    106                 self.SetIcon(main_icon.getIcon()) 
    107                 self.SetSize((300,400)) 
    108                 self.timer = wx.Timer(self,self.TIMER_ID) 
    109                 wx.EVT_TIMER(self,self.TIMER_ID,self.OnUpdate) 
    110                 self.timer.Start(60000) 
    111  
    112                 #list = XRCCTRL(self,'ID_TWITLIST') 
     82 
    11383                list.InsertColumn(0," ",1,20) 
    11484                list.InsertColumn(1,u"ユーザ") 
    11585                list.InsertColumn(2,u"発言",0,200) 
    11686                list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnTwitListSelect) 
    117                 self.RefleshTw() 
    118                  
    119                 self.SetNowTime2StatusBar() 
    120          
    121         def OnSendTW(self, event): 
    122                 # 送信する 
    123                 # コンボボックスの中身を空にする 
    124                 combo = self.text  
    125                 #name = XRCCTRL(self,'ID_NAME') 
    126                 self.tw.put(combo.GetValue())    
    127                 combo.SetValue("") 
    128                 self.RefleshTw() 
    129          
    130         # チャットのログデータをListCtrlに表示 
    131         def RefleshTw(self): 
    132                 #name = XRCCTRL(self,'ID_NAME') 
    133                 list = self.list 
    134                 a = self.tw.get("") 
    135                 dataList = [] 
    136                 for x in a: 
    137                         flag = 0 
    138                          
    139                         # 重複発言チェック 
    140                         for d in self.dataList: 
    141                                 if d[2] == x[1]: 
    142                                         flag = 1 
    143                                         break 
    144                         if flag == 0 :  
    145                                 dataListElement = [] 
    146                                 dataListElement.append("") 
    147                                 dataListElement.append(x[0]) 
    148                                 dataListElement.append(x[1]) 
    149                                 dataListElement.append(x[2]) 
    150                                 dataListElement.append(x[3]) 
    151  
    152                                 dataList.append(dataListElement) 
    153                 i = 0 
    154                 for b in dataList: 
    155                         j = 0 
    156                         list.InsertStringItem(i,"") 
    157                         for j in range(3): 
    158                                 list.SetStringItem(i,j,b[j]) 
    159                                  
    160                         i+=1 
    161                 self.dataList = dataList + self.dataList 
    162                 #if self.selectRow != -1 :self.selectRow+=len(dataList)  
    163         def OnUpdate(self, event): 
    164                 self.RefleshTw() 
    165                 self.SetNowTime2StatusBar() 
    166          
    167         def OnTwitListSelect(self,event): 
    168                 import re 
    169                 self.selectedRow = event.GetIndex() 
    170                 label = self.userName 
    171                 text = self.messageText 
    172                 selectedRow = self.selectedRow 
    173                 text.SetValue(self.dataList[selectedRow][2]) 
    174                 label.SetLabel(self.dataList[selectedRow][1]) 
    175                 self.LoadImage(self.GetImageListElement(self.dataList[selectedRow][4]),self.userIcon) 
    176                 #選択したユーザに関する発言の色を変えてみる 
    177                 p = re.compile(self.dataList[selectedRow][1]) 
    178                 for i in range(0,self.list.GetItemCount()): 
    179                         if p.search(self.dataList[i][1]): 
    180                                 self.list.SetItemBackgroundColour(i,wx.Color(225,225,225))               
    181                         elif p.search(self.dataList[i][2]) : 
    182                                 self.list.SetItemBackgroundColour(i,wx.Color(192,225,225))               
    183                         else: 
    184                                 self.list.SetItemBackgroundColour(i,wx.Color(255,255,255)) 
    185          
    186         def SetNowTime2StatusBar(self): 
    187                 #現在時刻を表示 
    188                 from time import localtime, strftime 
    189                 nowtime = strftime("%H:%M:%S", localtime()) 
    190                 sb = wx.GetApp().GetTopWindow().GetStatusBar() 
    191                 sb.SetStatusText(nowtime+u"に更新しました") 
    192          
     87 
    19388        def myKeyHandler(self,evt): 
    19489                print evt.GetKeyCode(),  
     
    213108                                        self.MoveList(rightcol) 
    214109 
    215                 #print list. 
    216110                if evt.GetKeyCode() in [ord('q'), ord('Q')]: 
    217111                        wx.Exit() 
     
    249143                self.list.Focus(self.selectedRow) 
    250144 
     145        def OnTwitListSelect(self,event): 
     146                import re 
     147                selectedRow = self.selectedRow = event.GetIndex() 
     148                dataList = self.dataList 
     149                label = self.owner.userName 
     150                text = self.owner.messageText 
     151                text.SetValue(dataList[selectedRow][2]) 
     152                label.SetLabel(dataList[selectedRow][1]) 
     153                self.owner.SetImage(dataList[selectedRow][4]) 
     154                #選択したユーザに関する発言の色を変えてみる 
     155                p = re.compile(dataList[selectedRow][1]) 
     156                for i in range(0,self.list.GetItemCount()): 
     157                        if p.search(dataList[i][1]): 
     158                                self.list.SetItemBackgroundColour(i,wx.Color(225,225,225))               
     159                        elif p.search(self.dataList[i][2]) : 
     160                                self.list.SetItemBackgroundColour(i,wx.Color(192,225,225))               
     161                        else: 
     162                                self.list.SetItemBackgroundColour(i,wx.Color(255,255,255)) 
     163         
     164 
     165        def OnDoubleClick(self,event): 
     166                selectedRow = event.GetIndex() 
     167                user = "@" + self.dataList[selectedRow][1] 
     168                self.owner.addUser2Inputbox(user) 
     169 
     170        def Reflesh(self): 
     171                t = TwHttpThread(self.owner.tw,self.RefleshList) 
     172                t.run() 
     173         
     174        def RefleshList(self,a): 
     175                #lockかけた方がいいのかも。。 
     176                list = self.list 
     177                dataList = [] 
     178                for x in a: 
     179                        flag = 0 
     180                         
     181                        # 重複発言チェック 
     182                        for d in self.dataList: 
     183                                if d[2] == x[1]: 
     184                                        flag = 1 
     185                                        break 
     186                        if flag == 0 :  
     187                                dataListElement = [] 
     188                                dataListElement.append("") 
     189                                dataListElement.append(x[0]) 
     190                                dataListElement.append(x[1]) 
     191                                dataListElement.append(x[2]) 
     192                                dataListElement.append(x[3]) 
     193 
     194                                dataList.append(dataListElement) 
     195                i = 0 
     196                for b in dataList: 
     197                        j = 0 
     198                        list.InsertStringItem(i,"") 
     199                        for j in range(3): 
     200                                list.SetStringItem(i,j,b[j]) 
     201                         
     202                        #import time 
     203                        #time.sleep(1)           
     204                        #if 先読み=on 
     205                        try:     
     206                                self.owner.GetImageListElement(b[4]) 
     207                        except: 
     208                                pass 
     209                        i+=1 
     210                self.dataList = dataList + self.dataList 
     211                #if self.selectRow != -1 :self.selectRow+=len(dataList)  
     212 
     213class ReplyPage(RecentPage): 
     214 
     215        dataList = [] 
     216        def __init__(self, parent): 
     217                 
     218                self.owner = parent 
     219                wx.NotebookPage.__init__(self,parent.getNotebook(),-1) 
     220                parent.getNotebook().AddPage(self,'Reply') 
     221                list = self.list = wx.ListCtrl(self,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
     222                list.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 
     223                list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDoubleClick) 
     224 
     225                list.InsertColumn(0," ",1,20) 
     226                list.InsertColumn(1,u"ユーザ") 
     227                list.InsertColumn(2,u"発言",0,200) 
     228                list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnTwitListSelect) 
     229         
     230        def Reflesh(self): 
     231                t = TwReplyHttpThread(self.owner.tw,self.RefleshList) 
     232                t.run() 
     233 
     234         
     235class DMPage(RecentPage): 
     236 
     237        dataList = [] 
     238        def __init__(self, parent): 
     239                 
     240                self.owner = parent 
     241                wx.NotebookPage.__init__(self,parent.getNotebook(),-1) 
     242                parent.getNotebook().AddPage(self,'DM') 
     243                list = self.list = wx.ListCtrl(self,-1,style=wx.LC_REPORT|wx.LC_HRULES) 
     244                list.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 
     245                list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDoubleClick) 
     246 
     247                list.InsertColumn(0," ",1,20) 
     248                list.InsertColumn(1,u"ユーザ") 
     249                list.InsertColumn(2,u"発言",0,200) 
     250                list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnTwitListSelect) 
     251         
     252        def Reflesh(self): 
     253                t = TwDMHttpThread(self.owner.tw,self.RefleshList) 
     254                t.run() 
     255         
     256class MainFrame(wx.Frame): 
     257        """MainFrame class deffinition. 
     258        """ 
     259        binder = wx_utils.bind_manager() 
     260 
     261        TIMER_ID = 1 
     262        TIMER_ID2= TIMER_ID+1 
     263        TIMER_ID3= TIMER_ID2+1 
     264        imageList = {} 
     265        def loadUserData(self, fileName): 
     266                #ファイルを開いて、データを読み込んで変換する 
     267                #データ形式は(user,password) 
     268                #try 
     269                file = open(fileName,'r') 
     270                a = simplejson.read(file.read()) 
     271                file.close() 
     272                return a 
     273                #catch exit(1) 
     274                 
     275        def __init__(self, parent=None): 
     276                twUserdata = self.loadUserData(".chat/twdata") 
     277                wx.Frame.__init__(self,None, -1, "crochet") 
     278                 
     279                self.CreateStatusBar() 
     280 
     281                self.selectedRow = -1 
     282                text = self.text = wx.TextCtrl(self,-1,style=wx.TE_PROCESS_ENTER) 
     283                text.Bind(wx.EVT_TEXT_ENTER, self.OnSendTW) 
     284                button = self.button = wx.Button(self, -1, "Send") 
     285                self.button.Bind(wx.EVT_BUTTON, self.OnSendTW)  
     286         
     287                notebook = self.notebook = wx.Notebook(self,-1) 
     288 
     289                # Recent 
     290                self.recentPage = RecentPage(self) 
     291                 
     292                # Reply 
     293                self.replyPage = ReplyPage(self) 
     294 
     295                # Direct 
     296                self.directPage = DMPage(self)  
     297 
     298                inputSizer = wx.BoxSizer(wx.HORIZONTAL) 
     299                inputSizer.Add(self.text,2,wx.EXPAND) 
     300                inputSizer.Add(self.button,0) 
     301                 
     302 
     303                messageText=self.messageText = wx.TextCtrl(self,-1,style=wx.TE_MULTILINE|wx.TE_AUTO_URL|wx.TE_READONLY) 
     304                userIcon = self.userIcon = wx.StaticBitmap(self,-1,wx.NullBitmap,(0,0),(64,64)) 
     305                userName = self.userName = wx.StaticText(self,-1,"test") 
     306                twitTime = self.twitTime = wx.StaticText(self,-1,"") 
     307                 
     308                messageSizer3 = wx.BoxSizer(wx.HORIZONTAL) 
     309                messageSizer3.Add(userName,0) 
     310                messageSizer3.Add(twitTime,0) 
     311 
     312                messageSizer2 = wx.BoxSizer(wx.VERTICAL) 
     313                messageSizer2.Add(messageSizer3,0,wx.EXPAND) 
     314                messageSizer2.Add(messageText,1,wx.EXPAND) 
     315                 
     316                messageSizer1 = wx.BoxSizer(wx.HORIZONTAL) 
     317                messageSizer1.Add(userIcon,0) 
     318                messageSizer1.Add(messageSizer2,1,wx.EXPAND) 
     319         
     320                messageSizer = wx.BoxSizer(wx.VERTICAL)  
     321                messageSizer.Add(messageSizer1,3,wx.EXPAND) 
     322                messageSizer.Add(inputSizer,1,wx.EXPAND) 
     323                 
     324                self.sizer = wx.BoxSizer(wx.VERTICAL) 
     325                self.sizer.Add(notebook,1,wx.EXPAND) 
     326                self.sizer.Add(messageSizer,0,wx.EXPAND) 
     327                 
     328                self.SetSizer(self.sizer) 
     329                self.SetAutoLayout(True) 
     330                inputSizer.Fit(self) 
     331                self.sizer.Fit(self) 
     332         
     333                self.tw = twitter3.Twitter(twUserdata) 
     334                self.tw.setAuthService("twitter") 
     335                self.SetIcon(main_icon.getIcon()) 
     336                self.SetSize((300,400)) 
     337                self.timer = wx.Timer(self,self.TIMER_ID) 
     338                wx.EVT_TIMER(self,self.TIMER_ID,self.OnUpdate) 
     339                self.timer.Start(60000) 
     340 
     341                self.timer2 = wx.Timer(self,self.TIMER_ID2) 
     342                wx.EVT_TIMER(self,self.TIMER_ID2,self.OnReplyUpdate) 
     343                self.timer2.Start(90000) 
     344                 
     345                self.timer3 = wx.Timer(self,self.TIMER_ID3) 
     346                wx.EVT_TIMER(self,self.TIMER_ID3,self.OnDMUpdate) 
     347                self.timer3.Start(90000) 
     348                self.RefleshTw() 
     349                self.SetNowTime2StatusBar() 
     350         
     351        def OnSendTW(self, event): 
     352                # 送信する 
     353                # コンボボックスの中身を空にする 
     354                combo = self.text  
     355                #name = XRCCTRL(self,'ID_NAME') 
     356                self.tw.put(combo.GetValue())    
     357                combo.SetValue("") 
     358                self.RefleshTw() 
     359         
     360        # チャットのログデータをListCtrlに表示 
     361        def RefleshTw(self): 
     362                self.recentPage.Reflesh()        
     363                #self.replyPage.Reflesh() 
     364                #self.directPage.Reflesh() 
     365         
     366        def OnUpdate(self, event): 
     367                self.RefleshTw() 
     368                self.SetNowTime2StatusBar() 
     369         
     370        def OnReplyUpdate(self, event): 
     371                self.replyPage.Reflesh() 
     372                #self.SetNowTime2StatusBar() 
     373 
     374        def OnDMUpdate(self, event): 
     375                self.directPage.Reflesh() 
     376                #self.SetNowTime2StatusBar() 
     377 
     378        def SetNowTime2StatusBar(self): 
     379                #現在時刻を表示 
     380                from time import localtime, strftime 
     381                nowtime = strftime("%H:%M:%S", localtime()) 
     382                sb = wx.GetApp().GetTopWindow().GetStatusBar() 
     383                sb.SetStatusText(nowtime+u"に更新しました") 
     384         
     385        def myKeyHandler(self,evt): 
     386                print evt.GetKeyCode(),  
     387                if self.selectedRow != -1: 
     388                        if evt.GetKeyCode() in [ord('k'),ord('K'),wx.WXK_UP]: 
     389                                print ('up') 
     390                                if self.selectedRow > 0: 
     391                                        self.MoveList(self.selectedRow-1) 
     392                        if evt.GetKeyCode() in [ord('j'),ord('J'),wx.WXK_DOWN]: 
     393                                print ('down') 
     394                                if self.selectedRow < self.list.GetItemCount()-1: 
     395                                        self.MoveList(self.selectedRow+1) 
     396                        if evt.GetKeyCode() in [ord('h'),ord('H'),wx.WXK_LEFT]: 
     397                                print ('left') 
     398                                leftcol = self.GetPrevItem(self.selectedRow) 
     399                                if leftcol != -1: 
     400                                        self.MoveList(leftcol) 
     401                        if evt.GetKeyCode() in [ord('l'),ord('L'),wx.WXK_RIGHT]: 
     402                                print ('right')  
     403                                rightcol = self.GetNextItem(self.selectedRow) 
     404                                if rightcol != -1: 
     405                                        self.MoveList(rightcol) 
     406 
     407                #print list. 
     408                if evt.GetKeyCode() in [ord('q'), ord('Q')]: 
     409                        wx.Exit() 
     410 
    251411        """Web上の画像を読み込みImageListとして保持する。 
    252412                既に読まれてるなら読みに行かない。ImageList['URL']という形で格納 
     
    255415                unicodeUrl = url 
    256416                if self.imageList.has_key(unicodeUrl): 
     417 
     418                        self.userIcon.SetBitmap(self.imageList[unicodeUrl].ConvertToBitmap()) 
    257419                        pass 
    258420                else: 
    259                         self.imageList[unicodeUrl] = self.WebImage2StringIO(url) 
     421                        self.imageList[unicodeUrl] = ""  
     422                        self.WebImage2StringIO(url,unicodeUrl) 
    260423                return self.imageList[unicodeUrl] 
    261424         
    262425        # Web上の画像を引っ張ってくる 
    263         def WebImage2StringIO(self,url): 
     426        def WebImage2StringIO(self,url,result): 
    264427                import urllib 
    265                 from cStringIO import StringIO 
    266428 
    267429                #try: 
     
    269431                #print "url:"+url 
    270432                #print "urlName:"+urlName 
    271                 imagePath = urllib.urlopen(urlName).read() 
    272  
    273                 image_pil = Image.open(StringIO(imagePath)) 
     433                #thread化したいですね 
     434                t = ImageGetThread(urlName,self.WebImageCallback,result) 
     435                t.run() 
     436 
     437        def WebImageCallback(self,imageData,result): 
     438 
     439                from cStringIO import StringIO 
     440 
     441                image_pil = Image.open(StringIO(imageData)) 
    274442                image_pil.thumbnail((64,64)) 
    275443 
    276444                image_wx = wx.EmptyImage(image_pil.size[0],image_pil.size[1]) 
    277445                image_wx.SetData(image_pil.convert('RGB').tostring()) 
    278                 return image_wx 
     446                #self.userIcon.SetBitmap(image_wx.ConvertToBitmap()) 
     447                self.imageList[result] = image_wx 
    279448                #except: 
    280449                #       print "Error:URL not valid!:"+url 
     
    282451         
    283452        # 画像を読み込んで表示のテスト 
    284         def LoadImage(self,image,bmp): 
     453        def SetImage(self,imageName): 
     454                 
     455                bmp = self.userIcon 
     456                image = self.GetImageListElement(imageName) 
    285457                bmp.SetBitmap(image.ConvertToBitmap()) 
    286458 
    287         #ダブルクリック時 
    288         def OnDoubleClick(self,event): 
    289                 print ("dblclk") 
     459        def addUser2Inputbox(self,user): 
     460                 
     461                text = self.text 
     462                value = text.GetValue() 
     463                 
     464                flag = 1  
     465                import re 
     466                print value + ":" + user 
     467                if re.search(user,value): 
     468                        flag = 0 
     469 
     470                if flag == 1: 
     471                        text.SetValue(user+value) 
     472 
     473        def getNotebook(self): 
     474                return self.notebook 
     475 
    290476# startup application. 
    291477if __name__=='__main__': 
    292478        app = wx.App(False) 
    293         #wx_utils.XrcInit() 
    294479        frame = MainFrame() 
    295480        app.SetTopWindow(frame) 
  • lang/python/crochet/twitter3.py

    r16911 r17088  
    131131                        resultSub.append(x['text']) 
    132132