标签: gtk

获取股票ID的图标名称?

我正在尝试检索与给定(字符串)Gtk股票ID对应的(字符串)图标名称.

Gtk stock id'gtk-go-forward'有两个相应的图标名称,'gtk-go-forward-ltr'和'gtk-go-forward-rtl'.我想找回:

  • 给出ID"gtk-go-forward"时,两个图标名称'gtk-go-forward-ltr'和'gtk-go-forward-rtl'; 要么
  • 只是图标名称'gtk-go-forward-ltr'(我的文字方向的"适当").

潜在的限制

我正在使用gobject内省API,而不是基本C.

基本原理(可选阅读)

我正在尝试为St.Icon股票ID指定的图标制作,但尺寸较大(96像素).

我可以使用gtk_icon_set_render_icon与股票ID"GTK的奋力向前",直接像这样(它挑选LTR版)(语法是GNOME javscript但这是无关的quesiton;我使用GObject的自省API):

let style = Gtk.Widget.get_default_style();
let iconset = style.lookup_icon_set('gtk-go-forward');
let icon = new St.Icon({
    gicon: iconset.render_icon(gtkStyle, Gtk.TextDirection.LTR,
                               Gtk.StateType.NORMAL, Gtk.IconSize.DIALOG,
                               null, null),
    icon_type: St.IconType.FULLCOLOR,
    icon_size: 96
});
Run Code Online (Sandbox Code Playgroud)

这将给我一个股票ID'gtk-go-forward'的图标(它选择'gtk-go-forward-ltr'),图标非常模糊.

或者,如果我直接输入图标名称'gtk-go-forward-ltr',则图标不会模糊:

let icon = new St.Icon({
    gicon: Gio.ThemedIcon.new_with_default_fallbacks('gtk-go-forward-ltr'),
    icon_type: St.IconType.FULLCOLOR,
    icon_size: 96
});
Run Code Online (Sandbox Code Playgroud)

总而言之,我认为获得一个大的非模糊图标最好的办法是找到股票ID的图标名称,而不是使用股票ID(gtk-go-forward上面的第二种方法会产生"缺少图标"图标)因为它不是有效的图标名称).

使用库存ID的图标(顶部);  使用图标名称(底部)

在上图中,顶部图标使用第一种方法(库存ID和render_icon),底部图标使用第二种方法(直接使用图标名称).清晰度差异很大.

gtk

16
推荐指数
2
解决办法
1605
查看次数

GTK#图像按钮在运行时不显示图像

我试图在GTK中使用图像按钮#(Xamarin Studio).我将图像设置为按钮,在UI Builder中,图像即将出现.

在此输入图像描述

但是当我运行程序时,按钮中没有图像

在此输入图像描述

我在不同版本的IDE和不同平台(Mac和Windows)上试过这个

请帮忙

更新:MainWindow.cs

using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{
    public MainWindow () : base (Gtk.WindowType.Toplevel)
    {
        Build ();
    }

    protected void OnDeleteEvent (object sender, DeleteEventArgs a)
    {
        Application.Quit ();
        a.RetVal = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

gtk-gui文件夹中,我可以找到这些文件

generated.cs

// This file has been generated by the GUI designer. Do not modify.
namespace Stetic
{
    internal class Gui
    {
        private static bool initialized;

        internal static void Initialize (Gtk.Widget iconRenderer)
        {
            if ((Stetic.Gui.initialized == …
Run Code Online (Sandbox Code Playgroud)

c# gtk mono gtk# xamarin

16
推荐指数
1
解决办法
2139
查看次数

如何在Windows,Linux和MacOS中确定Python的显示空闲时间?

我想知道自用户上次按键或移动鼠标以来已经有多长时间 - 不仅在我的应用程序中,而且在整个"计算机"(即显示器)上,以便猜测它们是否仍在电脑,能够观察屏幕上弹出的通知.

我想纯粹从(Py)GTK +这样做,但我可以调用特定于平台的函数.理想情况下,我想调用已经包含在Python中的函数,但是如果不可能的话,我不会超过一点C或ctypes代码,只要我知道我实际上在寻找什么.

在Windows上我认为我想要的功能是GetLastInputInfo,但这似乎并没有被pywin32包装; 我希望我错过了一些东西.

python gtk winapi pygtk pywin32

15
推荐指数
2
解决办法
3595
查看次数

以编程方式打开Mac帮助菜单

我正在将GTK#应用程序集成到Mac OS X.Mac OS X上的GTK是一些Cocoa和Carbon基础的包装器.我们直接使用Carbon全局菜单API有一些特定于平台的东西(它比Cocoa更低级和更灵活,我们不需要是64位).

在Carbon将它们作为命令发送之前,似乎GTK吞噬了所有键盘事件.这是有道理的,因为没有Carbon命令到GTK世界的映射.一般来说,这不是问题,因为我们有一个全局键事件处理程序,并通过我们自己的命令系统调度所有内容.但是,这似乎阻止了Cmd-?从打开帮助搜索菜单,我找不到以编程方式执行此操作的方法.

菜单管理器的MenuSelect功能很有前途,但我还没有找到一种自动确定坐标的方法,由于某些原因它只在我两次击中组合时才有效...

或者,一种方式来发送Cmd-?对Carbon的命令处理进行击键或直接合成命令事件会很好,但我在那方面没有运气.

没有命令ID,Carbon的ProcessHICommand没有任何用处,我无法弄清楚它是什么(如果有的话)

关于Cocoa,我可以抓住NSWindow并调用InterpretKeyEvents,但是我没有任何运气成功合成NSEvent - 它只是发出哔哔声.我正在使用的事件是

var evt = NSEvent.KeyEvent (NSEventType.KeyDown, System.Drawing.PointF.Empty,
    NSEventModifierMask.CommandKeyMask | NSEventModifierMask.ShiftKeyMask,
    0, win.WindowNumber, NSGraphicsContext.CurrentContext, "?", "?",
    false, (ushort) keycode);
Run Code Online (Sandbox Code Playgroud)

密钥代码是从GTK密钥映射确定为44.我使用普通的MonoMac(Cocoa)应用程序确认密钥代码是正确的,但是InterpretKeyEvents也不适用于该应用程序中的事件.我找不到与该命令相关的任何选择器.

gtk macos mono cocoa macos-carbon

15
推荐指数
1
解决办法
1398
查看次数

在Linux上的首选项中快速修复或Eclipse链接中更改Eclipse链接的颜色

如果我使用一个黑暗的主题然后链接在Eclipse-"快速修复"或即Eclipse-> Preferences-> General-> Editor(三个'see ..."File Associaton"|"Content Types"|"Appearance"' -links)是不可读的.

这张图片上,我所说的链接是青色的灰色:

我找到了Windows/XP的解决方案:

悬停使用与系统上相同的颜色.在Windows上,您可以通过显示设置>外观>高级:工具提示进行更改.链接颜色是浏览器中使用的颜色(Windows上的IE).

但是,我需要一个Linux解决方案(XFCE 4.8.1/GTK)

我检查/测试了Eclipse的所有设置,我没有找到此链接颜色的设置.它似乎是一个系统设置(GTK),所以我已经尝试将其添加到gtkrc:

style "default" {
        GtkWidget::link-color = "#ffffff"
}

class "GtkWidget" style "default" 
Run Code Online (Sandbox Code Playgroud)

但这并未改变Eclipse中的链接颜色.

我希望你能帮忙 - 谢谢!

eclipse linux gtk colors hyperlink

15
推荐指数
2
解决办法
6064
查看次数

从GTK +中抑制Valgrind错误

我有一个使用GTK +和Glade的应用程序; 使用memcheck工具运行Valgrind会输出大约2,000个错误.有没有人有一个很好的抑制文件,他们可以分享GTK应用程序?

我尝试了这些,但每个仍然留下了约900个错误:

我可以在这里找到我正在使用的代码的副本.做make run构建GUI(这个代码副本中只有GUI).

c++ linux gtk valgrind

15
推荐指数
1
解决办法
1957
查看次数

在开罗的支持下建设Pango

我正在尝试在RHEL5盒子上构建一个新版本的wireshark 1.10,目的是制作一个RPM,以便我支持的客户可以安装它.可能是其他人,如果我能找到一个地方来举办它.

WS1.10依赖于GTK +以及可用rpm包不支持的其他几个库.因此,我必须手工制作它们.GTK +需要pango(1.24.5)和cairo(1.8.8)支持.

从源代码构建并安装了较新版本的cairo之后,pango的./configure会出现以下错误

checking for CAIRO... yes
checking which cairo font backends could be used... none
configure: Disabling cairo support
Run Code Online (Sandbox Code Playgroud)

然后在最后./configure显示

configuration:
        backends: X
Run Code Online (Sandbox Code Playgroud)

我可以通过查看/ usr/local/lib中的pkg_config来验证是否安装了Cairo.
我甚至看过pango config.log.但是我没有看到任何与我上面提到的消息有任何不同之处.

有哪些地方我应该寻找一个不那么简洁的错误信息?我对此进行故障排除有点不知所措.

linux gtk pango rhel5 cairo

15
推荐指数
1
解决办法
1万
查看次数

Gtk3用另一个小部件替换子小部件

我正在寻找一种方法从其父级(无论可能是什么 - 一个VBox,一个网格......)中删除一个小部件,并在其位置添加一个替代小部件.

我找到了这个答案,但我似乎无法使其与Gtk3一起使用.

这是我试过的:

from gi.repository import Gtk

def replace_widget(old, new):
    parent= old.get_parent()

    props= {}
    for key in Gtk.ContainerClass.list_child_properties(type(parent)):
        props[key.name]= parent.child_get_property(old, key.name)

    parent.remove(old)
    parent.add_with_properties(new, **props)
Run Code Online (Sandbox Code Playgroud)

但是要求Gtk.ContainerClass.list_child_properties加油

TypeError: argument self: Expected a Gtk.ContainerClass, but got gi.repository.Gtk.GObjectMeta
Run Code Online (Sandbox Code Playgroud)

它也不会接受容器小部件的实例.对于我的生活,我无法弄清楚我应该通过什么参数.

PS:我知道我可以在容器和子窗口小部件之间添加另一个窗口小部件,但我不想这样做.

更新:我想这还不够清楚:替代小部件应该与原始小部件位于同一个地方,具有相同的打包属性.

python gtk gtk3

15
推荐指数
1
解决办法
2185
查看次数

GTK + 3 StatusIcon更换

我希望我的GTK应用程序在系统托盘中有一个状态图标,我使用StatusIcon可以很好地工作,但是这已被弃用:

gtk_status_icon_new自版本3.14起已被弃用,不应在新编写的代码中使用.

使用通知

文档说"使用通知",但我不知道这实际意味着什么.我将此解释为"使用桌面通知",但据我所知,这是一个完全不同的目的.我想要一个始终可见的系统托盘图标,而不是临时弹出通知.尽管如此,我找不到任何其他似乎是"通知"的含义.

是否存在GtkStatusIcon的新替代品,它在系统托盘中提供了一个图标,支持接收鼠标点击/滚动信号并显示弹出菜单?

gtk trayicon system-tray gtk3

15
推荐指数
1
解决办法
1816
查看次数

gtk_widget_add_tick_callback()和gtk_main_iteration()

我有两个GTK窗口

  1. 正常(主)窗口运行动画,在注册的回调中绘制内容gtk_widget_add_tick_callback().

  2. 在某些时候,创建了运行模态循环的辅助窗口:

    void show_modal() 
    {
       GtkWindow* gw = gtkwindow(this);
    
       if( parent() )
         gtk_window_set_transient_for(gw, gtkwindow( parent() ));
    
    
       gtk_widget_show(GTK_WIDGET(gw));
       gtk_window_set_modal(gw,TRUE);
       gtk_window_set_keep_above(gw,TRUE);
       this->update_window_state(gool::WINDOW_SHOWN);
    
       while( this->is_valid_window() )
       {
          if(this->_window_state == WINDOW_HIDDEN) break;
          if(this->_window_state == WINDOW_STATE_NA) break;
          gtk_main_iteration(); // gtk_main_iteration_do(true);
       }
    }
    
    Run Code Online (Sandbox Code Playgroud)

问题:主窗口中的动画工作正常,直到show_modal()被调用.它显示为gtk_main_iteration();gtk_widget_add_tick_callback()功能添加的块标记.一旦我关闭辅助窗口,所以while() {gtk_main_iteration();}循环退出然后主窗口中的动画再次开始运行.

想知道如何在GTK中制作"动画友好"的模态循环吗?

更新:gtk_main_iteration();除了"当前"之外,它看起来像块不仅是滴答而是任何窗口的任何更新 - 它们只是被冻结.这种GTK行为的原因是什么?

更新#2:

gtk_dialog_run();表现完全一样gtk_main_iteration();- 锁定活动窗口以外的任何窗口上的任何更新.

c++ gtk gtk3 gtkmm3

15
推荐指数
1
解决办法
953
查看次数

标签 统计

gtk ×10

gtk3 ×3

linux ×3

c++ ×2

mono ×2

python ×2

c# ×1

cairo ×1

cocoa ×1

colors ×1

eclipse ×1

gtk# ×1

gtkmm3 ×1

hyperlink ×1

macos ×1

macos-carbon ×1

pango ×1

pygtk ×1

pywin32 ×1

rhel5 ×1

system-tray ×1

trayicon ×1

valgrind ×1

winapi ×1

xamarin ×1