标签: vala

如何从Vala编译器生成GIR文件?

我正在尝试使用带有gobject内省的pygi创建到vala库的python绑定.但是,我在生成GIR文件时遇到了问题(我计划随后将其编译为typelib文件).根据文档,valac应该支持生成GIR文件.

编译以下内容

helloworld.vala

public struct Point {
    public double x;
    public double y;
}

public class Person {

    public int age = 32;

    public Person(int age) {
        this.age = age;
    }

}

public int main() {

    var p = Point() { x=0.0, y=0.1 }; 
    stdout.printf("%f %f\n", p.x, p.y);

    var per = new Person(22);
    stdout.printf("%d\n", per.age);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

用命令

valac helloworld.vala --gir=Hello-1.0.gir
Run Code Online (Sandbox Code Playgroud)

不像Hello-1.0.gir人们期望的那样创建文件.如何生成gir文件?

introspection typelib vala

7
推荐指数
1
解决办法
2188
查看次数

如何在vala中使用gtk/glade

我正在尝试使用glade/gtk/vala创建一个简单的应用程序.到目前为止我有这个:

using Gtk;
class HelloWorldApp : GLib.Object {
    const string UI = "test.glade";
    public Window main_window;

    [CCode (instance_pos = -1)]
    public void on_btn_hello_clicked(Button source) {
    stdout.printf("Hello, world");
    }

    construct {
        Builder builder = new Builder();
        builder.add_from_file(UI);
        main_window = builder.get_object("window1") as Window;
        main_window.destroy.connect(Gtk.main_quit);
        builder.connect_signals(this);
    }
}

class HelloWorld : GLib.Object {
    public static int main(string[] args) {
        Gtk.init (ref args);
        HelloWorldApp h = new HelloWorldApp();
        h.main_window.show_all();
        Gtk.main();
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时输出:(helloworld:22641):Gtk-WARNING**:无法找到信号处理程序'on_btn_hello_clicked'但是除了未被调用的处理程序之外还运行良好

我究竟做错了什么?

gtk glade vala

7
推荐指数
1
解决办法
5232
查看次数

与C++相比,Vala是一种理解的语言吗?

解析C++的问题是众所周知的.它不能纯粹基于语法进行解析,它不能像LALR那样完成(无论术语是什么,我不是语言理论家),语言规范是一个很多页面等等.由于这个和其他原因我为我的个人项目决定另一种语言.

Vala看起来很好.虽然提供了许多比C++更多的改进,但解析起来同样麻烦吗?或者它有一个整洁,合理的长度形式语法,或一些逻辑描述,适合构建编译器,源分析器和其他工具的解析器?

无论答案是什么,Genie替代语法都是如此?

(我也很想知道D和其他后C++非VM语言不太强烈.)

c++ parsing vala

7
推荐指数
2
解决办法
2990
查看次数

C++的替代语法,Vala的la Genie?

Vala语言编译器可以处理非常不同的语法Genie,可以说它可以被认为是一种语言的不同语言或替代语法.AFIK,你可以在Vala做的任何事情,你可以写Genie(忽略正在进行的细节,错误)让任何不喜欢花括号的人高兴.

是否有一些语言或替代语法与Genie与Vala的标准C++具有相同的关系?它应该允许做任何可能在C++中做的事情.(它不需要普通的C++编译器可读,但是 - 我不希望在这个时间点.)

(附带问题:Genie/Vala是我现在能想到的唯一例子.还有其他例子吗?)

c++ programming-languages vala genie

7
推荐指数
1
解决办法
1238
查看次数

当内容缩小时,动态缩小GTK +中的窗口?

我在Vala应用程序中有一个窗口,里面有一个图像.这个图像有时会被更改img.set_from_pixbuf(imgdata);,因此它的大小也会发生变化.它嵌入在Gtk.Box中.

box = new Gtk.Box(Orientation.VERTICAL,5);
...
box.pack_end(img,false,false);
Run Code Online (Sandbox Code Playgroud)

因此,如果以前有一个大图像,我用一个较小的图像替换它,窗口仍然是非常大的,我没有找到一种方法动态缩小到所需的空间.我试过window.set_default_size(box.width_request,box.height_request)但它总是返回-1.

那么任何想法如何调整窗口大小?谢谢!

linux gtk vala

7
推荐指数
2
解决办法
1386
查看次数

GTK:无限懒惰的小部件列表

我需要显示一个几乎无限的滚动式交互式小部件列表,并在添加新数据或用户滚动到未缓存区域时根据需要添加/删除它们.

TreeView(如此处所述)是没有选项的,因为我需要完整的Widgets作为项目(由具有多个动作等的标准小部件组成,但CellRenderer不适用于此)

更糟糕的是,我不提前知道我的小部件的高度(虽然没有太大的差异),因此使用VBox可能会导致跳跃.

使用滚动条仍应感觉好像名单是有限的(即只更新后滚动完成,因此scrollbutton不跳从你的鼠标移开),并调整窗口的大小和窗口的布局时被更新,滚动位置不应该改变太多(焦点小部件应该保持原样,除非焦点小部件被滚动掉......).

最好的方法是什么?甚至可能只是在需要添加新窗口小部件时向我发送信号的库?

或者可以强迫ListView以一种不太讨厌的方式做到这一点?(即在屏幕外缓冲区上绘图,使用CellRenderer将其复制到单元格中,将鼠标/键盘事件转发到实际的窗口小部件?)

c gtk vala

7
推荐指数
1
解决办法
668
查看次数

如何在Vala中使用Qt GUI?

我找到了关于这个主题的文档(我是否在错误的地方搜索过?对我来说这似乎很奇怪).

我只需要能够为我的Vala应用程序使用Qt GUI.一个例子将不胜感激.

binding qt qt4 vala

7
推荐指数
1
解决办法
4495
查看次数

Vala的单元测试框架

我正在考虑使用Vala开发应用程序.我想为我的代码编写单元测试 - 但我还没有(至今)找到任何积极维护的Vala单元测试框架(例如Valadate).

任何人都可以推荐与Vala一起使用的单元测试框架吗?

另外,考虑到Vala的相对"新颖性",Vala可以被认为是生产就绪 - Vala中是否有任何已知的企业应用程序?

c unit-testing vala

7
推荐指数
1
解决办法
1058
查看次数

在Windows上编译Vala源代码

我使用以下命令编译了一个vala程序:

valac test.vala
Run Code Online (Sandbox Code Playgroud)

当然我可以在我的计算机上运行该程序,但是当我尝试在另一个上运行.exe文件时,我收到以下错误:

libglib-***.dll is missing on this computer
Run Code Online (Sandbox Code Playgroud)

这是我的源代码的样子:

using GLib;
int main(string[] args)
{
    bool running = true;
    while(running)
    {
        print("Hello World\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误非常清楚,但我能对付它吗?提前致谢.

windows vala

7
推荐指数
1
解决办法
586
查看次数

如何在Vala中导入其他文件?

这个问题几乎说明了我怎么能导入file2.valafile1.vala

import vala

7
推荐指数
2
解决办法
2124
查看次数