有没有办法将Boost.Asio与Qt4(首选)或GTK主循环集成?GTK像API一样提供poll(2),因此技术上应该是可行的.Qt提供了自己的网络层,但我更喜欢使用为Boost.Asio编写的现有代码.我想在不使用额外线程的情况下集成它们.
有没有参考如何为Qt4(首选)或GTKmm做这个?
谢谢.
编辑
我想澄清一些事情,以使答案更容易.Qt和GTKmm都提供"选择类似"功能:
所以,问题是,如何将现有的"选择器/轮询器"作为反应器集成到Boost.Asio中io_service
.今天,Boost.Asio可以使用select,kqueue,epoll,/ dev/poll和iocp作为reactor/proactor服务.我想将它集成到GUI框架的主循环中.
欢迎任何建议和解决方案(更好).
我正在第一次将程序从PyGTK转换为PyGObject内省,我遇到了一个带有线程的障碍.我有一个需要一些时间才能完成的过程,所以我弹出一个带有进度条的对话框,我使用一个线程来完成这个过程并更新进度条.这对PyGTK工作得很好,但在转换为PyGObject之后,我得到了所有常见的不正确的线程怪异:程序挂起,但它似乎挂在过程的不同部分,等等.所以我得到的印象是事情发生了变化,但我可以弄清楚是什么.
这是一个简单的PyGTK进度条示例:http://aruiz.typepad.com/siliconisland/2006/04/threads_on_pygt.html 如该页面上所示,代码可以正常工作.我把它转换为PyGObject内省,我遇到了与我的程序相同的问题:它挂起,它没有正确更新进度条等.
import threading
import random, time
from gi.repository import Gtk, Gdk
#Initializing the gtk's thread engine
Gdk.threads_init()
class FractionSetter(threading.Thread):
"""This class sets the fraction of the progressbar"""
#Thread event, stops the thread if it is set.
stopthread = threading.Event()
def run(self):
"""Run method, this is the code that runs while thread is alive."""
#Importing the progressbar widget from the global scope
global progressbar
#While the stopthread event isn't setted, the thread keeps going on
while …
Run Code Online (Sandbox Code Playgroud) 如何优化已编译的WebKit浏览器以充分利用GPU?
背景
我和我的团队正在配置一个Linux盒子(CentOS)来显示带有流畅的CSS驱动动画的全屏HTML.该盒子具有足够的GPU和CPU能力,能够在Chromium中轻松播放这些动画.
但是,我们尝试使用纯WebKit来渲染这些动画,既可以使用Python中的WebKitGTK +,也可以将WebKit从源代码编译为简单的浏览器.
当前状态
在两个"纯粹的"webkit应用程序中,动画比Chromium慢很多,这让我们抓住了头脑来回答两者之间究竟有什么不同.我们了解Chromium使用Blink,WebKit的一个分支,我们目前认为性能上的差异是由于Chromium,Safari和其他基于WebKit的浏览器都使用自己的图形组件,这些组件与WebKit和Web Core本身分开,基于我们所读到的.
如果我们能够自定义我们的WebKit构建以执行我们在Chromium中看到的一半规格,但我们不确定从哪里开始,那将是很棒的.
我想知道 ......
我看过GTK + 3,我喜欢它.但遗憾的是,从源代码编译从未对我有用.Windows安装程序是否有适当的二进制文件甚至更好?
由于在电脑屏幕(工作,论文)前花费24/7编程,因此尽可能多地查看深色是有益的.
使用Solancer的自定义功能可以巧妙地增强Ubuntu的Ambiance主题,并且在应用Roger Dudler的黑色Juno主题后,Eclipse Juno看起来大致一致.
但是,使用像达德勒这样的黑暗朱诺主题存在问题.内(在)有源元件的背景色Package Explorer
,Project Explorer
以及其他Eclipse视图显示白/灰的颜色,不仅是不一致的,但实际上掩盖样扩张箭头重要的显示组件.
经过大量的谷歌搜索后,似乎这些颜色是从OS继承的,因此无法在Eclipse中进行更改Preferences
.我希望黑暗的GTK 3/Unity主题(Solancer的Ambiance)能够提供必要的深色,但事实并非如此.
我用SED更换所有在预定义的颜色都将.css
下文件/opt/eclipse/plugins/org.eclipse.platform_4.2.0.v*/css
与#FF0000
建立定义有任何颜色是否会影响白色/灰色问题的颜色; 可悲的是他们没有.
看到~/.e4css
网上提到的文件夹可能包含这些属性的重写CSS定义,我在我的本地机器上寻找文件夹,却发现它不存在.
SO上也存在类似的问题,但没有明确说明如何"修复"这些颜色.
我的问题很简单:是否有一个GTK + 3.0 CSS属性(组)可以定义为Eclipse 4.x指定这些颜色,它应该在哪里配置?
好吧,因此在GTK +版本0.60之后,设计人员意识到,为了将来的开发和进步,整个工具包需要被重写为面向对象.
现在,由于C不支持OOP,为了提供面向对象和继承heiriearchies,他们创建了GObject系统.现在创建GObject系统必须具有所需的开发时间,更多依赖性,更多问题,但他们必须创建它以向C编程语言提供面向对象的功能.但在那个时候,有是提供另一种解决方案恰好的是,C++!
为什么GTK +的开发人员只使用C++?
我的意思是,为什么浪费时间创建整个库而不是使用许多项目采用的经过时间考验的解决方案?不要误会我的意思,我不是想把这篇文章变成C vs C++的东西(我在论坛上已经有足够的了,谢谢你).我只是想知道让GTK +的设计师做出决定的原因和问题.
根据GObject参考
g_signal_connect_swapped(instance,detailed_signal,c_handler,data); 将GCallback函数连接到特定对象的信号.调用处理程序时将发出信号的实例和数据将被交换.
我不明白这意味着什么.这是否意味着data
将指向指向的对象instance
和instance
将指向被指向的对象data
还是我在这里犯了一个错误?
如果是前者,那么这背后的逻辑是什么?
编辑:对于通过搜索来解决这个问题的任何人,您可以安装一个名为Clearlooks Compact的Gnome主题来缩短Eclipse中的标签.这将释放大量的屏幕空间.您还可以查看下面的答案,了解如何使标签更加水平紧凑.
简短版本:如何在Ubuntu中制作Eclipse的选项卡和工具栏的简短版本?
我一直在寻找谷歌的解决方案,但无济于事.对于任何GTK主题,我仍然有同样的问题,而且非常非常烦人 - 我已经停止使用Eclipse而支持gEdit.但是,从终端运行pylint之后也是如此.许多.倍.我已经决定使用Eclipse找到这个问题的解决方案,这样我就可以恢复PyDev了.这是标签的样子:
alt text http://c0496682.cdn.cloudfiles.rackspacecloud.com/big-tabs.png
正如您所看到的,不仅夸大了选项卡,而且工具栏也是如此:底部的工具栏也是如此; 底部窗格中的选项卡也是如此.总体而言,它占用了大量的屏幕空间,这是17英寸屏幕上的一个难题.任何建议/修复?
我是一名学生,他做了一些网络内容和一些命令行应用程序,现在尝试使用GUI.我读了http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html,我偶然发现了这句话:
由于GTK +现在支持客户端装饰,因此可以使用Gtk.HeaderBar代替标题栏(由窗口管理器呈现).
有人可以解释一下"客户端装饰"是什么吗?
从阅读http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/我会猜到"客户端装饰"就像主题一样.有人可以解释一下窗口管理器如何与GTK +交互?为什么称它为" 客户端装饰"?什么是服务器端装饰?(或其他类型的装饰?)