为什么不选择wxSmith?我放弃wxFormBuilder了 Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

为什么不选择wxSmith?我放弃wxFormBuilder了

Post by Loaden » Fri Oct 03, 2008 9:27 am

用wxFormBuilder 3.0 release,在设计界面上确实没得挑,很方便。然后在生成代码上却是有问题的:你必须从他生成的C++类中继承。
这也就罢了,如果你将你的界面进行了修改,则你只能手工的修改继承类:因为如果不这样,你的手工添加的代码将不再存在!

而wxSmith虽然在操作上不如wxFormBuilder方便,但却可以不用继承类,软件将知道的识别手工代码并保留,这才是RAD!

建议大家尝试一下wxSmith,我用的是最新的SVN5028.
Life is not fair, get used to it.

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Fri Oct 03, 2008 2:57 pm

我最喜欢wxFB的地方却正是这里。继承类与父类间唯一需要保持的,是变量名和函数名的一致,在同样的命名设计之下,我甚至可以同时设计两个父类(GUI),只需要继承其中的一个,就可以切换界面的同时保留所有的事件逻辑。相当爽。

为什么要喜欢那种在注释的夹缝中修改,难以复用的方式?我厌恶这种VC的方式已久,找到wxFB,我像发现新大陆一样高兴。

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

ejoyc
Earned a small fee
Earned a small fee
Posts: 12
Joined: Wed Mar 19, 2008 5:42 am
Location: Zhenjiang

Post by ejoyc » Fri Oct 03, 2008 11:27 pm

新版wxdevcpp也就是wxdevcpp7alpha版,做得不错,支持的控件也多了不少!可惜对wxdevcpp6.x的wxform文件支持不好.

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Sat Oct 04, 2008 12:08 am

Utensil wrote:我最喜欢wxFB的地方却正是这里。继承类与父类间唯一需要保持的,是变量名和函数名的一致,在同样的命名设计之下,我甚至可以同时设计两个父类(GUI),只需要继承其中的一个,就可以切换界面的同时保留所有的事件逻辑。相当爽。

为什么要喜欢那种在注释的夹缝中修改,难以复用的方式?我厌恶这种VC的方式已久,找到wxFB,我像发现新大陆一样高兴。

-Utensil
“变量名和函数名的一致”在设计界面时是一件繁琐的事情。设计两套GUI界面的作用并不大:如果非得要这样,wxSmith也可以实现的,只要更换一个wxs文件就可以了。

如果RAD工具还经常需要手工复制粘贴代码,那RAD就有点变味了。
Life is not fair, get used to it.

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Sat Oct 04, 2008 12:32 am

在我第一次做GUI的时候,我就很快地意识到,对GUI部件变量名的随意(如沿用软件为你生成的)会造成后期的很大麻烦,所以我开始规划GUI部件的命名方式,并在各程序间采用类似的命名方式。因为变量名是保护成员,所以又根本不必在继承类中声明,只有当你需要用那个部件时才需要写出它的名字,那这个,在继承类中做还是在基类中做功夫上没有什么区别,怎么会琐屑呢?我不明白这怎么会增加了复制粘帖的功夫,尤其是在C::B的“实现尚未实现的函数”的功能的帮助下,保持函数的同步是相当自动的。重要的是善用工具。

更换两个界面在极限编程的不断迭代中,有相当大的作用,GUI原型的无痛更换,可以增加开发和重构的效率。这种功能并不是玩具,而是所有RAD工具一致追求的V与MC的分离的一个重要部分。
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Sat Oct 04, 2008 4:51 am

如果用wxFormBuilder设计两套GUI,则需要两个fbp文件。而我只要用两个wxs文件,也可以达到准备两套GUI的目的。
而wxSmith能做到的“保留用户代码”的功能wxFB是无法实现的。

wxSmith的代码识别非常智能,比如我可以将我的头文件修改成:

Code: Select all

#ifndef FRAME_H_INCLUDE
#define FRAME_H_INCLUDE

#ifndef WX_PRECOMP
//(*HeadersPCH(Frame)
#include <wx/listctrl.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/menu.h>
#include <wx/textctrl.h>
#include <wx/button.h>
#include <wx/frame.h>
//*)
#endif
//(*Headers(Frame)
//*)

class Frame: public wxFrame
{
public:
    Frame();
    virtual ~Frame();

private:
    //(*Handlers(Frame)
    //*)

protected:
    //(*Identifiers(Frame)
    static const long ID_STATICTEXT1;
    static const long ID_TEXTCTRL1;
    static const long ID_BUTTON1;
    static const long ID_LISTCTRL1;
    static const long ID_TEXTCTRL2;
    static const long ID_BUTTON2;
    static const long ID_TEXTCTRL3;
    static const long ID_BUTTON3;
    static const long ID_EXIT;
    static const long ID_ABOUT;
    //*)

private:
    //(*Declarations(Frame)
    wxListCtrl* m_lcMain;
    wxButton* m_btnAdd;
    wxButton* m_btnSel;
    wxStaticText* m_stClass;
    wxMenu* m_mnuFile;
    wxTextCtrl* m_tcQueryId;
    wxMenuBar* m_mbMain;
    wxMenu* m_mnuHelp;
    wxMenuItem* m_miExit;
    wxMenuItem* m_miAbout;
    wxTextCtrl* m_tcClass;
    wxTextCtrl* m_tcAddId;
    wxButton* m_btnQuery;
    //*)

    DECLARE_EVENT_TABLE()
};

#endif // FRAME_H_INCLUDE
而用wxSmith在添加新的GUI元素时并不会破坏我对头文件的排版(风格)。
Life is not fair, get used to it.

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Sat Oct 04, 2008 5:04 am

Loaden wrote:如果用wxFormBuilder设计两套GUI,则需要两个fbp文件。
一个fbp文件就可以了。而且可以在两个树之间自由复制粘帖元素。

至于那种智能的保留,应该说各有所好吧。wxFB的设计者就是因为不喜欢那种方式才采用了这种方式。所谓的智能,难道wxFB的设计者做不到?只是不做而已。

我们俩对于很多问题的看法常常相左,这样也挺好,可以相互启发。 :)
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Sat Oct 04, 2008 9:34 am

Utensil wrote:我们俩对于很多问题的看法常常相左,这样也挺好,可以相互启发。 :)
:lol: 就事论事,版主不要有别的想法哈。
从版主哪儿学了很多。一直在期待你的wxWidgets系列,不过看起来版主很忙...
Life is not fair, get used to it.

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Sat Oct 04, 2008 11:57 am

呵呵~很遗憾哪,那个系列目前拖延的原因主要有三:

1)就是比较忙,呵呵,忙着探索新的东西,也在忙着生活中的事情,大四了嘛。

2)我现在主操作系统变成Fedora 8下,已经适应了这里的生活,如果回到XP下还要搭建一大堆东西。而OpenOffice越用越不顺手,跟Office 2007没法比,但现在按照网上介绍的办法,又还没成功装到 Office 2007,所以暂时没有继续写(原先的样式和多级列表舍弃太可惜了)。由于Linux下没有和OneNote 2007相当的东西,我现在很郁闷,正在自己写一个类似的东西来用——想用基于Ajax的办法来做,所以近期一直在PHP、Ruby on Rails、jQuery那边打转。

3)Linux下的wxWidgets编译较为简易,但是当初搭建编译环境时却遇到不少细节的困难(尤其在Ubuntu下),当初写Linux部分是想同时介绍这方面的,但现在很久了,很多东西都都淡忘了。我准备到时用虚拟机重新搭建那种一无所有的环境,然后再从空白介绍起。

不过近期打算做个介绍CB和wxFB的视频介绍,呵呵~
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

spritez
Earned a small fee
Earned a small fee
Posts: 21
Joined: Sat Apr 19, 2008 2:16 pm
Location: china

Post by spritez » Mon Oct 06, 2008 8:01 am

我已经习惯wxFormBuilder设计界面了,所见即所得的效果不错,生成类文件后在另一个类文件中引用,并实例化。还算好用。我不排斥xwSmith,真的好用的话有机会我可以试一下。对了,wxFormBuilder中捆绑了wxAdditions控件,也是所见即所得的,比较好用,不知大家用过没?
*** china ***

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Mon Oct 06, 2008 2:23 pm

wxAddition在wxFB里面倒是玩过,但是没在实际中用过,似乎所涉及的部件(因为不在wxWidgets自己里面,是外部扩展)编译有点不容易。

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

kingkamg
I live to help wx-kind
I live to help wx-kind
Posts: 187
Joined: Tue Apr 08, 2008 1:45 pm

Post by kingkamg » Wed Oct 08, 2008 1:44 am

:D 看我啥都不用,基本就vs2005直接敲界面代码,哈哈

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Wed Oct 08, 2008 2:21 am

kingkamg wrote::D 看我啥都不用,基本就vs2005直接敲界面代码,哈哈
VS还是胜过CB,正犹豫是否要换回VC2008Express...
Life is not fair, get used to it.

sishui
Earned some good credits
Earned some good credits
Posts: 121
Joined: Mon Mar 10, 2008 6:13 am
Location: 中國

Post by sishui » Fri Nov 07, 2008 8:23 am

:D 说真的不太喜欢wxSmith的一些东西,不支持aui等,特别cb的工程向导自动生成的gui很不爽,类名也不能更改,文件名也固定,让我不得不放弃
work work!!!

Post Reply