Thread: Discussion - Search Objects
To better get into the code I've decided to implement a feature from the todo list: "Ability to search a database for objects with a specific name"
Now I have a first result, which I like to discuss with you.
1. The search is done with this query
select * from (
select 'TABLE' as type, table_name as objectname, table_schema as path from information_schema.views
union
select 'VIEW' as type, table_name, table_schema from information_schema.views
union
select 'COLUMN', column_name, table_schema ||'.'||table_name from information_schema.columns
union
select 'TRIGGER', trigger_name, event_object_schema||'.'||event_object_table from information_schema.triggers
union
select 'FUNCTION', routine_name, specific_schema from information_schema.routines
union
select 'SCHEMA', schema_name, '' from information_schema.schemata
union
select 'SEQUENCE', sequence_name, sequence_schema from information_schema.sequences
union
select 'FSERVER', foreign_server_name, '' from information_schema.foreign_servers
union
select 'FDW', foreign_data_wrapper_name, '' from information_schema.foreign_data_wrappers
) i
where lower(objectname) like '%PATTERN%'
order by 1,2
2. I've attached the menu item to the database node
see searchobject1.png
3. The search result output is written to a wxListCtrl
see searchobject2.png
Great would be when someone clicks on the search result the object is selected in the tree. Is there a method in the tree class which I could use for it? It might be complex to implement because of lazy loading of the objects.
Any further ideas?
Regards,
Jasmin
Attachment
On Wed, 2011-06-01 at 01:05 +0200, Jasmin Dizdarevic wrote: > To better get into the code I've decided to implement a feature from > the todo list: "Ability to search a database for objects with a > specific name" > Now I have a first result, which I like to discuss with you. > > > 1. The search is done with this query > select * from ( > select 'TABLE' as type, table_name as objectname, table_schema as path > from information_schema.views > union > select 'VIEW' as type, table_name, table_schema from > information_schema.views > union > select 'COLUMN', column_name, table_schema ||'.'||table_name from > information_schema.columns > union > select 'TRIGGER', trigger_name, event_object_schema||'.'|| > event_object_table from information_schema.triggers > union > select 'FUNCTION', routine_name, specific_schema from > information_schema.routines > union > select 'SCHEMA', schema_name, '' from information_schema.schemata > union > select 'SEQUENCE', sequence_name, sequence_schema from > information_schema.sequences > union > select 'FSERVER', foreign_server_name, '' from > information_schema.foreign_servers > union > select 'FDW', foreign_data_wrapper_name, '' from > information_schema.foreign_data_wrappers > ) i > where lower(objectname) like '%PATTERN%' > order by 1,2 > You miss quite a lot of objects. > 2. I've attached the menu item to the database node > > > see searchobject1.png > Yeah, could be. > 3. The search result output is written to a wxListCtrl > BTW, the Search Objects menu item should have ellipsis because next action is showing a window. > Great would be when someone clicks on the search result the object is > selected in the tree. Is there a method in the tree class which I > could use for it? It might be complex to implement because of lazy > loading of the objects. > > We already do such things when someone connects to a server and wants to get back to his old selection. Shouldn't be too hard to do. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Wed, Jun 1, 2011 at 6:06 AM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Wed, 2011-06-01 at 01:05 +0200, Jasmin Dizdarevic wrote: >> To better get into the code I've decided to implement a feature from >> the todo list: "Ability to search a database for objects with a >> specific name" >> Now I have a first result, which I like to discuss with you. >> >> >> 1. The search is done with this query >> select * from ( >> select 'TABLE' as type, table_name as objectname, table_schema as path >> from information_schema.views >> union >> select 'VIEW' as type, table_name, table_schema from >> information_schema.views >> union >> select 'COLUMN', column_name, table_schema ||'.'||table_name from >> information_schema.columns >> union >> select 'TRIGGER', trigger_name, event_object_schema||'.'|| >> event_object_table from information_schema.triggers >> union >> select 'FUNCTION', routine_name, specific_schema from >> information_schema.routines >> union >> select 'SCHEMA', schema_name, '' from information_schema.schemata >> union >> select 'SEQUENCE', sequence_name, sequence_schema from >> information_schema.sequences >> union >> select 'FSERVER', foreign_server_name, '' from >> information_schema.foreign_servers >> union >> select 'FDW', foreign_data_wrapper_name, '' from >> information_schema.foreign_data_wrappers >> ) i >> where lower(objectname) like '%PATTERN%' >> order by 1,2 >> > > You miss quite a lot of objects. Further, we have a general policy of not using information_schema in pgAdmin, as users may drop it if they don't need it. Sorry :-( -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Wed, 2011-06-01 at 07:50 +0000, Dave Page wrote: > On Wed, Jun 1, 2011 at 6:06 AM, Guillaume Lelarge > <guillaume@lelarge.info> wrote: > > On Wed, 2011-06-01 at 01:05 +0200, Jasmin Dizdarevic wrote: > >> To better get into the code I've decided to implement a feature from > >> the todo list: "Ability to search a database for objects with a > >> specific name" > >> Now I have a first result, which I like to discuss with you. > >> > >> > >> 1. The search is done with this query > >> select * from ( > >> select 'TABLE' as type, table_name as objectname, table_schema as path > >> from information_schema.views > >> union > >> select 'VIEW' as type, table_name, table_schema from > >> information_schema.views > >> union > >> select 'COLUMN', column_name, table_schema ||'.'||table_name from > >> information_schema.columns > >> union > >> select 'TRIGGER', trigger_name, event_object_schema||'.'|| > >> event_object_table from information_schema.triggers > >> union > >> select 'FUNCTION', routine_name, specific_schema from > >> information_schema.routines > >> union > >> select 'SCHEMA', schema_name, '' from information_schema.schemata > >> union > >> select 'SEQUENCE', sequence_name, sequence_schema from > >> information_schema.sequences > >> union > >> select 'FSERVER', foreign_server_name, '' from > >> information_schema.foreign_servers > >> union > >> select 'FDW', foreign_data_wrapper_name, '' from > >> information_schema.foreign_data_wrappers > >> ) i > >> where lower(objectname) like '%PATTERN%' > >> order by 1,2 > >> > > > > You miss quite a lot of objects. > > Further, we have a general policy of not using information_schema in > pgAdmin, as users may drop it if they don't need it. > One is allowed to drop the information_schema system catalog? I didn't know that. I guess it's all right 'cause you don't really need it. > Sorry :-( > -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Wed, Jun 1, 2011 at 7:53 AM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > > One is allowed to drop the information_schema system catalog? I didn't > know that. I guess it's all right 'cause you don't really need it. I'm surprised you didn't know that :-). pgAdmin doesn't let you drop it because it disables drop for all catalogs (I guess thats a minor bug), but Postgres itself doesn't care because as you note, it's not needed by the system and it's recognised that users may not want it cluttering up their databases. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Can we use the pg_catalog?
2011/6/1 Dave Page <dpage@pgadmin.org>
On Wed, Jun 1, 2011 at 7:53 AM, Guillaume LelargeI'm surprised you didn't know that :-). pgAdmin doesn't let you drop
<guillaume@lelarge.info> wrote:
>
> One is allowed to drop the information_schema system catalog? I didn't
> know that. I guess it's all right 'cause you don't really need it.
it because it disables drop for all catalogs (I guess thats a minor
bug), but Postgres itself doesn't care because as you note, it's not
needed by the system and it's recognised that users may not want it
cluttering up their databases.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
On Wed, Jun 1, 2011 at 8:05 AM, Jasmin Dizdarevic <jasmin.dizdarevic@gmail.com> wrote: > Can we use the pg_catalog? Definitely - that's where we get all our info. I appreciate it's a little more complicated; but it also exposes *all* Postgres object types, unlike information_schema. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Wed, 2011-06-01 at 10:05 +0200, Jasmin Dizdarevic wrote: > Can we use the pg_catalog? > pgAdmin works only by querying the PostgreSQL catalog. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Alright, I'm going to change the query.
2011/6/1 Guillaume Lelarge <guillaume@lelarge.info>
On Wed, 2011-06-01 at 10:05 +0200, Jasmin Dizdarevic wrote:pgAdmin works only by querying the PostgreSQL catalog.
> Can we use the pg_catalog?
>
In the search result list I've to build a node path. the problem is, that node paths are language dependent.
how can i manually translate "Server Groups/Servers/local.db/Databases/..." to "Servergruppen/Server/local.db/Datenbanken" (german) in an elegant way?
2011/6/1 Jasmin Dizdarevic <jasmin.dizdarevic@gmail.com>
Alright, I'm going to change the query.2011/6/1 Guillaume Lelarge <guillaume@lelarge.info>On Wed, 2011-06-01 at 10:05 +0200, Jasmin Dizdarevic wrote:pgAdmin works only by querying the PostgreSQL catalog.
> Can we use the pg_catalog?
>
On Tue, 2011-06-07 at 19:30 +0200, Jasmin Dizdarevic wrote: > In the search result list I've to build a node path. the problem is, > that node paths are language dependent. > how can i manually translate "Server > Groups/Servers/local.db/Databases/..." to > "Servergruppen/Server/local.db/Datenbanken" (german) in an elegant > way? > Only parent nodes are to be translated. Meaning "Group Servers", "Databases", "Tables", ... ie, all the plural forms. And apart from concatening the strings, I don't see any way to do this. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
I know...these are the strings that has to be translated. As I know in pgAdmin there are language files, which are defined something like this:
English - Foreign Language
Server Groups - Servergruppen
Help - Hilfe
....
These mappings are used when the GUI is being rendered - based on the selected language.
My question is: How to translate a string manually.
2011/6/7 Guillaume Lelarge <guillaume@lelarge.info>
On Tue, 2011-06-07 at 19:30 +0200, Jasmin Dizdarevic wrote:Only parent nodes are to be translated. Meaning "Group Servers",
> In the search result list I've to build a node path. the problem is,
> that node paths are language dependent.
> how can i manually translate "Server
> Groups/Servers/local.db/Databases/..." to
> "Servergruppen/Server/local.db/Datenbanken" (german) in an elegant
> way?
>
"Databases", "Tables", ... ie, all the plural forms. And apart from
concatening the strings, I don't see any way to do this.
--
On Tue, 2011-06-07 at 21:58 +0200, Jasmin Dizdarevic wrote: > I know...these are the strings that has to be translated. As I know in > pgAdmin there are language files, which are defined something like > this: > English - Foreign Language > Server Groups - Servergruppen > Help - Hilfe > .... > > > These mappings are used when the GUI is being rendered - based on the > selected language. > My question is: How to translate a string manually. > I'm not sure what you mean. If you want that a string is automatically translated, use the _() function. As in _(wxT("Foreign Languages)). -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
that's exactly what I'm looking for :)
thank you!
2011/6/7 Guillaume Lelarge <guillaume@lelarge.info>
On Tue, 2011-06-07 at 21:58 +0200, Jasmin Dizdarevic wrote:I'm not sure what you mean. If you want that a string is automatically
> I know...these are the strings that has to be translated. As I know in
> pgAdmin there are language files, which are defined something like
> this:
> English - Foreign Language
> Server Groups - Servergruppen
> Help - Hilfe
> ....
>
>
> These mappings are used when the GUI is being rendered - based on the
> selected language.
> My question is: How to translate a string manually.
>
translated, use the _() function. As in _(wxT("Foreign Languages)).
--
On Tue, Jun 7, 2011 at 9:11 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Tue, 2011-06-07 at 21:58 +0200, Jasmin Dizdarevic wrote: >> I know...these are the strings that has to be translated. As I know in >> pgAdmin there are language files, which are defined something like >> this: >> English - Foreign Language >> Server Groups - Servergruppen >> Help - Hilfe >> .... >> >> >> These mappings are used when the GUI is being rendered - based on the >> selected language. >> My question is: How to translate a string manually. >> > > I'm not sure what you mean. If you want that a string is automatically > translated, use the _() function. As in _(wxT("Foreign Languages)). I think you mean _("Foreign Languages") -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Tue, 2011-06-07 at 21:25 +0100, Dave Page wrote: > On Tue, Jun 7, 2011 at 9:11 PM, Guillaume Lelarge > <guillaume@lelarge.info> wrote: > > On Tue, 2011-06-07 at 21:58 +0200, Jasmin Dizdarevic wrote: > >> I know...these are the strings that has to be translated. As I know in > >> pgAdmin there are language files, which are defined something like > >> this: > >> English - Foreign Language > >> Server Groups - Servergruppen > >> Help - Hilfe > >> .... > >> > >> > >> These mappings are used when the GUI is being rendered - based on the > >> selected language. > >> My question is: How to translate a string manually. > >> > > > > I'm not sure what you mean. If you want that a string is automatically > > translated, use the _() function. As in _(wxT("Foreign Languages)). > > I think you mean _("Foreign Languages") > Ops, yeah, I was too quick. Thank you. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Attached a patch for searching objects in a database. I've added most of the objects, except operator-objects. I don't think that we need them.
non-pgsql object types (edb, slony,..) has to be added by somebody else - i don't have those products installed or in use.
I've also changed two methods in frmMain:
1. The node path is trimmed now.
2. SetCurrentNode is now more intelligent. during recursion every node is partially checked against the given path. if the path is wrong the recursion stops and the next child will be checked.objects are now expanded automatically as requested by the given path.
3. GetNodePath is public now.
to search, right click on a database and select search object. clicking on a result will expand the given node. if the object type is not shown in tree (options) the result is grey and nothing happens when clicking on it.
i will also add ability to search for a user, group, role and tablespace, but first i'd like to know what you think.
you'll have to add the new files (frmSearchObject.h, frmSearchObject.cpp, frmSearchObject.xrc) to your solution, because I'm developing on VS 2010 and it doesn't make sense to send you the solution file. linux users will hopefully know, what they have to do ;-)
thanks
jasmin
2011/6/7 Guillaume Lelarge <guillaume@lelarge.info>
On Tue, 2011-06-07 at 21:25 +0100, Dave Page wrote:Ops, yeah, I was too quick. Thank you.
> On Tue, Jun 7, 2011 at 9:11 PM, Guillaume Lelarge
> <guillaume@lelarge.info> wrote:
> > On Tue, 2011-06-07 at 21:58 +0200, Jasmin Dizdarevic wrote:
> >> I know...these are the strings that has to be translated. As I know in
> >> pgAdmin there are language files, which are defined something like
> >> this:
> >> English - Foreign Language
> >> Server Groups - Servergruppen
> >> Help - Hilfe
> >> ....
> >>
> >>
> >> These mappings are used when the GUI is being rendered - based on the
> >> selected language.
> >> My question is: How to translate a string manually.
> >>
> >
> > I'm not sure what you mean. If you want that a string is automatically
> > translated, use the _() function. As in _(wxT("Foreign Languages)).
>
> I think you mean _("Foreign Languages")
>
Attachment
On Sat, 2011-06-11 at 19:12 +0200, Jasmin Dizdarevic wrote: > Attached a patch for searching objects in a database. I've added most > of the objects, except operator-objects. I don't think that we need > them. I think we do. They are objects just like any others. > non-pgsql object types (edb, slony,..) has to be added by somebody > else - i don't have those products installed or in use. Understandable. I face the same issues from time to time. > I've also changed two methods in frmMain: > > > 1. The node path is trimmed now. > 2. SetCurrentNode is now more intelligent. during recursion every node > is partially checked against the given path. if the path is wrong the > recursion stops and the next child will be checked.objects are now > expanded automatically as requested by the given path. > 3. GetNodePath is public now. > > > to search, right click on a database and select search object. > clicking on a result will expand the given node. Works with many objects' type, but doesn't work for FKey. I suppose this is because your search the name of the fkey in the tree but fkey are displayed in a special way. > if the object type is not shown in tree (options) the result is grey > and nothing happens when clicking on it. > > > i will also add ability to search for a user, group, role and > tablespace, but first i'd like to know what you think. > Would be good. Your patch, at least from a user point of view (meaning I didn't check the code), seems good. I found two issues: * not able to find a fkey (see above) * really bad UI (I see the combobox only partly, and the dialog is not resizable... the latter is no big deal, I can take care of that afterwards, but the first one makes it not commitable). > you'll have to add the new files (frmSearchObject.h, > frmSearchObject.cpp, frmSearchObject.xrc) to your solution, because > I'm developing on VS 2010 and it doesn't make sense to send you the > solution file. linux users will hopefully know, what they have to > do ;-) > See patch attached for linux compatibility. Not really a hard work. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Attachment
Hi,
please take another look on it. The UI should work correctly now.
Linux make files should also be correct now.
Thanks,
Jasmin
2011/6/12 Guillaume Lelarge <guillaume@lelarge.info>
On Sat, 2011-06-11 at 19:12 +0200, Jasmin Dizdarevic wrote:I think we do. They are objects just like any others.
> Attached a patch for searching objects in a database. I've added most
> of the objects, except operator-objects. I don't think that we need
> them.Understandable. I face the same issues from time to time.
> non-pgsql object types (edb, slony,..) has to be added by somebody
> else - i don't have those products installed or in use.Works with many objects' type, but doesn't work for FKey. I suppose this
> I've also changed two methods in frmMain:
>
>
> 1. The node path is trimmed now.
> 2. SetCurrentNode is now more intelligent. during recursion every node
> is partially checked against the given path. if the path is wrong the
> recursion stops and the next child will be checked.objects are now
> expanded automatically as requested by the given path.
> 3. GetNodePath is public now.
>
>
> to search, right click on a database and select search object.
> clicking on a result will expand the given node.
is because your search the name of the fkey in the tree but fkey are
displayed in a special way.Would be good.
> if the object type is not shown in tree (options) the result is grey
> and nothing happens when clicking on it.
>
>
> i will also add ability to search for a user, group, role and
> tablespace, but first i'd like to know what you think.
>
Your patch, at least from a user point of view (meaning I didn't check
the code), seems good. I found two issues:
* not able to find a fkey (see above)
* really bad UI (I see the combobox only partly, and the dialog is not
resizable... the latter is no big deal, I can take care of that
afterwards, but the first one makes it not commitable).See patch attached for linux compatibility. Not really a hard work.
> you'll have to add the new files (frmSearchObject.h,
> frmSearchObject.cpp, frmSearchObject.xrc) to your solution, because
> I'm developing on VS 2010 and it doesn't make sense to send you the
> solution file. linux users will hopefully know, what they have to
> do ;-)
>
--
Attachment
On Wed, 2011-06-15 at 01:03 +0200, Jasmin Dizdarevic wrote: > Hi, > > > please take another look on it. The UI should work correctly now. > > > Linux make files should also be correct now. > It works much better now. You still have one issue with primary key (and I guess, unique constraint and exclusive constraints too). You show them as constraints and indexes, whereas pgAdmin only shows them as constraints. You shouldn't display indexes for constraints with implicit indexes. And I didn't look at the code yet. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Wed, 2011-06-15 at 08:08 +0200, Guillaume Lelarge wrote: > On Wed, 2011-06-15 at 01:03 +0200, Jasmin Dizdarevic wrote: > > Hi, > > > > > > please take another look on it. The UI should work correctly now. > > > > > > Linux make files should also be correct now. > > > > It works much better now. You still have one issue with primary key (and > I guess, unique constraint and exclusive constraints too). You show them > as constraints and indexes, whereas pgAdmin only shows them as > constraints. You shouldn't display indexes for constraints with implicit > indexes. > > And I didn't look at the code yet. > Seems mostly good. The only question I have is: why did you choose to name it frm* instead of dlg*? it behaves as a dialog, not as a form. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Yeah, I know. All of the dialogs have a "binding" to some pgObject, because all of them modifies something. When I started working I had no clear picture about the class hierarchy and I thought this would be an easier entry point. I can change the prefix if this is wished.
btw: You could help me with the factory class. Am I starting the dialog correctly?
wxWindow *searchObjectFactory::StartDialog(frmMain *form, pgObject *obj)
{
frmSearchObject *so = new frmSearchObject(form, (pgDatabase *) obj);
so->Show();
return 0;
}
Thanks.
2011/6/15 Guillaume Lelarge <guillaume@lelarge.info>
On Wed, 2011-06-15 at 08:08 +0200, Guillaume Lelarge wrote:Seems mostly good. The only question I have is: why did you choose to
> On Wed, 2011-06-15 at 01:03 +0200, Jasmin Dizdarevic wrote:
> > Hi,
> >
> >
> > please take another look on it. The UI should work correctly now.
> >
> >
> > Linux make files should also be correct now.
> >
>
> It works much better now. You still have one issue with primary key (and
> I guess, unique constraint and exclusive constraints too). You show them
> as constraints and indexes, whereas pgAdmin only shows them as
> constraints. You shouldn't display indexes for constraints with implicit
> indexes.
>
> And I didn't look at the code yet.
>
name it frm* instead of dlg*? it behaves as a dialog, not as a form.
On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote: > Yeah, I know. All of the dialogs have a "binding" to some pgObject, > because all of them modifies something. No, see dlgFindAndReplace. > When I started working I had no clear picture about the class > hierarchy and I thought this would be an easier entry point. I can > change the prefix if this is wished. > Yeah, I think it would be better. > btw: You could help me with the factory class. Am I starting the > dialog correctly? > Seems good to me. My only question is: why in frmMain.ccp and not in frmSearchObject.cpp? I first tried the latter, and was surprised to find it in the former. BTW, can you stop top-posting please? Thanks. Regards. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Thu, Jun 16, 2011 at 8:48 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote: >> Yeah, I know. All of the dialogs have a "binding" to some pgObject, >> because all of them modifies something. > > No, see dlgFindAndReplace. Yeah, back in the early days there was some confusion about what was a form (window) and what was a dialog - I don't want to add to that now. In pgAdmin virtually all of our dialogues are actually more like regular windows because they are sizeable. That's a conscious decision, made for reasons of usability and consistency. With that in mind, I consider forms to be the "main" application windows, eg. frmMain, frmQuery, frmDebugger, frmStatus and so on. Everything else is a dialogue - a popup to perform a quick task eg. vacuum, backup or search/replace, to adjust program options (frmOptions is one of the mistakes!), or to define/display properties of a database object. >> btw: You could help me with the factory class. Am I starting the >> dialog correctly? >> > > Seems good to me. My only question is: why in frmMain.ccp and not in > frmSearchObject.cpp? I first tried the latter, and was surprised to find > it in the former. Yeah, the factories should typically be in the same source file as the dialogue they're responsible for creating. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Thu, 2011-06-16 at 20:54 +0100, Dave Page wrote: > On Thu, Jun 16, 2011 at 8:48 PM, Guillaume Lelarge > <guillaume@lelarge.info> wrote: > > On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote: > >> Yeah, I know. All of the dialogs have a "binding" to some pgObject, > >> because all of them modifies something. > > > > No, see dlgFindAndReplace. > > Yeah, back in the early days there was some confusion about what was a > form (window) and what was a dialog - I don't want to add to that now. > > In pgAdmin virtually all of our dialogues are actually more like > regular windows because they are sizeable. That's a conscious > decision, made for reasons of usability and consistency. With that in > mind, I consider forms to be the "main" application windows, eg. > frmMain, frmQuery, frmDebugger, frmStatus and so on. Everything else > is a dialogue - a popup to perform a quick task eg. vacuum, backup or > search/replace, to adjust program options (frmOptions is one of the > mistakes!), or to define/display properties of a database object. > One of the things I want to do for 1.16 is a new options dialog. We already discussed its design. I wonder if we should also change it to a dlgOptions file. Is it OK for you? -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Thu, Jun 16, 2011 at 9:04 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Thu, 2011-06-16 at 20:54 +0100, Dave Page wrote: >> On Thu, Jun 16, 2011 at 8:48 PM, Guillaume Lelarge >> <guillaume@lelarge.info> wrote: >> > On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote: >> >> Yeah, I know. All of the dialogs have a "binding" to some pgObject, >> >> because all of them modifies something. >> > >> > No, see dlgFindAndReplace. >> >> Yeah, back in the early days there was some confusion about what was a >> form (window) and what was a dialog - I don't want to add to that now. >> >> In pgAdmin virtually all of our dialogues are actually more like >> regular windows because they are sizeable. That's a conscious >> decision, made for reasons of usability and consistency. With that in >> mind, I consider forms to be the "main" application windows, eg. >> frmMain, frmQuery, frmDebugger, frmStatus and so on. Everything else >> is a dialogue - a popup to perform a quick task eg. vacuum, backup or >> search/replace, to adjust program options (frmOptions is one of the >> mistakes!), or to define/display properties of a database object. >> > > One of the things I want to do for 1.16 is a new options dialog. We > already discussed its design. I wonder if we should also change it to a > dlgOptions file. Is it OK for you? Absolutely :-) -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
2011/6/16 Guillaume Lelarge <guillaume@lelarge.info>
On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote:No, see dlgFindAndReplace.
> Yeah, I know. All of the dialogs have a "binding" to some pgObject,
> because all of them modifies something.
> When I started working I had no clear picture about the class
> hierarchy and I thought this would be an easier entry point. I can
> change the prefix if this is wished.
>Yeah, I think it would be better.
I'm going to change that.
> btw: You could help me with the factory class. Am I starting the
> dialog correctly?
>Seems good to me. My only question is: why in frmMain.ccp and not in
frmSearchObject.cpp? I first tried the latter, and was surprised to find
it in the former.
I'm currently surprised myself ;)
BTW, can you stop top-posting please? Thanks.
Regards.
I'll try it.
One more thing:
Can somebody say me how to merge different patches to a single one? I've made 3-4 commits and would like to have exactly one patch file. It's not so important, but it would be very nice.
Generally, I wanna thank you for your patience and help - I know this can be frustrating to answer questions, that are clear to you since a long time :)
--
On Thu, 2011-06-16 at 22:31 +0200, Jasmin Dizdarevic wrote: > > > 2011/6/16 Guillaume Lelarge <guillaume@lelarge.info> > On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote: > > Yeah, I know. All of the dialogs have a "binding" to some > pgObject, > > because all of them modifies something. > > > No, see dlgFindAndReplace. > > > When I started working I had no clear picture about the > class > > hierarchy and I thought this would be an easier entry point. > I can > > change the prefix if this is wished. > > > > > Yeah, I think it would be better. > > > I'm going to change that. > > > > btw: You could help me with the factory class. Am I starting > the > > dialog correctly? > > > > > Seems good to me. My only question is: why in > frmMain.ccp and not in > frmSearchObject.cpp? I first tried the latter, and was > surprised to find > it in the former. > > I'm currently surprised myself ;) > > > > BTW, can you stop top-posting please? Thanks. > Regards. > > I'll try it. > > > One more thing: > > > Can somebody say me how to merge different patches to a single one? > I've made 3-4 commits and would like to have exactly one patch file. > It's not so important, but it would be very nice. > I suppose you're talking about "git rebase". Do a "git rebase -i" to get the interactive mode. Let the first commit the way it is. Use squash for the other commits. > Generally, I wanna thank you for your patience and help - I know this > can be frustrating to answer questions, that are clear to you since a > long time :) > No problem :) -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
I suppose you're talking about "git rebase". Do a "git rebase -i" to get
the interactive mode. Let the first commit the way it is. Use squash for
the other commits.
Yep. This is what I was looking for!
During rebase I made a mistake, so the two patches I sent today are now included in the big one. Is this undo-able?
> Generally, I wanna thank you for your patience and help - I know thisNo problem :)
> can be frustrating to answer questions, that are clear to you since a
> long time :)
>
I think it's ready for testing now. I've already checked it against 8.3.15, 8.4.8, 9.0.4 and 9.1 beta2. On our production database with 300k objects the search takes about 4-5 seconds. I think it's an acceptable value. It could be useful to add a hot key to the query from. I was playing around with extensions today and this would be ergonomically. What do you think?
There should be a documentation in the patch, but as you can read a native speaker should maybe take care of it.
--
Attachment
On Thu, 2011-06-16 at 23:51 +0200, Jasmin Dizdarevic wrote: > > > I suppose you're talking about "git rebase". Do a "git > rebase -i" to get > the interactive mode. Let the first commit the way it > is. Use squash for > the other commits. > > > Yep. This is what I was looking for! > During rebase I made a mistake, so the two patches I sent today are > now included in the big one. Is this undo-able? > Nope. Anyway, it'll be commited as one patch. So, it doesn't matter. > > Generally, I wanna thank you for your patience and help - I > know this > > can be frustrating to answer questions, that are clear to > you since a > > long time :) > > > > > No problem :) > > > I think it's ready for testing now. I've already checked it against > 8.3.15, 8.4.8, 9.0.4 and 9.1 beta2. On our production database with > 300k objects the search takes about 4-5 seconds. I think it's an > acceptable value. Yes, it is. > It could be useful to add a hot key to the query from. I was playing > around with extensions today and this would be ergonomically. What do > you think? > I don't see the link with extensions? > There should be a documentation in the patch, but as you can read a > native speaker should maybe take care of it. > There's not much documentation yet. It won't be hard to add a line or two talking about this new dialog. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Fri, Jun 17, 2011 at 2:01 AM, Jasmin Dizdarevic <jasmin.dizdarevic@gmail.com> wrote:
2011/6/16 Guillaume Lelarge <guillaume@lelarge.info>On Wed, 2011-06-15 at 23:48 +0200, Jasmin Dizdarevic wrote:No, see dlgFindAndReplace.
> Yeah, I know. All of the dialogs have a "binding" to some pgObject,
> because all of them modifies something.
> When I started working I had no clear picture about the class
> hierarchy and I thought this would be an easier entry point. I can
> change the prefix if this is wished.
>Yeah, I think it would be better.I'm going to change that.
> btw: You could help me with the factory class. Am I starting the
> dialog correctly?
>Seems good to me. My only question is: why in frmMain.ccp and not in
frmSearchObject.cpp? I first tried the latter, and was surprised to find
it in the former.I'm currently surprised myself ;)BTW, can you stop top-posting please? Thanks.
Regards.I'll try it.One more thing:Can somebody say me how to merge different patches to a single one? I've made 3-4 commits and would like to have exactly one patch file. It's not so important, but it would be very nice.
Hope - this will help:
git log -p -n <number_patches> --author=jasmin > <patch_file>
Generally, I wanna thank you for your patience and help - I know this can be frustrating to answer questions, that are clear to you since a long time :)--
--
--
Thanks & Regards,
Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company
2011/6/17 Guillaume Lelarge <guillaume@lelarge.info>
On Thu, 2011-06-16 at 23:51 +0200, Jasmin Dizdarevic wrote:Nope. Anyway, it'll be commited as one patch. So, it doesn't matter.
>
>
> I suppose you're talking about "git rebase". Do a "git
> rebase -i" to get
> the interactive mode. Let the first commit the way it
> is. Use squash for
> the other commits.
>
>
> Yep. This is what I was looking for!
> During rebase I made a mistake, so the two patches I sent today are
> now included in the big one. Is this undo-able?
>Yes, it is.
> > Generally, I wanna thank you for your patience and help - I
> know this
> > can be frustrating to answer questions, that are clear to
> you since a
> > long time :)
> >
>
>
> No problem :)
>
>
> I think it's ready for testing now. I've already checked it against
> 8.3.15, 8.4.8, 9.0.4 and 9.1 beta2. On our production database with
> 300k objects the search takes about 4-5 seconds. I think it's an
> acceptable value.
> It could be useful to add a hot key to the query from. I was playing
> around with extensions today and this would be ergonomically. What do
> you think?
>I don't see the link with extensions?
Sorry, you misunderstood me. Today I've checked create extension feature and had to uninstall manually a previous installed extension. So I used the search feature. Because I was working in query form, I always had to switch back to the main form and start the search dialog. So I thought, it would be great if I could call the search dialog from the query form.
> There should be a documentation in the patch, but as you can read a
> native speaker should maybe take care of it.
>There's not much documentation yet. It won't be hard to add a line or
two talking about this new dialog.
the file docs/en_US/search.html should be there. It's not implemented in the help window (F1-Help)
--
On Fri, 2011-06-17 at 00:23 +0200, Jasmin Dizdarevic wrote: > > > 2011/6/17 Guillaume Lelarge <guillaume@lelarge.info> > On Thu, 2011-06-16 at 23:51 +0200, Jasmin Dizdarevic wrote: > > > > > > I suppose you're talking about "git rebase". > Do a "git > > rebase -i" to get > > the interactive mode. Let the first commit > the way it > > is. Use squash for > > the other commits. > > > > > > Yep. This is what I was looking for! > > During rebase I made a mistake, so the two patches I sent > today are > > now included in the big one. Is this undo-able? > > > > > Nope. Anyway, it'll be commited as one patch. So, it doesn't > matter. > > > > Generally, I wanna thank you for your patience and > help - I > > know this > > > can be frustrating to answer questions, that are > clear to > > you since a > > > long time :) > > > > > > > > > No problem :) > > > > > > I think it's ready for testing now. I've already checked it > against > > 8.3.15, 8.4.8, 9.0.4 and 9.1 beta2. On our production > database with > > 300k objects the search takes about 4-5 seconds. I think > it's an > > acceptable value. > > > Yes, it is. > > > It could be useful to add a hot key to the query from. I > was playing > > around with extensions today and this would be > ergonomically. What do > > you think? > > > > > I don't see the link with extensions? > > > Sorry, you misunderstood me. Today I've checked create extension > feature and had to uninstall manually a previous installed extension. Why didn't you use DROP EXTENSION? > So I used the search feature. Because I was working in query form, I > always had to switch back to the main form and start the search > dialog. So I thought, it would be great if I could call the search > dialog from the query form. Nope, it doesn't belong to the query tool. It makes no sense to add it there. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Could somebody review the patch and maybe commit it?
Ty
---------- Forwarded message ----------
From: Jasmin Dizdarevic <jasmin.dizdarevic@gmail.com>
Date: 2011/6/16
Subject: Re: [pgadmin-hackers] Discussion - Search Objects
To: Guillaume Lelarge <guillaume@lelarge.info>
Cc: Dave Page <dpage@pgadmin.org>, pgadmin-hackers@postgresql.org
From: Jasmin Dizdarevic <jasmin.dizdarevic@gmail.com>
Date: 2011/6/16
Subject: Re: [pgadmin-hackers] Discussion - Search Objects
To: Guillaume Lelarge <guillaume@lelarge.info>
Cc: Dave Page <dpage@pgadmin.org>, pgadmin-hackers@postgresql.org
I suppose you're talking about "git rebase". Do a "git rebase -i" to get
the interactive mode. Let the first commit the way it is. Use squash for
the other commits.
Yep. This is what I was looking for!
During rebase I made a mistake, so the two patches I sent today are now included in the big one. Is this undo-able?
> Generally, I wanna thank you for your patience and help - I know thisNo problem :)
> can be frustrating to answer questions, that are clear to you since a
> long time :)
>
I think it's ready for testing now. I've already checked it against 8.3.15, 8.4.8, 9.0.4 and 9.1 beta2. On our production database with 300k objects the search takes about 4-5 seconds. I think it's an acceptable value. It could be useful to add a hot key to the query from. I was playing around with extensions today and this would be ergonomically. What do you think?
There should be a documentation in the patch, but as you can read a native speaker should maybe take care of it.
--
Attachment
On Sun, 2011-07-03 at 23:39 +0200, Jasmin Dizdarevic wrote: > Could somebody review the patch and maybe commit it? > I'll look into it tonight, unless someone beats me to it. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Mon, 2011-07-04 at 09:10 +0200, Guillaume Lelarge wrote: > On Sun, 2011-07-03 at 23:39 +0200, Jasmin Dizdarevic wrote: > > Could somebody review the patch and maybe commit it? > > > > I'll look into it tonight, unless someone beats me to it. > Seems mostly good to me, but I have too questions: * why do you use twice the Trim command in "browser->GetItemText(parent).BeforeFirst('(').Trim().Trim(false)"? * why is the search object menu only available to non maintenance DB? (((pgDatabase *)obj)->GetName() != ((pgDatabase *)obj)->GetServer()->GetDatabaseName()) -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
2011/7/4 Guillaume Lelarge <guillaume@lelarge.info>
On Mon, 2011-07-04 at 09:10 +0200, Guillaume Lelarge wrote:
> On Sun, 2011-07-03 at 23:39 +0200, Jasmin Dizdarevic wrote:
> > Could somebody review the patch and maybe commit it?
> >
>
> I'll look into it tonight, unless someone beats me to it.
>
Thank's for checking.
Seems mostly good to me, but I have too questions:
* why do you use twice the Trim command in
"browser->GetItemText(parent).BeforeFirst('(').Trim().Trim(false)"?
I've misunderstood the wx-docs.
* why is the search object menu only available to non maintenance DB?
(((pgDatabase *)obj)->GetName() != ((pgDatabase
*)obj)->GetServer()->GetDatabaseName())
copy-paste mistake
patch attached.
Attachment
On Mon, 2011-07-04 at 23:42 +0200, Jasmin Dizdarevic wrote: > > > 2011/7/4 Guillaume Lelarge <guillaume@lelarge.info> > On Mon, 2011-07-04 at 09:10 +0200, Guillaume Lelarge wrote: > > On Sun, 2011-07-03 at 23:39 +0200, Jasmin Dizdarevic wrote: > > > Could somebody review the patch and maybe commit it? > > > > > > > I'll look into it tonight, unless someone beats me to it. > > > > > Thank's for checking. > > > Seems mostly good to me, but I have too questions: > > * why do you use twice the Trim command in > > "browser->GetItemText(parent).BeforeFirst('(').Trim().Trim(false)"? > > > I've misunderstood the wx-docs. > > * why is the search object menu only available to non > maintenance DB? > (((pgDatabase *)obj)->GetName() != ((pgDatabase > *)obj)->GetServer()->GetDatabaseName()) > > > > copy-paste mistake > > > patch attached. > OK, I'm still working on it. I need the search.png image, can you send it to me? as I can't apply the patch, I can't extract the image. Thanks. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Sure.
2011/7/5 Guillaume Lelarge <guillaume@lelarge.info>
OK, I'm still working on it. I need the search.png image, can you sendOn Mon, 2011-07-04 at 23:42 +0200, Jasmin Dizdarevic wrote:
>
>
> 2011/7/4 Guillaume Lelarge <guillaume@lelarge.info>
> On Mon, 2011-07-04 at 09:10 +0200, Guillaume Lelarge wrote:
> > On Sun, 2011-07-03 at 23:39 +0200, Jasmin Dizdarevic wrote:
> > > Could somebody review the patch and maybe commit it?
> > >
> >
> > I'll look into it tonight, unless someone beats me to it.
> >
>
>
> Thank's for checking.
>
>
> Seems mostly good to me, but I have too questions:
>
> * why do you use twice the Trim command in
>
> "browser->GetItemText(parent).BeforeFirst('(').Trim().Trim(false)"?
>
>
> I've misunderstood the wx-docs.
>
> * why is the search object menu only available to non
> maintenance DB?
> (((pgDatabase *)obj)->GetName() != ((pgDatabase
> *)obj)->GetServer()->GetDatabaseName())
>
>
>
> copy-paste mistake
>
>
> patch attached.
>
it to me? as I can't apply the patch, I can't extract the image. Thanks.
--
Attachment
On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: > Sure. > Thanks. I'm almost done, and ready to apply :) -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Tue, Jul 5, 2011 at 8:35 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: >> Sure. >> > > Thanks. I'm almost done, and ready to apply :) Looks like that dialogue needs some tweaking (status bar, button positioning - actually, we don't normally have close buttons do we?). -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Tue, 2011-07-05 at 20:42 +0100, Dave Page wrote: > On Tue, Jul 5, 2011 at 8:35 PM, Guillaume Lelarge > <guillaume@lelarge.info> wrote: > > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: > >> Sure. > >> > > > > Thanks. I'm almost done, and ready to apply :) > > Looks like that dialogue needs some tweaking (status bar, button > positioning - actually, we don't normally have close buttons do we?). > Yeah, I worked on it, and I tweaked a few things in the source code. I also took care of the Visual Studio projects. We do have close button, or at least one (in the dlgFindReplace dialog). And it seems fine here. I don't see the point to remove it. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
On Tue, Jul 5, 2011 at 8:50 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Tue, 2011-07-05 at 20:42 +0100, Dave Page wrote: >> On Tue, Jul 5, 2011 at 8:35 PM, Guillaume Lelarge >> <guillaume@lelarge.info> wrote: >> > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: >> >> Sure. >> >> >> > >> > Thanks. I'm almost done, and ready to apply :) >> >> Looks like that dialogue needs some tweaking (status bar, button >> positioning - actually, we don't normally have close buttons do we?). >> > > Yeah, I worked on it, and I tweaked a few things in the source code. I > also took care of the Visual Studio projects. > > We do have close button, or at least one (in the dlgFindReplace dialog). > And it seems fine here. I don't see the point to remove it. :-) -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Tue, 2011-07-05 at 20:42 +0100, Dave Page wrote: > On Tue, Jul 5, 2011 at 8:35 PM, Guillaume Lelarge > <guillaume@lelarge.info> wrote: > > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: > >> Sure. > >> > > > > Thanks. I'm almost done, and ready to apply :) > > Looks like that dialogue needs some tweaking (status bar, button > positioning - actually, we don't normally have close buttons do we?). > > Kept the close button, but added the status bar and button positioning. Commited, and pushed. Thanks, Jasmin. -- Guillaume http://blog.guillaume.lelarge.info http://www.dalibo.com
Great that it's done. Thank you for beautification.
2011/7/5 Guillaume Lelarge <guillaume@lelarge.info>
On Tue, 2011-07-05 at 20:42 +0100, Dave Page wrote:> On Tue, Jul 5, 2011 at 8:35 PM, Guillaume LelargeKept the close button, but added the status bar and button positioning.
> <guillaume@lelarge.info> wrote:
> > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote:
> >> Sure.
> >>
> >
> > Thanks. I'm almost done, and ready to apply :)
>
> Looks like that dialogue needs some tweaking (status bar, button
> positioning - actually, we don't normally have close buttons do we?).
>
>
Commited, and pushed.
Thanks, Jasmin.
On Tue, Jul 5, 2011 at 10:06 PM, Guillaume Lelarge <guillaume@lelarge.info> wrote: > On Tue, 2011-07-05 at 20:42 +0100, Dave Page wrote: >> On Tue, Jul 5, 2011 at 8:35 PM, Guillaume Lelarge >> <guillaume@lelarge.info> wrote: >> > On Tue, 2011-07-05 at 21:33 +0200, Jasmin Dizdarevic wrote: >> >> Sure. >> >> >> > >> > Thanks. I'm almost done, and ready to apply :) >> >> Looks like that dialogue needs some tweaking (status bar, button >> positioning - actually, we don't normally have close buttons do we?). >> >> > > Kept the close button, but added the status bar and button positioning. > Commited, and pushed. > > Thanks, Jasmin. +1 - thanks indeed :-) -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company