[Aptitude-svn-commit] r3555 - in branches/aptitude-0.3/aptitude: . src
Daniel Burrows
dburrows@costa.debian.org
Sat, 02 Jul 2005 17:43:56 +0000
Author: dburrows
Date: Sat Jul 2 17:43:53 2005
New Revision: 3555
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/pkg_tree.cc
branches/aptitude-0.3/aptitude/src/pkg_tree.h
Log:
Update pkg_tree for wide characters.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Jul 2 17:43:53 2005
@@ -1,5 +1,9 @@
2005-07-02 Daniel Burrows <dburrows@debian.org>
+ * src/pkg_tree.cc, src/pkg_tree.h:
+
+ Wide-character conversion of pkg_tree.
+
* src/ui.h:
Make the string callbacks take wstrings.
Modified: branches/aptitude-0.3/aptitude/src/pkg_tree.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_tree.cc (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_tree.cc Sat Jul 2 17:43:53 2005
@@ -383,18 +383,18 @@
if(!get_visible())
return false;
- do_search("~b");
+ do_search(L"~b");
return true;
}
-void pkg_menu_tree::do_search(std::string s)
+void pkg_menu_tree::do_search(std::wstring s)
{
if(s.size()!=0)
{
delete last_search_matcher;
last_search_term=s;
- last_search_matcher=parse_pattern(s);
+ last_search_matcher=parse_pattern(transcode(s));
}
if(doing_incsearch)
@@ -411,7 +411,7 @@
}
}
-void pkg_menu_tree::do_incsearch(std::string s)
+void pkg_menu_tree::do_incsearch(std::wstring s)
{
if(!aptcfg->FindB(PACKAGE "::UI::Incremental-Search", true))
return;
@@ -422,7 +422,7 @@
pre_incsearch_selected=get_selected();
}
- pkg_matcher *m=parse_pattern(s, false);
+ pkg_matcher *m=parse_pattern(transcode(s), false);
set_selection(pre_incsearch_selected);
@@ -450,17 +450,17 @@
pre_incsearch_selected=get_end();
}
-bool pkg_menu_tree::handle_char(chtype ch)
+bool pkg_menu_tree::handle_key(const key &k)
{
// ick -- but having our own bindings is also ugly. hm.
- if(pkg_tree::bindings->key_matches(ch, "Search"))
+ if(pkg_tree::bindings->key_matches(k, "Search"))
find_search();
- else if(pkg_tree::bindings->key_matches(ch, "ReSearch"))
+ else if(pkg_tree::bindings->key_matches(k, "ReSearch"))
find_research();
- else if(pkg_tree::bindings->key_matches(ch, "SearchBroken"))
+ else if(pkg_tree::bindings->key_matches(k, "SearchBroken"))
find_broken();
else
- return vs_tree::handle_char(ch);
+ return vs_tree::handle_key(k);
return true;
}
@@ -470,22 +470,31 @@
bindings=new keybindings(vs_tree::bindings);
}
-pkg_tree::pkg_tree(const char *def_grouping,
+pkg_tree::pkg_tree(const std::string &def_grouping,
pkg_grouppolicy_factory *_grouping,
- const char *def_limit):
- initialized(false),
- grouping(_grouping), groupingstr(def_grouping),
- sorting(parse_sortpolicy(aptcfg->Find(PACKAGE "::UI::Default-Sorting",
+ const std::wstring &def_limit)
+ :initialized(false),
+ grouping(_grouping), groupingstr(def_grouping),
+ sorting(parse_sortpolicy(aptcfg->Find(PACKAGE "::UI::Default-Sorting",
"name"))),
- limit(NULL)
+ limit(NULL),
+ limitstr(def_limit)
{
- if(def_limit)
- limitstr=def_limit;
- else
- limitstr=aptcfg->Find(PACKAGE "::Pkg-Display-Limit", "");
+ if(!limitstr.empty())
+ limit=parse_pattern(transcode(limitstr));
+}
+pkg_tree::pkg_tree(const std::string &def_grouping,
+ pkg_grouppolicy_factory *_grouping)
+ :initialized(false),
+ grouping(_grouping), groupingstr(def_grouping),
+ sorting(parse_sortpolicy(aptcfg->Find(PACKAGE "::UI::Default-Sorting",
+ "name"))),
+ limit(NULL),
+ limitstr(transcode(aptcfg->Find(PACKAGE "::Pkg-Display-Limit", "")))
+{
if(!limitstr.empty())
- limit=parse_pattern(limitstr);
+ limit=parse_pattern(transcode(limitstr));
}
void pkg_tree::handle_cache_close()
@@ -513,11 +522,12 @@
delete oldgrouping;
}
-void pkg_tree::set_grouping(string s)
+void pkg_tree::set_grouping(const std::wstring &s)
{
- groupingstr=s;
+ // FIXME: push wstrings down into the parsing code.
+ groupingstr=transcode(s);
- pkg_grouppolicy_factory *grp=parse_grouppolicy(s);
+ pkg_grouppolicy_factory *grp=parse_grouppolicy(groupingstr);
if(grp)
set_grouping(grp);
@@ -534,9 +544,10 @@
build_tree();
}
-void pkg_tree::set_sorting(string s)
+void pkg_tree::set_sorting(const std::wstring &s)
{
- pkg_sortpolicy *policy=parse_sortpolicy(s);
+ // FIXME: push wstrings down into the parsing code.
+ pkg_sortpolicy *policy=parse_sortpolicy(transcode(s));
if(policy)
set_sorting(policy);
@@ -565,7 +576,7 @@
{
bool empty=true, cache_empty=true;
- pkg_subtree *mytree=new pkg_subtree(_("All Packages"), true);
+ pkg_subtree *mytree=new pkg_subtree(transcode(_("All Packages")), true);
pkg_grouppolicy *grouper=grouping->instantiate(&selected_signal,
&selected_desc_signal);
@@ -591,7 +602,8 @@
progress.OverallProgress(total, total, 1, _("Building view"));
- mytree->sort(pkg_sortpolicy_wrapper(sorting));
+ pkg_sortpolicy_wrapper sorter(sorting);
+ mytree->sort(sorter);
set_root(mytree);
@@ -616,12 +628,12 @@
return rval;
}
-void pkg_tree::set_limit(string _limit)
+void pkg_tree::set_limit(const std::wstring &_limit)
{
pkg_matcher *old_limit=limit;
- string old_limitstr=limitstr;
+ std::wstring old_limitstr=limitstr;
- pkg_matcher *new_limit=parse_pattern(_limit);
+ pkg_matcher *new_limit=parse_pattern(transcode(_limit));
if(_limit.empty() || new_limit)
{
limit=new_limit;
@@ -629,9 +641,9 @@
if(!build_tree())
{
- char buf[512];
+ wchar_t buf[512];
- snprintf(buf, 512, _("No packages matched the pattern \"%s\"."),
+ swprintf(buf, 512, transcode(_("No packages matched the pattern \"%ls\".")).c_str(),
_limit.c_str());
show_message(buf);
@@ -653,7 +665,7 @@
bool pkg_tree::find_limit()
{
- prompt_string(_("Enter the new package tree limit: "),
+ prompt_string(transcode(_("Enter the new package tree limit: ")),
limitstr,
arg(sigc::mem_fun(*this, &pkg_tree::set_limit)),
NULL,
@@ -675,35 +687,35 @@
delete limit;
limit=NULL;
- limitstr="";
+ limitstr=L"";
build_tree();
return true;
}
-bool pkg_tree::handle_char(chtype ch)
+bool pkg_tree::handle_key(const key &k)
{
- if(bindings->key_matches(ch, "ChangePkgTreeLimit"))
+ if(bindings->key_matches(k, "ChangePkgTreeLimit"))
find_limit();
- else if(bindings->key_matches(ch, "ChangePkgTreeGrouping"))
+ else if(bindings->key_matches(k, "ChangePkgTreeGrouping"))
prompt_string(_("Enter the new package grouping mechanism for this display: "),
groupingstr,
arg(sigc::mem_fun(*this,
- (void (pkg_tree::*) (string)) &pkg_tree::set_grouping)),
+ (void (pkg_tree::*) (const std::wstring &)) &pkg_tree::set_grouping)),
NULL,
NULL,
&grouping_history);
- else if(bindings->key_matches(ch, "ChangePkgTreeSorting"))
+ else if(bindings->key_matches(k, "ChangePkgTreeSorting"))
prompt_string(_("Enter the new package sorting mechanism for this display: "),
"",
arg(sigc::mem_fun(*this,
- (void (pkg_tree::*) (string)) &pkg_tree::set_sorting)),
+ (void (pkg_tree::*) (const std::wstring &)) &pkg_tree::set_sorting)),
NULL,
NULL,
&sorting_history);
else
- return pkg_menu_tree::handle_char(ch);
+ return pkg_menu_tree::handle_key(k);
return true;
}
Modified: branches/aptitude-0.3/aptitude/src/pkg_tree.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/pkg_tree.h (original)
+++ branches/aptitude-0.3/aptitude/src/pkg_tree.h Sat Jul 2 17:43:53 2005
@@ -51,7 +51,7 @@
pkg_matcher *last_search_matcher;
/** The string that was compiled to produce the above matcher. */
- std::string last_search_term;
+ std::wstring last_search_term;
/** \b true if an incremental search is in progress. */
bool doing_incsearch;
@@ -59,8 +59,8 @@
/** The iterator that was selected prior to the incremental search. */
vs_treeiterator pre_incsearch_selected;
- void do_search(std::string s);
- void do_incsearch(std::string s);
+ void do_search(std::wstring s);
+ void do_incsearch(std::wstring s);
void do_cancel_incsearch();
/** Execute the given action; this is needed because some "wrapper"
@@ -155,7 +155,7 @@
/** Find the next broken package (searches for '~b'). */
bool find_broken();
- bool handle_char(chtype ch);
+ bool handle_key(const key &k);
};
class pkg_tree:public pkg_menu_tree
@@ -170,7 +170,7 @@
pkg_sortpolicy *sorting;
pkg_matcher *limit;
- std::string limitstr;
+ std::wstring limitstr;
// Defines the limits on the display (what packages will be allowed
// to be displayed) This could be a grouping policy, but hardcoding the
// filter here makes it easier to alter from the UI.
@@ -184,15 +184,24 @@
void init(const char *limitstr);
protected:
- virtual bool handle_char(chtype ch);
+ virtual bool handle_key(const key &k);
public:
/** Initialize a package tree, but don't build it. The caller
* should call build_tree(). The main reason to do this is so you
* can connect up the tree's signals before building it.
*/
- pkg_tree(const char *groupingstr,
+ pkg_tree(const std::string &groupingstr,
pkg_grouppolicy_factory *_grouping,
- const char *limitstr);
+ const std::wstring &limitstr);
+
+ /** Initialize a package tree, but don't build it. The caller
+ * should call build_tree(). The main reason to do this is so you
+ * can connect up the tree's signals before building it.
+ *
+ * The default tree limit is used.
+ */
+ pkg_tree(const std::string &groupingstr,
+ pkg_grouppolicy_factory *_grouping);
// Should you be able to just pass in a string (?)
~pkg_tree();
@@ -216,12 +225,12 @@
bool build_tree();
void set_grouping(pkg_grouppolicy_factory *_grouping);
- void set_grouping(std::string s);
+ void set_grouping(const std::wstring &s);
void set_sorting(pkg_sortpolicy *_sorting);
- void set_sorting(std::string s);
- void set_limit(string _limit);
+ void set_sorting(const std::wstring &s);
+ void set_limit(const std::wstring &_limit);
// Selects a new limit and rebuilds the tree.
- string get_limit_str() {return limitstr;}
+ std::wstring get_limit_str() {return limitstr;}
/** Return \b true. */
bool find_limit_enabled();
@@ -240,7 +249,7 @@
static void init_bindings();
sigc::signal2<void, const pkgCache::PkgIterator &, const pkgCache::VerIterator &> selected_signal;
- sigc::signal1<void, std::string> selected_desc_signal;
+ sigc::signal1<void, std::wstring> selected_desc_signal;
};
#endif