{"id":2449,"date":"2011-02-18T19:48:47","date_gmt":"2011-02-18T16:48:47","guid":{"rendered":"https:\/\/jenyay.net\/blog\/?p=2449"},"modified":"2011-02-18T19:48:47","modified_gmt":"2011-02-18T16:48:47","slug":"wxpython-i-dragndrop-fajjlov-v-linux","status":"publish","type":"post","link":"https:\/\/jenyay.net\/blog\/2011\/02\/18\/wxpython-i-dragndrop-fajjlov-v-linux\/","title":{"rendered":"wxPython \u0438 Drag&#8217;n&#8217;Drop \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Linux"},"content":{"rendered":"<div class=\"postavatar\"><img class=\"border0solid000\" src=\"https:\/\/jenyay.net\/blog\/wp-content\/uploads\/icons\/comp.png\" width=\"100\" height=\"100\" alt=\"wxPython \u0438 Drag&#039;n&#039;Drop \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Linux\" \/><\/div>\n<p>\u0412 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0438 \u0441\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u044e <a href=\"https:\/\/jenyay.net\/Soft\/Outwiker\">OutWiker<\/a>, \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0432 \u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043e\u043a\u043d\u0430 OutWiker&#8217;\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0442\u043e \u043d\u0435 \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0443 \u043d\u0430 \u043d\u0435\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b \u0438 \u043d\u0435\u0440\u0432\u043e\u0432, \u0438 \u0432\u0441\u0435 \u0438\u0437-\u0437\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0440\u0437\u043e\u043f\u0430\u043a\u043e\u0441\u0442\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 wxWidgets.<\/p>\n<p>\u041d\u0430\u0447\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e. \u0421\u0438\u0434\u044f \u043f\u043e\u0434 Windows, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u043d\u044f\u043b\u0430 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre lang=\"python\">def onBeginDrag(self, event):\r\n\t\"\"\"\r\n\t\u041d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\r\n\t\"\"\"\r\n\tdata = wx.FileDataObject()\r\n\r\n\tfor fname in self.getSelectedFiles():\r\n\t\t# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a.\r\n\t\tdata.AddFile (fname)\r\n\r\n\tdragSource = wx.DropSource (self)\r\n\tdragSource.SetData(data)\r\n\r\n\tresult = dragSource.DoDragDrop ()<\/pre>\n<p><!--more--><\/p>\n<p>\u041f\u043e\u0434 Windows \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u043e\u0442 \u044d\u0442\u0438\u0445 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u044f \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u0435\u043d\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0441\u044c \u043f\u043e\u0434 Linux, \u0447\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0442\u0430\u043c, \u0437\u0430\u0431\u0438\u0440\u0430\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e. \u0418, \u043a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0435\u0441\u044c, \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u0438\u0447\u0435\u043c, \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: \u043e\u0431\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u041f\u0443\u0442\u044c \u0434\u043e \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432 \u043f\u0443\u0442\u0438 \u0435\u0441\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043b\u0438\u0446\u043e \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u043d\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0444\u0430\u0439\u043b:<\/p>\n<pre lang=\"python\">def onBeginDrag(self, event):\r\n\tdata = wx.FileDataObject()\r\n\t# \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u043d\u0430 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435\r\n\tdata.AddFile (u\"\/tmp\/\u0442\u0435\u0441\u0442\/\u041f\u0443\u0442\u044c \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438\/__attach\/readme.txt\") \r\n\r\n\t# \u0412\u044b\u0432\u0435\u0434\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\r\n\tfor fname in data.GetFilenames():\r\n\t\tprint fname \r\n\r\n\tdragSource = wx.DropSource (self)\r\n\tdragSource.SetData(data)\r\n\tresult = dragSource.DoDragDrop (True)<\/pre>\n<p>\u0442\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0434 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u0444\u0430\u0439\u043b\u0430, \u0430 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043c\u044b \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0410 \u0432\u043e\u0442 \u0432 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u0430 &#171;\/tmp\/\u0442\u0435\u0441\u0442\/\u041f\u0443\u0442\u044c \u0441 \u0440\u0443\u0441\u0441\u043a\u0438\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c&#187;.<\/p>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432, \u0442\u043e \u0438\u043c\u044f \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/CurrentPagePanel.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/guicontroller.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/HtmlTextEditor.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/htmlview.py<\/p>\n<p>\u0410 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/CurrentPagePanel.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/guicontroller.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/HtmlTextEditor.py<\/p>\n<p>\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c<\/p>\n<p>\u0414\u043e\u043b\u0433\u043e \u044f \u043f\u0440\u043e\u043c\u0443\u0447\u0430\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0442\u043e \u0432\u0438\u043d\u043e\u0432\u0430\u0442, \u0438 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c. \u0423\u0436\u0435 \u0433\u043e\u0442\u043e\u0432 \u0431\u044b\u043b \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 Linux, \u043d\u043e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u044d\u0442\u043e\u0442 \u0433\u043b\u044e\u043a \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c.<\/p>\n<p>\u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0448\u0430\u043c\u0430\u043d\u0441\u0442\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0435\u043b\u0430\u043b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0442\u044c. \u0410 \u0441\u0443\u0442\u044c \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 Linux \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<p>&#171;file:\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/CurrentPagePanel.py\\r\\n<\/p>\n<p>file:\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/guicontroller.py\\r\\n<\/p>\n<p>file:\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/HtmlTextEditor.py\\r\\n<\/p>\n<p>file:\/media\/Storage\/Workdir\/outwiker\/\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0438\u043a\u0438\/samplewiki\/\u0422\u0435\u0441\u0442\u044b\/dd\/__attach\/htmlview.py&#187;<\/p>\n<p>\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0442\u0430\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 wx.FileDataObject. \u0422\u0430\u043a \u043a\u0430\u043a wx.FileDataObject &#8212; \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 wxFileDataObject \u0438\u0437 wxWidgets, \u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043b\u0435\u0437\u0442\u044c \u0432 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438, \u0430 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre lang=\"cpp\">bool wxFileDataObject::GetDataHere(void *buf) const\r\n{\r\n    wxString filenames;\r\n\r\n    for (size_t i = 0; i &lt; m_filenames.GetCount(); i++)\r\n    {\r\n        filenames += wxT(\"file:\");\r\n        filenames += m_filenames[i];\r\n        filenames += wxT(\"\\r\\n\");\r\n    }\r\n\r\n    memcpy( buf, filenames.mbc_str(), filenames.length() + 1 );\r\n\r\n    return true;\r\n}\r\n\r\nsize_t wxFileDataObject::GetDataSize() const\r\n{\r\n    size_t res = 0;\r\n\r\n    for (size_t i = 0; i &lt; m_filenames.GetCount(); i++)\r\n    {\r\n        \/\/ This is junk in UTF-8\r\n        res += m_filenames[i].length();\r\n        res += 5 + 2; \/\/ \"file:\" (5) + \"\\r\\n\" (2)\r\n    }\r\n\r\n    return res + 1;\r\n}<\/pre>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b\u043d\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0443\u0444\u0435\u0440, \u0432\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445. \u042f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 100%, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c, \u043d\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 wxFileDataObject::GetDataSize() \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430<\/p>\n<pre lang=\"cpp\">res += m_filenames[i].length();<\/pre>\n<p>\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c. \u0418 \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445, \u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445. \u0421\u043c\u0443\u0449\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0434\u0430, \u0442\u043e, \u0447\u0442\u043e GetDataSize() \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 GetDataHere(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e \u0438\u0434\u0435\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 wxPython wx.FileDataObject \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 GetDataHere(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u041a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 wxWidgets\/wxPython \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 wx.FileDataObject, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0439 \u043e\u0442 wx.PyDataObjectSimple \u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u044b GetDataSize(), GetDataHere() \u0438 SetData(). \u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044f \u043f\u043e\u043a\u0430 \u043d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0441\u0445\u0430\u043b\u044f\u0432\u0438\u043b \u0438 \u043d\u0435 \u0441\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434 SetData(), \u0442.\u043a. \u0441\u0430\u043c \u044f \u0435\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 (\u043c\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443), \u0430 \u0441\u043d\u0430\u0440\u0443\u0436\u0438, \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441:<\/p>\n<pre lang=\"python\">class GtkFileDataObject (wx.PyDataObjectSimple):\r\n\t\"\"\"\r\n\t\u041a\u043b\u0430\u0441\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e wx.FileDataObject, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0441\u0443\u0442\u0438 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Unicode\r\n\t\"\"\"\r\n\tdef __init__ (self):\r\n\t\twx.PyDataObjectSimple.__init__ (self, wx.DataFormat (wx.DF_FILENAME))\r\n\t\tself._fnames = []\r\n\r\n\tdef AddFile (self, fname):\r\n\t\tself._fnames.append (fname)\r\n\r\n\tdef GetDataHere (self):\r\n\t\tresult = \"\"\r\n\t\tfor fname in self._fnames:\r\n\t\t\tresult += u\"file:%s\\r\\n\" % (fname)\r\n\r\n\t\t# \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c unicode \u0432 \u0441\u0442\u0440\u043e\u043a\u0443\r\n\t\treturn result.strip().encode(\"utf8\")\r\n\r\n\tdef GetDataSize (self):\r\n\t\treturn len (self.GetDataHere())<\/pre>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 unicode \u0432 string \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 result.strip().encode(&#171;utf8&#187;).<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0432 \u043a\u043e\u0434\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u043e\u0442 \u041e\u0421: \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 Windows \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 wx.FileDataObject (\u0442\u0430\u043c Drag &amp; Drop \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435), \u0430 \u043f\u043e\u0434 Linux \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 GtkFileDataObject.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0435 \u043f\u043e wxWidgets \u043f\u0440\u043e \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0442\u043e \u043c\u043d\u0435 \u043a\u0438\u043d\u0443\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 <a href=\"http:\/\/trac.wxwidgets.org\/ticket\/11744\">\u0431\u0430\u0433\u0442\u0440\u0435\u043a\u0435\u0440<\/a>, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434, \u043d\u043e \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0435\u0435 \u0435\u0449\u0435 \u043d\u0435 \u0440\u0435\u0448\u0438\u043b\u0438.<\/p>\n<p>\u0418 \u0441 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e WxPython\/wxWidgets. \u0412 \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0430\u0449\u0438\u0435 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443 \u0444\u0440\u0430\u0437\u044b \u043e \u0442\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043b\u0438 \u043a\u043b\u0430\u0441\u0441 wx.FileDataObject \u0433\u0434\u0435-\u0442\u043e \u043a\u0440\u043e\u043c\u0435 Windows. \u0412\u043e\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0434\u043d\u0430 \u0438\u0437 \u0446\u0438\u0442\u0430\u0442:<\/p>\n<p>Warning: Under all non-Windows platforms this class is currently &#171;input-only&#187;, i.e. you can receive the files from another application, but copying (or dragging) file(s) from a wxWidgets application is not currently supported. <strong>PS: GTK2 should work as well.<\/strong><\/p>\n<p>\u0413\u0434\u0435-\u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0438\u0441\u0430\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 Windows, \u0445\u043e\u0442\u044f \u0443\u0436\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u0441 \u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0434 wxGTK.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0442\u043e\u0442 \u0431\u0430\u0433 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043a\u0440\u043e\u044e\u0442, \u0430 \u0435\u0449\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 wxPython \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 WebKit (\u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0435\u0441\u0442\u044c, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 Mac).<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"postavatar\"><img class=\"border0solid000\" src=\"https:\/\/jenyay.net\/blog\/wp-content\/uploads\/icons\/comp.png\" width=\"100\" height=\"100\" alt=\"wxPython \u0438 Drag&#039;n&#039;Drop \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Linux\" \/><\/div>\n<p>\u0412 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0430\u0445 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0438 \u0441\u043d\u043e\u043c \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0434\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u044e OutWiker, \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0432 \u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043e\u043a\u043d\u0430 OutWiker&#8217;\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u0442\u043e \u043d\u0435 \u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043f\u043e\u0442\u0440\u0430\u0447\u0443 \u043d\u0430 \u043d\u0435\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[33,89,144],"class_list":["post-2449","post","type-post","status-publish","format-standard","hentry","category-python-programmizm","tag-python","tag-wx","tag-programmizm"],"_links":{"self":[{"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/posts\/2449","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/comments?post=2449"}],"version-history":[{"count":4,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/posts\/2449\/revisions"}],"predecessor-version":[{"id":2453,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/posts\/2449\/revisions\/2453"}],"wp:attachment":[{"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/media?parent=2449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/categories?post=2449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jenyay.net\/blog\/wp-json\/wp\/v2\/tags?post=2449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}