From: <kna...@us...> - 2006-03-07 19:37:17
|
Revision: 1933 Author: knackeback Date: 2006-03-07 11:37:01 -0800 (Tue, 07 Mar 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=1933&view=rev Log Message: ----------- add templates directory to src directory Added Paths: ----------- trunk/tora/src/templates/ trunk/tora/src/templates/hints.tpl trunk/tora/src/templates/log4plsql.tpl trunk/tora/src/templates/sqlfunctions.tpl Removed Paths: ------------- trunk/tora/src/templates/hints.tpl trunk/tora/src/templates/log4plsql.tpl trunk/tora/src/templates/sqlfunctions.tpl Copied: trunk/tora/src/templates (from rev 1930, trunk/tora/templates) Deleted: trunk/tora/src/templates/hints.tpl =================================================================== --- trunk/tora/templates/hints.tpl 2006-03-07 19:28:48 UTC (rev 1930) +++ trunk/tora/src/templates/hints.tpl 2006-03-07 19:37:01 UTC (rev 1933) @@ -1,50 +0,0 @@ -Access Methods:= -Access Methods:/*+ AND_EQUAL(table index index[ index]) */=Specify an explicit access path for joining one or more tables where the source table is specified by <I>table</I> and the other indexes specifies an index to use for joining adjacent tables. Any number of indexes can be specified. -Access Methods:/*+ CLUSTER(table) */=Instruct Oracle to use a cluster scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query. -Access Methods:/*+ FULL(table) */=Instruct Oracle to use a full tablescan when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. -Access Methods:/*+ HASH(table) */=Instruct Oracle to use a hash scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query. -Access Methods:/*+ INDEX(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. -Access Methods:/*+ INDEX_ASC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in ascending order in a range scan. Since this is the default behaviour of Oracle this hint normally doesn't specify anything more than the <B>INDEX</B> hint. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. -Access Methods:/*+ INDEX_COMBINE(table[ index]) */=Instruct Oracle to use a bitmap index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. -Access Methods:/*+ INDEX_DESC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in descending order in a range scan. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. -Access Methods:/*+ INDEX_FFS(table[ index]) */=Instruct Oracle to use a fast full indexscan when accessing the table named <I>table</I> insteaf of doing a full tablespace. The tablename can also indicate an alias in the query. -Access Methods:/*+ INDEX_JOIN(table[ index]) */=Instruct Oracle to use an index join as an access path in a join. Indexes used are optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. -Access Methods:/*+ NOREWRITE */=Specify the optimizer to never use a materialized. -Access Methods:/*+ NO_EXPAND */=Never transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement. -Access Methods:/*+ NO_INDEX(table[ index]) */=Instruct Oracle not to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. Any index specified tells the optimizer not to use that index, if no index is specified no indexes at all are considered for access to the table. -Access Methods:/*+ REWRITE(view) */=Specify the optimizer to always use a materialized view speicified by <I>view</I>. Several views can be specified. -Access Methods:/*+ ROWID(table) */=Instruct Oracle to use a rowid when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. -Access Methods:/*+ USE_CONCAT */=Instruct the optimizer to always transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement. -Additional Hints:/*+ CACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the most recent end of the LRU. -Additional Hints:/*+ MERGE(view) */=Perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement. This is only done explicitly since otherwise the optimizer will use another approach to perform the query. -Additional Hints:/*+ NOCACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the oldest end of the LRU meaning that it will be flushed from memory first after additional disc accesses. -Additional Hints:/*+ NO_MERGE(view) */=Don't perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement. -Additional Hints:/*+ NO_PUSH_PRED(view) */=Don't push a join predicate into the view specified by <I>view</I>. -Additional Hints:/*+ NO_UNNEST */=Don't unnest nested subqueries into the main body of the query. -Additional Hints:/*+ ORDERED_PREDICATES */=The <B>ORDERED_PREDICATES</B> hint forces the optimizer to preserve the order of predicate evaluation, except for predicates used as index keys.\n -Additional Hints:/*+ PUSH_PRED(view) */=Use the PUSH_PRED hint to force pushing of a join predicate into the view specified by <I>view</I>. -Additional Hints:/*+ PUSH_SUBQ */=Force unnested subqueries to be performed first in the execution of the query, -Additional Hints:/*+ STAR_TRANSFORMATION */=The <B>STAR_TRANSFORMATION</B> hint makes the optimizer use the best plan in which star transformation has been used.\n -Additional Hints:/*+ UNNEST */=If specified nested subqueries are unnested into the main body of the query. -Join Operators:/*+ DRIVING_SITE(table) */=This hint can be used to force the optimizer to choose a specific driving site to perform the query in a distributed server specified by <I>table</I>. -Join Operators:/*+ HASH_AJ */=Use a anti hash join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n (SELECT /*+ HASH_AJ */ table_name\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> -Join Operators:/*+ HASH_SJ */=Use a hash semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n (SELECT /*+ HASH_SJ */ 'X'\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> -Join Operators:/*+ LEADING(table) */=This hint can be used to force the optimizer to choose a specific leading table in a joined statement specified by <I>table</I> as a basis to perform the rest of the optimizations. -Join Operators:/*+ MERGE_AJ */=Use a anti merge join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n (SELECT /*+ MERGE_AJ */ table_name\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> -Join Operators:/*+ MERGE_SJ */=Use a merge semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n (SELECT /*+ MERGE_SJ */ 'X'\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> -Join Operators:/*+ USE_HASH(table[ table]) */=Specify to the optimizer to join the tables using a row source with a hash join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. -Join Operators:/*+ USE_MERGE(table[ table]) */=Specify to the optimizer to join the tables using a row source with a sort-merge join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. -Join Operators:/*+ USE_NL(table[ table]) */=Specify to the optimizer to join the tables using a nested loop join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. -Join Order:/*+ ORDERED */=Indicate to the optimizer that the join order should be the same as the tables are specified in the <B>FROM</B> clause of the select. -Join Order:/*+ STAR */=Indicate to the optimizer to use a star join to perform the query. This means that the query should start with the largest table, then move to the second largest etc... -Optimizer Goals:/*+ ALL_ROWS */=Instruct optimizer to optimize for resource consumption. This means that it should try to finish the entire query as soon as posible instead of trying to get a part of the result as soon as posible. -Optimizer Goals:/*+ CHOOSE */=Instruct the optimizer to use a <B>CHOOSE</B> approach which means to use <B>COST</B> if analyzed statistics is available and otherwise use <B>RULE</B>. -Optimizer Goals:/*+ FIRST_ROWS */=Instruct the optimizer to optimize for response time of first row in result. -Optimizer Goals:/*+ RULE */=Use a rulebased approach to optimization. -Parallel Execution:/*+ APPEND */=When inserting data into a table always add data to the end of the table instead of checking for free space in the table. This is default when using parallel queries but can be overridden using the <B>NOAPPEND</B> hint. -Parallel Execution:/*+ NOAPPEND */=Override append mode and start looking for free allocated space already in the table. -Parallel Execution:/*+ NOPARALLEL(table) */=Don't use parallel queries to read the table specified by <I>table</I>. -Parallel Execution:/*+ NOPARALLEL_INDEX(table index) */=Don't use parallel execution when accessing the index specified by <I>table</I> and <I>index</I>. You can specify several indexes by separating them with <B>,</B>. -Parallel Execution:/*+ PARALLEL(table[,degree[,split]]) */=Specify how to split a query over parallel queries for a table specified by <I>table</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances. -Parallel Execution:/*+ PARALLEL_INDEX(table index degree split) */=Specify how to split an access to an index over parallel queries for a table specified by <I>table</I> and <I>index</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances. Several indexes, degrees and split can specified by separating them by <B>,</B>. -Parallel Execution:/*+ PQ_DISTRIBUTE(table,outer,inner) */=See <B>using optimizer hints</B> in <B>Designing and Tuning for Performance</B> available from Oracle for more information about this hint. Copied: trunk/tora/src/templates/hints.tpl (from rev 1932, trunk/tora/templates/hints.tpl) =================================================================== --- trunk/tora/src/templates/hints.tpl (rev 0) +++ trunk/tora/src/templates/hints.tpl 2006-03-07 19:37:01 UTC (rev 1933) @@ -0,0 +1,50 @@ +Access Methods:= +Access Methods:/*+ AND_EQUAL(table index index[ index]) */=Specify an explicit access path for joining one or more tables where the source table is specified by <I>table</I> and the other indexes specifies an index to use for joining adjacent tables. Any number of indexes can be specified. +Access Methods:/*+ CLUSTER(table) */=Instruct Oracle to use a cluster scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query. +Access Methods:/*+ FULL(table) */=Instruct Oracle to use a full tablescan when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. +Access Methods:/*+ HASH(table) */=Instruct Oracle to use a hash scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query. +Access Methods:/*+ INDEX(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. +Access Methods:/*+ INDEX_ASC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in ascending order in a range scan. Since this is the default behaviour of Oracle this hint normally doesn't specify anything more than the <B>INDEX</B> hint. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. +Access Methods:/*+ INDEX_COMBINE(table[ index]) */=Instruct Oracle to use a bitmap index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. +Access Methods:/*+ INDEX_DESC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in descending order in a range scan. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. +Access Methods:/*+ INDEX_FFS(table[ index]) */=Instruct Oracle to use a fast full indexscan when accessing the table named <I>table</I> insteaf of doing a full tablespace. The tablename can also indicate an alias in the query. +Access Methods:/*+ INDEX_JOIN(table[ index]) */=Instruct Oracle to use an index join as an access path in a join. Indexes used are optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. +Access Methods:/*+ NOREWRITE */=Specify the optimizer to never use a materialized. +Access Methods:/*+ NO_EXPAND */=Never transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement. +Access Methods:/*+ NO_INDEX(table[ index]) */=Instruct Oracle not to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. Any index specified tells the optimizer not to use that index, if no index is specified no indexes at all are considered for access to the table. +Access Methods:/*+ REWRITE(view) */=Specify the optimizer to always use a materialized view speicified by <I>view</I>. Several views can be specified. +Access Methods:/*+ ROWID(table) */=Instruct Oracle to use a rowid when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. +Access Methods:/*+ USE_CONCAT */=Instruct the optimizer to always transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement. +Additional Hints:/*+ CACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the most recent end of the LRU. +Additional Hints:/*+ MERGE(view) */=Perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement. This is only done explicitly since otherwise the optimizer will use another approach to perform the query. +Additional Hints:/*+ NOCACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the oldest end of the LRU meaning that it will be flushed from memory first after additional disc accesses. +Additional Hints:/*+ NO_MERGE(view) */=Don't perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement. +Additional Hints:/*+ NO_PUSH_PRED(view) */=Don't push a join predicate into the view specified by <I>view</I>. +Additional Hints:/*+ NO_UNNEST */=Don't unnest nested subqueries into the main body of the query. +Additional Hints:/*+ ORDERED_PREDICATES */=The <B>ORDERED_PREDICATES</B> hint forces the optimizer to preserve the order of predicate evaluation, except for predicates used as index keys.\n +Additional Hints:/*+ PUSH_PRED(view) */=Use the PUSH_PRED hint to force pushing of a join predicate into the view specified by <I>view</I>. +Additional Hints:/*+ PUSH_SUBQ */=Force unnested subqueries to be performed first in the execution of the query, +Additional Hints:/*+ STAR_TRANSFORMATION */=The <B>STAR_TRANSFORMATION</B> hint makes the optimizer use the best plan in which star transformation has been used.\n +Additional Hints:/*+ UNNEST */=If specified nested subqueries are unnested into the main body of the query. +Join Operators:/*+ DRIVING_SITE(table) */=This hint can be used to force the optimizer to choose a specific driving site to perform the query in a distributed server specified by <I>table</I>. +Join Operators:/*+ HASH_AJ */=Use a anti hash join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n (SELECT /*+ HASH_AJ */ table_name\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> +Join Operators:/*+ HASH_SJ */=Use a hash semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n (SELECT /*+ HASH_SJ */ 'X'\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> +Join Operators:/*+ LEADING(table) */=This hint can be used to force the optimizer to choose a specific leading table in a joined statement specified by <I>table</I> as a basis to perform the rest of the optimizations. +Join Operators:/*+ MERGE_AJ */=Use a anti merge join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n (SELECT /*+ MERGE_AJ */ table_name\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> +Join Operators:/*+ MERGE_SJ */=Use a merge semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n (SELECT /*+ MERGE_SJ */ 'X'\n FROM user_indexes b\n WHERE a.table_name = b.table_name);\n</PRE> +Join Operators:/*+ USE_HASH(table[ table]) */=Specify to the optimizer to join the tables using a row source with a hash join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. +Join Operators:/*+ USE_MERGE(table[ table]) */=Specify to the optimizer to join the tables using a row source with a sort-merge join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. +Join Operators:/*+ USE_NL(table[ table]) */=Specify to the optimizer to join the tables using a nested loop join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified. +Join Order:/*+ ORDERED */=Indicate to the optimizer that the join order should be the same as the tables are specified in the <B>FROM</B> clause of the select. +Join Order:/*+ STAR */=Indicate to the optimizer to use a star join to perform the query. This means that the query should start with the largest table, then move to the second largest etc... +Optimizer Goals:/*+ ALL_ROWS */=Instruct optimizer to optimize for resource consumption. This means that it should try to finish the entire query as soon as posible instead of trying to get a part of the result as soon as posible. +Optimizer Goals:/*+ CHOOSE */=Instruct the optimizer to use a <B>CHOOSE</B> approach which means to use <B>COST</B> if analyzed statistics is available and otherwise use <B>RULE</B>. +Optimizer Goals:/*+ FIRST_ROWS */=Instruct the optimizer to optimize for response time of first row in result. +Optimizer Goals:/*+ RULE */=Use a rulebased approach to optimization. +Parallel Execution:/*+ APPEND */=When inserting data into a table always add data to the end of the table instead of checking for free space in the table. This is default when using parallel queries but can be overridden using the <B>NOAPPEND</B> hint. +Parallel Execution:/*+ NOAPPEND */=Override append mode and start looking for free allocated space already in the table. +Parallel Execution:/*+ NOPARALLEL(table) */=Don't use parallel queries to read the table specified by <I>table</I>. +Parallel Execution:/*+ NOPARALLEL_INDEX(table index) */=Don't use parallel execution when accessing the index specified by <I>table</I> and <I>index</I>. You can specify several indexes by separating them with <B>,</B>. +Parallel Execution:/*+ PARALLEL(table[,degree[,split]]) */=Specify how to split a query over parallel queries for a table specified by <I>table</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances. +Parallel Execution:/*+ PARALLEL_INDEX(table index degree split) */=Specify how to split an access to an index over parallel queries for a table specified by <I>table</I> and <I>index</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances. Several indexes, degrees and split can specified by separating them by <B>,</B>. +Parallel Execution:/*+ PQ_DISTRIBUTE(table,outer,inner) */=See <B>using optimizer hints</B> in <B>Designing and Tuning for Performance</B> available from Oracle for more information about this hint. Deleted: trunk/tora/src/templates/log4plsql.tpl =================================================================== --- trunk/tora/templates/log4plsql.tpl 2006-03-07 19:28:48 UTC (rev 1930) +++ trunk/tora/src/templates/log4plsql.tpl 2006-03-07 19:37:01 UTC (rev 1933) @@ -1,34 +0,0 @@ -1-loggin:= <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.1-initialisation:=<b>Description: </b> It is possible to initialize a log context with 1, 2 or 3 parameters. <br><br>1. The first section (use it for log a code name)<br>2. A specific log level for this context (use it when you want debug a specific part of you application )<br>3. A Boolean: TRUE for use a "Log out transactional" features FALSE if not.<br><br>If context is not initialized:<br>\xB7 Section: dynamic pl/plsql call stack<br>\xB7 Level: ERROR<br>\xB7 Log in a transaction <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.1-initialisation:plog.init ;=<b>Description: </b> A standard<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ; \n<BR><BR> <B>prototype</B>:\nfunction init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN) RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.1-initialisation:plog.init(pSECTION);=<b>Description: </b> Without default parameter<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection'); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL);=<b>Description: </b> For debug mode<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL, TRUE|FALSE);=<b>Description: </b> for "Log out transactional" features<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG, FALSE);\n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:=<b>Description: </b> <b>LOG4PLSQL log level</b><br><br><br>plog.error('Text'); LERROR The ERROR level designates error events that might still allow the application to continue running.<br>plog.warn ('Text'); LWARN The WARN level designates potentially harmful situations<br>plog.info ('Text'); LINFO The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.<br>plog.debug('Text'); LDEBUG The DEBUG Level designates fine-grained informational events that are most useful to debug an application.<br>Note: error>warn>info>debug<br><br><br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.error('Log Text');=<b>Description: </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error('Text');</b> \n<BR><B>prototype</B>:procedure error( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.error(pCTX, 'Log Text');=<b>Description: </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error(pCTX, 'Text');</b> \n<BR><B>prototype</B>:procedure error( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.warn('Log Text');=<b>Description: </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn('Text');\n<BR><B>prototype</B>:procedure warn( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.warn(pCTX, 'Log Text');=<b>Description: </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn(pCTX, 'Text');\n<BR><B>prototype</B>:procedure warn( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.info('Log Text');=<b>Description: </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info('Text');\n<BR><B>prototype</B>:procedure info( pTEXTE IN TLOG.LTEXTE%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.info(pCTX, 'Log Text');=<b>Description: </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info(pCTX, 'Text');\n<BR><B>prototype</B>:procedure info( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.debug('Log Text');=<b>Description: </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug('Text');\n<BR><B>prototype</B>:procedure debug( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.2-use:plog.debug(pCTX, 'Log Text');=<b>Description: </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug(pCTX, 'Text');\n<BR><B>prototype</B>:procedure debug( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Level Management:=It is possible to dynamically increase with setLevel the level of log. A call to setLevel without parameter repositions the levels has that specified in the package.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Level Management:plog.getLevel(pCTX);=<b>Description: </b> return a level.\n<BR><b>Exemple:</b> PLOG.getLevel(pCTX);\n<BR><B>prototype</B>:function getLevel( pCTX IN OUT NOCOPY LOG_CTX);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Level Management:plog.setLevel(pCTX, PLOG.LLEVEL);=<b>Description: </b> increase a current level, it nice for debug a code part.\n<BR><b>Exemple:</b> PLOG.setLevel (pCTX, PLOG.LDEBUG);\n<BR><B>prototype</B>:procedure setLevel( pCTX IN OUT NOCOPY LOG_CTX, pLEVEL IN TLOG.LLEVEL%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Section Management:=By default a section is a PL/SQL call stack. By is possible to specify a hierarchical log node.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Section Management:plog.getSection(pCTX);=<b>Description: </b> Retrun a section string.\n<BR><b>Exemple:</b> PLOG.getSection(pCTX);\n<BR><B>prototype</B>:function getSection( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Section Management:plog.setBeginSection(pCTX, 'NewSubSectionName');=<b>Description:</b> for create a new node in hierarchy.\n<BR><b>Exemple:</b> PLOG.SetBeginSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setBeginSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Section Management:plog.setEndSection(pCTX, 'EndEDSubSectionName')=<b>Description: </b> for close a node in hierarchy.\n<BR><b>Exemple:</b> PLOG.SetEndSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setEndSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Transaction Management:=Log in transaction have some problems:<BR>- If you rollback a transaction you log message is rollback in same time<BR>- If you code is very long operation isn't possible to view a progression.<BR><BR>LOG4PLSQL have features that bypass a transactional problem. This features use a DBMS_PIPE oracle package for logging a message.<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.getTransactionMode(pCTX);=<b>Description: </b> return a Boolean TRUE if your use "Log out transactional" features FALSE if not. \n<BR><b>Exemple:</b> PLOG.getTransactionMode(pCTX);\n<BR><B>prototype</B>:function getTransactionMode( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.setTransactionMode(pCTX, TRUE|FALSE);=<b>Description: </b> For set transactional mode (TRUE: Log out transactional, FALSE: Log in transaction).\n<BR><b>Exemple:</b> PLOG.setTransactionMode(pCTX,FALSE);\n<BR><B>prototype</B>:procedure setTransactionMode( pCTX IN OUT NOCOPY LOG_CTX, inTransaction IN boolean);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:background process:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:background process:plog.background_Log;=<b>Description: </b> Start a pl/sql background_Log.\n<BR><b>Exemple:</b> exec plog.background_Log;\n<BR><B>prototype</B>:procedure background_Log( timeout IN INTEGER);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:background process:plog.background_Log_stop;=<b>Description: </b> Stop a pl/sql backgroud_Log.\n<BR><b>Exemple:</b> exec PLOG.background_Log_stop;\n<BR><B>prototype</B>:procedure background_Log_stop;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:purge:=Clean database log table<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:purge:plog.purge=<b>Description: </b> \n<BR><b>Exemple:</b> PLOG.purge ;\n<BR><B>prototype</B>:procedure purge\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:purge:plog.purge(pCTX );=<b>Description: </b> \n<BR><b>Exemple:</b> PLOG.purge (pCTX);\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> -2-administration:purge:plog.purge(pCTX, TheDate );=<b>Description: </b> delete a last week log \n<BR><b>Exemple:</b> PLOG.purge (pCTX, sysdate - 7 );\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX, theDate DATE);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> Copied: trunk/tora/src/templates/log4plsql.tpl (from rev 1932, trunk/tora/templates/log4plsql.tpl) =================================================================== --- trunk/tora/src/templates/log4plsql.tpl (rev 0) +++ trunk/tora/src/templates/log4plsql.tpl 2006-03-07 19:37:01 UTC (rev 1933) @@ -0,0 +1,34 @@ +1-loggin:= <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.1-initialisation:=<b>Description: </b> It is possible to initialize a log context with 1, 2 or 3 parameters. <br><br>1. The first section (use it for log a code name)<br>2. A specific log level for this context (use it when you want debug a specific part of you application )<br>3. A Boolean: TRUE for use a "Log out transactional" features FALSE if not.<br><br>If context is not initialized:<br>\xB7 Section: dynamic pl/plsql call stack<br>\xB7 Level: ERROR<br>\xB7 Log in a transaction <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.1-initialisation:plog.init ;=<b>Description: </b> A standard<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ; \n<BR><BR> <B>prototype</B>:\nfunction init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN) RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.1-initialisation:plog.init(pSECTION);=<b>Description: </b> Without default parameter<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection'); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL);=<b>Description: </b> For debug mode<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL, TRUE|FALSE);=<b>Description: </b> for "Log out transactional" features<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG, FALSE);\n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:=<b>Description: </b> <b>LOG4PLSQL log level</b><br><br><br>plog.error('Text'); LERROR The ERROR level designates error events that might still allow the application to continue running.<br>plog.warn ('Text'); LWARN The WARN level designates potentially harmful situations<br>plog.info ('Text'); LINFO The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.<br>plog.debug('Text'); LDEBUG The DEBUG Level designates fine-grained informational events that are most useful to debug an application.<br>Note: error>warn>info>debug<br><br><br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.error('Log Text');=<b>Description: </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error('Text');</b> \n<BR><B>prototype</B>:procedure error( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.error(pCTX, 'Log Text');=<b>Description: </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error(pCTX, 'Text');</b> \n<BR><B>prototype</B>:procedure error( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.warn('Log Text');=<b>Description: </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn('Text');\n<BR><B>prototype</B>:procedure warn( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.warn(pCTX, 'Log Text');=<b>Description: </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn(pCTX, 'Text');\n<BR><B>prototype</B>:procedure warn( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.info('Log Text');=<b>Description: </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info('Text');\n<BR><B>prototype</B>:procedure info( pTEXTE IN TLOG.LTEXTE%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.info(pCTX, 'Log Text');=<b>Description: </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info(pCTX, 'Text');\n<BR><B>prototype</B>:procedure info( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.debug('Log Text');=<b>Description: </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug('Text');\n<BR><B>prototype</B>:procedure debug( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.2-use:plog.debug(pCTX, 'Log Text');=<b>Description: </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug(pCTX, 'Text');\n<BR><B>prototype</B>:procedure debug( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Level Management:=It is possible to dynamically increase with setLevel the level of log. A call to setLevel without parameter repositions the levels has that specified in the package.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Level Management:plog.getLevel(pCTX);=<b>Description: </b> return a level.\n<BR><b>Exemple:</b> PLOG.getLevel(pCTX);\n<BR><B>prototype</B>:function getLevel( pCTX IN OUT NOCOPY LOG_CTX);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Level Management:plog.setLevel(pCTX, PLOG.LLEVEL);=<b>Description: </b> increase a current level, it nice for debug a code part.\n<BR><b>Exemple:</b> PLOG.setLevel (pCTX, PLOG.LDEBUG);\n<BR><B>prototype</B>:procedure setLevel( pCTX IN OUT NOCOPY LOG_CTX, pLEVEL IN TLOG.LLEVEL%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Section Management:=By default a section is a PL/SQL call stack. By is possible to specify a hierarchical log node.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Section Management:plog.getSection(pCTX);=<b>Description: </b> Retrun a section string.\n<BR><b>Exemple:</b> PLOG.getSection(pCTX);\n<BR><B>prototype</B>:function getSection( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Section Management:plog.setBeginSection(pCTX, 'NewSubSectionName');=<b>Description:</b> for create a new node in hierarchy.\n<BR><b>Exemple:</b> PLOG.SetBeginSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setBeginSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Section Management:plog.setEndSection(pCTX, 'EndEDSubSectionName')=<b>Description: </b> for close a node in hierarchy.\n<BR><b>Exemple:</b> PLOG.SetEndSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setEndSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Transaction Management:=Log in transaction have some problems:<BR>- If you rollback a transaction you log message is rollback in same time<BR>- If you code is very long operation isn't possible to view a progression.<BR><BR>LOG4PLSQL have features that bypass a transactional problem. This features use a DBMS_PIPE oracle package for logging a message.<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.getTransactionMode(pCTX);=<b>Description: </b> return a Boolean TRUE if your use "Log out transactional" features FALSE if not. \n<BR><b>Exemple:</b> PLOG.getTransactionMode(pCTX);\n<BR><B>prototype</B>:function getTransactionMode( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.setTransactionMode(pCTX, TRUE|FALSE);=<b>Description: </b> For set transactional mode (TRUE: Log out transactional, FALSE: Log in transaction).\n<BR><b>Exemple:</b> PLOG.setTransactionMode(pCTX,FALSE);\n<BR><B>prototype</B>:procedure setTransactionMode( pCTX IN OUT NOCOPY LOG_CTX, inTransaction IN boolean);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:background process:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:background process:plog.background_Log;=<b>Description: </b> Start a pl/sql background_Log.\n<BR><b>Exemple:</b> exec plog.background_Log;\n<BR><B>prototype</B>:procedure background_Log( timeout IN INTEGER);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:background process:plog.background_Log_stop;=<b>Description: </b> Stop a pl/sql backgroud_Log.\n<BR><b>Exemple:</b> exec PLOG.background_Log_stop;\n<BR><B>prototype</B>:procedure background_Log_stop;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:purge:=Clean database log table<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:purge:plog.purge=<b>Description: </b> \n<BR><b>Exemple:</b> PLOG.purge ;\n<BR><B>prototype</B>:procedure purge\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:purge:plog.purge(pCTX );=<b>Description: </b> \n<BR><b>Exemple:</b> PLOG.purge (pCTX);\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> +2-administration:purge:plog.purge(pCTX, TheDate );=<b>Description: </b> delete a last week log \n<BR><b>Exemple:</b> PLOG.purge (pCTX, sysdate - 7 );\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX, theDate DATE);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> Deleted: trunk/tora/src/templates/sqlfunctions.tpl =================================================================== --- trunk/tora/templates/sqlfunctions.tpl 2006-03-07 19:28:48 UTC (rev 1930) +++ trunk/tora/src/templates/sqlfunctions.tpl 2006-03-07 19:37:01 UTC (rev 1933) @@ -1,148 +0,0 @@ -Aggregate Functions:COVAR_POP ( expr1 , expr2 )=Get the population covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / n\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n<B>Example:</B>\n<PRE>\nSELECT itemid,COVAR_POP(amount,profit) FROM saleitems GROUP BY itemid;\n\n ITEMID COVAR_POP(AMOUNT,PROFIT)\n---------- ------------------------\n 1 84000\n 2 5062.5\n 3 325000\n 4 4111.11111\n</PRE> -Aggregate Functions:COVAR_SAMP ( expr1 , expr2 )=Get the sample covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / (n - 1)\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n<B>Example:</B>\n<PRE>\nSELECT itemid,COVAR_SAMP(amount,profit) FROM saleitems GROUP BY itemid;\n\n ITEMID COVAR_POP(AMOUNT,PROFIT)\n---------- ------------------------\n 1 84000\n 2 5062.5\n 3 325000\n 4 4111.11111\n</PRE> -Aggregate Functions:GROUPING ( expr )=This function is only usefull in select statements with a group by extension such as <CODE>ROLLUP</CODE>\nor <CODE>CUBE</CODE>. These function generate extra rows with nulls which is the group by aggregate.\nThis function can be use to distinguish these rows from rows that are actually null.<P>\nThe <I>expr</I> must match a group by expression. If the <I>expr</I> is a null that represent an\naggregate row this function returns 1, otherwise it returns 0.<P>\n<B>Example:</B>\n<PRE>\nSELECT DECODE(GROUPING(itemid),1,'Total',itemid) item,\n SUM(amount) amount,\n SUM(profit) profit\n FROM saleitems\n GROUP BY ROLLUP (itemid);\n\nITEM AMOUNT PROFIT\n----- ------ ------\n1 12000 2200\n2 2760 195\n3 10000 2200\n4 1300 170\nTotal 26060 4765\n</PRE> -Aggregate Functions:MAX( expr )=Get the largest value of <I>expr</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT MAX(amount) FROM saleitems;\n\nMAX(AMOUNT)\n-----------\n 4000\n</PRE> -Aggregate Functions:MIN ( expr )=Get the smallest value of <I>expr</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT MIN(amount) FROM saleitems;\n\nMIN(AMOUNT)\n-----------\n 240\n</PRE> -Aggregate Functions:REGR_AVGX ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_AVGX ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_AVGX(SYSDATE-SALEDATE,AMOUNT)\n---------- ----------------------------------\n 0 1280\n 8 500\n 10 300\n 13 3333.33333\n 15 1360\n 73 1000\n 74 1400\n</PRE> -Aggregate Functions:REGR_AVGY ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_AVGY ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_AVGY(SYSDATE-SALEDATE,AMOUNT)\n---------- ----------------------------------\n 0 1.0277662\n 8 60.0277662\n 10 71.0277662\n 13 93.3610995\n 15 107.027766\n 73 514.027766\n 74 518.027766\n</PRE> -Aggregate Functions:REGR_COUNT ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. This function then returns the number of valid pairs left.<P>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_COUNT ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_COUNT(SYSDATE-SALEDATE,AMOUNT)\n---------- -----------------------------------\n 0 3\n 8 2\n 10 1\n 13 3\n 15 2\n 73 1\n 74 3\n</PRE> -Aggregate Functions:REGR_INTERCEPT ( expr1 , expr2 )=Calculates the y-intercept of the regression line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr1 ) - REGR_SLOPE ( expr1 , expr2 ) * AVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_INTERCEPT ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_INTERCEPT(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------------\n 0 1.02846065\n 8 60.0284606\n 10\n 13 100.028461\n 15 107.028461\n 73\n 74 518.028461\n</PRE> -Aggregate Functions:REGR_R2 ( expr1 , expr2 )=Represent the determination or goodness of fit for the regression. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. The value of the functions <CODE>VAR_POP ( expr1 )</CODE> and <CODE>VAR_POP ( expr2 )</CODE> is evaluated after null pairs are removed. The returned value is then one of the following:\n<UL>\n<LI>null if <CODE>VAR_POP ( expr2 )</CODE> = 0.\n<LI>1 if <CODE>VAR_POP ( expr1 )</CODE> = 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n<LI><CODE>POWER ( CORR ( expr1 , expr2 ) , 2 )</CODE> if <CODE>VAR_POP ( expr1 )</CODE> > 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n</UL>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_R2 ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_R2(SYSDATE-SALEDATE,AMOUNT)\n---------- --------------------------------\n 0 1.4215E-39\n 8 2.8571E-38\n 10\n 13 .25\n 15 1\n 73\n 74 0\n</PRE> -Aggregate Functions:REGR_SLOPE ( expr1 , expr2 )=This function returns the slope of the line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nCOVAR_POP ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_SLOPE ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_SLOPE(SYSDATE-SALEDATE,AMOUNT)\n---------- -----------------------------------\n 0 -3.554E-42\n 8 0\n 10\n 13 -.002\n 15 0\n 73\n 74 0\n</PRE> -Aggregate Functions:REGR_SXX ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n REGR_SXX ( SYSDATE - saledate , amount )\n FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n WEEK REGR_SXX(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------\n 0 4502400\n 8 20000\n 10 0\n 13 666666.667\n 15 819200\n 73 0\n 74 560000\n</PRE... [truncated message content] |
From: <da...@us...> - 2006-03-09 15:35:10
|
Revision: 1963 Author: dandfra Date: 2006-03-09 07:34:44 -0800 (Thu, 09 Mar 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=1963&view=rev Log Message: ----------- Fixed little bug with autoindent Modified Paths: -------------- trunk/tora/src/toeditextensions.cpp trunk/tora/src/tomarkedtext.cpp trunk/tora/src/tomarkedtext.h Modified: trunk/tora/src/toeditextensions.cpp =================================================================== --- trunk/tora/src/toeditextensions.cpp 2006-03-08 13:04:50 UTC (rev 1962) +++ trunk/tora/src/toeditextensions.cpp 2006-03-09 15:34:44 UTC (rev 1963) @@ -136,6 +136,7 @@ if (current && Current == current) receivedFocus(NULL); } + } void toEditExtensions::gotoLine() @@ -177,7 +178,7 @@ res += t.mid(chars); } - Current->setSelection(line1, 0, line2, Current->text(line2).length()); + Current->setSelection(line1, 0, line2, Current->text(line2).length()-1); Current->insert(res, true); } } Modified: trunk/tora/src/tomarkedtext.cpp =================================================================== --- trunk/tora/src/tomarkedtext.cpp 2006-03-08 13:04:50 UTC (rev 1962) +++ trunk/tora/src/tomarkedtext.cpp 2006-03-09 15:34:44 UTC (rev 1963) @@ -88,6 +88,8 @@ // sets default tab width setTabWidth(defaultTabWidth()); } +toMarkedText::~toMarkedText(){ +} void toMarkedText::setCopyAvailable(bool yes){ setEdit(); Modified: trunk/tora/src/tomarkedtext.h =================================================================== --- trunk/tora/src/tomarkedtext.h 2006-03-08 13:04:50 UTC (rev 1962) +++ trunk/tora/src/tomarkedtext.h 2006-03-09 15:34:44 UTC (rev 1963) @@ -103,6 +103,8 @@ */ toMarkedText(QWidget *parent, const char *name = NULL); + virtual ~toMarkedText(); + /** * Returns the default tab width. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nn...@us...> - 2006-03-14 23:24:03
|
Revision: 1980 Author: nneul Date: 2006-03-14 15:23:56 -0800 (Tue, 14 Mar 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=1980&view=rev Log Message: ----------- Add svn:ignore entries for a bunch of the dirs for generated files Property Changed: ---------------- trunk/tora/config/ trunk/tora/doc/ trunk/tora/ext/ trunk/tora/src/ trunk/tora/utils/ trunk/tora/utils/chex/ Property changes on: trunk/tora/config ___________________________________________________________________ Name: svn:ignore + depcomp missing config.guess ltmain.sh config.sub install-sh Property changes on: trunk/tora/doc ___________________________________________________________________ Name: svn:ignore + Makefile.in Makefile Property changes on: trunk/tora/ext ___________________________________________________________________ Name: svn:ignore + Makefile.in Makefile Property changes on: trunk/tora/src ___________________________________________________________________ Name: svn:ignore + .deps .libs Makefile Makefile.in *.moc qtlegacy toaboutui.cpp toaboutui.h tobrowserconstraintui.cpp tobrowserconstraintui.h tobrowserfilterui.cpp tobrowserfilterui.h tobrowserindexui.cpp tobrowserindexui.h tobrowsertableui.cpp tobrowsertableui.h tochartalarmui.cpp tochartalarmui.h tochartsetupui.cpp tochartsetupui.h todatabasesettingui.cpp todatabasesettingui.h todebugchangeui.cpp todebugchangeui.h todebugwatch.cpp todebugwatch.h toeditextensiongotoui.cpp toeditextensiongotoui.h toeditextensionsetupui.cpp toeditextensionsetupui.h toglobalsettingui.cpp toglobalsettingui.h tohelpaddfileui.cpp tohelpaddfileui.h tohelpsetupui.cpp tohelpsetupui.h tolinechartsetupui.cpp tolinechartsetupui.h tomessageui.cpp tomessageui.h tonewconnectionui.cpp tonewconnectionui.h tooraclesettingui.cpp tooraclesettingui.h topreferencesui.cpp topreferencesui.h tora tora_fr.qm tora_it.qm tora_se.qm tora_toad.h tora_toad.qm toresultcontentfilterui.cpp toresultcontentfilterui.h toresultlistformatui.cpp toresultlistformatui.h torollbackdialogui.cpp torollbackdialogui.h toscriptui.cpp toscriptui.h tosearchreplaceui.cpp tosearchreplaceui.h tosecurityquotaui.cpp tosecurityquotaui.h tosecurityroleui.cpp tosecurityroleui.h tosecurityuserui.cpp tosecurityuserui.h tostoragedatafileui.cpp tostoragedatafileui.h tostoragedefinitionui.cpp tostoragedefinitionui.h tostoragedialogui.cpp tostoragedialogui.h tostorageprefsui.cpp tostorageprefsui.h tostoragetablespaceui.cpp tostoragetablespaceui.h tosyntaxsetupui.cpp tosyntaxsetupui.h totemplateaddfileui.cpp totemplateaddfileui.h totemplateeditui.cpp totemplateeditui.h totemplatesetupui.cpp totemplatesetupui.h totoolsettingui.cpp totoolsettingui.h totuningoverviewui.cpp totuningoverviewui.h totuningsettingui.cpp totuningsettingui.h toworksheetsetupui.cpp toworksheetsetupui.h utils.moc Property changes on: trunk/tora/utils ___________________________________________________________________ Name: svn:ignore + Makefile.in Makefile Property changes on: trunk/tora/utils/chex ___________________________________________________________________ Name: svn:ignore + Makefile.in chex .libs .deps Makefile This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-03-31 20:42:57
|
Revision: 2022 Author: knackeback Date: 2006-03-31 12:42:32 -0800 (Fri, 31 Mar 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2022&view=rev Log Message: ----------- decouple tomain.cpp from toSplash by separating toSplash in own interface/impl. files Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toabout.cpp trunk/tora/src/toabout.h Added Paths: ----------- trunk/tora/src/tosplash.cpp trunk/tora/src/tosplash.h Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-03-30 19:44:47 UTC (rev 2021) +++ trunk/tora/src/Makefile.am 2006-03-31 20:42:32 UTC (rev 2022) @@ -174,6 +174,7 @@ tosearchreplace.cpp tosearchreplace.h \ tosearchreplaceui.cpp tosearchreplaceui.h \ tosmtp.cpp tosmtp.h \ + tosplash.cpp tosplash.h \ tosql.cpp tosql.h \ tosqlparse.cpp tosqlparse.h \ tosyntaxsetup.cpp tosyntaxsetup.h \ Modified: trunk/tora/src/toabout.cpp =================================================================== --- trunk/tora/src/toabout.cpp 2006-03-30 19:44:47 UTC (rev 2021) +++ trunk/tora/src/toabout.cpp 2006-03-31 20:42:32 UTC (rev 2022) @@ -35,22 +35,19 @@ * *****/ +#include "toabout.h" #include <qtextview.h> +#include <qmime.h> #include <qpushbutton.h> -#include <qlabel.h> -#include <qprogressbar.h> -#include "toabout.h" #include "toconf.h" +#include "LICENSE.h" +#include "icons/largelogo.xpm" #include "toabout.moc" #include "toaboutui.moc" -#include "LICENSE.h" - -#include "icons/largelogo.xpm" - static const char *AboutText = "<IMG SRC=largelogo.xpm><BR>\n" "Version %1 (<A HREF=http://tora.sourceforge.net>http://tora.sourceforge.net</A>)\n" "<P>\n" @@ -136,38 +133,12 @@ #define ABOUT_CAPTION TOAPPNAME " %1" -void toAllocLogo(void) -{ - static bool Alloced = false; - if (!Alloced) - { - Alloced = true; - QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"), - QPixmap(const_cast<const char**>(largelogo_xpm))); - } -} -toSplash::toSplash(QWidget *parent, const char *name, WFlags f) - : QVBox(parent, name, f) -{ - toAllocLogo(); - - setBackgroundColor(white); - QLabel *logo = new QLabel(this, "Logo"); - logo->setBackgroundColor(white); - logo->setPixmap(QPixmap(const_cast<const char**>(largelogo_xpm))); - Label = new QLabel(tr("Loading plugins"), this); - Label->setBackgroundColor(white); - Progress = new QProgressBar(this, "Progress"); - - QWidget *d = QApplication::desktop(); - move((d->width() - width()) / 2, (d->height() - height()) / 2); -} - toAbout::toAbout(int page, QWidget* parent, const char* name, bool modal, WFlags fl) : toAboutUI(parent, name, modal, fl) { - toAllocLogo(); + QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"), + QPixmap(const_cast<const char**>(largelogo_xpm))); switch (page) { @@ -190,9 +161,7 @@ } } -const char *toAbout::aboutText(void) +toAbout::~toAbout() { - toAllocLogo(); - - return AboutText; + QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"),0); } Modified: trunk/tora/src/toabout.h =================================================================== --- trunk/tora/src/toabout.h 2006-03-30 19:44:47 UTC (rev 2021) +++ trunk/tora/src/toabout.h 2006-03-31 20:42:32 UTC (rev 2022) @@ -38,38 +38,16 @@ #ifndef TOABOUT_H #define TOABOUT_H -#include "config.h" #include "toaboutui.h" -#include <qvbox.h> - -class QProgressBar; -class QLabel; - -class toSplash : public QVBox -{ - QProgressBar *Progress; - QLabel *Label; -public: - toSplash(QWidget *parent = 0, const char *name = 0, WFlags f = 0); - QLabel *label(void) - { - return Label; - } - QProgressBar *progress(void) - { - return Progress; - } -}; - class toAbout : public toAboutUI { Q_OBJECT public: toAbout(int page, QWidget* parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0); + ~toAbout(); - static const char *aboutText(void); }; #endif Added: trunk/tora/src/tosplash.cpp =================================================================== --- trunk/tora/src/tosplash.cpp (rev 0) +++ trunk/tora/src/tosplash.cpp 2006-03-31 20:42:32 UTC (rev 2022) @@ -0,0 +1,68 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tosplash.h" + +#include <qpixmap.h> +#include <qlabel.h> +#include <qapplication.h> +#include <qprogressbar.h> + +#include "icons/largelogo.xpm" + +toSplash::toSplash(QWidget *parent, const char *name, WFlags f) + : QVBox(parent, name, f) +{ + QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"), + QPixmap(const_cast<const char**>(largelogo_xpm))); + + setBackgroundColor(white); + QLabel *logo = new QLabel(this, "Logo"); + logo->setBackgroundColor(white); + logo->setPixmap(QPixmap(const_cast<const char**>(largelogo_xpm))); + Label = new QLabel(tr("Loading plugins"), this); + Label->setBackgroundColor(white); + Progress = new QProgressBar(this, "Progress"); + + QWidget *d = QApplication::desktop(); + move((d->width() - width()) / 2, (d->height() - height()) / 2); +} + +toSplash::~toSplash() +{ + QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"), 0); +} Added: trunk/tora/src/tosplash.h =================================================================== --- trunk/tora/src/tosplash.h (rev 0) +++ trunk/tora/src/tosplash.h 2006-03-31 20:42:32 UTC (rev 2022) @@ -0,0 +1,68 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + + +#ifndef TOSPLASH_H +#define TOSPLASH_H + +#include <qvbox.h> + +class QLabel; +class QProgressBar; + +class toSplash : public QVBox +{ + QProgressBar *Progress; + QLabel *Label; +public: + toSplash(QWidget *parent = 0, const char *name = 0, WFlags f = 0); + ~toSplash(); + QLabel* label(void); + QProgressBar* progress(void); +}; + +inline QLabel* toSplash::label(void) +{ + return Label; +} + +inline QProgressBar* toSplash::progress(void) +{ + return Progress; +} + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-04-01 19:02:08
|
Revision: 2024 Author: knackeback Date: 2006-04-01 11:01:53 -0800 (Sat, 01 Apr 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2024&view=rev Log Message: ----------- remove unnecessary includes Modified Paths: -------------- trunk/tora/src/toalert.cpp trunk/tora/src/toalert.h Modified: trunk/tora/src/toalert.cpp =================================================================== --- trunk/tora/src/toalert.cpp 2006-03-31 20:43:59 UTC (rev 2023) +++ trunk/tora/src/toalert.cpp 2006-04-01 19:01:53 UTC (rev 2024) @@ -35,18 +35,13 @@ * *****/ -#include "utils.h" - #include "toalert.h" + +#include "utils.h" #include "toconf.h" -#include "toconnection.h" #include "tomain.h" #include "tomemoeditor.h" -#include "tonoblockquery.h" #include "toresultview.h" -#include "toresultview.h" -#include "tosql.h" -#include "totool.h" #ifndef WIN32 #include <unistd.h> @@ -55,7 +50,6 @@ #endif #include <algorithm> - #include <stdio.h> #include <qcombobox.h> Modified: trunk/tora/src/toalert.h =================================================================== --- trunk/tora/src/toalert.h 2006-03-31 20:43:59 UTC (rev 2023) +++ trunk/tora/src/toalert.h 2006-04-01 19:01:53 UTC (rev 2024) @@ -38,15 +38,13 @@ #ifndef TOALERT_H #define TOALERT_H -#include "config.h" -#include "toconnection.h" -#include "tothread.h" -#include "totool.h" - #include <list> #include <qtimer.h> +#include "toconnection.h" +#include "totool.h" + class QComboBox; class QLineEdit; class QPopupMenu; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-04-03 20:29:42
|
Revision: 2034 Author: knackeback Date: 2006-04-03 13:29:26 -0700 (Mon, 03 Apr 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2034&view=rev Log Message: ----------- a new class which takes responsibilty for the configuration map (former in totool class) Added Paths: ----------- trunk/tora/src/toconfiguration.cpp trunk/tora/src/toconfiguration.h Added: trunk/tora/src/toconfiguration.cpp =================================================================== --- trunk/tora/src/toconfiguration.cpp (rev 0) +++ trunk/tora/src/toconfiguration.cpp 2006-04-03 20:29:26 UTC (rev 2034) @@ -0,0 +1,349 @@ +#include "toconfiguration.h" + +#include <qapplication.h> +#include <qregexp.h> + +#include "utils.h" + + +toConfiguration::toConfiguration() +{ + +} + +toConfiguration::~toConfiguration() +{ +} + +void toConfiguration::loadConfig() +{ + Configuration.clear(); + +#ifndef WIN32 + + QString conf; + if (getenv("HOME")) + { + conf = QString::fromLatin1(getenv("HOME")); + } + conf.append(QString::fromLatin1(CONFIG_FILE)); + try + { + loadMap(conf, Configuration); + } + catch (...) + { + try + { + loadMap(QString::fromLatin1(DEF_CONFIG_FILE), Configuration); + } + catch (...) + {} + } +#endif +} + +void toConfiguration::loadMap(const QString &filename, std::map<QCString, QString> &pairs) +{ + QCString data = toReadFile(filename); + + int pos = 0; + int bol = 0; + int endtag = -1; + int wpos = 0; + int size = data.length(); + while (pos < size) + { + switch (data[pos]) + { + case '\n': + data[wpos] = 0; + if (endtag == -1) + throw QT_TRANSLATE_NOOP("toTool", "Malformed tag in config file. Missing = on row. (%1)").arg(data.mid(bol, wpos - bol)); + { + QCString tag = ((const char *)data) + bol; + QCString val = ((const char *)data) + endtag + 1; + pairs[tag] = QString::fromUtf8(val); + } + bol = pos + 1; + endtag = -1; + wpos = pos; + break; + case '=': + if (endtag == -1) + { + endtag = pos; + data[wpos] = 0; + wpos = pos; + } + else + data[wpos] = data[pos]; + break; + case '\\': + pos++; + switch (data[pos]) + { + case 'n': + data[wpos] = '\n'; + break; + case '\\': + if (endtag >= 0) + data[wpos] = '\\'; + else + data[wpos] = ':'; + break; + default: + throw QT_TRANSLATE_NOOP("toTool", "Unknown escape character in string (Only \\\\ and \\n recognised)"); + } + break; + default: + data[wpos] = data[pos]; + } + wpos++; + pos++; + } + return ; +} + +void toConfiguration::saveConfig() +{ + try + { +#ifdef WIN32 + CRegistry registry; + QRegExp re(":"); + for (std::map<QCString, QString>::iterator i = Configuration.begin();i != Configuration.end();i++) + { + QCString path = (*i).first; + QString value = (*i).second; + path.prepend(APPLICATION_NAME); + path.replace(re, "\\"); + if (value.isEmpty()) + { + if (!registry.SetStringValue(HKEY_CURRENT_USER, + toKeyPath(path, registry), + toKeyValue(path), + "")) + toStatusMessage(QT_TRANSLATE_NOOP("toTool", "Couldn't save empty value at key %1").arg(path)); + } + else + { + char *t = strdup(value.utf8()); + if (!registry.SetStringValue(HKEY_CURRENT_USER, + toKeyPath(path, registry), + toKeyValue(path), + t)) + toStatusMessage(QT_TRANSLATE_NOOP("toTool", "Couldn't save %1 value at key %2").arg(value).arg(path)); + free(t); + } + } +#else + if ( Configuration.empty() ) + return ; + QCString conf; + if (getenv("HOME")) + { + conf = getenv("HOME"); + } + conf.append(CONFIG_FILE); + saveMap(conf, Configuration); +#endif + + } + TOCATCH + +} + +bool toConfiguration::saveMap(const QString &file, std::map<QCString, QString> &pairs) +{ + QCString data; + + { + QRegExp newline(QString::fromLatin1("\n")); + QRegExp backslash(QString::fromLatin1("\\")); + for (std::map<QCString, QString>::iterator i = pairs.begin();i != pairs.end();i++) + { + QCString str = (*i).first; + str.append(QString::fromLatin1("=")); + str.replace(backslash, QString::fromLatin1("\\\\")); + str.replace(newline, QString::fromLatin1("\\n")); + QString line = (*i).second; + line.replace(backslash, QString::fromLatin1("\\\\")); + line.replace(newline, QString::fromLatin1("\\n")); + str += line.utf8(); + str += QString::fromLatin1("\n"); + data += str; + } + } + return toWriteFile(file, data); +} + +const QString &toConfiguration::globalConfig(const QCString &tag, const QCString &def) +{ + if ( Configuration.empty() ) + loadConfig(); + + std::map<QCString, QString>::iterator i = Configuration.find(tag); + if (i == Configuration.end()) + { +#if defined(WIN32) + CRegistry registry; + QRegExp re(QString::fromLatin1(":")); + QCString path = tag; + path.prepend(APPLICATION_NAME); + path.replace(re, "\\"); + DWORD siz = 1024; + char buffer[1024]; + try + { + if (registry.GetStringValue(HKEY_CURRENT_USER, + toKeyPath(path, registry), + toKeyValue(path), + buffer, siz)) + { + if (siz > 0) + { + QString ret = QString::fromUtf8(buffer); + (Configuration)[tag] = ret; + } + else + { + (Configuration)[tag] = ""; + } + return (Configuration)[tag]; + } + } + catch (...) + { +#ifdef FALLBACK_NAME + try + { + path = tag; + path.prepend(FALLBACK_NAME); + path.replace(re, "\\"); + if (registry.GetStringValue(HKEY_CURRENT_USER, + toKeyPath(path, registry), + toKeyValue(path), + buffer, siz)) + { + if (siz > 0) + { + QString ret = QString::fromUtf8(buffer); + (Configuration)[tag] = ret; + } + else + { + (Configuration)[tag] = ""; + } + return (Configuration)[tag]; + } + } + catch (...) + {} +#endif + + } +#endif + + (Configuration)[tag] = QString::fromLatin1(def); + return (Configuration)[tag]; + } + return (*i).second; +} + +#ifdef WIN32 +# ifdef TOAD +# define APPLICATION_NAME "SOFTWARE\\Quest Software\\Toad for MySQL\\" +# else +# define APPLICATION_NAME "SOFTWARE\\Quest Software\\tora\\" +# define FALLBACK_NAME "SOFTWARE\\Underscore\\tora\\" +# endif + +static char *toKeyPath(const QString &str, CRegistry ®istry) +{ + static char *buf = NULL; + int pos = str.length() - 1; + while (pos >= 0 && str.at(pos) != '\\') + pos--; + if (pos < 0) + throw QT_TRANSLATE_NOOP("toKeyPath", "Couldn't find \\ in path"); + QString ret = str.mid(0, pos); + if (buf) + free(buf); + buf = strdup(ret); + registry.CreateKey(HKEY_CURRENT_USER, buf); + return buf; +} + +static char *toKeyValue(const QString &str) +{ + static char *buf = NULL; + int pos = str.length() - 1; + while (pos >= 0 && str.at(pos) != '\\') + pos--; + if (pos < 0) + throw QT_TRANSLATE_NOOP("toKeyValue", "Couldn't find \\ in path"); + if (buf) + free(buf); + buf = strdup(str.mid(pos + 1)); + return buf; +} + +#endif + + +const QString& toConfiguration::config(const QCString &tag, const QCString &def, const QCString &name) +{ + QCString str = name; + str.append(":"); + str.append(tag); + return globalConfig(str, def); +} + +void toConfiguration::eraseConfig(const QCString &tag, const QCString &name) +{ + QCString str = name; + str.append(":"); + str.append(tag); + globalEraseConfig(str); +} + +void toConfiguration::setConfig(const QCString &tag, const QString &def, const QCString name) +{ + QCString str = name; + str.append(":"); + str.append(tag); + globalSetConfig(str, def); +} + + +void toConfiguration::globalEraseConfig(const QCString &tag) +{ + if ( Configuration.empty() ) + loadConfig(); + std::map<QCString, QString>::iterator i = Configuration.find(tag); + if (i != Configuration.end()) + { + Configuration.erase(i); +#if defined(WIN32) + + CRegistry registry; + QRegExp re(QString::fromLatin1(":")); + QCString path = tag; + path.prepend(APPLICATION_NAME); + path.replace(re, "\\"); + registry.DeleteKey(HKEY_CURRENT_USER, path); // Don't really care if it works. +#endif + + } +} + +void toConfiguration::globalSetConfig(const QCString &tag, const QString &value) +{ + if ( Configuration.empty() ) + loadConfig(); + + (Configuration)[tag] = value; +} + + Added: trunk/tora/src/toconfiguration.h =================================================================== --- trunk/tora/src/toconfiguration.h (rev 0) +++ trunk/tora/src/toconfiguration.h 2006-04-03 20:29:26 UTC (rev 2034) @@ -0,0 +1,124 @@ +#ifndef TOCONFIGURATION_H +#define TOCONFIGURATION_H + +#ifdef TOAD +#define CONFIG_FILE "/.toadrc" +#define DEF_CONFIG_FILE "/etc/toadrc" +#else +#define CONFIG_FILE "/.torarc" +#define DEF_CONFIG_FILE "/etc/torarc" +#endif + +#include <map> + +#include <loki/Singleton.h> +#include <qstring.h> + +#include <qapplication.h> +// + +// A little magic to get lrefresh to work and get a check on qApp + +#undef QT_TRANSLATE_NOOP +#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y) + +class toConfiguration +{ +public : + toConfiguration(); + virtual ~toConfiguration(); + + /** + * Load configuration from file. + */ + void loadConfig(void); + + /** + * Save configuration to file. + */ + void saveConfig(void); + + /** + * Get value of a setting. + * + * Setting names are hierachical separated by ':' instead of '/' usually used + * in filenames. As an example all settings for the tool 'Example' would be + * under the 'Example:{settingname}' name. + * + * @param tag The name of the configuration setting. + * @param def Default value of the setting, if it is not available. + */ + const QString &globalConfig(const QCString &tag, const QCString &def); + + /** + * Load a string to string map from file saved by the @ref saveMap function. + * @param filename Filename to load + * @param map Reference to the map to fill with the new values. + */ + void loadMap(const QString &filename, std::map<QCString, QString> &map); + + /** + * A map containing the available configuration settings. By convention the + * character ':' is used to separate parts of the path. + * + * @see globalConfig + * @see globalSetConfig + * @see config + * @see setConfig + */ + bool saveMap(const QString &file, std::map<QCString, QString> &pairs); + + /** + * Change a setting. Depending on the implementation this can change the + * contents on disk or not. + * + * Setting names are hierachical separated by ':' instead of '/' usually used + * in filenames. As an example all settings for the tool 'Example' would be + * under the 'Example:{settingname}' name. + * + * @param tag The name of the configuration setting. + * @param def Contents of this setting. + */ + void globalSetConfig(const QCString &tag, const QString &value); + /** + * Remove a setting. Can be usefull for removing sensetive information. + * @param tag The name of the configuration setting to remove. + */ + void globalEraseConfig(const QCString &tag); + + /** + * Get tool specific settings. + * + * Setting names are hierachical separated by ':' instead of '/' usually used + * in filenames. As an example all settings for the tool 'Example' would be + * under the 'Example:{settingname}' name. + * + * @param tag The name of the configuration setting. + * @param def Contents of this setting. + */ + const QString &config(const QCString &tag, const QCString &def, const QCString &name); + /** + * Change toolspecific setting. Depending on the implementation this can change the + * contents on disk or not. + * + * Setting names are hierachical separated by ':' instead of '/' usually used + * in filenames. As an example all settings for the tool 'Example' would be + * under the 'Example:{settingname}' name. + * + * @param tag The name of the configuration setting. + * @param def Default value of the setting, if it is not available. + */ + void setConfig(const QCString &tag, const QString &value, const QCString name = ""); + /** + * Remove a toolspecific setting. Can be usefull for removing sensetive information. + * @param tag The name of the configuration setting to remove. + */ + void eraseConfig(const QCString &tag, const QCString& name); + +private : + std::map<QCString, QString> Configuration; +}; + +typedef Loki::SingletonHolder<toConfiguration> toConfigurationSingle; + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-04-03 20:43:00
|
Revision: 2036 Author: knackeback Date: 2006-04-03 13:40:15 -0700 (Mon, 03 Apr 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2036&view=rev Log Message: ----------- extract the configuration map functionality from totool class in a separate class (toconfiguration), make this class singleton Modified Paths: -------------- trunk/tora/src/main.cpp trunk/tora/src/toanalyze.cpp trunk/tora/src/tobrowser.cpp trunk/tora/src/tochartmanager.cpp trunk/tora/src/toconnection.cpp trunk/tora/src/todebug.cpp trunk/tora/src/toeditextensions.cpp trunk/tora/src/toglobalsetting.cpp trunk/tora/src/tohighlightedtext.cpp trunk/tora/src/tolinechart.cpp trunk/tora/src/tomain.cpp trunk/tora/src/tomarkedtext.cpp trunk/tora/src/tonewconnection.cpp trunk/tora/src/tonoblockquery.cpp trunk/tora/src/tooracleconnection.cpp trunk/tora/src/tooracleextract.cpp trunk/tora/src/topiechart.cpp trunk/tora/src/topreferences.cpp trunk/tora/src/toqsqlconnection.cpp trunk/tora/src/toresult.cpp trunk/tora/src/toresultcontent.cpp trunk/tora/src/toresultfield.cpp trunk/tora/src/toresultlong.cpp trunk/tora/src/toresultplan.cpp trunk/tora/src/toresultstorage.cpp trunk/tora/src/toresultview.cpp trunk/tora/src/torollback.cpp trunk/tora/src/tosgastatement.cpp trunk/tora/src/tosgatrace.cpp trunk/tora/src/tosqledit.cpp trunk/tora/src/tosyntaxsetup.cpp trunk/tora/src/totemplate.cpp trunk/tora/src/totemporary.cpp trunk/tora/src/totool.cpp trunk/tora/src/totool.h trunk/tora/src/totuning.cpp trunk/tora/src/towaitevents.cpp trunk/tora/src/toworksheet.cpp trunk/tora/src/toworksheetstatistic.cpp trunk/tora/src/utils.cpp Modified: trunk/tora/src/main.cpp =================================================================== --- trunk/tora/src/main.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/main.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -91,7 +91,7 @@ int main(int argc, char **argv) { #ifdef ENABLE_QT_XFT - toSetEnv("QT_XFT", toTool::globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT).latin1()); + toSetEnv("QT_XFT", toConfigurationSingle::Instance().globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT).latin1()); #endif #ifdef TO_KDE @@ -101,7 +101,7 @@ #else # ifndef WIN32 - if (toTool::globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()) QApplication::setDesktopSettingsAware(false); # endif @@ -115,10 +115,10 @@ qApp->setDefaultCodec(QTextCodec::codecForName(getenv("LANG"))); QTranslator torats(0); - torats.load(toPluginPath() + "/" + QString("tora_") + toTool::globalConfig(CONF_LOCALE, QTextCodec::locale()), "."); + torats.load(toPluginPath() + "/" + QString("tora_") + toConfigurationSingle::Instance().globalConfig(CONF_LOCALE, QTextCodec::locale()), "."); qApp->installTranslator(&torats); QTranslator toadbindings(0); - if (!toTool::globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty()) { if (!toadbindings.load(tora_toad, sizeof(tora_toad))) printf("Internal error, couldn't load TOAD bindings"); @@ -126,7 +126,7 @@ } #ifdef ENABLE_STYLE - QString style = toTool::globalConfig(CONF_STYLE, ""); + QString style = toConfigurationSingle::Instance().globalConfig(CONF_STYLE, ""); if (!style.isEmpty()) toSetSessionType(style); #endif @@ -147,7 +147,7 @@ dirPath = DEFAULT_PLUGIN_DIR; d.cd(dirPath); if (d.exists()) - toTool::globalSetConfig(CONF_PLUGIN_DIR, dirPath); + toConfigurationSingle::Instance().globalSetConfig(CONF_PLUGIN_DIR, dirPath); else fprintf(stderr, "Invalid PluginDir.\n"); } @@ -194,7 +194,7 @@ try { - toSQL::loadSQL(toTool::globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE)); + toSQL::loadSQL(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE)); } catch (...) {} @@ -214,27 +214,27 @@ toSetEnv("NLS_LANG", nls); } - if (toTool::globalConfig("LastVersion", "") != TOVERSION) + if (toConfigurationSingle::Instance().globalConfig("LastVersion", "") != TOVERSION) { std::auto_ptr<toAbout> about ( new toAbout(0, NULL, "About " TOAPPNAME, true)); if (!about->exec()) { exit (2); } - toTool::globalSetConfig("LastVersion", TOVERSION); + toConfigurationSingle::Instance().globalSetConfig("LastVersion", TOVERSION); } - if (toTool::globalConfig("FirstInstall", "").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig("FirstInstall", "").isEmpty()) { time_t t; time(&t); - toTool::globalSetConfig("FirstInstall", ctime(&t)); + toConfigurationSingle::Instance().globalSetConfig("FirstInstall", ctime(&t)); } toQValue::setNumberFormat( - toTool::globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt(), - toTool::globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt()); + toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt(), + toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt()); if (qApp->argc() > 2 || (qApp->argc() == 2 && qApp->argv()[1][0] == '-')) { @@ -258,19 +258,19 @@ connect = QString::fromLatin1(getenv("ORACLE_SID")); } if (!connect.isEmpty()) - toTool::globalSetConfig(CONF_DATABASE, connect); + toConfigurationSingle::Instance().globalSetConfig(CONF_DATABASE, connect); pos = user.find(QString::fromLatin1("/")); if (pos > -1) { - toTool::globalSetConfig(CONF_PASSWORD, user.right(user.length() - pos - 1)); + toConfigurationSingle::Instance().globalSetConfig(CONF_PASSWORD, user.right(user.length() - pos - 1)); user = user.left(pos); } if (!user.isEmpty()) - toTool::globalSetConfig(CONF_USER, user); + toConfigurationSingle::Instance().globalSetConfig(CONF_USER, user); } toMarkedText::setDefaultTabWidth( - toTool::globalConfig(CONF_TAB_STOP, DEFAULT_TAB_STOP).toInt()); + toConfigurationSingle::Instance().globalConfig(CONF_TAB_STOP, DEFAULT_TAB_STOP).toInt()); toUpdateIndicateEmpty(); Modified: trunk/tora/src/toanalyze.cpp =================================================================== --- trunk/tora/src/toanalyze.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/toanalyze.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -299,7 +299,7 @@ try { Plans->query(toSQL::string(SQLListPlans, - connection).arg(toTool::globalConfig(CONF_PLAN_TABLE, + connection).arg(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE))); } TOCATCH Modified: trunk/tora/src/tobrowser.cpp =================================================================== --- trunk/tora/src/tobrowser.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tobrowser.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -255,7 +255,7 @@ BrowserTool.setConfig(CONF_FILTER_TYPE, QString("%1").arg(Type)); BrowserTool.setConfig(CONF_FILTER_TABLESPACE_TYPE, QString("%1").arg(TablespaceType)); BrowserTool.setConfig(CONF_FILTER_TEXT, Text); - toTool::saveConfig(); + toConfigurationSingle::Instance().saveConfig(); } virtual void readFilterSettings(void) Modified: trunk/tora/src/tochartmanager.cpp =================================================================== --- trunk/tora/src/tochartmanager.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tochartmanager.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -746,7 +746,7 @@ } ChartTool.setConfig("AlarmCount", QString::number(num)); } - toTool::saveConfig(); + toConfigurationSingle::Instance().saveConfig(); } void toChartHandler::loadSettings(void) Modified: trunk/tora/src/toconnection.cpp =================================================================== --- trunk/tora/src/toconnection.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/toconnection.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -185,7 +185,7 @@ QCString str = Provider; str.append(":"); str.append(tag); - return toTool::globalConfig(str, def); + return toConfigurationSingle::Instance().globalConfig(str, def); } void toConnectionProvider::setConfig(const QCString &tag, const QCString &def) @@ -193,7 +193,7 @@ QCString str = Provider; str.append(":"); str.append(tag); - toTool::globalSetConfig(str, def); + toConfigurationSingle::Instance().globalSetConfig(str, def); } QWidget *toConnectionProvider::providerConfigurationTab(const QCString &, QWidget *) @@ -1082,7 +1082,7 @@ ReadingCache = false; if (cache) { - if (toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 1) + if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 1) readObjects(); } else @@ -1194,7 +1194,7 @@ { if (!Connection->handleMultipleQueries()) return longConnection(); - if (toTool::globalConfig(CONF_BKGND_CONNECT, "").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_BKGND_CONNECT, "").isEmpty()) return mainConnection(); Lock.lock(); if (!BackgroundConnection) @@ -1670,7 +1670,7 @@ QString toConnection::cacheDir() { QString home = QDir::homeDirPath(); - QString dirname = toTool::globalConfig(CONF_CACHE_DIR, ""); + QString dirname = toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DIR, ""); if (dirname.isEmpty()) { @@ -1694,7 +1694,7 @@ bool toConnection::loadDiskCache() { - if (toTool::globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()) return false; toConnection::objectName *cur = 0; @@ -1710,7 +1710,7 @@ QFileInfo fi(file); QDateTime today; - if (fi.lastModified().addDays(toTool::globalConfig(CONF_CACHE_TIMEOUT, DEFAULT_CACHE_TIMEOUT).toInt()) < today) + if (fi.lastModified().addDays(toConfigurationSingle::Instance().globalConfig(CONF_CACHE_TIMEOUT, DEFAULT_CACHE_TIMEOUT).toInt()) < today) return false; /** read in all data @@ -1759,7 +1759,7 @@ long objCounter = 0; long synCounter = 0; - if (toTool::globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()) return ; @@ -1838,7 +1838,7 @@ void toConnection::readObjects(void) { - if (toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) + if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) { ReadingCache = false; return ; @@ -1861,7 +1861,7 @@ void toConnection::rereadCache(void) { - if (toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) + if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) { ColumnCache.clear(); return ; @@ -1907,14 +1907,14 @@ bool toConnection::cacheAvailable(bool synonyms, bool block, bool need) { - if (toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) + if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3) return true; if (!ReadingCache) { if (!need) return true; - if (toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 2 && !block) + if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 2 && !block) return true; readObjects(); toMainWidget()->checkCaching(); Modified: trunk/tora/src/todebug.cpp =================================================================== --- trunk/tora/src/todebug.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/todebug.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -828,7 +828,7 @@ nam.replace(QRegExp(QString::fromLatin1("[^a-zA-Z0-9]+")), QString::fromLatin1("_")); sql += nam; sql += QString::fromLatin1("<char["); - sql += toTool::globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE); + sql += toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE); sql += QString::fromLatin1("],"); if ((*i).In) sql += QString::fromLatin1("in"); @@ -842,7 +842,7 @@ if (!retType.isEmpty()) { sql += QString::fromLatin1(";\n SELECT ret INTO :tora_int_return<char["); - sql += toTool::globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE); + sql += toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE); sql += QString::fromLatin1("],out> FROM sys.DUAL"); } sql += QString::fromLatin1(";\nEND;\n"); @@ -872,7 +872,7 @@ } else delete head; - ColumnSize = toTool::globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE).toInt(); + ColumnSize = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE).toInt(); TargetSQL = toDeepCopy(sql); // Deep copy of SQL TargetSemaphore.up(); // Go go power rangers! } @@ -1432,7 +1432,7 @@ item->setText(3, value); else if (ret == TO_ERROR_NULLVALUE) { - if (toTool::globalConfig(CONF_INDICATE_EMPTY, "").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty()) item->setText(3, QString::fromLatin1("{null}")); else item->setText(3, QString::null); Modified: trunk/tora/src/toeditextensions.cpp =================================================================== --- trunk/tora/src/toeditextensions.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/toeditextensions.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -367,7 +367,7 @@ EndBlockNewline->setChecked(Current.EndBlockNewline); IndentLevel->setValue(Current.IndentLevel); CommentColumn->setValue(Current.CommentColumn); - AutoIndent->setChecked(!toTool::globalConfig(CONF_AUTO_INDENT_RO, "Yes").isEmpty()); + AutoIndent->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT_RO, "Yes").isEmpty()); Ok = false; try { @@ -574,7 +574,7 @@ Tool->setConfig(CONF_END_BLOCK_NEWLINE, EndBlockNewline->isChecked() ? "Yes" : ""); Tool->setConfig(CONF_INDENT_LEVEL, QString::number(IndentLevel->value())); Tool->setConfig(CONF_COMMENT_COLUMN, QString::number(CommentColumn->value())); - toTool::globalSetConfig(CONF_AUTO_INDENT_RO, AutoIndent->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_INDENT_RO, AutoIndent->isChecked() ? "Yes" : ""); saveCurrent(); } Modified: trunk/tora/src/toglobalsetting.cpp =================================================================== --- trunk/tora/src/toglobalsetting.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/toglobalsetting.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -74,23 +74,23 @@ toGlobalSetting::toGlobalSetting(QWidget *parent, const char *name, WFlags fl) : toGlobalSettingUI(parent, name, fl), toSettingTab("preferences.html#global") { - SavePassword->setChecked(!toTool::globalConfig(CONF_SAVE_PWD, "").isEmpty()); - DesktopAware->setChecked(!toTool::globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()); - ToolsLeft->setChecked(!toTool::globalConfig(CONF_TOOLS_LEFT, "").isEmpty()); + SavePassword->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, "").isEmpty()); + DesktopAware->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()); + ToolsLeft->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_TOOLS_LEFT, "").isEmpty()); toRefreshCreate(OptionGroup, TO_KDE_TOOLBAR_WIDGET, QString::null, Refresh); - DefaultSession->setText(toTool::globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION)); - Status->setValue(toTool::globalConfig(CONF_STATUS_MESSAGE, + DefaultSession->setText(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION)); + Status->setValue(toConfigurationSingle::Instance().globalConfig(CONF_STATUS_MESSAGE, DEFAULT_STATUS_MESSAGE).toInt()); - HistorySize->setValue(toTool::globalConfig(CONF_STATUS_SAVE, + HistorySize->setValue(toConfigurationSingle::Instance().globalConfig(CONF_STATUS_SAVE, DEFAULT_STATUS_SAVE).toInt()); - IncludeDB->setChecked(!toTool::globalConfig(CONF_DB_TITLE, "Yes").isEmpty()); - MaximizeMain->setChecked(!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty()); - Statusbar->setChecked(!toTool::globalConfig(CONF_MESSAGE_STATUSBAR, "").isEmpty()); - RestoreSession->setChecked(!toTool::globalConfig(CONF_RESTORE_SESSION, "").isEmpty()); + IncludeDB->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DB_TITLE, "Yes").isEmpty()); + MaximizeMain->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty()); + Statusbar->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_MESSAGE_STATUSBAR, "").isEmpty()); + RestoreSession->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_RESTORE_SESSION, "").isEmpty()); HelpDirectory->setText(toHelpPath()); - ChangeConnection->setChecked(!toTool::globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty()); - ConnectHistory->setValue(toTool::globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt()); - int samples = toTool::globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt(); + ChangeConnection->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty()); + ConnectHistory->setValue(toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt()); + int samples = toConfigurationSingle::Instance().globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt(); if (samples < 0) { UnlimitedSamples->setChecked(true); @@ -98,7 +98,7 @@ } else ChartSamples->setValue(samples); - samples = toTool::globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt(); + samples = toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt(); if (samples < 0) { AllSamples->setChecked(true); @@ -106,11 +106,11 @@ } else DisplaySamples->setValue(samples); - DefaultFormat->setCurrentItem(toTool::globalConfig(CONF_DEFAULT_FORMAT, "").toInt()); - ToadBindings->setChecked(!toTool::globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty()); - DisplayGrid->setChecked(!toTool::globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty()); + DefaultFormat->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_FORMAT, "").toInt()); + ToadBindings->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty()); + DisplayGrid->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty()); - QString typ = toTool::globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT); + QString typ = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT); if (typ == "KB") SizeUnit->setCurrentItem(1); else if (typ == "MB") @@ -118,7 +118,7 @@ #ifdef ENABLE_QT_XFT - AntialiaseFonts->setChecked(toTool::globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT) == "true"); + AntialiaseFonts->setChecked(toConfigurationSingle::Instance().globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT) == "true"); #else AntialiaseFonts->hide(); @@ -152,7 +152,7 @@ #endif #if QT_VERSION < 0x030000 - DockToolbar->setChecked(toTool::globalConfig(CONF_DOCK_TOOLBAR, "Yes")); + DockToolbar->setChecked(toConfigurationSingle::Instance().globalConfig(CONF_DOCK_TOOLBAR, "Yes")); #else DockToolbar->hide(); @@ -166,7 +166,7 @@ } else { - PluginDirectory->setText(toTool::globalConfig(CONF_PLUGIN_DIR, + PluginDirectory->setText(toConfigurationSingle::Instance().globalConfig(CONF_PLUGIN_DIR, DEFAULT_PLUGIN_DIR)); } @@ -174,11 +174,11 @@ */ CacheDirectory->setText(toConnection::cacheDir()); - DiskCaching->setChecked(!toTool::globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()); + DiskCaching->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty()); - CustomSQL->setText(toTool::globalConfig(CONF_SQL_FILE, + CustomSQL->setText(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE)); - Locale->setText(toTool::globalConfig(CONF_LOCALE, QTextCodec::locale())); + Locale->setText(toConfigurationSingle::Instance().globalConfig(CONF_LOCALE, QTextCodec::locale())); } void toGlobalSetting::pluginBrowse(void) @@ -212,55 +212,55 @@ void toGlobalSetting::saveSetting(void) { if (!toMonolithic()) - toTool::globalSetConfig(CONF_PLUGIN_DIR, PluginDirectory->text()); - toTool::globalSetConfig(CONF_CACHE_DISK, DiskCaching->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_CACHE_DIR, CacheDirectory->text()); - toTool::globalSetConfig(CONF_SQL_FILE, CustomSQL->text()); - toTool::globalSetConfig(CONF_DEFAULT_SESSION, DefaultSession->text()); - toTool::globalSetConfig(CONF_REFRESH, Refresh->currentText()); - toTool::globalSetConfig(CONF_SAVE_PWD, SavePassword->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_DESKTOP_AWARE, DesktopAware->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_STATUS_MESSAGE, QString::number(Status->value())); - toTool::globalSetConfig(CONF_STATUS_SAVE, QString::number(HistorySize->value())); - toTool::globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value())); - toTool::globalSetConfig(CONF_CONNECT_SIZE, QString::number(ConnectHistory->value())); - toTool::globalSetConfig(CONF_MAXIMIZE_MAIN, MaximizeMain->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_MESSAGE_STATUSBAR, Statusbar->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_RESTORE_SESSION, RestoreSession->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_TOOLS_LEFT, ToolsLeft->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_DEFAULT_FORMAT, + toConfigurationSingle::Instance().globalSetConfig(CONF_PLUGIN_DIR, PluginDirectory->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_CACHE_DISK, DiskCaching->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_CACHE_DIR, CacheDirectory->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_SQL_FILE, CustomSQL->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_SESSION, DefaultSession->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_REFRESH, Refresh->currentText()); + toConfigurationSingle::Instance().globalSetConfig(CONF_SAVE_PWD, SavePassword->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DESKTOP_AWARE, DesktopAware->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_STATUS_MESSAGE, QString::number(Status->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_STATUS_SAVE, QString::number(HistorySize->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_CONNECT_SIZE, QString::number(ConnectHistory->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAXIMIZE_MAIN, MaximizeMain->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_MESSAGE_STATUSBAR, Statusbar->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_RESTORE_SESSION, RestoreSession->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_TOOLS_LEFT, ToolsLeft->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_FORMAT, QString::number(DefaultFormat->currentItem())); - toTool::globalSetConfig(CONF_TOAD_BINDINGS, ToadBindings->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_DISPLAY_GRIDLINES, DisplayGrid->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_TOAD_BINDINGS, ToadBindings->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_GRIDLINES, DisplayGrid->isChecked() ? "Yes" : ""); #if QT_VERSION < 0x030000 - toTool::globalSetConfig(CONF_DOCK_TOOLBAR, DockToolbar->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DOCK_TOOLBAR, DockToolbar->isChecked() ? "Yes" : ""); #endif - toTool::globalSetConfig(CONF_CHANGE_CONNECTION, ChangeConnection->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_DB_TITLE, IncludeDB->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_SIZE_UNIT, SizeUnit->currentText()); - toTool::globalSetConfig(CONF_HELP_PATH, HelpDirectory->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_CHANGE_CONNECTION, ChangeConnection->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DB_TITLE, IncludeDB->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_SIZE_UNIT, SizeUnit->currentText()); + toConfigurationSingle::Instance().globalSetConfig(CONF_HELP_PATH, HelpDirectory->text()); #ifdef ENABLE_STYLE - toTool::globalSetConfig(CONF_STYLE, Style->currentText()); + toConfigurationSingle::Instance().globalSetConfig(CONF_STYLE, Style->currentText()); toSetSessionType(Style->currentText()); #endif #ifdef ENABLE_QT_XFT - toTool::globalSetConfig(CONF_QT_XFT, AntialiaseFonts->isChecked() ? "true" : "false"); + toConfigurationSingle::Instance().globalSetConfig(CONF_QT_XFT, AntialiaseFonts->isChecked() ? "true" : "false"); #endif if (AllSamples->isChecked()) - toTool::globalSetConfig(CONF_DISPLAY_SAMPLES, "-1"); + toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_SAMPLES, "-1"); else - toTool::globalSetConfig(CONF_DISPLAY_SAMPLES, QString::number(DisplaySamples->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_SAMPLES, QString::number(DisplaySamples->value())); if (UnlimitedSamples->isChecked()) - toTool::globalSetConfig(CONF_CHART_SAMPLES, "-1"); + toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, "-1"); else - toTool::globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value())); - toTool::globalSetConfig(CONF_LOCALE, Locale->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_LOCALE, Locale->text()); } void toDatabaseSetting::numberFormatChange() @@ -271,15 +271,15 @@ toDatabaseSetting::toDatabaseSetting(QWidget *parent, const char *name, WFlags fl) : toDatabaseSettingUI(parent, name, fl), toSettingTab("database.html") { - MaxColDisp->setText(toTool::globalConfig(CONF_MAX_COL_DISP, + MaxColDisp->setText(toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP)); - QString str = toTool::globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER); + QString str = toConfigurationSingle::Instance().globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER); if (str.toInt() <= 0) ReadAll->setChecked(true); else InitialFetch->setText(str); - str = toTool::globalConfig(CONF_MAX_CONTENT, DEFAULT_MAX_CONTENT); + str = toConfigurationSingle::Instance().globalConfig(CONF_MAX_CONTENT, DEFAULT_MAX_CONTENT); if (str.toInt() <= 0) { MaxContent->setText(InitialFetch->text()); @@ -292,33 +292,33 @@ InitialFetch->setValidator(new QIntValidator(InitialFetch)); MaxContent->setValidator(new QIntValidator(InitialFetch)); - Decimals->setValue(toTool::globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt()); - NumberFormat->setCurrentItem(toTool::globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt()); + Decimals->setValue(toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt()); + NumberFormat->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt()); if (NumberFormat->currentItem() == 2) Decimals->setEnabled(true); - AutoCommit->setChecked(!toTool::globalConfig(CONF_AUTO_COMMIT, "").isEmpty()); - DontReread->setChecked(!toTool::globalConfig(CONF_DONT_REREAD, "Yes").isEmpty()); - ObjectCache->setCurrentItem(toTool::globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt()); - BkgndConnect->setChecked(!toTool::globalConfig(CONF_BKGND_CONNECT, "").isEmpty()); - IndicateEmpty->setChecked(!toTool::globalConfig(CONF_INDICATE_EMPTY, "").isEmpty()); - int val = toTool::globalConfig(CONF_AUTO_LONG, "0").toInt(); + AutoCommit->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty()); + DontReread->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DONT_REREAD, "Yes").isEmpty()); + ObjectCache->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt()); + BkgndConnect->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_BKGND_CONNECT, "").isEmpty()); + IndicateEmpty->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty()); + int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt(); AutoLong->setChecked(val); MoveAfter->setValue(val); - KeepAlive->setChecked(!toTool::globalConfig(CONF_KEEP_ALIVE, "").isEmpty()); + KeepAlive->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_KEEP_ALIVE, "").isEmpty()); } void toUpdateIndicateEmpty(void); void toDatabaseSetting::saveSetting(void) { - toTool::globalSetConfig(CONF_MAX_COL_DISP, MaxColDisp->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_COL_DISP, MaxColDisp->text()); if (ReadAll->isChecked()) - toTool::globalSetConfig(CONF_MAX_NUMBER, "-1"); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_NUMBER, "-1"); else - toTool::globalSetConfig(CONF_MAX_NUMBER, InitialFetch->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_NUMBER, InitialFetch->text()); if (UnlimitedContent->isChecked()) - toTool::globalSetConfig(CONF_MAX_CONTENT, "-1"); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_CONTENT, "-1"); else { int num = InitialFetch->text().toInt(); @@ -332,19 +332,19 @@ tr("Doesn't make sense to have max content less than initial\n" "fetch size. Will adjust value to be higher."), tr("&Ok")); - toTool::globalSetConfig(CONF_MAX_CONTENT, QString::number(maxnum)); + toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_CONTENT, QString::number(maxnum)); } - toTool::globalSetConfig(CONF_AUTO_COMMIT, AutoCommit->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_DONT_REREAD, DontReread->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_OBJECT_CACHE, QString::number(ObjectCache->currentItem())); - toTool::globalSetConfig(CONF_BKGND_CONNECT, BkgndConnect->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_AUTO_LONG, + toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_COMMIT, AutoCommit->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_DONT_REREAD, DontReread->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_OBJECT_CACHE, QString::number(ObjectCache->currentItem())); + toConfigurationSingle::Instance().globalSetConfig(CONF_BKGND_CONNECT, BkgndConnect->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_LONG, AutoLong->isChecked() ? MoveAfter->cleanText() : QString::fromLatin1("0")); - toTool::globalSetConfig(CONF_INDICATE_EMPTY, IndicateEmpty->isChecked() ? "Yes" : ""); - toTool::globalSetConfig(CONF_KEEP_ALIVE, KeepAlive->isChecked() ? DEFAULT_KEEP_ALIVE : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_INDICATE_EMPTY, IndicateEmpty->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_KEEP_ALIVE, KeepAlive->isChecked() ? DEFAULT_KEEP_ALIVE : ""); - toTool::globalSetConfig(CONF_NUMBER_FORMAT, QString::number(NumberFormat->currentItem())); - toTool::globalSetConfig(CONF_NUMBER_DECIMALS, QString::number(Decimals->value())); + toConfigurationSingle::Instance().globalSetConfig(CONF_NUMBER_FORMAT, QString::number(NumberFormat->currentItem())); + toConfigurationSingle::Instance().globalSetConfig(CONF_NUMBER_DECIMALS, QString::number(Decimals->value())); toQValue::setNumberFormat(NumberFormat->currentItem(), Decimals->value()); toMainWidget()->updateKeepAlive(); @@ -374,7 +374,7 @@ { QCString tmp = item->text(2).latin1(); tmp += CONF_TOOL_ENABLE; - if (!toTool::globalConfig(tmp, "Yes").isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty()) item->setSelected(true); } @@ -408,9 +408,9 @@ { QCString str = item->text(2).latin1(); str += CONF_TOOL_ENABLE; - toTool::globalSetConfig(str, item->isSelected() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(str, item->isSelected() ? "Yes" : ""); if (DefaultTool->currentText() == item->text(0)) - toTool::globalSetConfig(CONF_DEFAULT_TOOL, item->text(2)); + toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_TOOL, item->text(2)); } } Modified: trunk/tora/src/tohighlightedtext.cpp =================================================================== --- trunk/tora/src/tohighlightedtext.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tohighlightedtext.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -293,7 +293,7 @@ toHighlightedText::toHighlightedText(QWidget *parent, const char *name) : toMarkedText(parent, name), lexer(0), syntaxColoring(false) { - sqlLexer.setDefaultFont(toStringToFont(toTool::globalConfig(CONF_CODE, ""))); + sqlLexer.setDefaultFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_CODE, ""))); // set default SQL lexer (syntax colouring as well) setLexer (&sqlLexer); @@ -305,7 +305,7 @@ setSyntaxColoring (true); // set the font - setFont(toStringToFont(toTool::globalConfig(CONF_CODE, ""))); + setFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_CODE, ""))); errorMarker=markerDefine(Circle,4); setMarkerBackgroundColor(Qt::red,errorMarker); @@ -573,7 +573,7 @@ QString line = text(curline); if (!isReadOnly() && curcol >= 0){ - if (toTool::globalConfig(CONF_CODE_COMPLETION, "Yes").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_CODE_COMPLETION, "Yes").isEmpty()) return toReturn; toSQLParse::editorTokenizer tokens(this, curcol, curline); Modified: trunk/tora/src/tolinechart.cpp =================================================================== --- trunk/tora/src/tolinechart.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tolinechart.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -127,16 +127,16 @@ Grid = 5; AxisText = true; MousePoint[0] = MousePoint[1] = QPoint( -1, -1); - DisplaySamples = toTool::globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt(); + DisplaySamples = toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt(); clearZoom(); - setSamples(toTool::globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt()); + setSamples(toConfigurationSingle::Instance().globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt()); setMinimumSize(80, 50); // Use list font - QString str = toTool::globalConfig(CONF_LIST, ""); + QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, ""); if (!str.isEmpty()) { QFont font(toStringToFont(str)); @@ -899,7 +899,7 @@ connect(Horizontal, SIGNAL(valueChanged(int)), this, SLOT(horizontalChange(int))); // Use list font - QString str = toTool::globalConfig(CONF_LIST, ""); + QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, ""); if (!str.isEmpty()) { QFont font(toStringToFont(str)); Modified: trunk/tora/src/tomain.cpp =================================================================== --- trunk/tora/src/tomain.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tomain.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -315,7 +315,7 @@ int toolID = TO_TOOLS; SQLEditor = -1; DefaultTool = toolID; - QCString defName = toTool::globalConfig(CONF_DEFAULT_TOOL, "").latin1(); + QCString defName = toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_TOOL, "").latin1(); QPopupMenu *toolAbout = NULL; @@ -326,7 +326,7 @@ QCString tmp = (*i).first; tmp += CONF_TOOL_ENABLE; - if (toTool::globalConfig(tmp, "Yes").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty()) continue; if (defName == (*i).first) @@ -350,7 +350,7 @@ toolID++; } - if (!toTool::globalConfig(CONF_TOOLS_LEFT, "").isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(CONF_TOOLS_LEFT, "").isEmpty()) moveToolBar(ToolsToolbar, Left); menuBar()->insertItem(tr("&Tools"), ToolsMenu, TO_TOOLS_MENU); @@ -440,18 +440,18 @@ connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)), this, SLOT(windowActivated(QWidget *))); - if (!toTool::globalConfig(CONF_RESTORE_SESSION, "").isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(CONF_RESTORE_SESSION, "").isEmpty()) { try { std::map<QCString, QString> session; - toTool::loadMap(toTool::globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); + toConfigurationSingle::Instance().loadMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); importData(session, "TOra"); } TOCATCH } - if (!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty() && Connections.empty() ) + if (!toConfigurationSingle::Instance().globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty() && Connections.empty() ) showMaximized(); else show(); @@ -489,7 +489,7 @@ void toMain::windowActivated(QWidget *widget) { - if (toTool::globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty()) return ; toToolWidget *tool = dynamic_cast<toToolWidget *>(widget); if (tool) @@ -529,7 +529,7 @@ void toMain::updateRecent() { static bool first = true; - int num = toTool::globalConfig(CONF_RECENT_FILES, "0").toInt(); + int num = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_FILES, "0").toInt(); if (num > 0) { if (first) @@ -539,7 +539,7 @@ } for (int i = 0;i < num;i++) { - QString file = toTool::globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(i).latin1(), ""); + QString file = toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(i).latin1(), ""); if (!file.isEmpty()) { QFileInfo fi(file); @@ -557,12 +557,12 @@ void toMain::addRecentFile(const QString &file) { - int num = toTool::globalConfig(CONF_RECENT_FILES, "0").toInt(); - int maxnum = toTool::globalConfig(CONF_RECENT_MAX, DEFAULT_RECENT_MAX).toInt(); + int num = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_FILES, "0").toInt(); + int maxnum = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_MAX, DEFAULT_RECENT_MAX).toInt(); std::list<QString> files; for (int j = 0;j < num;j++) { - QString t = toTool::globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(j).latin1(), ""); + QString t = toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(j).latin1(), ""); if (t != file) toPush(files, t); } @@ -571,13 +571,13 @@ num = 0; for (std::list<QString>::iterator i = files.begin();i != files.end();i++) { - toTool::globalSetConfig(QCString(CONF_RECENT_FILES ":") + QString::number(num).latin1(), *i); + toConfigurationSingle::Instance().globalSetConfig(QCString(CONF_RECENT_FILES ":") + QString::number(num).latin1(), *i); num++; if (num >= maxnum) break; } - toTool::globalSetConfig(CONF_RECENT_FILES, QString::number(num)); - toTool::saveConfig(); + toConfigurationSingle::Instance().globalSetConfig(CONF_RECENT_FILES, QString::number(num)); + toConfigurationSingle::Instance().saveConfig(); } void toMain::windowsMenu(void) @@ -697,7 +697,7 @@ { if (cmd >= TO_LAST_FILE_ID && cmd <= TO_LAST_FILE_ID_END) { - edit->editOpen(toTool::globalConfig(QCString(CONF_RECENT_FILES ":") + + edit->editOpen(toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(cmd - TO_LAST_FILE_ID).latin1(), "")); } @@ -853,7 +853,7 @@ try { std::map<QCString, QString> session; - toTool::loadMap(toTool::globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); + toConfigurationSingle::Instance().loadMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); importData(session, "TOra"); } TOCATCH @@ -1207,7 +1207,7 @@ exportData(session, "TOra"); try { - toTool::saveMap(toTool::globalConfig(CONF_DEFAULT_SESSION, + toConfigurationSingle::Instance().saveMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); } @@ -1224,7 +1224,7 @@ return false; } editDisable(Edit); - toTool::saveConfig(); + toConfigurationSingle::Instance().saveConfig(); return QMainWindow::close(del); } @@ -1296,7 +1296,7 @@ QCString tmp = (*i).first; tmp += CONF_TOOL_ENABLE; - if (toTool::globalConfig(tmp, "Yes").isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty()) continue; if ((*i).second->canHandle(conn)) @@ -1383,7 +1383,7 @@ for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++) { QCString key = prefix + ":Connection:" + QString::number(id).latin1(); - if (toTool::globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) != DEFAULT_SAVE_PWD) + if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) != DEFAULT_SAVE_PWD) data[key + ":Password"] = toObfuscate((*i)->password()); data[key + ":User"] = (*i)->user(); data[key + ":Host"] = (*i)->host(); @@ -1473,7 +1473,7 @@ QString password = toUnobfuscate(data[key + ":Password"]); QString provider = data[key + ":Provider"]; bool ok = true; - if (toTool::globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) == password) + if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) == password) { password = QInputDialog::getText(tr("Input password"), tr("Enter password for %1").arg(database), @@ -1542,7 +1542,7 @@ exportData(session, "TOra"); try { - toTool::saveMap(fn, session); + toConfigurationSingle::Instance().saveMap(fn, session); } TOCATCH } @@ -1556,7 +1556,7 @@ try { std::map<QCString, QString> session; - toTool::loadMap(filename, session); + toConfigurationSingle::Instance().loadMap(filename, session); importData(session, "TOra"); } TOCATCH @@ -1569,7 +1569,7 @@ exportData(session, "TOra"); try { - toTool::saveMap(toTool::globalConfig(CONF_DEFAULT_SESSION, + toConfigurationSingle::Instance().saveMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session); } @@ -1653,11 +1653,11 @@ dialog.exec(); if (dialog.Statusbar->isChecked()) { - toTool::globalSetConfig(CONF_MESSAGE_STATUSBAR, "Yes"); + toConfigurationSingle::Instance().globalSetConfig(CONF_MESSAGE_STATUSBAR, "Yes"); TOMessageBox::information(toMainWidget(), tr("Information"), tr("You can enable this through the Global Settings in the Options (Edit menu)")); - toTool::saveConfig(); + toConfigurationSingle::Instance().saveConfig(); } } recursive = false; @@ -1671,7 +1671,7 @@ void toMain::updateKeepAlive(void) { - int keepAlive = toTool::globalConfig(CONF_KEEP_ALIVE, "0").toInt(); + int keepAlive = toConfigurationSingle::Instance().globalConfig(CONF_KEEP_ALIVE, "0").toInt(); if (KeepAlive.isActive()) disconnect(&KeepAlive, SIGNAL(timeout()), this, SLOT(keepAlive())); if (keepAlive) Modified: trunk/tora/src/tomarkedtext.cpp =================================================================== --- trunk/tora/src/tomarkedtext.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tomarkedtext.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -71,7 +71,7 @@ { setEdit(); Search = false; - setFont(toStringToFont(toTool::globalConfig(CONF_TEXT, ""))); + setFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_TEXT, ""))); connect(this, SIGNAL(textChanged()), this, SLOT(setTextChanged())); connect(this,SIGNAL(copyAvailable(bool)),this,SLOT(setCopyAvailable(bool))); @@ -332,7 +332,7 @@ break; } - if (!toTool::globalConfig(CONF_AUTO_INDENT, "Yes").isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT, "Yes").isEmpty()) { int curline, curcol; getCursorPosition (&curline, &curcol); Modified: trunk/tora/src/tonewconnection.cpp =================================================================== --- trunk/tora/src/tonewconnection.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tonewconnection.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -89,7 +89,7 @@ #endif QPopupMenu *menu = new QPopupMenu(Previous); - Database->insertItem(toTool::globalConfig(CONF_DATABASE, DEFAULT_DATABASE)); + Database->insertItem(toConfigurationSingle::Instance().globalConfig(CONF_DATABASE, DEFAULT_DATABASE)); Previous->addColumn(tr("Provider")); Previous->addColumn(tr("Host")); Previous->addColumn(tr("Database")); @@ -103,7 +103,7 @@ connect(Previous, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(historyConnect())); std::list<QCString> lst = toConnectionProvider::providers(); int sel = 0, cur = 0; - QCString provider = toTool::globalConfig(CONF_PROVIDER, DEFAULT_PROVIDER).latin1(); + QCString provider = toConfigurationSingle::Instance().globalConfig(CONF_PROVIDER, DEFAULT_PROVIDER).latin1(); for (std::list<QCString>::iterator i = lst.begin();i != lst.end();i++) { Provider->insertItem(QString::fromLatin1(*i)); @@ -121,9 +121,9 @@ } Provider->setCurrentItem(sel); changeProvider(); - processOptions(toTool::globalConfig(CONF_OPTIONS, DEFAULT_OPTIONS)); + processOptions(toConfigurationSingle::Instance().globalConfig(CONF_OPTIONS, DEFAULT_OPTIONS)); - QString host = toTool::globalConfig(CONF_HOST, DEFAULT_HOST); + QString host = toConfigurationSingle::Instance().globalConfig(CONF_HOST, DEFAULT_HOST); int portix = host.find(":"); if (portix >= 0) @@ -134,20 +134,20 @@ else Host->lineEdit()->setText(host); - Username->setText(toTool::globalConfig(CONF_USER, DEFAULT_USER)); + Username->setText(toConfigurationSingle::Instance().globalConfig(CONF_USER, DEFAULT_USER)); Username->setFocus(); - bool pass = toTool::globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty(); + bool pass = toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty(); if (pass) Password->setText(QString::fromLatin1(DEFAULT_PASSWORD)); else - Password->setText(toUnobfuscate(toTool::globalConfig(CONF_PASSWORD, DEFAULT_PASSWORD))); + Password->setText(toUnobfuscate(toConfigurationSingle::Instance().globalConfig(CONF_PASSWORD, DEFAULT_PASSWORD))); - QString defdb = toTool::globalConfig(CONF_DATABASE, DEFAULT_DATABASE); + QString defdb = toConfigurationSingle::Instance().globalConfig(CONF_DATABASE, DEFAULT_DATABASE); Database->setEditable(true); { - int maxHist = toTool::globalConfig(CONF_CONNECT_CURRENT, 0).toInt(); + int maxHist = toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_CURRENT, 0).toInt(); Previous->setSorting( -1); QListViewItem *last = NULL; for (int i = 0;i < maxHist;i++) @@ -157,28 +157,28 @@ path += QString::number(i).latin1(); QCString tmp = path; tmp += CONF_USER; - QString user = toTool::globalConfig(tmp, ""); + QString user = toConfigurationSingle::Instance().globalConfig(tmp, ""); tmp = path; tmp += CONF_PASSWORD; QString passstr = (pass ? QString::fromLatin1(DEFAULT_PASSWORD) : - (toUnobfuscate(toTool::globalConfig(tmp, DEFAULT_PASSWORD)))); + (toUnobfuscate(toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_PASSWORD)))); tmp = path; tmp += CONF_HOST; - QString host = toTool::globalConfig(tmp, DEFAULT_HOST); + QString host = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_HOST); tmp = path; tmp += CONF_DATABASE; - QString database = toTool::globalConfig(tmp, DEFAULT_DATABASE); + QString database = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_DATABASE); tmp = path; tmp += CONF_PROVIDER; - QString provider = toTool::globalConfig(tmp, DEFAULT_PROVIDER); + QString provider = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_PROVIDER); tmp = path; tmp += CONF_OPTIONS; - QString options = toTool::globalConfig(tmp, DEFAULT_OPTIONS); + QString options = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_OPTIONS); last = new QListViewItem(Previous, last, provider, host, database, user, passstr, options); } @@ -339,8 +339,8 @@ { try { - toTool::globalSetConfig(CONF_PROVIDER, Provider->currentText()); - toTool::globalSetConfig(CONF_USER, Username->text()); + toConfigurationSingle::Instance().globalSetConfig(CONF_PROVIDER, Provider->currentText()); + toConfigurationSingle::Instance().globalSetConfig(CONF_USER, Username->text()); QString pass; QString host; if (!Host->isHidden()) @@ -365,7 +365,7 @@ optionstring += box->text(); } } - toTool::globalSetConfig(CONF_OPTIONS, optionstring); + toConfigurationSingle::Instance().globalSetConfig(CONF_OPTIONS, optionstring); std::list<QString> con = toMainWidget()->connections(); for (std::list<QString>::iterator i = con.begin();i != con.end();i++) @@ -385,7 +385,7 @@ if (Port->value() != 0 && Port->value() != DefaultPort) host += ":" + QString::number(Port->value()); - toTool::globalSetConfig(CONF_HOST, host); + toConfigurationSingle::Instance().globalSetConfig(CONF_HOST, host); toConnection *retCon = new toConnection(Provider->currentText().latin1(), Username->text(), @@ -407,12 +407,12 @@ } } - if (!toTool::globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty()) + if (!toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty()) pass = retCon->password(); else pass = DEFAULT_PASSWORD; - toTool::globalSetConfig(CONF_PASSWORD, toObfuscate(pass)); - toTool::globalSetConfig(CONF_DATABASE, Database->currentText()); + toConfigurationSingle::Instance().globalSetConfig(CONF_PASSWORD, toObfuscate(pass)); + toConfigurationSingle::Instance().globalSetConfig(CONF_DATABASE, Database->currentText()); new QListViewItem(Previous, NULL, Provider->currentText(), @@ -437,7 +437,7 @@ void toNewConnection::historySave(void) { - int siz = toTool::globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt(); + int siz = toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt(); int i = 0; int j = 0; @@ -450,51 +450,51 @@ QCString tmp = path; tmp += CONF_PROVIDER; if (i < siz && item) - toTool::globalSetConfig(tmp, item->text(0)); + toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(0)); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); tmp = path; tmp += CONF_HOST; if (i < siz && item) - toTool::globalSetConfig(tmp, item->text(1)); + toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(1)); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); tmp = path; tmp += CONF_DATABASE; if (i < siz && item) - toTool::globalSetConfig(tmp, item->text(2)); + toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(2)); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); tmp = path; tmp += CONF_USER; if (i < siz && item) - toTool::globalSetConfig(tmp, item->text(3)); + toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(3)); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); tmp = path; tmp += CONF_PASSWORD; if (i < siz && item) - toTool::globalSetConfig(tmp, toObfuscate(item->text(4))); + toConfigurationSingle::Instance().globalSetConfig(tmp, toObfuscate(item->text(4))); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); tmp = path; tmp += CONF_OPTIONS; if (i < siz && item) - toTool::globalSetConfig(tmp, item->text(5)); + toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(5)); else - toTool::globalEraseConfig(tmp); + toConfigurationSingle::Instance().globalEraseConfig(tmp); i++; if (i < siz && item) j++; } - toTool::globalSetConfig(CONF_CONNECT_CURRENT, QString::number(j)); - toTool::saveConfig(); + toConfigurationSingle::Instance().globalSetConfig(CONF_CONNECT_CURRENT, QString::number(j)); + toConfigurationSingle::Instance().saveConfig(); } void toNewConnection::historySelection(void) @@ -535,7 +535,7 @@ void toNewConnection::historyConnect(void) { bool ok = true; - if (toTool::globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty()) + if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty()) { ok = false; QString name = QInputDialog::getText(tr("Enter password"), Modified: trunk/tora/src/tonoblockquery.cpp =================================================================== --- trunk/tora/src/tonoblockquery.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tonoblockquery.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -248,7 +248,7 @@ Statistics = NULL; } - int val = toTool::globalConfig(CONF_AUTO_LONG, "0").toInt(); + int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt(); if (val != 0) Started = time(NULL) + val; else @@ -309,7 +309,7 @@ Statistics = NULL; } - int val = toTool::globalConfig(CONF_AUTO_LONG, "0").toInt(); + int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt(); if (val != 0) Started = time(NULL) + val; else Modified: trunk/tora/src/tooracleconnection.cpp =================================================================== --- trunk/tora/src/tooracleconnection.cpp 2006-04-03 20:31:37 UTC (rev 2035) +++ trunk/tora/src/tooracleconnection.cpp 2006-04-03 20:40:15 UTC (rev 2036) @@ -735,7 +735,7 @@ ... [truncated message content] |
From: <kna...@us...> - 2006-05-30 18:53:44
|
Revision: 2050 Author: knackeback Date: 2006-05-30 11:53:32 -0700 (Tue, 30 May 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2050&view=rev Log Message: ----------- use SmartPtr instead of raw pointer in class toResultCombo Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toresultcombo.cpp trunk/tora/src/toresultcombo.h Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-05-30 17:42:58 UTC (rev 2049) +++ trunk/tora/src/Makefile.am 2006-05-30 18:53:32 UTC (rev 2050) @@ -11,9 +11,10 @@ i18n/tora_it.ts \ i18n/tora_toad.ts -LOKIDIR=$(top_srcdir)/ext/loki/loki-0.1.4/include +LOKIDIR_INC=$(top_srcdir)/ext/loki/loki-0.1.4/include +LOKIDIR_SRC=$(top_srcdir)/ext/loki/loki-0.1.4/src -AM_CPPFLAGS = -I$(top_srcdir)/ext/otl -I$(LOKIDIR) $(KDE_INCLUDES) $(QT_INCLUDES) $(LTDLINCL) +AM_CPPFLAGS = -I$(top_srcdir)/ext/otl -I$(LOKIDIR_INC) $(KDE_INCLUDES) $(QT_INCLUDES) $(LTDLINCL) AM_CPPFLAGS += $(PCRE_CFLAGS) \ -DDEFAULT_PLUGIN_DIR=\"$(libdir)\" \ -DTOVERSION=\"$(PACKAGE_VERSION)\" \ @@ -189,6 +190,8 @@ totool.cpp totool.h \ totoolsettingui.cpp totoolsettingui.h todroptablespaceui.h \ todroptablespaceui.cpp utils.cpp utils.h \ + $(LOKIDIR_SRC)/SmallObj.cpp \ + $(LOKIDIR_SRC)/Singleton.cpp \ $(EXTRA_tora_SOURCES) UI_FILES = toaboutui.ui \ Modified: trunk/tora/src/toresultcombo.cpp =================================================================== --- trunk/tora/src/toresultcombo.cpp 2006-05-30 17:42:58 UTC (rev 2049) +++ trunk/tora/src/toresultcombo.cpp 2006-05-30 18:53:32 UTC (rev 2050) @@ -47,17 +47,15 @@ #include "toresultcombo.moc" toResultCombo::toResultCombo(QWidget *parent, const char *name) - : QComboBox(parent, name) + : QComboBox(parent, name), Query(0) { - Query = NULL; connect(&Poll, SIGNAL(timeout()), this, SLOT(poll())); connect(this, SIGNAL(activated(int)), this, SLOT(changeSelected(void))); } toResultCombo::~toResultCombo() -{ - delete Query; +{ } void toResultCombo::query(const QString &sql, const toQList ¶m) @@ -73,12 +71,6 @@ if (Additional[i] == Selected) setCurrentItem(i); - if (Query) - { - delete Query; - Query = NULL; - } - Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param); Poll.start(100); } @@ -108,8 +100,6 @@ if (Query->eof()) { - delete Query; - Query = NULL; Poll.stop(); setFont(font()); // Small hack to invalidate size hint of combobox which should resize to needed size. updateGeometry(); @@ -118,8 +108,6 @@ } catch (const QString &exc) { - delete Query; - Query = NULL; Poll.stop(); toStatusMessage(exc); } Modified: trunk/tora/src/toresultcombo.h =================================================================== --- trunk/tora/src/toresultcombo.h 2006-05-30 17:42:58 UTC (rev 2049) +++ trunk/tora/src/toresultcombo.h 2006-05-30 18:53:32 UTC (rev 2050) @@ -38,16 +38,20 @@ #ifndef TORESULTCOMBO_H #define TORESULTCOMBO_H +#include <qcombobox.h> +#include <qstringlist.h> + +#include <loki/SmartPtr.h> + #include "config.h" #include "tobackground.h" #include "toresult.h" -#include <qcombobox.h> -#include <qstringlist.h> - class toNoBlockQuery; class toSQL; +using Loki::SmartPtr; + /** This widget displays the result of a query where each field is added as an item * to a combobox. */ @@ -56,7 +60,7 @@ { Q_OBJECT - toNoBlockQuery *Query; + SmartPtr<toNoBlockQuery> Query; toBackground Poll; QString Selected; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-02 13:41:18
|
Revision: 2054 Author: knackeback Date: 2006-06-02 05:30:54 -0700 (Fri, 02 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2054&view=rev Log Message: ----------- give class toResultColsComment an own header/implementaion file Added Paths: ----------- trunk/tora/src/toresultcolscomment.cpp trunk/tora/src/toresultcolscomment.h Added: trunk/tora/src/toresultcolscomment.cpp =================================================================== --- trunk/tora/src/toresultcolscomment.cpp (rev 0) +++ trunk/tora/src/toresultcolscomment.cpp 2006-06-02 12:30:54 UTC (rev 2054) @@ -0,0 +1,102 @@ +// +// C++ Implementation: toresultcolscomment +// +// Description: +// +// +// Author: Thomas Porschberg, core <pberg@porschberg>, (C) 2006 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include "toresultcolscomment.h" + +#include <qregexp.h> + +#include "toconnection.h" +#include "tosql.h" +#include "utils.h" + +#include "toresultcolscomment.moc" + +namespace { + toSQL SQLChangeTableCommentMySQL("toResultCols:ChangeTableComment", + "ALTER TABLE %1 COMMENT = %2", + "Set a comment on a table. Must have same % signs", + "4.1", + "MySQL"); + + toSQL SQLChangeTableComment("toResultCols:ChangeTableComment", + "COMMENT ON TABLE %1 IS %2", + ""); + + toSQL SQLChangeColumnComment("toResultCols:ChangeColumnComment", + "COMMENT ON COLUMN %1 IS %2", + "Set a comment on a column. Must have same % signs"); +} + +toResultColsComment::toResultColsComment(QWidget *parent) + : QLineEdit(parent), Changed(false), Cached(0) +{ + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); +} + + void toResultColsComment::setComment(bool table, const QString &name, const QString &comment) +{ + saveUnchanged(); + disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); + Table = table; + Name = name; + Cached = NULL; + Changed = false; + setText(comment); + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); +} + +void toResultColsComment::setCachedComment(bool table, const QString &name, QString &comment) +{ + saveUnchanged(); + disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); + Table = table; + Name = name; + Cached = &comment; + Changed = false; + setText(comment); + connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); +} + +void toResultColsComment::commentChanged() +{ + Changed = true; +} + +void toResultColsComment::focusOutEvent(QFocusEvent *e) +{ + QLineEdit::focusOutEvent(e); + saveUnchanged(); +} + +void toResultColsComment::saveUnchanged() +{ + try + { + if (!Name.isEmpty() && Changed) + { + Changed = false; + toConnection &conn = toCurrentConnection(this); + QString sql; + if (Table) + sql = SQLChangeTableComment(conn); + else + sql = SQLChangeColumnComment(conn); + QString comment = text(); + comment.replace(QRegExp("'"), "''"); + comment = "'" + comment + "'"; + conn.execute(sql.arg(Name).arg(comment)); + if (Cached) + *Cached = text(); + } + } + TOCATCH +} + Added: trunk/tora/src/toresultcolscomment.h =================================================================== --- trunk/tora/src/toresultcolscomment.h (rev 0) +++ trunk/tora/src/toresultcolscomment.h 2006-06-02 12:30:54 UTC (rev 2054) @@ -0,0 +1,70 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#ifndef TORESULTCOLSCOMMENT_H +#define TORESULTCOLSCOMMENT_H + +#include <qstring.h> +#include <qlineedit.h> + +class QFocusEvent; +class QWidget; + +/** This widget is used for single record view in the content editor. Only for internal use. + * @internal + */ +class toResultColsComment : public QLineEdit +{ + Q_OBJECT + + bool Changed; + bool Table; + QString Name; + QString *Cached; +private: + void saveUnchanged(); +protected: + virtual void focusOutEvent(QFocusEvent *); +public: + toResultColsComment(QWidget *parent); + void setComment(bool table, const QString &name, const QString &comment); + void setCachedComment(bool table, const QString &name, QString &comment); +public slots: + void commentChanged(); +}; + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-02 13:41:57
|
Revision: 2055 Author: knackeback Date: 2006-06-02 05:34:28 -0700 (Fri, 02 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2055&view=rev Log Message: ----------- give class toResultColsComment an own header/implementaion file Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toresultcols.cpp trunk/tora/src/toresultcols.h Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-06-02 12:30:54 UTC (rev 2054) +++ trunk/tora/src/Makefile.am 2006-06-02 12:34:28 UTC (rev 2055) @@ -107,6 +107,7 @@ toresultconstraint.cpp toresultconstraint.h \ toresultextract.cpp toresultextract.h \ toresultcols.cpp toresultcols.h \ + toresultcolscomment.cpp toresultcolscomment.h \ toresultcombo.cpp toresultcombo.h \ toresultcontent.cpp toresultcontent.h \ toresultcontentfilterui.cpp toresultcontentfilterui.h \ @@ -333,6 +334,7 @@ toresult.moc \ toresultbar.moc \ toresultcols.moc \ + toresultcolscomment.moc \ toresultcombo.moc \ toresultconstraint.moc \ toresultcontent.moc \ @@ -621,6 +623,7 @@ libtoresult_la_LDFLAGS = $(PFLAGS) libtoresult_la_SOURCES = \ toresultcols.cpp toresultcols.h \ + toresultcolscomment.cpp toresultcolscomment.h \ toresultcombo.cpp toresultcombo.h \ toresultcontent.cpp toresultcontent.h \ toresultcontentfilterui.cpp toresultcontentfilterui.h \ Modified: trunk/tora/src/toresultcols.cpp =================================================================== --- trunk/tora/src/toresultcols.cpp 2006-06-02 12:30:54 UTC (rev 2054) +++ trunk/tora/src/toresultcols.cpp 2006-06-02 12:34:28 UTC (rev 2055) @@ -39,6 +39,7 @@ #include "toconnection.h" #include "toresultcols.h" +#include "toresultcolscomment.h" #include "toresultlong.h" #include "tosql.h" @@ -51,85 +52,7 @@ #include "toresultcols.moc" -toResultColsComment::toResultColsComment(QWidget *parent) - : QLineEdit(parent) -{ - connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); - Cached = NULL; - Changed = false; -} -void toResultColsComment::setComment(bool table, const QString &name, const QString &comment) -{ - saveUnchanged(); - disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); - Table = table; - Name = name; - Cached = NULL; - Changed = false; - setText(comment); - connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); -} - -void toResultColsComment::setCachedComment(bool table, const QString &name, QString &comment) -{ - saveUnchanged(); - disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); - Table = table; - Name = name; - Cached = &comment; - Changed = false; - setText(comment); - connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged())); -} - -static toSQL SQLChangeTableCommentMySQL("toResultCols:ChangeTableComment", - "ALTER TABLE %1 COMMENT = %2", - "Set a comment on a table. Must have same % signs", - "4.1", - "MySQL"); -static toSQL SQLChangeTableComment("toResultCols:ChangeTableComment", - "COMMENT ON TABLE %1 IS %2", - ""); -static toSQL SQLChangeColumnComment("toResultCols:ChangeColumnComment", - "COMMENT ON COLUMN %1 IS %2", - "Set a comment on a column. Must have same % signs"); - -void toResultColsComment::commentChanged() -{ - Changed = true; -} - -void toResultColsComment::focusOutEvent(QFocusEvent *e) -{ - QLineEdit::focusOutEvent(e); - saveUnchanged(); -} - -void toResultColsComment::saveUnchanged() -{ - try - { - if (!Name.isEmpty() && Changed) - { - Changed = false; - toConnection &conn = toCurrentConnection(this); - QString sql; - if (Table) - sql = SQLChangeTableComment(conn); - else - sql = SQLChangeColumnComment(conn); - QString comment = text(); - comment.replace(QRegExp("'"), "''"); - comment = "'" + comment + "'"; - conn.execute(sql.arg(Name).arg(comment)); - if (Cached) - *Cached = text(); - } - } - TOCATCH -} - QWidget *toResultCols::resultColsEdit::createValue(QWidget *parent) { toResultColsComment *widget = new toResultColsComment(parent); Modified: trunk/tora/src/toresultcols.h =================================================================== --- trunk/tora/src/toresultcols.h 2006-06-02 12:30:54 UTC (rev 2054) +++ trunk/tora/src/toresultcols.h 2006-06-02 12:34:28 UTC (rev 2055) @@ -50,30 +50,8 @@ class QLabel; class toResultColsItem; class toResultLong; +class toResultColsComment; -/** This widget is used for single record view in the content editor. Only for internal use. - * @internal - */ -class toResultColsComment : public QLineEdit -{ - Q_OBJECT - - bool Changed; - bool Table; - QString Name; - QString *Cached; -private: - void saveUnchanged(); -protected: - virtual void focusOutEvent(QFocusEvent *); -public: - toResultColsComment(QWidget *parent); - void setComment(bool table, const QString &name, const QString &comment); - void setCachedComment(bool table, const QString &name, QString &comment); -public slots: - void commentChanged(); -}; - /** This widget displays information about the returned columns of an object * specified by the first and second parameter in the query. The sql is not * used in the query. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-18 19:40:52
|
Revision: 2057 Author: knackeback Date: 2006-06-18 12:40:07 -0700 (Sun, 18 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2057&view=rev Log Message: ----------- add sql-export from schema-browser Added Paths: ----------- trunk/tora/src/tolistviewformatter.cpp trunk/tora/src/tolistviewformatter.h trunk/tora/src/tolistviewformattercsv.cpp trunk/tora/src/tolistviewformattercsv.h trunk/tora/src/tolistviewformatterfactory.h trunk/tora/src/tolistviewformatterhtml.cpp trunk/tora/src/tolistviewformatterhtml.h trunk/tora/src/tolistviewformatteridentifier.h trunk/tora/src/tolistviewformattersql.cpp trunk/tora/src/tolistviewformattersql.h trunk/tora/src/tolistviewformattertabdel.cpp trunk/tora/src/tolistviewformattertabdel.h trunk/tora/src/tolistviewformattertext.cpp trunk/tora/src/tolistviewformattertext.h Added: trunk/tora/src/tolistviewformatter.cpp =================================================================== --- trunk/tora/src/tolistviewformatter.cpp (rev 0) +++ trunk/tora/src/tolistviewformatter.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,47 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tolistviewformatter.h" + +toListViewFormatter::toListViewFormatter() +{ +} + +toListViewFormatter::~toListViewFormatter() +{ +} + Added: trunk/tora/src/tolistviewformatter.h =================================================================== --- trunk/tora/src/tolistviewformatter.h (rev 0) +++ trunk/tora/src/tolistviewformatter.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,53 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTER +#define TOLISTVIEWFORMATTER + +#include <qstring.h> + +class toListView; + + +class toListViewFormatter +{ +public: + toListViewFormatter(); + virtual ~toListViewFormatter(); + virtual QString getFormattedString(toListView& tListView) = 0; +}; + +#endif Added: trunk/tora/src/tolistviewformattercsv.cpp =================================================================== --- trunk/tora/src/tolistviewformattercsv.cpp (rev 0) +++ trunk/tora/src/tolistviewformattercsv.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,187 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tolistviewformattercsv.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" +#include "toresultview.h" + +#include <qheader.h> +#include <qregexp.h> +#include <iostream> + +namespace +{ + toListViewFormatter* createCSV() + { + return new toListViewFormatterCSV(); + } + const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::CSV, createCSV); +} + + +toListViewFormatterCSV::toListViewFormatterCSV() : toListViewFormatter() +{ +} + +toListViewFormatterCSV::~toListViewFormatterCSV() +{ +} + +QString toListViewFormatterCSV::QuoteString(const QString &str) +{ + static QRegExp quote(QString::fromLatin1("\"")); + QString t = str; + t.replace(quote, QString::fromLatin1("\"\"")); + return t; +} + +QString toListViewFormatterCSV::getFormattedString(toListView& tListView) +{ + std::cout << "Yep, im FORMATTERCSV\n"; + int column_count = tListView.columns(); + QString separator = tListView.getSep(); + QString delimiter = tListView.getDel(); + + int *sizes = NULL; + try + { + QString output; + QString indent; + QString bgcolor; + + if (tListView.getIncludeHeader()) + { + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1("nonull"); + else + bgcolor = QString::null; + for (int j = 0;j < column_count;j++) + output += QString::fromLatin1("%1%2%3%4"). + arg(delimiter). + arg(QuoteString((tListView.header())->label(j))). + arg(delimiter). + arg(separator); + if (output.length() > 0 ) + output = output.left(output.length() - separator.length()); +#ifdef WIN32 + + output += "\r\n"; +#else + + output += "\n"; +#endif + + } + + + QListViewItem *next = NULL; + + for (QListViewItem *item = tListView.firstChild();item;item = next) + { + if (!tListView.getOnlySelection() || item->isSelected()) + { + + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff"); + else + bgcolor = QString::null; + QString line; + + for (int i = 0;i < column_count;i++) + { + QString text; + + if (resItem) + text = resItem->allText(i); + else if (chkItem) + text = chkItem->allText(i); + else + text = item->text(i); + + line += indent; + line += QString::fromLatin1("%1%2%3%4"). + arg(delimiter). + arg(QuoteString(text)). + arg(delimiter). + arg(separator); + } + line = line.left(line.length() - separator.length()); +#ifdef WIN32 + + line += "\r\n"; +#else + + line += "\n"; +#endif + + output += line; + } + + if (item->firstChild()) + { + indent += QString::fromLatin1(" "); + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + indent.truncate(indent.length() - 1); + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + delete[] sizes; + return output; + } + catch (...) + { + delete[] sizes; + throw; + } + +} Added: trunk/tora/src/tolistviewformattercsv.h =================================================================== --- trunk/tora/src/tolistviewformattercsv.h (rev 0) +++ trunk/tora/src/tolistviewformattercsv.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,52 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERCSV_H +#define TOLISTVIEWFORMATTERCSV_H + +#include "tolistviewformatter.h" + +class toListViewFormatterCSV : public toListViewFormatter +{ +private: + QString QuoteString(const QString &str); +public: + toListViewFormatterCSV(); + virtual ~toListViewFormatterCSV(); + virtual QString getFormattedString(toListView& tListView); +}; + +#endif Added: trunk/tora/src/tolistviewformatterfactory.h =================================================================== --- trunk/tora/src/tolistviewformatterfactory.h (rev 0) +++ trunk/tora/src/tolistviewformatterfactory.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,48 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERFACTORY_H +#define TOLISTVIEWFORMATTERFACTORY_H + +#include <loki/Factory.h> +#include <loki/Singleton.h> + +using Loki::Factory; +using Loki::SingletonHolder; + +typedef SingletonHolder< Factory<toListViewFormatter, int> > toListViewFormatterFactory; + +#endif Added: trunk/tora/src/tolistviewformatterhtml.cpp =================================================================== --- trunk/tora/src/tolistviewformatterhtml.cpp (rev 0) +++ trunk/tora/src/tolistviewformatterhtml.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,195 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tolistviewformatterhtml.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" +#include "toresultview.h" + +#include <qheader.h> +#include <iostream> + +namespace +{ + toListViewFormatter* createHTML() + { + return new toListViewFormatterHTML(); + } + const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::HTML, createHTML); +} + + +toListViewFormatterHTML::toListViewFormatterHTML() : toListViewFormatter() +{ +} + +toListViewFormatterHTML::~toListViewFormatterHTML() +{ +} + +QString toListViewFormatterHTML::getFormattedString(toListView& tListView) +{ + std::cout << "Yep, im FORMATTERHTML\n"; + int column_count = tListView.columns(); + QString separator = tListView.getSep(); + QString delimiter = tListView.getDel(); + + int *sizes = NULL; + try + { + QString output; + output = QString::fromLatin1("<HTML><HEAD><TITLE>%1</TITLE></HEAD><BODY><TABLE CELLSPACING=0 BORDER=0>"). + arg(tListView.sqlName()); + + QString indent; + + QString bgcolor; + if (tListView.getIncludeHeader()) + { + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1("nonull"); + else + bgcolor = QString::null; + output += QString::fromLatin1("<TR BGCOLOR=#7f7f7f>"); + for (int j = 0; j < column_count; j++){ + output += QString::fromLatin1("<TH ALIGN=LEFT BGCOLOR=#cfcfcf>"); + output += (tListView.header())->label(j); + output += QString::fromLatin1("</TH>"); +} + if ( tListView.getIncludeHeader()) + output += QString::fromLatin1("</TR>"); +#ifdef WIN32 + + output += "\r\n"; +#else + + output += "\n"; +#endif + + } + + + QListViewItem *next = NULL; + + for (QListViewItem *item = tListView.firstChild();item;item = next) + { + if (!tListView.getOnlySelection() || item->isSelected()) + { + + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff"); + else + bgcolor = QString::null; + QString line; + line = QString::fromLatin1("<TR%1>").arg(bgcolor); + + for (int i = 0;i < column_count;i++) + { + QString text; + + if (resItem) + text = resItem->allText(i); + else if (chkItem) + text = chkItem->allText(i); + else + text = item->text(i); + + line += QString::fromLatin1("<TD%1>").arg(bgcolor); + if (i == 0) + line += indent; +#if QT_VERSION >= 0x030100 + + text.replace('&', "&"); + text.replace('<', "<"); + text.replace('>', ">"); +#else + + text.replace(QRegExp("&"), "&"); + text.replace(QRegExp("<"), "<"); + text.replace(QRegExp(">"), ">"); +#endif + line += QString::fromLatin1("<PRE>"); + line += text; + line += QString::fromLatin1("</PRE>"); + line += QString::fromLatin1("</TD>"); + } + line += QString::fromLatin1("</TR>"); + +#ifdef WIN32 + + line += "\r\n"; +#else + + line += "\n"; +#endif + + output += line; + } + + if (item->firstChild()) + { + indent += QString::fromLatin1(" "); + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + indent.truncate(indent.length() - 5); + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + output += QString::fromLatin1("</TABLE></BODY></HTML>"); + delete[] sizes; + return output; + } + catch (...) + { + delete[] sizes; + throw; + } +} Added: trunk/tora/src/tolistviewformatterhtml.h =================================================================== --- trunk/tora/src/tolistviewformatterhtml.h (rev 0) +++ trunk/tora/src/tolistviewformatterhtml.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,50 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERHTML_H +#define TOLISTVIEWFORMATTERHTML_H + +#include "tolistviewformatter.h" + +class toListViewFormatterHTML : public toListViewFormatter +{ +public: + toListViewFormatterHTML(); + virtual ~toListViewFormatterHTML(); + virtual QString getFormattedString(toListView& tListView); +}; + +#endif Added: trunk/tora/src/tolistviewformatteridentifier.h =================================================================== --- trunk/tora/src/tolistviewformatteridentifier.h (rev 0) +++ trunk/tora/src/tolistviewformatteridentifier.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,46 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#ifndef TOLISTVIEWFORMATTERIDENTIFIER_H +#define TOLISTVIEWFORMATTERIDENTIFIER_H + +namespace toListViewFormatterIdentifier { + enum { TEXT, TAB_DELIMITED, CSV, HTML, SQL}; +} + +#endif + Added: trunk/tora/src/tolistviewformattersql.cpp =================================================================== --- trunk/tora/src/tolistviewformattersql.cpp (rev 0) +++ trunk/tora/src/tolistviewformattersql.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,204 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "utils.h" + +#include "toconf.h" +#include "toconfiguration.h" +#include "tolistviewformattersql.h" +#include "toconnection.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" +#include "toresultview.h" + +#include <qheader.h> + +namespace +{ + toListViewFormatter* createSQL() + { + return new toListViewFormatterSQL(); + } + const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::SQL, createSQL); +} + + +toListViewFormatterSQL::toListViewFormatterSQL() : toListViewFormatter() +{} + +toListViewFormatterSQL::~toListViewFormatterSQL() +{} + +SQLTypeMap toListViewFormatterSQL::getSQLTypes(toListView& tListView) +{ + SQLTypeMap m; + toConnection conn = toCurrentConnection(&tListView); + toConnection::objectName on = toConnection::objectName(tListView.getOwner(),tListView.getObjectName()); + toQDescList desc = conn.columns(on); + for (toQDescList::iterator i = desc.begin();i != desc.end(); ++i) + { + if ( std::find(headerFields.begin(),headerFields.end(),((*i).Name)) != headerFields.end() ) + { + if ( ((*i).Datatype).find("NUMBER") != -1 ) + m.insert(std::make_pair((*i).Name,static_cast<int>(SQL_NUMBER))); + else if ( ((*i).Datatype).find("VARCHAR") != -1 ) + m.insert(std::make_pair((*i).Name,static_cast<int>(SQL_STRING))); + else if ( ((*i).Datatype).find("DATE") != -1 ) + m.insert(std::make_pair((*i).Name,static_cast<int>(SQL_DATE))); + } + } + return m; + +} + +QString toListViewFormatterSQL::getFormattedString(toListView& tListView) +{ + int column_count = tListView.columns(); + SQLTypeMap sqltypemap; + QString output; + QListViewItem* next = 0; + unsigned int startIndex = 0; + try + { + for (int j = 0;j < column_count;j++) + { + headerFields.push_back((tListView.header())->label(j)); + } + + if ( tListView.getIncludeHeader() ) + { + startIndex = 1; + output += "-- INSERT for table " + tListView.getOwner() + "." + tListView.getObjectName() + "\n"; + } + else + { + startIndex = 0; + } + + + sqltypemap = getSQLTypes(tListView); + for ( QListViewItem *item = tListView.firstChild();item;item = next) + { + if (!tListView.getOnlySelection() || item->isSelected()) + { + + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + QString line, text; + + for (unsigned int i = startIndex; i < column_count; i++) + { + if (resItem) + text = resItem->allText(i); + else if (chkItem) + text = chkItem->allText(i); + else + text = item->text(i); + + if ( i == startIndex ) + { + line += "INSERT INTO " + tListView.getOwner() + "." + tListView.getObjectName() + "("; + for (int j = startIndex;j < column_count;j++) + { + line += (tListView.header())->label(j) + ","; + } + line.remove(line.length()-1,1); + line += ") VALUES ("; + } + + switch ( sqltypemap[(tListView.header())->label(i)]) + { + case SQL_NUMBER: + line += QString::fromLatin1("%1").arg(text) + ","; + break; + case SQL_STRING: + line += QString::fromLatin1("\'%1\'").arg(text) + ","; + break; + case SQL_DATE: + line += "TO_DATE(" + QString::fromLatin1("\'%1\'").arg(text) + ",\'" + toConfigurationSingle::Instance().globalConfig(CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT) + "\')" + ","; + break; + } + if ( i == (column_count-1) ) + { + line.replace(line.length()-1,1,")"); +#ifdef WIN32 + + line += "\r\n/"; +#else + + line += "\n/"; +#endif + } + + } +#ifdef WIN32 + + line += "\r\n"; +#else + + line += "\n"; +#endif + + output += line; + } + + if (item->firstChild()) + { + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + return output; + } + catch (...) + { + throw; + } +} Added: trunk/tora/src/tolistviewformattersql.h =================================================================== --- trunk/tora/src/tolistviewformattersql.h (rev 0) +++ trunk/tora/src/tolistviewformattersql.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,64 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERSQL_H +#define TOLISTVIEWFORMATTERSQL_H + +#include <map> +#include <list> + +#include <qstring.h> + +#include "tolistviewformatter.h" + +typedef std::map<QString,int> SQLTypeMap; + +class toListViewFormatterSQL : public toListViewFormatter +{ + +private: + enum{SQL_STRING, SQL_NUMBER, SQL_DATE}; + SQLTypeMap getSQLTypes(toListView& tListView); + std::list<QString> headerFields; +public: + toListViewFormatterSQL(); + virtual ~toListViewFormatterSQL(); + virtual QString getFormattedString(toListView& tListView); +}; + + + +#endif Added: trunk/tora/src/tolistviewformattertabdel.cpp =================================================================== --- trunk/tora/src/tolistviewformattertabdel.cpp (rev 0) +++ trunk/tora/src/tolistviewformattertabdel.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,170 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tolistviewformattertabdel.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" +#include "toresultview.h" + +#include <qheader.h> +#include <iostream> + +namespace +{ + toListViewFormatter* createTabDel() + { + return new toListViewFormatterTabDel(); + } + const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::TAB_DELIMITED, createTabDel); +} + + +toListViewFormatterTabDel::toListViewFormatterTabDel() : toListViewFormatter() +{ +} + +toListViewFormatterTabDel::~toListViewFormatterTabDel() +{ +} + +QString toListViewFormatterTabDel::getFormattedString(toListView& tListView) +{ + std::cout << "Yep, im FORMATTERTABDEL\n"; + int column_count = tListView.columns(); + QString separator = tListView.getSep(); + QString delimiter = tListView.getDel(); + + + int *sizes = NULL; + try + { + QString output; + + QString indent; + + QString bgcolor; + if (tListView.getIncludeHeader()) + { + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1("nonull"); + else + bgcolor = QString::null; + for (int j = 0;j < column_count;j++) + output += QString::fromLatin1("%1\t").arg((tListView.header())->label(j)); + output = output.left(output.length() - 1); +#ifdef WIN32 + + output += "\r\n"; +#else + + output += "\n"; +#endif + + } + + + QListViewItem *next = NULL; + + for (QListViewItem *item = tListView.firstChild();item;item = next) + { + if (!tListView.getOnlySelection() || item->isSelected()) + { + + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff"); + else + bgcolor = QString::null; + QString line; + for (int i = 0;i < column_count;i++) + { + QString text; + + if (resItem) + text = resItem->allText(i); + else if (chkItem) + text = chkItem->allText(i); + else + text = item->text(i); + + line += indent; + line += QString::fromLatin1("%1\t").arg(text); + } + line = line.left(line.length() - 1); +#ifdef WIN32 + + line += "\r\n"; +#else + + line += "\n"; +#endif + + output += line; + } + + if (item->firstChild()) + { + indent += QString::fromLatin1(" "); + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + indent.truncate(indent.length() - 1); + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + delete[] sizes; + return output; + } + catch (...) + { + delete[] sizes; + throw; + } + +} Added: trunk/tora/src/tolistviewformattertabdel.h =================================================================== --- trunk/tora/src/tolistviewformattertabdel.h (rev 0) +++ trunk/tora/src/tolistviewformattertabdel.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,50 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERTABDEL_H +#define TOLISTVIEWFORMATTERTABDEL_H + +#include "tolistviewformatter.h" + +class toListViewFormatterTabDel : public toListViewFormatter +{ +public: + toListViewFormatterTabDel(); + virtual ~toListViewFormatterTabDel(); + virtual QString getFormattedString(toListView& tListView); +}; + +#endif Added: trunk/tora/src/tolistviewformattertext.cpp =================================================================== --- trunk/tora/src/tolistviewformattertext.cpp (rev 0) +++ trunk/tora/src/tolistviewformattertext.cpp 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,246 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ + +#include "tolistviewformattertext.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" +#include "toresultview.h" + +#include <qheader.h> +#include <iostream> + +namespace +{ + toListViewFormatter* createText() + { + return new toListViewFormatterText(); + } + const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::TEXT, createText); +} + + +toListViewFormatterText::toListViewFormatterText() : toListViewFormatter() +{ +} + +toListViewFormatterText::~toListViewFormatterText() +{ +} + +QString toListViewFormatterText::getFormattedString(toListView& tListView) +{ + std::cout << "Yep, im FORMATTERTEXT\n"; + int column_count = tListView.columns(); + QString separator = tListView.getSep(); + QString delimiter = tListView.getDel(); + + int *sizes = NULL; + try + { + sizes = new int[column_count]; + int level = 0; + for (int i = 0;i < column_count;i++) + if (tListView.getIncludeHeader()) + sizes[i] = (tListView.header())->label(i).length(); + else + sizes[i] = 0; + + { + QListViewItem *next = NULL; + for (QListViewItem *item = tListView.firstChild();item;item = next) + { + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + if (!tListView.getOnlySelection() || item->isSelected()) + { + for (int i = 0;i < column_count;i++) + { + int csiz; + if (resItem) + csiz = resItem->allText(i).length(); + else if (chkItem) + csiz = chkItem->allText(i).length(); + else + csiz = item->text(i).length(); + if (i == 0) + csiz += level; + if (sizes[i] < csiz) + sizes[i] = csiz; + } + } + + if (item->firstChild()) + { + level++; + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + level--; + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + } + + + QString output; + + QString indent; + + QString bgcolor; + if (tListView.getIncludeHeader()) + { + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1("nonull"); + else + bgcolor = QString::null; + for (int j = 0;j < column_count;j++) + output += QString::fromLatin1("%1 ").arg((tListView.header())->label(j), -sizes[j]); + + if (output.length() > 0 ) + output = output.left(output.length() - 1); + +#ifdef WIN32 + + output += "\r\n"; +#else + + output += "\n"; +#endif + + for (int k = 0;k < column_count;k++) + { + for (int l = 0;l < sizes[k];l++) + output += QString::fromLatin1("="); + if (k != column_count - 1) + output += QString::fromLatin1(" "); + } +#ifdef WIN32 + output += "\r\n"; +#else + + output += "\n"; +#endif + + + } + + + QListViewItem *next = NULL; + + for (QListViewItem *item = tListView.firstChild();item;item = next) + { + if (!tListView.getOnlySelection() || item->isSelected()) + { + + toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); + toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); + + if (bgcolor.isEmpty()) + bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff"); + else + bgcolor = QString::null; + QString line; + + for (int i = 0;i < column_count;i++) + { + QString text; + + if (resItem) + text = resItem->allText(i); + else if (chkItem) + text = chkItem->allText(i); + else + text = item->text(i); + + line += indent; + line += QString::fromLatin1("%1 ").arg(text, (i == 0 ? indent.length() : 0) - sizes[i]); + } + line = line.left(line.length() - 1); + +#ifdef WIN32 + + line += "\r\n"; +#else + + line += "\n"; +#endif + + output += line; + } + + if (item->firstChild()) + { + + indent += QString::fromLatin1(" "); + next = item->firstChild(); + } + else if (item->nextSibling()) + next = item->nextSibling(); + else + { + next = item; + do + { + next = next->parent(); + indent.truncate(indent.length() - 1); + } + while (next && !next->nextSibling()); + if (next) + next = next->nextSibling(); + } + } + delete[] sizes; + return output; + } + catch (...) + { + delete[] sizes; + throw; + } + +} Added: trunk/tora/src/tolistviewformattertext.h =================================================================== --- trunk/tora/src/tolistviewformattertext.h (rev 0) +++ trunk/tora/src/tolistviewformattertext.h 2006-06-18 19:40:07 UTC (rev 2057) @@ -0,0 +1,50 @@ +/***** +* +* TOra - An Oracle Toolkit for DBA's and developers +* Copyright (C) 2003-2005 Quest Software, Inc +* Portions Copyright (C) 2005 Other Contributors +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; only version 2 of +* the License is valid for this program. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* +* As a special exception, you have permission to link this program +* with the Oracle Client libraries and distribute executables, as long +* as you follow the requirements of the GNU GPL in regard to all of the +* software in the executable aside from Oracle client libraries. +* +* Specifically you are not permitted to link this program with the +* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. +* And you are not permitted to distribute binaries compiled against +* these libraries without written consent from Quest Software, Inc. +* Observe that this does not disallow linking to the Qt Free Edition. +* +* You may link this product with any GPL'd Qt library such as Qt/Free +* +* All trademarks belong to their respective owners. +* +*****/ +#ifndef TOLISTVIEWFORMATTERTEXT_H +#define TOLISTVIEWFORMATTERTEXT_H + +#include "tolistviewformatter.h" + +class toListViewFormatterText : public toListViewFormatter +{ +public: + toListViewFormatterText(); + virtual ~toListViewFormatterText(); + virtual QString getFormattedString(toListView& tListView); +}; + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-18 19:42:59
|
Revision: 2058 Author: knackeback Date: 2006-06-18 12:42:44 -0700 (Sun, 18 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2058&view=rev Log Message: ----------- add sql-export from schema-browser Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toresultcontent.cpp trunk/tora/src/toresultview.cpp trunk/tora/src/toresultview.h Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-06-18 19:40:07 UTC (rev 2057) +++ trunk/tora/src/Makefile.am 2006-06-18 19:42:44 UTC (rev 2058) @@ -160,6 +160,14 @@ tohelpbrowser.h \ tohighlightedtext.cpp tohighlightedtext.h \ tohtml.cpp tohtml.h \ + tolistviewformatter.cpp tolistviewformatter.h \ + tolistviewformattercsv.cpp tolistviewformattercsv.h \ + tolistviewformatterfactory.h \ + tolistviewformatterhtml.cpp tolistviewformatterhtml.h \ + tolistviewformatteridentifier.h \ + tolistviewformattersql.cpp tolistviewformattersql.h \ + tolistviewformattertabdel.cpp tolistviewformattertabdel.h \ + tolistviewformattertext.cpp tolistviewformattertext.h \ tomain.cpp tomain.h \ tomarkedtext.cpp tomarkedtext.h \ tomemoeditor.cpp tomemoeditor.h \ Modified: trunk/tora/src/toresultcontent.cpp =================================================================== --- trunk/tora/src/toresultcontent.cpp 2006-06-18 19:40:07 UTC (rev 2057) +++ trunk/tora/src/toresultcontent.cpp 2006-06-18 19:42:44 UTC (rev 2058) @@ -1237,6 +1237,8 @@ list.hide(); QString name = tr("Content of %1.%2").arg(Owner).arg(Table); list.setSQLName(name); + list.setObjectName(Table); + list.setOwner(Owner); list.query(SQL); list.editReadAll(); return list.editSave(ask); @@ -1319,6 +1321,8 @@ case TORESULT_COPY_SEL: { toListView *lst = copySelection(false); + lst->setObjectName(Table); + lst->setOwner(Owner); if (lst) { try @@ -1334,6 +1338,8 @@ case TORESULT_COPY_SEL_HEAD: { toListView *lst = copySelection(true); + lst->setObjectName(Table); + lst->setOwner(Owner); if (lst) { try Modified: trunk/tora/src/toresultview.cpp =================================================================== --- trunk/tora/src/toresultview.cpp 2006-06-18 19:40:07 UTC (rev 2057) +++ trunk/tora/src/toresultview.cpp 2006-06-18 19:42:44 UTC (rev 2058) @@ -38,6 +38,9 @@ #include "utils.h" #include "toconf.h" +#include "tolistviewformatter.h" +#include "tolistviewformatterfactory.h" +#include "tolistviewformatteridentifier.h" #include "tomain.h" #include "tomemoeditor.h" #include "toparamget.h" @@ -72,6 +75,7 @@ #include <qtooltip.h> #include <qworkspace.h> + #include "toresultlistformatui.moc" #include "toresultview.moc" @@ -970,14 +974,6 @@ QListView::focusInEvent(e); } -static QString QuoteString(const QString &str) -{ - static QRegExp quote(QString::fromLatin1("\"")); - QString t = str; - t.replace(quote, QString::fromLatin1("\"\"")); - return t; -} - bool toListView::searchNext(toSearchReplace *search) { QListViewItem *item = currentItem(); @@ -1107,6 +1103,9 @@ case 3: nam = "*.html"; break; + case 4: + nam = "*.sql"; + break; } QString filename = toSaveFilename(QString::null, nam, this); @@ -1142,273 +1141,26 @@ } -QString toListView::exportAsText(bool includeHeader, bool onlySelection, int type, - const QString &sep, const QString &del) + +QString toListView::exportAsText(bool tincludeHeader, bool tonlySelection, int type, + const QString &tsep, const QString &tdel) { - QString separator = sep; - QString delimiter = del; + QString result; + + includeHeader = tincludeHeader; + onlySelection = tonlySelection; + sep = tsep; + del = tdel; + if (type < 0) - type = exportType(separator, delimiter); + type = exportType(sep, del); if (type < 0) throw QString::null; - int *sizes = NULL; - try - { - if (type == 0) - { - sizes = new int[columns()]; - int level = 0; - for (int i = 0;i < columns();i++) - if (includeHeader) - sizes[i] = header()->label(i).length(); - else - sizes[i] = 0; + std::auto_ptr<toListViewFormatter> pFormatter ( toListViewFormatterFactory::Instance().CreateObject(type) ); + result = pFormatter->getFormattedString(*this); - { - QListViewItem *next = NULL; - for (QListViewItem *item = firstChild();item;item = next) - { - toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); - toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); - - if (!onlySelection || item->isSelected()) - { - for (int i = 0;i < columns();i++) - { - int csiz; - if (resItem) - csiz = resItem->allText(i).length(); - else if (chkItem) - csiz = chkItem->allText(i).length(); - else - csiz = item->text(i).length(); - if (i == 0) - csiz += level; - if (sizes[i] < csiz) - sizes[i] = csiz; - } - } - - if (item->firstChild()) - { - level++; - next = item->firstChild(); - } - else if (item->nextSibling()) - next = item->nextSibling(); - else - { - next = item; - do - { - next = next->parent(); - level--; - } - while (next && !next->nextSibling()); - if (next) - next = next->nextSibling(); - } - } - } - } - - QString output; - if (type == 3) - { - output = QString::fromLatin1("<HTML><HEAD><TITLE>%1</TITLE></HEAD><BODY><TABLE CELLSPACING=0 BORDER=0>"). - arg(sqlName()); - } - - QString indent; - - QString bgcolor; - if (includeHeader) - { - if (bgcolor.isEmpty()) - bgcolor = QString::fromLatin1("nonull"); - else - bgcolor = QString::null; - if (type == 3) - output += QString::fromLatin1("<TR BGCOLOR=#7f7f7f>"); - for (int j = 0;j < columns();j++) - switch (type) - { - case 0: - output += QString::fromLatin1("%1 ").arg(header()->label(j), -sizes[j]); - break; - case 1: - output += QString::fromLatin1("%1\t").arg(header()->label(j)); - break; - case 2: - output += QString::fromLatin1("%1%2%3%4"). - arg(delimiter). - arg(QuoteString(header()->label(j))). - arg(delimiter). - arg(separator); - break; - case 3: - output += QString::fromLatin1("<TH ALIGN=LEFT BGCOLOR=#cfcfcf>"); - output += header()->label(j); - output += QString::fromLatin1("</TH>"); - break; - } - if (output.length() > 0 && type == 2) - output = output.left(output.length() - separator.length()); - else if (output.length() > 0 && type != 3) - output = output.left(output.length() - 1); - else if (type == 3 && includeHeader) - output += QString::fromLatin1("</TR>"); -#ifdef WIN32 - - output += "\r\n"; -#else - - output += "\n"; -#endif - - if (type == 0) - { - for (int k = 0;k < columns();k++) - { - for (int l = 0;l < sizes[k];l++) - output += QString::fromLatin1("="); - if (k != columns() - 1) - output += QString::fromLatin1(" "); - } -#ifdef WIN32 - output += "\r\n"; -#else - - output += "\n"; -#endif - - } - } - - QListViewItem *next = NULL; - for (QListViewItem *item = firstChild();item;item = next) - { - - if (!onlySelection || item->isSelected()) - { - - toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item); - toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item); - - if (bgcolor.isEmpty()) - bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff"); - else - bgcolor = QString::null; - QString line; - if (type == 3) - line = QString::fromLatin1("<TR%1>").arg(bgcolor); - - for (int i = 0;i < columns();i++) - { - QString text; - - if (resItem) - text = resItem->allText(i); - else if (chkItem) - text = chkItem->allText(i); - else - text = item->text(i); - - switch (type) - { - case 0: - line += indent; - line += QString::fromLatin1("%1 ").arg(text, (i == 0 ? indent.length() : 0) - sizes[i]); - break; - case 1: - line += indent; - line += QString::fromLatin1("%1\t").arg(text); - break; - case 2: - line += indent; - line += QString::fromLatin1("%1%2%3%4"). - arg(delimiter). - arg(QuoteString(text)). - arg(delimiter). - arg(separator); - - break; - case 3: - line += QString::fromLatin1("<TD%1>").arg(bgcolor); - if (i == 0) - line += indent; -#if QT_VERSION >= 0x030100 - - text.replace('&', "&"); - text.replace('<', "<"); - text.replace('>', ">"); -#else - - text.replace(QRegExp("&"), "&"); - text.replace(QRegExp("<"), "<"); - text.replace(QRegExp(">"), ">"); -#endif - line += QString::fromLatin1("<PRE>"); - line += text; - line += QString::fromLatin1("</PRE>"); - line += QString::fromLatin1("</TD>"); - break; - } - } - if (type == 3) - line += QString::fromLatin1("</TR>"); - else if (type == 2) - line = line.left(line.length() - separator.length()); - else - line = line.left(line.length() - 1); -#ifdef WIN32 - - line += "\r\n"; -#else - - line += "\n"; -#endif - - output += line; - } - - if (item->firstChild()) - { - if (type != 3) - indent += QString::fromLatin1(" "); - else - indent += QString::fromLatin1(" "); - next = item->firstChild(); - } - else if (item->nextSibling()) - next = item->nextSibling(); - else - { - next = item; - do - { - next = next->parent(); - if (type == 3) - indent.truncate(indent.length() - 5); - else - indent.truncate(indent.length() - 1); - } - while (next && !next->nextSibling()); - if (next) - next = next->nextSibling(); - } - } - if (type == 3) - output += QString::fromLatin1("</TABLE></BODY></HTML>"); - delete[] sizes; - return output; - } - catch (...) - { - delete[] sizes; - throw; - } + return result; } void toListView::exportData(std::map<QCString, QString> &ret, const QCString &prefix) @@ -1628,7 +1380,8 @@ try { Query = new toQuery(connection(), sql, param); - + + //printf("Query: %s \n", (const char*) Query->sql); toQDescList description = Query->describe(); bool hidden = false; @@ -1788,6 +1541,7 @@ Format->insertItem(tr("Tab delimited")); Format->insertItem(tr("CSV")); Format->insertItem(tr("HTML")); + Format->insertItem(tr("SQL")); int num = toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_FORMAT, "").toInt(); Format->setCurrentItem(num); formatChanged(num); Modified: trunk/tora/src/toresultview.h =================================================================== --- trunk/tora/src/toresultview.h 2006-06-18 19:40:07 UTC (rev 2057) +++ trunk/tora/src/toresultview.h 2006-06-18 19:42:44 UTC (rev 2058) @@ -485,7 +485,21 @@ virtual QListViewItem *printPage(TOPrinter *printer, QPainter *painter, QListViewItem *top, int &column, int &level, int pageNo, bool paint = true); int exportType(QString &separator, QString &delimiter); + + QString owner; + QString objectName; + + bool includeHeader; + bool onlySelection; + QString sep; + QString del; + public: + bool getIncludeHeader(){return includeHeader;}; + bool getOnlySelection(){return onlySelection;}; + QString getSep(){return sep;}; + QString getDel(){return del;}; + /** Create new list view. * @param parent Parent of list. * @param name Name of list. @@ -506,6 +520,41 @@ { Name = name; } + + /** Set owner + * introduced to get type information for fields + */ + virtual void setOwner(QString const & tOwner) + { + owner = tOwner; + } + + + /** Set object name + * introduced to get type information for fields + */ + virtual void setObjectName(QString const & tObjectName) + { + objectName = tObjectName; + } + + /** Get owner + * introduced to get type information for fields + */ + virtual QString getOwner() + { + return owner; + } + + + /** Get object name + * introduced to get type information for fields + */ + virtual QString getObjectName() + { + return objectName; + } + /** Get the whole text for the item and column selected when menu was poped up. */ QString menuText(void); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-29 21:22:13
|
Revision: 2062 Author: knackeback Date: 2006-06-29 14:21:51 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2062&view=rev Log Message: ----------- give classes toBackgroundLabel/toTimer a separate header/implementation file Added Paths: ----------- trunk/tora/src/tobackgroundlabel.cpp trunk/tora/src/tobackgroundlabel.h trunk/tora/src/totimer.cpp trunk/tora/src/totimer.h Added: trunk/tora/src/tobackgroundlabel.cpp =================================================================== --- trunk/tora/src/tobackgroundlabel.cpp (rev 0) +++ trunk/tora/src/tobackgroundlabel.cpp 2006-06-29 21:21:51 UTC (rev 2062) @@ -0,0 +1,320 @@ +// +// C++ Implementation: toBackgroundLabel +// +// Copyright: See COPYING file that comes with this distribution +// +#include "tobackgroundlabel.h" + +#include "utils.h" + +#ifdef TO_KDE +#include <kstatusbar.h> +#endif + +#include <qtooltip.h> + +#include "tomain.h" +#include "toconnection.h" + +const char toBackgroundLabel::data[] = "\x47\x49\x46\x38\x39\x61\x17\x00\x17\x00\xe7\x00\x00\x02\x66\x9a\x92\xbe\xd2\x66\xa2\xc2\x46\x8e\xb6\xca\xde\xea\x2a\x7e\xaa\xaa\xca\xde\x0e\x6e\x9e\x82\xb2\xce" + "\xb6\xd2\xe2\x16\x72\xa2\x52\x96\xba\x3e\x8a\xb2\x6e\xa6\xc6\xe2\xee\xf2\x9a\xc2\xd6\x22\x7a\xa6\xba\xd6\xe2\x36\x86\xae\x7a\xae\xca\xd6\xe6\xee\x5e\x9e\xbe\x86" + "\xb6\xce\x0a\x6e\x9e\xbe\xd6\xe6\xa2\xc6\xda\x76\xae\xc6\x16\x76\xa2\x2a\x82\xaa\x5a\x9e\xbe\x8a\xba\xce\x4e\x96\xb6\xd2\xe6\xee\xaa\xce\xde\xbe\xda\xe6\x02\x6a" + "\x9a\xde\xee\xf2\x12\x72\x9e\xc2\xda\xe6\x56\x9a\xba\x26\x7e\xa6\xae\xce\xde\x36\x8a\xae\x1a\x76\xa2\x6e\xaa\xc6\x1e\x7a\xa6\x2e\x82\xaa\xa2\xca\xda\x7a\xb2\xca" + "\x66\xa6\xc2\x32\x86\xae\xc2\xde\xe6\x3e\x8e\xb2\xae\xd2\xde\x96\xc2\xd6\x0a\x6a\x9e\x9a\xc6\xd6\x62\xa2\xbe\xde\xea\xf2\x4a\x92\xb6\x8e\xba\xd2\x82\xb6\xce\x72" + "\xaa\xc6\xd2\xe2\xee\xca\xe2\xea\x46\x92\xb6\xd6\xea\xee\x8e\xbe\xd2\x1e\x76\xa6\xb6\xd6\xe2\xe6\xee\xf6\x52\x9a\xba\x32\x82\xae\x96\xbe\xd6\x5a\x9a\xbe\x06\x6a" + "\x9a\x12\x6e\x9e\x6a\xa6\xc2\x7e\xb2\xca\x42\x8e\xb2\x3a\x86\xae\xa6\xca\xda\xe6\xf2\xf6\x26\x7a\xa6\xce\xe2\xea\x1a\x76\xa6\x2e\x82\xae\x8a\xb6\xce\x06\x6a\x9e" + "\x4e\x92\xb6\x6a\xa6\xc6\x7e\xb2\xce\x92\xbe\xd6\x56\x9a\xbe\x42\x8e\xb6\xa6\xca\xde\x62\x9e\xbe\xb2\xce\xde\x76\xaa\xc6\xb2\xd2\xe2\xea\xf2\xf6\x9e\xc2\xd6\xc6" + "\xde\xea\xba\xd6\xe6\x8a\xba\xd2\x3a\x8a\xae\x4e\x96\xba\x9e\xc6\xda\x12\x72\xa2\x26\x7e\xaa\x62\xa2\xc2\xda\xea\xf2\x76\xae\xca\xc6\xda\xe6\xce\xe2\xee\x12\x6e" + "\xa2\x3a\x8a\xb2\xc6\xde\xe6\xb2\xd2\xde\x9e\xc6\xd6\xda\xea\xee\x8a\xb6\xd2\x26\x7a\xaa\xb2\xce\xe2\x4e\x92\xba\x62\x9e\xc2\x9e\xc2\xda\x0e\x6e\xa2\xe2\xee\xf6" + "\x36\x86\xb2\x3a\x86\xb2\x76\xaa\xca\x36\x8a\xb2\xc6\xda\xea\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xff\x0b\x4e\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00" + "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\x67\x06\xcd\x02\x08\x08\x25\x2c\x48\x30\xb0\xa1\x43\x12\x09\xae" + "\x7c\x60\x73\xe1\x02\x80\x8b\x6c\x1a\x80\x70\xf8\x90\x84\xc0\x38\x57\xd6\xac\xf1\xf0\x61\x04\x00\x08\x66\x1a\x92\xd8\xc8\xb1\x01\x1b\x08\x2a\xb4\x64\xc8\xf0\x01" + "\xc0\x07\x32\x03\xc9\x64\x70\x08\x42\x0d\x00\x8b\x17\x01\x2c\x98\xd1\xe0\x82\x99\x0c\x2c\xd1\xa4\x14\x48\xe6\x8a\x87\x04\x71\xee\x34\x01\x1a\x28\xce\x02\x3b\x1e" + "\x16\xe0\xfc\x70\xa5\x61\xa1\x19\x1e\x05\x16\xf9\x00\xc1\x26\x85\x1f\x71\x46\x34\xf8\x01\xa1\x81\x40\x10\x07\x17\x14\x0a\x2b\x50\x87\xc1\x1f\xff\x66\xcc\x29\x91" + "\x81\x8d\x8a\x7f\x3a\x24\x00\x68\x52\x67\x81\x5b\x81\x2c\xee\x34\x2c\x32\x82\xcd\x1a\x08\x12\xfe\xb1\x30\x2b\x98\xc5\x3f\xb8\x00\xd8\x2c\xfd\xd7\x00\x80\x84\x0c" + "\x37\x08\x25\xa8\x68\xc2\xe7\x8d\x3a\x71\xca\x5e\x8c\xfc\x2f\xce\x1c\x9b\x1e\x84\x36\x01\xd0\x20\xc1\xea\x7f\x0b\x82\x5e\x5c\xf0\xcf\x27\x80\x3c\xb3\x3d\x08\xce" + "\x30\x79\x04\x43\x10\x82\x2f\x8e\x40\x03\xa2\x04\x00\x15\x09\x98\x00\x30\x03\xe1\x42\x11\xc1\xbc\x05\xda\xb9\x71\x72\x67\xec\x12\x09\xb4\xa2\x78\xfe\x07\x81\x49" + "\x86\xb2\x3b\x07\xde\xf9\x80\xb7\xb7\x84\x04\xb1\xd9\x30\x84\xc0\xc6\xc2\x8d\x1b\x33\x2e\x37\xc8\xa0\xa3\x61\x1d\x33\x4d\xb0\xa1\x46\x1c\x02\x1d\x54\x47\x4d\x66" + "\xe8\x00\x42\x4d\x19\x6d\x06\x02\x52\x0d\x65\xf5\x0f\x19\x12\xdc\x51\x44\x13\xd4\x5d\xc4\x44\x6d\x24\x50\x70\x87\x07\x38\x09\x54\x07\x1a\x02\x15\x72\x85\x19\x73" + "\x78\x10\x87\x0a\x58\x04\x05\xc1\x1c\x12\x6c\x26\x50\x02\x21\x92\xa0\x83\x0a\x00\xb0\x60\x82\x05\x64\x29\x70\x43\x1a\x2c\xa9\x14\xa2\x40\x63\x48\x07\x41\x62\x77" + "\x64\x60\x41\x21\x03\xd1\xc5\x11\x41\xbe\x01\xa0\x00\x42\x10\x2c\x80\x46\x06\xed\x3d\x39\x90\x1d\x2c\xc8\xa0\x42\x20\x12\x34\x71\x45\x7e\x03\x05\x04\x00\x21\xf9" + "\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xd4\x31\xa6\x8c\x16\x09\x2b\x88\xb4\x90\x70\x22\x81\xc0\x87\x10\x1f\xea\xa0" + "\xf2\xaf\x4b\x17\x19\x05\xd8\x00\x58\x82\x64\x02\x88\x88\x20\x1f\x06\x68\x62\x21\xc0\x16\x06\x58\x20\x34\x09\x19\xd1\xc0\x00\x24\x6c\x5a\xd0\x80\xf3\x00\x8e\x8b" + "\x02\x49\x20\xbe\x91\x03\xd1\x44\x00\x30\x3b\xa0\x10\xb9\x31\xa2\x00\x8c\x3c\x69\x62\x50\x14\x48\x25\x0a\x44\x11\x21\x12\xd4\xb1\x63\x61\xc0\x05\x00\x05\x7a\x88" + "\xf1\x11\xe2\x81\xc3\x7f\x6b\x1e\x5a\x50\x32\xa1\x08\x05\x81\x09\x26\x48\x28\xc1\x20\xc0\x98\x04\x02\x7a\x50\xe9\xd0\xe0\x1f\x09\x18\x32\x68\x4c\xe0\x91\x02\x22" + "\x90\x00\x5d\x32\xfc\xa8\xf3\x41\xc2\x83\x1c\x1f\xfe\x4d\x98\xe2\x82\x47\x0f\x2f\x15\x1e\x36\xc9\xf9\x50\x04\x83\x39\x1a\x18\x14\x48\xc0\xe1\x06\x0f\x0b\x05\x96" + "\xc0\xf9\x37\xa6\xc2\x9c\x2a\x4e\x05\x26\x69\xa1\xc0\x02\x1d\x19\x2c\x96\x9c\xb0\x13\xba\x85\x1d\x03\x05\x46\x00\x00\x30\x40\xa0\x99\x20\x37\xe8\xf0\x20\x82\x24" + "\xd0\x12\x1b\x4e\x76\xd7\xf5\x71\x63\x37\x80\x0b\x6a\xfe\x59\xb8\x5a\x01\xc1\x08\x35\x2d\x88\x64\x60\xb0\x44\x82\x43\x13\x41\x9c\xd9\x1f\x40\x60\x22\xf7\x0a\x2e" + "\x47\x3c\xb7\x40\xe2\xa1\xc5\x0a\x18\x0f\x6d\x94\xe0\xd8\xe3\x9f\x87\x1b\x2b\x58\x78\x38\x40\xa4\x0e\x11\x15\x5a\x1c\x20\x48\x18\x10\x0d\xc1\x82\x08\x02\x2d\x80" + "\x44\x03\x3c\x30\x50\x42\x10\xff\xa4\xd1\x41\x1e\x28\xa8\x01\x04\x1e\x21\x34\xf0\xc0\x52\x02\xd9\xe0\x81\x13\x41\xb4\xd1\xd0\x3f\x0d\x28\x51\x07\x0b\x39\x60\x70" + "\x46\x12\x34\xdc\x20\x01\x17\x66\x08\x04\x44\x0a\x30\x28\x81\xc0\x43\x77\x08\xf4\xc5\x10\x06\x38\x61\x81\x13\x44\x00\x70\xc0\x0e\x01\x10\x20\x44\x02\x51\x98\x00" + "\xd1\x18\x1f\xfd\x83\x01\x01\x39\x3c\x11\x00\x1c\x10\x00\x90\xd2\x0e\x60\x34\xc1\x83\x92\x0f\xe1\x61\x84\x44\x08\x40\x90\x86\x0d\x49\x54\x50\x40\x09\x7f\x40\xd0" + "\xc0\x0b\x2c\x41\xa4\x04\x11\x0a\x74\x90\x04\x17\x08\x34\xd1\x83\x1d\x6d\xf6\x54\x01\x11\x23\x2c\x31\x05\x1d\x0c\x54\xa0\x84\x40\x6f\xe4\x89\x96\x0f\x32\xc8\x80" + "\x84\x0c\x6a\x34\xb1\x46\x06\x1c\x06\x04\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\xf7\x26\x01\x02\x35" + "\x6d\x14\xac\x68\x41\xe7\x44\x82\x81\x10\x23\xea\x20\x21\x70\xc2\x07\x41\x0a\x00\x54\x39\x12\xb1\x63\x44\x37\x1d\x9c\x78\x68\x52\x40\x81\x12\x03\x1e\x21\x12\x98" + "\x90\xf0\x00\x04\x3e\x79\x7a\x04\xd9\x10\x43\x44\xca\x7f\x64\x70\x58\xe0\xe1\x64\x47\x8b\x11\x37\x4e\xf0\x78\x22\xa1\xc8\x40\x07\x20\x22\x86\x89\x23\xe4\x5f\x06" + "\x16\x44\x00\xcc\x69\xc2\x43\x8f\x01\x03\x40\x70\xa2\xfc\x57\xc4\x47\x20\x09\x0d\xa8\x0c\x0c\x31\x60\x05\x84\x07\x3e\x8a\xe4\x99\x40\xe6\x1f\x02\x81\x15\x20\x04" + "\x19\x62\x03\xce\x1d\x88\x5c\x3e\xb0\x00\x41\xe5\x81\x8c\x14\xff\x3e\x24\xe0\xb3\x61\x41\x12\x1f\x10\xbc\x0c\x14\xe0\x01\xa5\x05\x81\x08\xaa\x68\x19\x22\x81\xc5" + "\x0a\x09\x77\x2a\xb0\xb9\xe1\x64\xcc\x03\x01\x55\x20\x3c\x16\x98\x40\xc9\x81\x0a\x4a\xf4\xd0\x01\x60\xc1\xc6\x01\x00\x05\xfe\x79\x28\xb0\x04\x00\x80\x05\x03\x59" + "\x40\x20\x02\x23\x88\x8b\x16\x10\xd6\xec\x00\xa0\x20\xca\x3f\x1e\x25\x6c\x03\x60\xb3\xe3\x5f\x82\x29\x23\x68\x5c\x21\x22\x83\x08\x83\x1e\x10\x56\xe0\xfe\x57\xe3" + "\x83\x72\x05\x3e\xfe\xcb\x79\x01\xb0\xc4\x87\x06\x00\x27\xb4\x9f\x60\xa2\x66\xcd\xc0\x09\x1b\x2e\x30\x68\xf2\x80\xc7\x85\x03\x3b\x78\xd0\x69\x81\xc6\x05\x82\x2e" + "\x07\xbc\xf5\x8f\x0d\xff\xa4\x00\xc3\x10\x21\x08\xb4\x03\x1b\x0b\x78\x70\xc2\x01\x03\x98\x81\xdb\x1d\x6d\xe0\xf0\x06\x05\x13\x28\x91\x04\x44\x08\x54\xd0\x83\x0d" + "\x6a\x54\x41\x07\x64\x02\xb9\xf1\x40\x02\xad\xad\x70\x80\x12\x11\x0c\x44\x00\x02\x12\x40\x01\x46\x00\x02\x19\xf5\x0f\x06\x0f\xa4\x20\x43\x66\x07\x8c\xa0\x07\x0b" + "\x0f\xfd\x90\xc1\x43\x10\xe9\xd0\xd6\x3f\x24\x18\x50\xc0\x02\x5c\xec\x70\x01\x00\x28\x74\x60\x43\x08\x38\xac\x71\xa4\x47\x29\x9c\x50\x45\x05\x87\x41\xc1\xc6\x01" + "\x2b\x14\x20\x00\x06\x37\x09\xf4\xc0\x0e\x1b\x5c\xc7\x83\x06\x0b\x7c\xe0\x41\x52\x65\x0e\x54\xd6\x08\x6d\x0c\xa0\xc4\x68\x71\x0e\x34\x86\x0f\x50\xc8\xe0\x42\x01" + "\x12\x2c\x80\x40\x19\x3f\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xa8\x83\xc0\x84\x20\x1b" + "\xe6\xac\x80\x40\xe7\xc4\xc0\x87\x10\x1f\x62\x08\xa0\x24\xcd\x8d\x0b\x12\x7a\x44\xdc\x08\xe2\x1f\x18\x1a\x27\x26\x0c\x59\xb0\x01\xc9\x9a\x8d\x0f\x75\xbc\xc8\x71" + "\xe3\x00\x9b\x29\x02\xf2\x9c\x50\x40\xe4\x24\xca\x7f\x26\x0c\x7c\x89\xc0\x63\xc7\x86\x11\x12\x9c\x08\x18\xe1\x03\x65\x0a\x38\x3b\x10\x98\x11\x68\x21\xcb\x92\x1b" + "\x1f\xca\x7c\x50\x43\x61\xa0\x03\x81\x51\x38\x2c\x59\xe0\x24\xc3\x1b\x81\x63\x04\xb4\x58\x01\x63\xc2\x84\x14\x29\x3a\x2e\x75\x82\x64\x45\x8c\x17\x13\x06\x68\x78" + "\xc8\x45\x50\x10\x03\x67\xbe\x80\x29\xf2\x0f\x8e\x0f\x41\x44\x1a\xf0\x20\xe9\xa2\xc1\xc0\x09\x09\x7a\x28\xe9\x58\xe7\x00\x02\x20\x3b\xe8\x1c\x88\x71\x87\xc1\x8d" + "\x12\x30\x44\x78\x10\x80\x02\x42\xd1\x81\x36\x98\x30\xc8\xd0\x06\x42\x89\x0c\x43\x01\x74\xf9\x27\x40\xcf\x12\x00\x23\x1c\x0a\x0c\xb0\xe0\xc2\x82\x06\x10\x88\x0c" + "\xb0\xa0\xa7\x04\x9d\x04\xff\xa2\x54\x01\x40\xbc\x8a\x40\x33\x0b\x14\xb4\x81\x31\xc0\xca\x06\x30\x47\x4a\x0c\x98\x20\x30\x84\x1a\xe2\x00\x14\x54\xf8\xd7\xe4\x02" + "\x80\x0f\x3c\x14\xc6\xc8\x40\xc1\x05\xc9\x85\x00\x0f\x9b\x28\x38\xf0\xa4\x42\x94\x3c\x2b\xb0\x14\x70\x52\xa1\xc4\x89\x1d\x11\x62\xdc\x30\xf1\x0f\x04\x9c\x07\x45" + "\x08\x10\xc5\x03\xff\x20\x20\xc1\x0d\x74\x6c\x21\xd6\x00\x68\x50\x17\xc2\x09\x63\xc4\x91\x42\x10\x0c\x78\xf0\x50\x07\x32\x08\x60\x83\x06\x2d\x28\x80\xc0\x3f\x54" + "\xfc\x13\xc7\x1a\x06\xf4\xc0\x83\x18\x07\x40\xe0\xc4\x52\x22\x66\x60\x01\x18\x23\x30\x31\xd7\x3f\x52\x08\x04\xc2\x0f\x3b\xb8\xf1\x82\x17\x58\xdc\xb0\x00\x7a\xff" + "\x14\xb1\xc5\x00\x3e\xd8\x80\x52\x07\x00\x4c\xd0\x03\x12\x00\x6c\x70\x42\x14\x14\x84\x11\x42\x88\x37\xf1\xc0\x84\x67\x4e\xec\xa0\xc0\x0d\x63\x9d\x70\xc7\x57\x37" + "\xfd\x83\x46\x67\x02\x3c\x30\x81\x1a\x05\x74\x91\x41\x21\x61\x0e\x04\x43\x1a\x07\x6c\x30\x40\x13\x49\xf0\xd5\xe6\x43\x2c\xd0\x81\x84\x0b\x6d\xa0\xb0\x03\x75\x3a" + "\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\xe8\x40\xc7\xbf\x05\x4c\xd8\xac\x40\x41\x68\xa0" + "\xc3\x87\x0f\x43\xd8\x00\x63\x05\x00\x11\x25\x09\x20\x6a\x14\xb1\x63\x01\x04\x25\x1e\x26\xc8\x28\xb1\x40\xe3\xc3\x04\x57\x04\x40\xb8\xa0\x20\x90\x06\x16\x0a\x36" + "\x20\x30\xf9\x4f\xce\xbf\x14\x45\x4c\x98\xe8\xa1\x02\xc0\x14\x16\x08\x38\x48\x30\xa1\x91\xc7\x13\x09\x12\x10\x50\x10\xd8\x60\x05\x80\x02\x2f\x04\x20\xc9\x70\x52" + "\xcd\x0a\x0e\x31\x32\x78\x08\x41\x42\xa0\x0d\x0e\x07\x06\xdc\x41\x91\x22\xe3\x3f\x23\xff\x62\x1c\x68\xf1\x20\x45\x90\x36\x39\x1c\x4e\x90\xc0\x81\xc7\x96\x1a\x01" + "\x44\xfc\x93\x92\x06\x02\x83\x3c\x5b\x0a\xdc\xd0\xd3\xe3\x1f\x95\x7f\x0d\x12\x3c\xe8\x10\xe5\x87\x89\x26\x1e\x04\x42\xb8\xc1\xc3\x49\x1b\x00\x2b\x72\x44\xb0\x90" + "\x03\x49\x0b\x16\x02\x41\xfc\x33\x53\x60\xc1\x99\x2e\x2b\xd2\xd8\x80\x32\x82\x0d\x97\x7f\x1d\x88\x2c\x01\x00\x60\x01\x51\x81\x3c\xfe\xa0\x08\xd1\x62\x05\x98\x0e" + "\x6c\x5c\x94\xfc\x97\x00\x02\x6d\x00\x10\x06\xfa\x60\x70\x60\x41\x03\x08\x2d\x92\x10\xb9\x61\x61\xa0\x9d\x1d\xc7\x15\x94\xcc\xd0\x62\x89\x84\x2b\x50\x5c\xbf\x1c" + "\x49\xd1\xb7\xce\x3f\xd1\x69\x37\x94\xa0\x71\x22\x8a\x0f\x0e\x00\xaa\xe4\x80\x71\x81\x8e\x40\x0d\x5a\x08\xe0\x49\xc1\xa2\x6c\x07\x3b\x6b\xfc\x63\x83\x15\x58\xb4" + "\x20\xc0\x20\x0c\x14\x70\x84\x40\x7b\xf0\x60\x07\x0f\x43\x14\x60\xc5\x04\x0e\x2d\x40\x04\x0a\x3c\xd8\x80\xc2\x12\x14\x92\x21\x50\x02\x63\x20\x61\x80\x04\x37\xa4" + "\x11\x82\x40\x66\x3c\xb0\xc5\x0b\x3e\x04\x72\x00\x07\x66\x38\x44\x02\x0f\x05\x68\xf0\x40\x0b\x16\xf9\x20\x10\x15\x57\x20\x21\x81\x0b\x02\x68\x34\x46\x01\x12\xac" + "\xa1\x05\x04\x23\xd0\x61\xc3\x1b\x04\x44\x51\xc4\x3f\xb7\x69\xc4\x42\x09\x12\x4c\x90\x83\x1e\x07\x28\x00\x05\x0b\x3c\x98\x45\xd3\x3f\x50\x5c\xf0\x84\x07\x16\x2c" + "\xb0\x82\x0b\x3e\xa4\xf0\xe5\x40\x45\x08\x40\xc4\x01\x0c\x34\x61\x03\x55\x6b\x3e\x44\xc7\x8f\x05\x40\x70\x02\x4d\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c" + "\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x89\x02\x05\x44\x20\x10\x5c\xc8\x70\x60\x94\x21\x0b\x4a\xb0\x41\xc2\xa2\xe1\x42\x32\x18\xb8" + "\xa4\x61\x50\xa0\xc1\x1d\x35\x07\x24\xc0\xb0\x48\xf0\x85\x87\x06\x28\x2e\xb4\x58\x00\x63\xc0\x01\x25\x54\x1a\xbe\x41\xc3\x62\x47\x12\x02\x04\x44\x08\xa8\xc2\xa4" + "\xc3\x83\x27\x0a\x26\x30\x9c\x50\x61\xc5\x8d\x05\x39\x6a\x50\x10\xf8\xe1\xc6\x0d\x37\x08\x2e\x34\x59\xd8\xc3\x05\x93\x1d\x1e\x92\x70\x81\x73\x46\xa0\x9d\x1d\x37" + "\x24\xf0\x08\x72\x42\x0a\x41\x28\x25\x3a\x60\x10\xa0\xe2\x6a\x83\x81\x1d\x24\x94\x08\xd0\x27\x4f\x8a\xae\xff\x50\xcc\xe9\xe0\x21\xc6\x8d\x25\x44\xee\xfc\x03\xf1" + "\xaf\x41\x88\x22\x0b\x34\x14\xc1\xc0\x23\x89\x40\x22\x2d\x12\x74\x99\xb3\x84\xce\x93\x28\x68\x4e\x48\x58\x51\xb1\x82\x01\x10\x40\x34\x54\x20\xf3\x4f\xc1\x89\x26" + "\x10\xd8\x08\x2a\xf2\xcf\x89\x82\x25\x00\x00\xec\x30\x31\xd0\x84\x0b\x06\x76\xdc\x40\xe0\x31\x65\x89\x80\x81\x06\xda\xc4\x06\xd0\x86\x20\x9c\x0b\x05\x32\x40\xc8" + "\xb1\xc6\x4a\x01\xda\x02\x13\xd0\x18\xae\x60\xc1\x3f\x33\x0b\x56\x54\x11\x00\x46\x21\x99\x1d\x1a\xe4\xbc\x50\x18\x03\xe7\x5f\x93\x12\x1b\x90\x74\xb0\xd1\x01\xec" + "\x9f\x1d\x6b\x5a\xc8\x10\x88\xe0\x8e\x09\x11\xa2\x4d\xbc\x70\xf2\x42\x70\x18\x3d\x17\x2c\xb1\x83\x0f\xd9\xd1\x21\x50\x11\x19\x04\x20\x06\x0f\x07\xe8\xf1\x96\x40" + "\x15\xa8\xb1\x04\x04\x0b\xbc\xd0\x41\x09\x7c\x0c\xe4\xc0\x1b\x6a\x54\xc0\x05\x07\x07\x9c\x60\x86\x40\x6b\xe4\xe0\x84\x05\x3c\xa8\x71\x01\x12\x0f\x2c\x74\xc2\x1f" + "\x01\x2c\x70\xc3\x05\xd6\xfd\x43\xc0\x1e\x3e\x54\x70\x00\x13\x14\x31\xd4\x04\x13\x27\x84\x90\xc5\x01\x2b\xc0\x81\x07\x08\x29\x0c\x11\x44\x0c\x4d\xa4\xd0\x90\x09" + "\x41\x28\x50\xc1\x04\x0c\xb0\xc1\x04\x03\x3d\xac\x61\x00\x49\x03\xb1\xe0\x02\x1b\x15\x64\xe0\x06\x11\x53\x64\x61\x41\x11\xa4\x71\xf9\x0f\x02\x69\xac\x30\x45\x0e" + "\x01\xd8\x40\x98\x9a\x0b\xa9\x80\x44\x01\x6f\x72\x19\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48" + "\xf0\x5f\x0e\x36\x0a\x20\x14\x5c\xc8\xf0\xdf\x97\x09\x0c\x6e\x10\xa1\xd1\xb0\xa0\x94\x28\x1a\x0a\x48\xa0\xe3\x81\x05\x11\x05\x13\x2a\x92\x20\x00\x23\x8c\x01\x1b" + "\x4d\x14\x1c\x28\xc0\x82\x05\x04\x08\x3e\x18\x8a\x61\x61\x45\x86\x15\x1e\x14\xcc\x84\xa0\xb1\x84\xc1\x83\x05\x58\x04\x80\x28\x88\xa0\xca\x12\x09\x02\x3c\xe4\xf9" + "\x21\x50\x0c\x91\x25\x34\x7a\x48\x80\x10\x81\x60\x90\x16\x2e\x04\x04\xc8\xe0\x46\x0d\x8f\x81\x4d\x0e\x28\xc0\x91\xc3\xca\x1a\x82\x2d\x20\x58\x48\x31\xa0\xca\x01" + "\x0e\x4d\x08\x06\xda\xd0\xc7\x82\x02\x02\x03\x21\x30\xe9\x31\xe1\x09\x00\x89\x29\x52\x0c\xfd\x17\x20\x4e\x1a\xaf\x6b\xed\x08\x9c\x98\xc7\xc5\x08\x05\x31\xfe\x21" + "\x40\x30\x80\x4e\x0b\x1f\x51\x1a\x4c\x00\x01\xc4\x8f\x8f\x19\xff\x88\x38\x91\x70\x40\x85\x12\x81\x2f\x56\x2c\x01\x00\x20\x90\x99\x81\x75\x06\x0d\xc0\xf3\x4f\xc0" + "\x9d\x36\x0a\x0c\x0c\xbc\x53\x80\x35\x00\x14\x04\xc7\xb4\x90\x90\x22\xee\x0f\x09\x3e\x80\x0c\x4c\xd0\x9b\xb5\x82\x81\x1a\x06\xdc\x60\xc0\xa3\xc5\xbf\x22\x31\x42" + "\xfc\xa0\x80\xc6\x43\x88\x26\x2b\x36\xb3\x4c\xe9\x00\xe3\x1f\x1c\x08\x23\x38\xf4\xd8\x01\xfc\x5f\x86\x14\x01\x92\xec\xa0\x61\xc2\x49\x06\x2e\x19\x92\x44\x40\x72" + "\x00\x80\x8b\x18\x3e\x28\x20\x81\x40\x78\xd4\x01\x81\x0d\x4a\xdc\x90\x06\x41\x3e\xd0\x71\x03\x1b\x12\x58\x30\x41\x0b\x48\x10\x84\xc6\x14\x3e\xd8\xc0\x06\x1b\xe5" + "\x09\xe4\x83\x0a\x03\x58\x80\x46\x1f\x05\xa0\xe0\x06\x41\x5f\x6c\x10\x44\x00\x12\x00\x00\x01\x1c\x02\x99\x81\x06\x0f\x2c\x0c\xb0\xc4\x01\x5f\x11\x64\xc2\x09\x07" + "\x34\x60\x01\x12\x00\x0c\x20\x02\x05\x04\x78\x00\x81\x0c\x1b\xec\xc0\x00\x43\x4a\x30\x21\x83\x05\x02\x10\x71\x81\x0b\x6b\x85\x20\x82\x18\x09\x14\x51\x91\x13\x69" + "\x69\xf0\x23\x11\x48\x65\x20\x45\x45\x56\xa1\xd0\xc2\x0e\x08\xd8\x20\x42\x18\x64\x32\x24\x81\x0b\x10\x08\xd0\x66\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00" + "\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x60\x97\x15\x44\x20\x14\x5c\x58\x10\x84\xc0\x14\x7d\x36\xb0\x29\xc0\x90\x61\x9c\x24\x1d\x0a\xb8" + "\x50\x12\x40\xc6\x01\x06\x68\x2a\x86\x18\x82\x40\xcd\x97\x10\x19\x4e\x5c\x50\xb0\xc0\x03\x83\x25\x2c\x16\xda\x68\xc0\xa0\x04\x93\x27\x0c\x52\xe0\x29\xa4\xe1\x00" + "\x04\x18\x5a\x6e\x30\x78\x51\x30\x0b\x80\x12\x1d\x3c\x04\x88\x12\x85\x82\xc0\x13\x00\x20\x78\x58\x70\x00\x01\xc1\x02\x07\xf8\x58\xc8\xd0\xe4\x89\x84\x0a\x06\x04" + "\xf2\x50\x70\x20\x46\x8f\x0b\x70\x06\x42\xd8\xf0\xe4\x01\x82\x36\x7f\x46\xb4\x69\x40\x70\x07\x13\x06\x3c\xa0\x34\x20\x23\x90\x48\x8b\x07\x27\x20\x00\x50\x80\x04" + "\x47\x04\x11\x29\x04\x16\x51\x21\x21\x8a\x8c\x28\x66\x04\x42\x10\x70\x62\xc3\x81\x34\x16\x04\xfa\x28\xf0\xa4\x8d\x96\x14\x08\x16\xec\xc9\x60\x20\x83\xc3\x0a\x5f" + "\x20\x60\x49\x2b\xb0\x50\x81\x11\x00\x00\x10\x49\x6c\x03\x04\x88\x14\x4a\x22\x08\xc4\x50\xa0\x42\x9c\x81\x38\x64\xc4\x06\x20\xe3\xce\x40\x13\x15\x18\x10\x78\xb8" + "\xa3\xc8\x1b\x0a\x19\xfe\xdd\x29\x31\xbc\x0a\xc1\x1e\x07\x5c\x24\xc8\xf1\xcf\x4c\x80\x10\x29\x6a\xbf\x54\x78\x90\x00\x0c\x04\x08\x07\x4e\x08\xb4\x71\x82\x49\x89" + "\x0a\x1a\xda\xb4\x36\x30\x20\x84\x0c\x24\x63\xfe\xd5\x41\xc3\x23\x43\x88\x01\x44\x60\x41\x84\x1a\x5c\x68\x24\x90\x03\x1d\xb4\x85\xc4\x05\x15\x5c\x87\xc4\x0d\x17" + "\xac\x50\x81\x05\x69\x4c\x11\xc8\x40\x02\x1c\x30\xc4\x02\x37\x40\x60\x83\x40\x68\x3c\x51\x00\x04\x0b\xa0\xa1\xc1\x00\x6c\x30\x40\x10\x0b\x07\x34\x11\x40\x0b\x58" + "\x2c\x20\x10\x01\x19\xdc\xc1\x83\x07\x39\x28\x00\x80\x00\x05\xf1\x50\xc0\x14\x62\xe4\xb0\x02\x1b\x16\xe8\x00\x42\x06\x03\x04\xf1\xc7\x05\x2d\x34\x11\xc2\x42\x31" + "\x00\xa0\x06\x0f\x03\x1c\xb0\x42\x03\x18\xbc\x60\x07\x1f\x3e\x68\x01\x43\x45\x36\x64\x31\x07\x0d\x49\x2c\xb0\x82\x0b\x7c\x24\x51\x47\x45\x0b\xa9\x50\x00\x07\x4d" + "\xdc\x11\x42\x14\x33\xb0\xc9\x90\x04\x32\xf4\x66\xa7\x40\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09" + "\x1c\x48\x70\xe0\x8e\x29\x10\x0a\x2a\x2c\x68\x04\x84\xc0\x33\x5e\x98\xb4\x58\x48\x90\x44\x02\x11\xff\xc2\xf0\xd8\x01\x85\xc6\x16\x25\x4b\xda\x04\x59\x98\x40\x40" + "\x03\x19\x4f\x76\xa4\x08\xf1\x40\xc6\x01\x0e\x08\x2a\x00\x60\x90\xa0\xe0\x91\x0f\x37\x6e\x20\x79\xd2\x41\x09\x01\x02\x67\xa0\x1c\x50\x33\x21\xcd\x81\x26\x05\xdb" + "\x00\xf8\x30\x61\x88\x09\x2e\x3d\x80\x08\x74\xd2\x42\x41\x0f\x37\x17\x04\x38\x14\x48\xe4\x40\x03\x0f\x01\xe8\x14\x58\x41\xa7\xc7\x40\x24\x00\xa0\x38\xb1\x42\xe4" + "\x8b\x40\x08\x2b\xdc\xf0\x50\xa3\x00\xc0\x01\x08\x3e\x08\x36\x51\x50\x20\xc1\x13\x1a\x11\x04\x16\x18\xe0\xc4\xc5\x01\xbe\x5d\x10\xd4\x09\x41\x40\xa0\x0d\x19\x44" + "\x02\x2c\xd8\x61\x44\xe0\x82\x08\x32\x6e\x08\x42\x2a\x50\xc9\x94\x27\x48\x04\x60\xe0\x41\x07\xcd\x89\x28\x45\x06\x26\x70\x21\x23\xb0\x40\x02\x32\x46\x00\x00\xa0" + "\x20\xc0\xbf\x26\x04\x0a\x45\xb1\xb1\x35\x05\xa1\x28\x5b\xff\x85\x40\x3b\x5b\x82\xeb\x7f\x54\x32\xec\xc0\x20\x30\x4e\x80\x14\x54\xa8\x6c\xf9\xe7\x81\xc9\x6c\x00" + "\x09\x07\x9a\x90\xc0\xc0\x84\xc0\x37\x63\xbe\xc6\xb0\x40\xf3\xa4\x0c\x86\x05\x28\x50\x5c\xf8\x30\xd0\x82\x97\x39\x34\xcc\x1c\x11\x88\x67\x80\x80\x00\x6c\xda\x08" + "\xac\x63\x03\x4e\x88\x21\x3e\xd0\x01\xc1\x5d\x57\x2c\x20\x81\x40\x5f\xb8\xf0\x41\x11\x2d\xac\x60\x01\x41\x1e\x14\xc0\x86\x5d\x34\x38\xe1\x06\x04\x81\x38\x36\x07" + "\x03\x01\x28\x45\xc7\x40\x02\x20\x71\xc3\x0a\x6d\xb0\xe0\x43\x05\x07\xc8\x30\x50\x21\x47\x28\x30\x01\x0b\x6c\x40\xf0\xe0\x3f\x18\x4c\xd0\x43\x14\x1e\x34\xa0\xc6" + "\x08\x82\x14\x74\xc2\x12\x59\xc0\x00\xc5\x0d\x4f\x80\x80\x87\x08\x0d\x08\xb0\xc3\x13\x07\x00\x50\x41\x5e\x04\x8d\xa1\xc6\x12\x4d\xc0\xd1\x02\x1b\x03\x8c\x11\x45" + "\x08\x4f\x30\xc0\x84\x17\x0b\x98\xb1\xd0\x02\x05\x6c\x00\xc6\x04\x2e\x14\x90\x46\x00\x63\xfc\x33\xc6\x03\x35\x51\x24\x10\x12\x6d\x2c\x90\x40\x06\x51\x98\x50\x99" + "\x9c\x0a\x49\x90\xc6\x02\x7c\x0e\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x90\x20\x03\x09" + "\x2e\x0a\x2a\x2c\x08\x02\x84\xc0\x0c\x55\x14\x40\x58\x48\xf0\x0c\x97\x00\xff\x32\x58\x90\xb0\xa0\x02\x8c\x15\x0a\x12\x2a\x6c\x20\xc0\x45\x8b\x16\x56\x76\x60\x08" + "\xa1\xe1\x82\x82\x3e\x5b\x0e\xb4\x59\x50\xd0\x05\x87\x03\x10\x16\x08\xd0\xc0\x82\x87\x0e\x13\x1a\x46\x14\xd0\x50\x61\x89\x1b\x82\x10\x36\xb0\xf1\x11\x40\x23\x9c" + "\x2b\x3c\x28\xfc\xb3\xb1\x63\x89\xc7\x15\x48\x06\xba\x20\x42\x24\x89\x93\x1c\x4c\x14\x94\x28\xe1\x26\x84\xc0\x05\x58\x0e\x58\x78\x52\xc5\x8e\x40\x3a\x10\xbe\xa2" + "\xc0\x32\xa2\x04\x91\x09\x0d\x06\xda\x00\xd9\x23\x87\x02\x04\x02\x83\x64\x38\x31\x67\x49\xa0\x01\x43\xfe\xd9\x49\xe1\x50\xa0\x04\x05\x2c\x7c\xb8\xb0\x31\xb0\x08" + "\x83\x1b\x4c\x07\x7a\x29\xc0\x80\x4e\x87\x04\x5c\x0e\xe4\x69\xc2\x40\xaa\x40\x11\x2e\x9c\x10\xa8\x2c\x01\x80\xeb\x15\x3c\x7a\x1c\xb1\x81\x26\x41\x8a\x81\x85\x2c" + "\x24\x20\x41\xe1\xc5\xbf\x04\x2e\x5c\x03\x90\x50\xe7\x5f\x92\x1f\x14\x0c\xf0\x68\x4c\x25\x43\x02\x1c\x49\x9a\x3c\xe0\xb1\x41\x78\x01\x82\x66\xb6\x30\x58\xfd\x4f" + "\xc7\x0f\x06\x13\xae\xc2\xcc\xb1\x91\xe2\x49\x01\x08\x25\x9e\x0c\x34\xe0\xa4\xc4\x09\x13\x03\x2d\xb4\x41\x13\xe3\x80\x0c\x81\x76\xd6\xc0\xc9\x90\xb1\xc3\x0e\x00" + "\x7f\x34\x91\x42\x10\x02\xf9\xc0\x84\x06\x62\x1c\xa0\x87\x59\x02\x21\x80\x06\x07\x44\x2c\xb1\x44\x01\x15\xc8\x97\xc5\x43\x6c\x74\xc0\xc5\x05\x37\x28\x21\x10\x0f" + "\x1f\x1c\x70\xc1\x01\x37\x7c\x10\x43\x0f\x05\x70\xa0\x9e\x40\x44\xa4\xf6\xc1\x08\x1f\x18\xf0\x4f\x1d\x16\x0c\x72\x42\x03\x68\x4c\x20\x80\x02\x05\x48\x40\x50\x05" + "\x37\x0c\xd2\x80\x02\x23\x58\xf0\x06\x08\x01\x0c\xe2\x01\x0b\x47\xb4\x71\x43\x1a\x04\x12\xc4\x02\x07\x1b\x58\xd0\x01\x13\x2d\xf0\xb0\x47\x79\x48\x94\x10\x16\x0b" + "\x79\x2c\x24\x41\x01\x05\x38\xb1\x80\x0b\x32\x78\x10\xc5\x3f\x79\xc0\x81\x11\x45\x8e\x21\x61\x45\x14\x06\xd8\x61\xc2\x0f\x70\x2e\xf4\x04\x1f\x2b\xe6\x29\x50\x40" + "\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x9a\x2e\x05\x13\x26\x24\x00\x42\x60\x83\x15\x10" + "\x14\x0a\x44\xe3\xa1\x09\x0b\x1f\x4d\xfe\x25\x71\x42\x87\x05\x1a\x06\x0a\x22\x26\x94\xc0\x00\x0b\x1b\x05\x6c\x02\x09\x10\x91\x01\x24\x92\x35\x05\x14\x48\x28\x08" + "\x61\x83\x82\x13\x0d\x78\x3c\xe0\xd1\x20\x02\x08\x11\x31\x4f\x78\x60\x63\x05\xc6\x40\x08\x2b\xa0\x3c\xb8\x12\xe0\x44\x85\x0e\x3e\x30\x08\x9c\x70\x83\xc1\x84\x27" + "\x07\x78\x08\xec\x02\xe1\xc9\x9d\x0a\x0c\x6e\x2c\x19\xbb\xc3\x82\xc0\x26\x2b\xb0\xf4\x58\xc0\x24\xe3\xbf\x05\x3e\xf2\x58\xd9\x30\xa2\x84\x8b\x02\x08\x7a\x0c\xb4" + "\x23\x63\xc9\x02\x27\x1b\xdc\x10\x54\x72\xa0\x00\x8b\x05\x09\xfe\x3d\xc0\x60\x66\xa0\x17\x2c\x15\x78\x1c\x10\x30\xd0\xc1\x8e\x27\x22\x06\x82\xa8\x80\x02\x4a\x10" + "\x25\x2f\x1e\x1c\x50\xc2\xc3\x85\x5e\x81\x75\x06\x25\xa0\x30\x30\x44\xa0\x11\x00\x46\x10\x79\xf0\xe0\x03\x9c\x06\x27\xf0\x0c\x34\x61\x63\x8c\x08\x13\x7a\xa3\x14" + "\x00\x40\xdc\x45\x91\x7f\x5a\x44\x14\xd9\x93\xa1\xf2\x8f\x1c\x3d\x7c\x28\x31\x60\x43\x01\xf1\x11\x48\x08\x52\x49\xb1\xa5\xa1\x40\x16\x48\xee\xbc\x2c\xb8\x90\x24" + "\x09\x67\x22\x0a\x9e\x10\x14\xe1\xa5\x82\x91\x81\x5d\xe6\xd4\x5e\x72\xe2\x1f\x88\x3b\x49\xb6\x68\x35\xd3\xc0\x82\x8b\x15\x3e\x10\x74\x42\x0b\x38\x78\xb1\x04\x1d" + "\x8d\x09\x94\xc4\x10\x4f\x48\xd0\xc2\x0d\x73\x58\xf1\xc0\x04\x0b\x08\x94\x85\x02\x0d\xb0\xb0\x04\x11\x0d\x9c\x35\x00\x16\x4b\xc4\x26\xc3\x09\x77\x7c\xd0\x46\x87" + "\xff\x58\x00\x80\x12\x70\x14\x70\xc3\x69\x76\x80\xb5\x03\x0d\x3e\xf4\x27\x41\x1b\x33\x09\xc4\x43\x1a\x0a\x24\xb1\xc3\x01\x12\xe0\x41\x81\x1d\x08\x94\x17\x40\x0e" + "\x27\xb0\x31\x85\x0a\x05\xa9\x00\x41\x1a\x38\x70\xb0\xc2\x02\x11\x44\x91\x03\x1d\x25\xb4\x70\xc0\x08\x59\x54\x38\x52\x01\x59\xe4\x41\xc3\x0e\x83\x3c\xf0\x8f\x1b" + "\x15\xec\x20\xc3\x10\xcd\x49\x24\x81\x0b\x01\xca\x61\x06\x01\x12\xd5\xa9\x85\x97\x75\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00" + "\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x04\x16\x3e\x0a\x2a\xfc\x97\xe1\x07\x88\x7f\x64\x08\x3c\xfc\x27\x08\x49\x81\x85\xff\xd4\xc4\x50\x41\x43\x42\x87" + "\x05\x22\x3c\xf8\xd8\x91\xa4\xc7\x01\x08\x0b\x21\x10\x01\x30\x05\x82\x8c\x29\x32\xae\xa4\xb0\x30\x02\x85\x80\x23\x27\x09\x16\x80\xa0\x00\xc9\x16\x0b\x18\x86\x44" + "\xb1\xd1\x80\x42\x9c\x26\x07\x90\xd8\x28\xd0\xe2\x89\x40\x1f\x2a\x4a\x9c\x88\xe2\xa3\x89\x0c\x24\x32\x2a\xe4\xa1\xf0\xcf\x00\x0a\x22\x4d\x9a\x00\xe8\x22\xb0\xc1" + "\x80\x1e\x4d\x24\xac\x1c\x71\xe3\x06\x0a\x2d\x67\x04\x7e\x00\xe0\x86\x05\x11\x06\x02\x27\xfc\xbb\xa2\xc0\xad\x84\x2c\x3b\xb4\xac\x21\xb8\x60\x04\x92\x32\x1b\x68" + "\x3c\x18\xe8\x64\x84\x16\x03\x04\xcf\x40\x16\x08\xe6\x82\x0c\x04\x12\x0a\xd4\x11\x68\xc6\x4d\x00\x2a\x04\xe1\x40\xe0\x70\xe2\xc4\xbf\x1e\x3d\xef\x40\x58\x60\x42" + "\x20\x06\x1e\x21\x28\x50\x18\xf3\x2f\x05\x03\x00\x00\xb0\xb4\x28\x93\xc0\x45\x85\x24\x28\x7a\x0c\x74\x40\xe0\x8a\x07\x91\xff\x3c\xac\xc0\x0d\x00\x82\x8d\x7f\x27" + "\xd0\x68\xd8\x42\x80\x20\x8b\x02\x6b\x94\x48\xc0\xf0\x60\x39\x6e\xbc\x5d\x41\xd0\x50\xf9\x72\x67\x60\x02\x2f\x48\xbe\xa0\x38\xe0\xe4\x9f\x86\x02\x25\x56\xd0\x21" + "\x68\x86\x87\x8f\x89\x09\x56\x0c\xf0\xd0\xe6\x00\x0c\x81\x0f\xc0\x61\x01\x41\x09\xf8\x70\x81\x07\x03\x59\x80\x84\x0b\x7b\xb4\x81\x05\x18\x04\xa5\x30\x81\x1b\x15" + "\xa8\xe1\xc2\x05\x7a\xf8\xf1\x8f\x5e\xff\x14\x50\xc0\x04\x73\xa9\x21\x50\x06\x27\xb8\x70\xc0\x05\xb8\x11\x51\x80\x0f\x01\x3c\xd1\x80\x40\x62\x39\x51\x01\x1b\x05" + "\x88\xf0\x8f\x19\x70\xa8\xa1\x00\x04\x28\x7c\x90\x83\x0d\x39\x28\xb0\x43\x7b\xff\x7c\xd0\x82\x0c\xc0\x31\xd1\x03\x05\x66\x20\x60\xc3\x03\x16\x7c\x01\x47\x03\x3b" + "\xc9\x40\x03\x41\x12\x40\x50\x81\x00\x1b\x28\xf0\xc0\x1a\x1e\x20\x61\xc5\x00\x10\x4c\x01\x80\x15\x84\x2c\x24\x81\x1e\x08\x4c\xe0\x83\x00\x3c\x10\xf0\x81\x1a\x2b" + "\x1c\x39\x81\x00\x18\xd1\xb0\xc3\x00\x02\xc5\x61\x02\x19\xff\x98\x60\x40\x42\x18\x31\xc6\x02\x87\x85\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00" + "\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x0e\x34\x36\x0a\x2a\xbc\x03\xe7\x41\x08\x10\xff\xc8\x50\x19\x38\x40\x89\x42\x81\x1c\x02\x4d\x39" + "\x40\x64\xca\x82\x0e\x09\x92\xc0\xf9\x97\x20\x08\x04\x08\x05\x4f\x2a\x38\xb0\xe3\x49\x87\x20\x0c\xa6\x8c\xc1\x71\x02\x49\x05\x1f\x17\x50\x0e\x54\xa2\x47\xc1\x82" + "\x17\x68\xc2\xf0\xa8\xc1\xc5\xc2\x9a\x1f\x21\x4a\x28\x98\xb0\xe3\x00\x07\x81\x36\x3e\x7c\xf0\xc1\x94\x41\x0b\x05\x10\x24\x08\xc0\xf0\x2f\x82\x92\x0b\x03\x78\x5c" + "\x40\x22\x30\x0f\xc9\x05\x2b\x6f\x8c\x38\xc0\xf1\x44\xc2\x7f\x4e\x4a\xd0\x98\x90\xa6\x45\x92\x81\x22\x50\x1c\xe8\xd0\xa4\x02\x02\x35\x45\x08\x0a\x58\x42\xe4\x8e" + "\x15\x26\x30\x06\x0a\x38\x61\x27\x02\xc1\x35\x0f\x20\xfe\x43\xa3\x94\xe9\x8a\xb7\x26\x6c\x84\xa0\x40\x90\x87\x82\x2a\x60\x04\x0a\x20\x02\x21\x8a\x97\x15\x0f\x04" + "\xea\xc0\x90\x22\x84\x89\x00\xff\xc6\xec\x58\x02\xe0\x02\x91\x24\x20\xda\x48\x18\x22\xe8\x83\x99\x81\x3d\x14\x24\x69\x12\x03\xee\x0d\x00\xc8\x0f\xf4\xf8\x77\x22" + "\x86\x85\x12\x3c\x06\x26\x60\x10\x84\x4b\x81\x36\x20\x3c\xb0\x19\x01\x60\xc9\x8e\xdf\x08\x4c\xd3\xf8\x71\x3d\x90\x47\x89\x13\x19\xaa\xac\xf0\xf1\xef\x0a\x14\x00" + "\x0a\x0a\x52\x79\xf0\x62\xe0\x16\x05\x02\x10\x30\x51\x90\x41\xe0\x9d\x26\x13\x10\x24\xc2\x1e\x4a\x6c\x31\x50\x03\x37\x7c\x70\xc5\x06\x07\xb0\x37\x90\x19\x6e\xd8" + "\xe0\x83\x05\x02\xac\x20\x01\x01\x11\xfd\x73\x07\x04\x41\x4c\xc0\xc1\x01\x16\x08\x04\xc3\x11\x10\x28\x30\xc7\x05\x25\x5c\x30\x47\x0e\x75\x4c\x26\x50\x20\x07\x3c" + "\x20\xc8\x05\x31\x40\xb4\xc7\x02\x44\xb0\xa1\x14\x12\x03\x68\x60\xc1\x02\x6a\xdc\xf5\x0f\x21\x10\x9c\x30\xc8\x1c\x53\xd4\x01\xc2\x1d\x3c\xf0\x90\xc4\x04\x1e\xf8" + "\xc0\xc3\x02\x55\x20\xe1\xa0\x40\x32\x40\xa0\x41\x10\x6d\x54\x90\xc1\x17\x2b\xec\x70\x42\x07\x5e\x3c\xf1\x47\x56\x12\x14\x24\x81\x04\x0b\xa4\x90\x42\x13\x49\x88" + "\xd0\xc1\x0e\x25\x30\x81\x45\x01\x2d\x5d\xf4\x0f\x0b\x1f\x0c\x54\x87\x14\xff\x98\x61\x41\x0c\x4d\xd8\xa1\xe7\x40\x36\xa0\x71\xe8\x45\x01\x01\x00\x21\xf9\x04\x09" + "\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x3f\x0a\x6b\xcc\x18\x24\x58\x41\xc3\x89\x21\x36\x40\xfc\x23\x33\xb0" + "\x81\x18\x38\x0b\x21\x10\x99\x73\xe0\x00\x00\x08\x47\xfe\xa5\x30\xc0\xe3\x9f\x85\x02\x41\x08\xc2\x09\x42\x44\x81\x8b\x18\x13\xc4\x68\x58\xe0\xe5\xc4\x99\x1e\x2e" + "\xdc\xbc\x90\xa0\x60\x60\x9c\x41\x32\xe8\xb0\xb8\x03\xa3\xc7\x04\x1f\x29\xbe\x08\x30\x21\x62\x81\x82\x27\x2c\x98\x40\x10\xb8\x86\x85\x85\x3b\x5e\x34\x7a\x2c\x41" + "\xe4\x83\x05\x89\x77\x96\xe8\x09\xd0\x86\x88\x40\x1d\x13\x2b\xcc\x59\x52\x00\x42\x95\x15\x73\x24\x34\xa0\xf0\xef\x81\x0b\x22\x0d\x3a\x94\x48\x29\xd0\x06\x91\x13" + "\x6b\xb8\xfc\x4b\xf0\x2f\x42\x00\x82\x2e\x0e\xc0\xa8\x70\xa1\xc1\xc0\x17\x49\x08\x14\x74\xb2\x46\xe2\x60\x08\x00\x1a\x28\x39\xd0\x45\x20\x09\x3b\x63\x44\x50\x00" + "\x22\xf0\xc1\x06\x05\x02\x06\xa2\x28\xd1\x44\x0b\x00\x0f\x03\xa3\x2c\x70\x92\x47\xcb\xbf\x22\x0b\x6e\x00\x38\x40\xc4\x02\x85\x29\x2d\x32\x7c\x50\x60\x41\x60\x02" + "\x06\x3b\x52\x7c\xf8\x10\x66\xc2\x12\x00\xd0\x2f\x6c\x79\xe1\x65\x41\x14\x06\x0b\x14\xfe\x83\x73\xa0\xc2\x9a\x39\x1b\x28\xda\xf8\xd8\x30\x02\xc0\x85\x13\x85\xfe" + "\x1d\xb9\x22\x20\x48\x98\x81\x1a\x00\x58\x00\x73\x00\x89\xc0\x00\x0c\x00\xf4\x14\x48\x00\x44\x91\x04\x45\x0c\xf4\x04\x1b\x3e\xe4\x80\x45\x01\xda\xdd\x21\x80\x6d" + "\x04\xc5\x61\xc1\x18\x03\x71\x07\x83\x1b\x37\xc8\x40\xd0\x1d\x92\x29\x14\x42\x14\x5d\x58\x11\xc5\x40\x6a\x09\x10\x43\x09\x32\x84\xf0\x0f\x06\x6a\xd0\xb0\xc1\x14" + "\x6d\x20\x81\xc4\x05\x2b\x88\x41\x11\x5d\xff\x70\x20\x01\x0f\x0a\x1c\x40\x98\x19\x1a\x30\x70\xc3\x05\xe6\xb5\xa0\x00\x1f\x35\x0c\xc1\xc2\x03\x02\x49\x80\x82\x0f" + "\x0c\xac\x20\x00\x08\x61\x38\x11\xc5\x10\x1d\x54\x90\x43\x0c\x43\x4c\xc0\x00\x14\x70\xd4\x31\x90\x15\x03\x94\x31\x40\x01\x49\xd4\xb0\xc0\x0e\x4a\x20\xd0\xc4\x20" + "\x4a\x14\xa0\x87\x0b\x15\x6c\xc1\x90\x04\x1e\x80\x10\x40\x06\x10\x2e\xe0\xd1\x05\x4c\x10\xe1\x42\x20\x0b\xf5\x00\x87\x63\x02\x51\x54\x87\x06\x15\x30\xd0\x83\x06" + "\x0b\x0d\x34\x83\x0d\x8d\x46\x1a\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\xd0\x0e\x41\x82\x20" + "\xc6\x1c\x24\x08\x01\xc9\x00\x2f\x03\xb6\x24\x01\x71\xd0\x43\x8a\x85\x12\x20\x6c\x38\xb0\x82\xc3\x81\x12\x10\x2a\xfc\x1b\x63\x46\xe0\x11\x37\x04\x53\xb8\x29\x40" + "\x64\x01\x8f\x07\x3c\xee\x68\xc8\x42\x07\x4d\x06\x0d\x41\x78\xe4\x21\x22\x41\xe0\x98\x2b\x47\x86\x04\x68\x72\xe2\x48\x07\x35\x3d\x02\x78\x70\x62\x26\xc9\x85\x20" + "\x01\x14\xb4\x10\x88\x47\x60\x06\x24\x25\x0e\x00\x00\x80\x65\x49\x01\x1f\x18\x74\x98\x90\xc0\xa4\xc1\x0e\x05\x10\x08\xb2\xc0\x12\xa8\x82\x1a\x28\x56\xd8\x14\x38" + "\x71\xf1\x5f\x8e\x03\x0b\x26\x60\x41\x32\x10\x83\x8f\x0c\x75\x0e\x1a\x20\x28\x00\xc0\x11\x0b\x0a\x54\x0c\x1c\x13\xa5\x90\x0e\x82\x15\x0c\x50\x19\x48\x03\xc0\x09" + "\x0d\x10\x9e\xd4\x10\x08\xc2\x82\x07\x20\x83\xff\x05\x40\x51\x42\xc0\xc0\x34\x37\x76\x20\xc0\xb2\x43\x60\x82\x20\x12\x92\xf8\x30\x9d\x82\xcf\x05\x00\x07\xa6\xf8" + "\xf8\x57\x60\x89\x93\x26\x6c\x26\x08\x14\xc3\xa4\xcb\x90\x16\x2a\x4c\x58\x58\xb2\x15\xc0\x05\x34\x11\x54\x14\x40\x73\xb6\x87\xc0\x18\x0a\x10\x34\x00\xa0\xe7\x5f" + "\x07\x22\xcc\x2f\xd3\x2c\x10\xf1\x6f\x81\x0f\x1e\x2e\xc0\x94\xfc\x87\x64\x45\x86\x27\x4b\x3e\x08\xf4\xc0\x00\x80\x82\x81\x6b\x08\x88\xd9\xf2\x46\x60\x18\x1a\x2e" + "\xc0\x30\xc0\x12\x41\x0c\xf4\x80\x0f\x5d\x20\x84\x41\x14\x75\xfd\x33\xc0\x0a\x49\xd0\x01\x80\x69\x8b\x1d\x64\xc6\x1d\x70\x4c\x26\x90\x04\x6c\x20\xf0\xc4\x01\x0d" + "\x08\x94\xc4\x0e\x19\xd1\x10\x44\x13\x0d\x30\x70\xc0\x16\x04\x05\x32\x97\x00\x07\x7c\xf0\xc6\x0f\x11\x54\xc0\x46\x73\xce\xb1\x11\x84\x41\xff\xfc\x20\x90\x0c\x56" + "\x70\x81\xc2\x0a\x29\x14\xd1\x03\x0f\x3d\x34\xf1\xc4\x13\x03\x64\xd1\x40\x06\x0f\x9c\xe0\x41\x14\x02\x7d\x80\x04\x0f\x3c\xc4\xa0\xc1\x17\x79\xa4\x71\xc2\x16\x5c" + "\x4c\x80\x00\x0c\x27\xe8\xe1\x82\x00\x21\x10\x14\x43\x82\xff\x44\x60\x50\x05\x25\x64\xc5\x81\x02\x4c\xa0\x80\x84\x1a\x0b\xa5\x60\xc1\x41\x26\xc0\xa1\x04\x0a\x3b" + "\x74\x10\x04\x21\x0b\x0d\x94\x01\x79\x85\x9a\x50\xe8\x3f\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09" + "\x1c\x28\xb0\x49\x0a\x82\x03\x49\xbc\x41\x38\xb0\x00\x84\x87\x0e\x9f\x6c\xc9\x80\x90\x8a\x01\x84\x6b\x3a\x14\x50\x30\x47\xc6\x0e\x28\x07\x88\xa8\x88\xf1\x8f\x00" + "\x08\x81\x1a\xd6\x0c\x34\x20\xe6\x83\x1b\x16\x19\x6c\xa0\xc9\x10\xa1\x81\x20\x17\x22\x78\xa0\x11\x38\x40\x89\x40\x1d\x27\xff\x0d\x41\x52\xa0\x8d\x04\x19\x03\x1e" + "\x24\xa9\x90\x21\xca\x02\x2f\x0f\x2a\x40\x28\xf0\x4f\x8a\x40\x2a\x41\x0e\x2c\x29\x71\x60\xc4\x88\x0d\x4a\x78\xfc\xa0\x32\x41\x81\x84\x26\x25\x20\x0c\x34\x33\x61" + "\x81\x93\x35\x5b\x76\x28\x99\x32\x25\x0d\x0c\x1d\xff\xee\x2c\x29\xb0\x06\x8b\x5a\x81\x26\x02\xa4\xf8\x81\xd0\x44\x83\x81\x68\x14\x14\xb0\xe0\x70\x20\x1e\x11\x2f" + "\x84\x04\xfd\xa7\xe5\xc1\x41\x81\x4a\x4a\x48\x98\x90\xa6\x85\x1a\x81\x0d\xaa\x34\x08\xe0\x44\xa0\x07\x2b\x25\x2a\x58\x10\x98\x63\x89\x0b\x34\x05\xa6\x1c\x44\x80" + "\x62\xc0\x9d\x05\x3b\x32\x04\xd8\x71\x01\xc0\x01\x2b\x87\x05\x01\x18\x90\xe4\x46\x10\x81\x02\x88\x4c\x40\xc3\x86\x03\x88\x2d\x00\xa2\x03\xb8\x60\x01\x84\x84\x15" + "\x01\x9a\x28\x80\x23\xd0\x45\x0b\x0c\x48\x00\xe3\xec\xf8\xd7\xa4\xc0\x08\x00\x4b\xb2\x3c\xf0\x40\x43\x49\x00\x42\x48\x78\xfc\x0b\xb3\x82\x81\x05\x14\x00\x7c\x08" + "\x44\x90\x66\x44\x0b\xfd\xff\xb0\xc0\x83\x12\x2b\xac\xf6\x4f\x0c\x05\x04\x31\x41\x01\x1b\xb8\x31\x90\x13\x0d\x2c\x30\x10\x08\x20\x3c\x20\x82\x03\x0d\xc9\xd0\x03" + "\x11\x0a\xd8\x30\x90\x07\x75\x54\x94\x41\x19\x04\xc9\x40\x44\x19\x2b\x1c\x60\xc7\x3f\x66\x08\xc0\x00\x07\x67\xb9\x61\x83\x01\x4e\x28\x81\xc6\x64\x12\xb4\xd1\x00" + "\x12\x44\x0c\x01\x02\x01\x08\x0c\xd0\xdb\x12\x0a\x6c\x70\xc3\x06\x1d\x50\x20\x10\x09\xff\xd0\x00\x85\x00\x16\x30\xa0\x44\x0a\x43\xb0\x10\xc0\x04\x56\x4c\x55\x40" + "\x7d\x14\xfd\x03\x04\x61\xe4\x7d\xf0\x8f\x08\x13\x24\x41\x40\x0b\x3b\xc0\x90\x42\x0f\x2c\xf4\xb0\xc6\x04\x4d\x64\x31\x48\x97\xff\xac\x31\x08\x60\x21\x0a\xe0\x02" + "\x11\x6c\x40\xf1\x84\x15\x0a\x40\x20\x41\x0c\x19\x10\x40\x90\x4a\x08\x21\xa0\x44\x0b\x2d\x48\xe0\x68\x20\x34\x30\x24\x10\x08\x4c\x32\x84\x81\x81\x0c\x05\x04\x00" + "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\x50\x42\x13\x3b\x04\x09\x92\x48\x68\x26\x80\x92\x02\x44\x56" + "\xb0\x61\x73\x23\x08\x8f\x31\x0a\x7f\x24\xfc\xe2\x43\x06\x0a\x09\x27\x04\xc4\x40\xb2\x01\x42\x85\x84\x45\xbe\x98\xf9\xe7\x80\x42\x84\x7f\x29\xd6\xf8\xf0\xa1\xe1" + "\x4a\x82\x24\x27\x64\x74\x49\x90\x41\x84\x40\x1f\x3c\x04\x92\x11\x98\x40\xd0\x1f\x05\x2d\x92\x82\xc9\x60\xe1\x44\x04\x04\x03\x60\xba\x50\x42\x70\xcc\x93\x0b\x32" + "\x18\x14\x00\x00\x60\x04\x87\x00\x36\xde\x24\xb8\x90\xe5\x4e\x15\x14\x03\x75\x3c\x08\x10\x67\x46\x86\x7f\x08\x18\x10\x21\xb2\x00\xc3\x3f\x13\x32\xe6\x88\x41\xb2" + "\x62\x20\x89\x33\x63\x28\x24\x34\x31\x84\x85\xc0\x28\x74\x56\xb0\xd8\xa1\x60\xa0\x0d\x25\x15\x42\xf8\x14\xc8\xc3\x82\x01\x82\x82\x88\x34\x51\xc2\x46\xc2\xbf\x24" + "\x03\xd2\x70\x71\xe8\xe4\x5f\x00\x19\x17\x3e\xbc\xfd\x67\x61\x49\x0b\x18\x47\x0e\xa8\xf9\xe7\x43\x41\x8e\x24\x44\x0a\x8c\xc9\x93\xe6\x06\x80\x0b\x9e\xff\x1d\x01" + "\x00\xe1\x01\x04\x26\x29\xfe\xc9\x28\xfe\x61\x84\x0b\x0a\x1a\xb8\x72\xc5\xd2\x03\x8f\x04\x00\x15\x9c\xb0\x09\xf2\x2f\x0c\x00\x2f\x7e\x56\xdb\x00\x68\xf2\x8f\x47" + "\x81\x11\x00\x96\x30\xe0\x91\x81\x03\x87\x07\x0b\x56\xf4\xf8\x17\xa3\x84\x80\xda\x17\x92\x08\x74\xe2\x02\x00\x8a\x00\xff\x08\x90\x05\x0f\x5b\x48\xb0\xc0\x5b\x81" + "\x6c\xe0\x46\x0e\x73\xa8\x40\x90\x06\x5a\x10\x24\x42\x06\x3b\x54\x70\x99\x40\x28\x84\x54\xc2\x00\x2f\xfd\xe3\x86\x1f\x04\x24\x44\x85\x1d\x26\x10\xe4\xc2\x13\x3e" + "\x6c\xa8\x03\x4c\x34\xa0\xd0\xc6\x09\x5c\xfc\x53\x84\x09\x85\xf4\x80\xd0\x40\x5a\xf9\x51\x40\x0b\x20\x10\x90\x81\x76\x5c\x1d\x40\xc7\x00\x74\x94\xd0\xc5\x64\x3f" + "\x49\x60\x40\x06\x4f\x0c\x11\x42\x05\x79\x78\x10\x84\x02\x0a\xac\x50\xc2\x1c\x3b\x94\xc8\x92\x40\x5c\xf8\x20\x50\x0a\x65\x60\x70\x02\x03\x60\x24\x61\x43\x03\x6e" + "\x68\x01\xc3\x18\x09\xfc\x93\x00\x01\x82\xb9\x95\xd0\x3f\x6a\x54\xa9\x02\x18\x4a\x2c\xa0\x95\x04\x2c\x44\x31\x58\x42\x0f\xc4\x00\x01\x00\x1b\xb4\x30\x05\x12\x74" + "\xf8\x10\xc0\x4a\x04\x09\x36\xe7\x5d\x16\xcc\xf6\x68\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xb8" + "\x00\x82\x41\x09\x4d\x42\x0c\x5c\xc8\x50\xe0\x18\x38\x34\x88\xac\x60\x73\x63\xc9\x85\x23\x29\x18\x92\x20\x31\xd0\x41\x9d\x24\x1d\x7c\xe4\x68\xe0\x61\x88\x8f\x29" + "\x4c\xda\xf0\x58\xa8\xa3\xd0\x40\x32\x64\x04\x26\x59\xe0\x65\x87\x80\x35\x67\x26\xc8\x80\x02\x03\x43\x1d\x81\x0f\xc6\x30\x8c\xf2\xa1\xc4\x8d\x03\x07\x2e\x20\x19" + "\x12\xe0\x48\x9e\x17\x79\x04\x2a\x11\xb3\xf0\x4c\x0f\x01\x1a\xe0\x74\x80\x30\x02\xc0\x0a\x92\x19\x8a\xb8\x61\x60\x43\x8b\x84\x05\x03\x31\x64\x10\xf1\x43\x20\x0f" + "\x31\x53\x14\xc8\x40\x43\x81\x80\x8f\x0d\x4a\x2a\x6c\x40\x21\x30\x42\x06\x0b\x21\x28\x0c\x6d\x10\x40\xe0\x84\x03\x41\x1a\x30\x81\x20\xd0\x07\x07\x25\x36\x78\x0c" + "\x11\x68\x87\x45\x82\x85\x02\x2e\xec\x70\x82\x85\x31\x97\x39\x69\xca\xc4\x90\xb0\x72\x8d\x84\x25\x74\xce\x08\x0c\xe0\xe2\x80\x1b\x18\x58\x24\xfc\xa3\xa3\x00\x8d" + "\x13\x26\x44\xcc\x70\x99\x82\x05\xc0\x92\x27\x02\x11\x2c\xb9\xc1\x43\xc9\x12\x35\x29\x46\x48\x48\xc1\x35\xc8\x3f\x37\x00\xa2\x03\x18\x31\xe1\x1f\x83\x11\x48\x1e" + "\x28\x60\x13\xa2\x09\x00\x1f\x13\x6e\xe3\xdc\x28\x6c\xa7\x40\xf4\x25\x05\x02\x88\x40\xb1\xc2\x83\x8f\x03\x68\x55\xdc\xf0\xa0\xe6\x86\x84\x35\x02\x3d\xac\x00\x60" + "\x25\xe3\x20\x24\x0d\xf0\x80\xc4\x0a\x19\xfc\x23\xc1\x0a\x5b\x30\xb0\x44\x03\x0b\x6d\x51\xc1\x40\x30\x78\xc0\x43\x10\x32\xf4\x20\x10\x21\x05\x68\x40\xc7\x01\x68" + "\x08\x04\x87\x18\x97\x2d\x04\x42\x06\x08\x44\x61\x86\x40\x50\x70\x20\xc0\x07\xed\xd5\x35\x41\x1b\x2d\x48\x80\x06\x7e\xff\x00\x91\x40\x14\x18\x0c\xd4\xc0\x0e\x3e" + "\xf0\x30\x00\x0b\x45\xdc\xe1\xc1\x09\x17\x00\x60\x5f\x03\x08\x68\x20\x40\x00\x3f\x0d\x04\x87\x12\xff\xdc\x61\xc1\x5f\x4a\x70\x01\x47\x0b\xc3\x5d\x70\x40\x0b\x15" + "\xd4\xc0\x50\x0d\x2b\xfd\x23\x82\x09\x4e\x40\x01\x85\x05\x51\x68\xb0\x40\x10\x0c\xe4\x60\x80\x40\x52\x70\x24\x90\x42\x0d\xb2\xc1\x44\x01\x2c\xc0\x80\xc0\x04\x0d" + "\x4c\xd0\x41\x12\x09\x08\x26\x10\x05\x72\x0e\xd4\x83\x79\xc3\x29\x80\x02\x0a\x3b\xc0\x21\x54\x43\x90\x46\x70\xc5\x07\x2a\x04\x22\x01\x83\x0b\x05\x04\x00\x3b\x00"; + +QMovie* toBackgroundLabel::Animation = 0; + +toBackgroundLabel::toBackgroundLabel(QWidget *parent) : QLabel(parent) +{ + QByteArray arr; + arr.assign(data, sizeof(data)); + Animation = new QMovie(arr); + setMovie(*Animation); + Animation->unpause(); +} + +void toBackgroundLabel::unpause() +{ + Animation->unpause(); +} + +void toBackgroundLabel::pause() +{ + Animation->pause(); +} + +void toBackgroundLabel::setTip(QString tip) +{ + QToolTip::add(this, tip); +} + +void toBackgroundLabel::setSpeed(int Running) +{ + Animation->setSpeed(std::min(Running, 1)*100); +} + +void toBackgroundLabel::mouseReleaseEvent(QMouseEvent *e) + { + try + { + if (e->button() == LeftButton) + { + QString str = "Currently running SQL:\n\n"; + std::list<QString> conns = toMainWidget()->connections(); + for (std::list<QString>::iterator i = conns.begin();i != conns.end();i++) + { + toConnection &conn = toMainWidget()->connection(*i); + std::list<QString> running = conn.running(); + if (running.begin() != running.end()) + { + str += "On connection " + conn.description(false) + ":\n\n"; + } + int num = 1; + for (std::list<QString>::iterator j = running.begin();j != running.end();j++) + { + str += QString::number(num) + ". " + (*j) + "\n\n"; + num++; + } + } + toMainWidget()->displayMessage(str); +#if QT_VERSION >= 0x030000 + + e->accept(); +#endif + + } + else + QLabel::mouseReleaseEvent(e); + } + TOCATCH + } Added: trunk/tora/src/tobackgroundlabel.h =================================================================== --- trunk/tora/src/tobackgroundlabel.h (rev 0) +++ trunk/tora/src/tobackgroundlabel.h 2006-06-29 21:21:51 UTC (rev 2062) @@ -0,0 +1,29 @@ +// +// C++ Interface: toBackgroundLabel +// +// Copyright: See COPYING file that comes with this distribution +// +#ifndef TOBACKGROUNDLABEL_H +#define TOBACKGROUNDLABEL_H + +#include <qmovie.h> +#include <qwidget.h> +#include <qlabel.h> + +class toBackgroundLabel : public QLabel{ +public: + //static toBackgroundLabel createToBackgroundLabel(); + virtual void mouseReleaseEvent(QMouseEvent* e); + virtual void unpause(); + virtual void pause(); + virtual void setTip(QString tip); + virtual void setSpeed(int Running); + toBackgroundLabel(QWidget *parent); +private: + static QMovie* Animation; + static const char data[]; + +}; + + +#endif Added: trunk/tora/src/totimer.cpp =================================================================== --- trunk/tora/src/totimer.cpp (rev 0) +++ trunk/tora/src/totimer.cpp 2006-06-29 21:21:51 UTC (rev 2062) @@ -0,0 +1,19 @@ +// +// C++ Implementation: totimer +// +// Copyright: See COPYING file that comes with this distribution +// +#include "totimer.h" + +toTimer::toTimer(QObject *parent, const char * name): QTimer(parent, name) +{ } + +int toTimer::start(int msec, bool sshot) +{ + LastTimer = msec; + return QTimer::start(msec, sshot); +} +int toTimer::lastTimer(void) +{ + return LastTimer; +} Added: trunk/tora/src/totimer.h =================================================================== --- trunk/tora/src/totimer.h (rev 0) +++ trunk/tora/src/totimer.h 2006-06-29 21:21:51 UTC (rev 2062) @@ -0,0 +1,39 @@ +// +// C++ Interface: toTimer +// +// Description: +// A timer descendant which also keep track of the last timer setting sent to it. +// +// Copyright: See COPYING file that comes with this distribution +// + +#ifndef TOTIMER_H +#define TOTIMER_H + +#include <qtimer.h> + +class toTimer : public QTimer +{ + int LastTimer; + +public: + + /** Create timer. + * @param parent Parent object of timer. + * @param name Name of timer. + */ + toTimer(QObject *parent = 0, const char * name = 0); + + /** Start timer. + * @param msec Milliseconds to timeout. + * @param sshot Set to true if only timeout once. + */ + int start(int msec, bool sshot = false); + + /** Get last timer start timeout. + * @return Last timeout in millisecond. + */ + int lastTimer(void); +}; + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-06-29 21:26:09
|
Revision: 2063 Author: knackeback Date: 2006-06-29 14:25:50 -0700 (Thu, 29 Jun 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2063&view=rev Log Message: ----------- give classes toBackgroundLabel/toTimer a separate header/implementation file Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toanalyze.h trunk/tora/src/tobackground.cpp trunk/tora/src/tobackground.h trunk/tora/src/tomain.cpp trunk/tora/src/tomain.h Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/Makefile.am 2006-06-29 21:25:50 UTC (rev 2063) @@ -148,6 +148,7 @@ toabout.cpp toabout.h \ toaboutui.cpp toaboutui.h \ tobackground.cpp tobackground.h \ + tobackgroundlabel.cpp tobackgroundlabel.h \ toconfiguration.cpp toconfiguration.h \ toconnection.cpp toconnection.h \ todatabasesettingui.cpp todatabasesettingui.h \ @@ -196,6 +197,7 @@ totemplateprovider.cpp \ totextview.cpp totextview.h \ tothread.cpp tothread.h \ + totimer.cpp totimer.h \ totool.cpp totool.h \ totoolsettingui.cpp totoolsettingui.h todroptablespaceui.h \ todroptablespaceui.cpp utils.cpp utils.h \ Modified: trunk/tora/src/toanalyze.h =================================================================== --- trunk/tora/src/toanalyze.h 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/toanalyze.h 2006-06-29 21:25:50 UTC (rev 2063) @@ -50,6 +50,7 @@ class QSpinBox; class QTabWidget; class QTimer; +class QLabel; class toResultCombo; class toResultPlan; class toResultView; @@ -86,6 +87,7 @@ toWorksheetStatistic *worksheet(void); static void createTool(void); + public slots: virtual void displaySQL(void); virtual void changeOperation(int); Modified: trunk/tora/src/tobackground.cpp =================================================================== --- trunk/tora/src/tobackground.cpp 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/tobackground.cpp 2006-06-29 21:25:50 UTC (rev 2063) @@ -1,432 +1,92 @@ -/***** -* -* TOra - An Oracle Toolkit for DBA's and developers -* Copyright (C) 2003-2005 Quest Software, Inc -* Portions Copyright (C) 2005 Other Contributors -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; only version 2 of -* the License is valid for this program. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* -* As a special exception, you have permission to link this program -* with the Oracle Client libraries and distribute executables, as long -* as you follow the requirements of the GNU GPL in regard to all of the -* software in the executable aside from Oracle client libraries. -* -* Specifically you are not permitted to link this program with the -* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. -* And you are not permitted to distribute binaries compiled against -* these libraries without written consent from Quest Software, Inc. -* Observe that this does not disallow linking to the Qt Free Edition. -* -* You may link this product with any GPL'd Qt library such as Qt/Free -* -* All trademarks belong to their respective owners. -* -*****/ +// +// C++ Implementation: toBackground +// +// Copyright: See COPYING file that comes with this distribution +// #include "utils.h" #include "tobackground.h" #include "toconnection.h" -#include "tomain.h" + #ifdef TO_KDE #include <kstatusbar.h> #endif #include <qlabel.h> -#include <qmovie.h> #include <qstatusbar.h> #include <qtooltip.h> -static const char data[] = - "\x47\x49\x46\x38\x39\x61\x17\x00\x17\x00\xe7\x00\x00\x02\x66\x9a\x92\xbe\xd2\x66\xa2\xc2\x46\x8e\xb6\xca\xde\xea\x2a\x7e\xaa\xaa\xca\xde\x0e\x6e\x9e\x82\xb2\xce" - "\xb6\xd2\xe2\x16\x72\xa2\x52\x96\xba\x3e\x8a\xb2\x6e\xa6\xc6\xe2\xee\xf2\x9a\xc2\xd6\x22\x7a\xa6\xba\xd6\xe2\x36\x86\xae\x7a\xae\xca\xd6\xe6\xee\x5e\x9e\xbe\x86" - "\xb6\xce\x0a\x6e\x9e\xbe\xd6\xe6\xa2\xc6\xda\x76\xae\xc6\x16\x76\xa2\x2a\x82\xaa\x5a\x9e\xbe\x8a\xba\xce\x4e\x96\xb6\xd2\xe6\xee\xaa\xce\xde\xbe\xda\xe6\x02\x6a" - "\x9a\xde\xee\xf2\x12\x72\x9e\xc2\xda\xe6\x56\x9a\xba\x26\x7e\xa6\xae\xce\xde\x36\x8a\xae\x1a\x76\xa2\x6e\xaa\xc6\x1e\x7a\xa6\x2e\x82\xaa\xa2\xca\xda\x7a\xb2\xca" - "\x66\xa6\xc2\x32\x86\xae\xc2\xde\xe6\x3e\x8e\xb2\xae\xd2\xde\x96\xc2\xd6\x0a\x6a\x9e\x9a\xc6\xd6\x62\xa2\xbe\xde\xea\xf2\x4a\x92\xb6\x8e\xba\xd2\x82\xb6\xce\x72" - "\xaa\xc6\xd2\xe2\xee\xca\xe2\xea\x46\x92\xb6\xd6\xea\xee\x8e\xbe\xd2\x1e\x76\xa6\xb6\xd6\xe2\xe6\xee\xf6\x52\x9a\xba\x32\x82\xae\x96\xbe\xd6\x5a\x9a\xbe\x06\x6a" - "\x9a\x12\x6e\x9e\x6a\xa6\xc2\x7e\xb2\xca\x42\x8e\xb2\x3a\x86\xae\xa6\xca\xda\xe6\xf2\xf6\x26\x7a\xa6\xce\xe2\xea\x1a\x76\xa6\x2e\x82\xae\x8a\xb6\xce\x06\x6a\x9e" - "\x4e\x92\xb6\x6a\xa6\xc6\x7e\xb2\xce\x92\xbe\xd6\x56\x9a\xbe\x42\x8e\xb6\xa6\xca\xde\x62\x9e\xbe\xb2\xce\xde\x76\xaa\xc6\xb2\xd2\xe2\xea\xf2\xf6\x9e\xc2\xd6\xc6" - "\xde\xea\xba\xd6\xe6\x8a\xba\xd2\x3a\x8a\xae\x4e\x96\xba\x9e\xc6\xda\x12\x72\xa2\x26\x7e\xaa\x62\xa2\xc2\xda\xea\xf2\x76\xae\xca\xc6\xda\xe6\xce\xe2\xee\x12\x6e" - "\xa2\x3a\x8a\xb2\xc6\xde\xe6\xb2\xd2\xde\x9e\xc6\xd6\xda\xea\xee\x8a\xb6\xd2\x26\x7a\xaa\xb2\xce\xe2\x4e\x92\xba\x62\x9e\xc2\x9e\xc2\xda\x0e\x6e\xa2\xe2\xee\xf6" - "\x36\x86\xb2\x3a\x86\xb2\x76\xaa\xca\x36\x8a\xb2\xc6\xda\xea\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" - "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xff\x0b\x4e\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00" - "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\x67\x06\xcd\x02\x08\x08\x25\x2c\x48\x30\xb0\xa1\x43\x12\x09\xae" - "\x7c\x60\x73\xe1\x02\x80\x8b\x6c\x1a\x80\x70\xf8\x90\x84\xc0\x38\x57\xd6\xac\xf1\xf0\x61\x04\x00\x08\x66\x1a\x92\xd8\xc8\xb1\x01\x1b\x08\x2a\xb4\x64\xc8\xf0\x01" - "\xc0\x07\x32\x03\xc9\x64\x70\x08\x42\x0d\x00\x8b\x17\x01\x2c\x98\xd1\xe0\x82\x99\x0c\x2c\xd1\xa4\x14\x48\xe6\x8a\x87\x04\x71\xee\x34\x01\x1a\x28\xce\x02\x3b\x1e" - "\x16\xe0\xfc\x70\xa5\x61\xa1\x19\x1e\x05\x16\xf9\x00\xc1\x26\x85\x1f\x71\x46\x34\xf8\x01\xa1\x81\x40\x10\x07\x17\x14\x0a\x2b\x50\x87\xc1\x1f\xff\x66\xcc\x29\x91" - "\x81\x8d\x8a\x7f\x3a\x24\x00\x68\x52\x67\x81\x5b\x81\x2c\xee\x34\x2c\x32\x82\xcd\x1a\x08\x12\xfe\xb1\x30\x2b\x98\xc5\x3f\xb8\x00\xd8\x2c\xfd\xd7\x00\x80\x84\x0c" - "\x37\x08\x25\xa8\x68\xc2\xe7\x8d\x3a\x71\xca\x5e\x8c\xfc\x2f\xce\x1c\x9b\x1e\x84\x36\x01\xd0\x20\xc1\xea\x7f\x0b\x82\x5e\x5c\xf0\xcf\x27\x80\x3c\xb3\x3d\x08\xce" - "\x30\x79\x04\x43\x10\x82\x2f\x8e\x40\x03\xa2\x04\x00\x15\x09\x98\x00\x30\x03\xe1\x42\x11\xc1\xbc\x05\xda\xb9\x71\x72\x67\xec\x12\x09\xb4\xa2\x78\xfe\x07\x81\x49" - "\x86\xb2\x3b\x07\xde\xf9\x80\xb7\xb7\x84\x04\xb1\xd9\x30\x84\xc0\xc6\xc2\x8d\x1b\x33\x2e\x37\xc8\xa0\xa3\x61\x1d\x33\x4d\xb0\xa1\x46\x1c\x02\x1d\x54\x47\x4d\x66" - "\xe8\x00\x42\x4d\x19\x6d\x06\x02\x52\x0d\x65\xf5\x0f\x19\x12\xdc\x51\x44\x13\xd4\x5d\xc4\x44\x6d\x24\x50\x70\x87\x07\x38\x09\x54\x07\x1a\x02\x15\x72\x85\x19\x73" - "\x78\x10\x87\x0a\x58\x04\x05\xc1\x1c\x12\x6c\x26\x50\x02\x21\x92\xa0\x83\x0a\x00\xb0\x60\x82\x05\x64\x29\x70\x43\x1a\x2c\xa9\x14\xa2\x40\x63\x48\x07\x41\x62\x77" - "\x64\x60\x41\x21\x03\xd1\xc5\x11\x41\xbe\x01\xa0\x00\x42\x10\x2c\x80\x46\x06\xed\x3d\x39\x90\x1d\x2c\xc8\xa0\x42\x20\x12\x34\x71\x45\x7e\x03\x05\x04\x00\x21\xf9" - "\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xd4\x31\xa6\x8c\x16\x09\x2b\x88\xb4\x90\x70\x22\x81\xc0\x87\x10\x1f\xea\xa0" - "\xf2\xaf\x4b\x17\x19\x05\xd8\x00\x58\x82\x64\x02\x88\x88\x20\x1f\x06\x68\x62\x21\xc0\x16\x06\x58\x20\x34\x09\x19\xd1\xc0\x00\x24\x6c\x5a\xd0\x80\xf3\x00\x8e\x8b" - "\x02\x49\x20\xbe\x91\x03\xd1\x44\x00\x30\x3b\xa0\x10\xb9\x31\xa2\x00\x8c\x3c\x69\x62\x50\x14\x48\x25\x0a\x44\x11\x21\x12\xd4\xb1\x63\x61\xc0\x05\x00\x05\x7a\x88" - "\xf1\x11\xe2\x81\xc3\x7f\x6b\x1e\x5a\x50\x32\xa1\x08\x05\x81\x09\x26\x48\x28\xc1\x20\xc0\x98\x04\x02\x7a\x50\xe9\xd0\xe0\x1f\x09\x18\x32\x68\x4c\xe0\x91\x02\x22" - "\x90\x00\x5d\x32\xfc\xa8\xf3\x41\xc2\x83\x1c\x1f\xfe\x4d\x98\xe2\x82\x47\x0f\x2f\x15\x1e\x36\xc9\xf9\x50\x04\x83\x39\x1a\x18\x14\x48\xc0\xe1\x06\x0f\x0b\x05\x96" - "\xc0\xf9\x37\xa6\xc2\x9c\x2a\x4e\x05\x26\x69\xa1\xc0\x02\x1d\x19\x2c\x96\x9c\xb0\x13\xba\x85\x1d\x03\x05\x46\x00\x00\x30\x40\xa0\x99\x20\x37\xe8\xf0\x20\x82\x24" - "\xd0\x12\x1b\x4e\x76\xd7\xf5\x71\x63\x37\x80\x0b\x6a\xfe\x59\xb8\x5a\x01\xc1\x08\x35\x2d\x88\x64\x60\xb0\x44\x82\x43\x13\x41\x9c\xd9\x1f\x40\x60\x22\xf7\x0a\x2e" - "\x47\x3c\xb7\x40\xe2\xa1\xc5\x0a\x18\x0f\x6d\x94\xe0\xd8\xe3\x9f\x87\x1b\x2b\x58\x78\x38\x40\xa4\x0e\x11\x15\x5a\x1c\x20\x48\x18\x10\x0d\xc1\x82\x08\x02\x2d\x80" - "\x44\x03\x3c\x30\x50\x42\x10\xff\xa4\xd1\x41\x1e\x28\xa8\x01\x04\x1e\x21\x34\xf0\xc0\x52\x02\xd9\xe0\x81\x13\x41\xb4\xd1\xd0\x3f\x0d\x28\x51\x07\x0b\x39\x60\x70" - "\x46\x12\x34\xdc\x20\x01\x17\x66\x08\x04\x44\x0a\x30\x28\x81\xc0\x43\x77\x08\xf4\xc5\x10\x06\x38\x61\x81\x13\x44\x00\x70\xc0\x0e\x01\x10\x20\x44\x02\x51\x98\x00" - "\xd1\x18\x1f\xfd\x83\x01\x01\x39\x3c\x11\x00\x1c\x10\x00\x90\xd2\x0e\x60\x34\xc1\x83\x92\x0f\xe1\x61\x84\x44\x08\x40\x90\x86\x0d\x49\x54\x50\x40\x09\x7f\x40\xd0" - "\xc0\x0b\x2c\x41\xa4\x04\x11\x0a\x74\x90\x04\x17\x08\x34\xd1\x83\x1d\x6d\xf6\x54\x01\x11\x23\x2c\x31\x05\x1d\x0c\x54\xa0\x84\x40\x6f\xe4\x89\x96\x0f\x32\xc8\x80" - "\x84\x0c\x6a\x34\xb1\x46\x06\x1c\x06\x04\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\xf7\x26\x01\x02\x35" - "\x6d\x14\xac\x68\x41\xe7\x44\x82\x81\x10\x23\xea\x20\x21\x70\xc2\x07\x41\x0a\x00\x54\x39\x12\xb1\x63\x44\x37\x1d\x9c\x78\x68\x52\x40\x81\x12\x03\x1e\x21\x12\x98" - "\x90\xf0\x00\x04\x3e\x79\x7a\x04\xd9\x10\x43\x44\xca\x7f\x64\x70\x58\xe0\xe1\x64\x47\x8b\x11\x37\x4e\xf0\x78\x22\xa1\xc8\x40\x07\x20\x22\x86\x89\x23\xe4\x5f\x06" - "\x16\x44\x00\xcc\x69\xc2\x43\x8f\x01\x03\x40\x70\xa2\xfc\x57\xc4\x47\x20\x09\x0d\xa8\x0c\x0c\x31\x60\x05\x84\x07\x3e\x8a\xe4\x99\x40\xe6\x1f\x02\x81\x15\x20\x04" - "\x19\x62\x03\xce\x1d\x88\x5c\x3e\xb0\x00\x41\xe5\x81\x8c\x14\xff\x3e\x24\xe0\xb3\x61\x41\x12\x1f\x10\xbc\x0c\x14\xe0\x01\xa5\x05\x81\x08\xaa\x68\x19\x22\x81\xc5" - "\x0a\x09\x77\x2a\xb0\xb9\xe1\x64\xcc\x03\x01\x55\x20\x3c\x16\x98\x40\xc9\x81\x0a\x4a\xf4\xd0\x01\x60\xc1\xc6\x01\x00\x05\xfe\x79\x28\xb0\x04\x00\x80\x05\x03\x59" - "\x40\x20\x02\x23\x88\x8b\x16\x10\xd6\xec\x00\xa0\x20\xca\x3f\x1e\x25\x6c\x03\x60\xb3\xe3\x5f\x82\x29\x23\x68\x5c\x21\x22\x83\x08\x83\x1e\x10\x56\xe0\xfe\x57\xe3" - "\x83\x72\x05\x3e\xfe\xcb\x79\x01\xb0\xc4\x87\x06\x00\x27\xb4\x9f\x60\xa2\x66\xcd\xc0\x09\x1b\x2e\x30\x68\xf2\x80\xc7\x85\x03\x3b\x78\xd0\x69\x81\xc6\x05\x82\x2e" - "\x07\xbc\xf5\x8f\x0d\xff\xa4\x00\xc3\x10\x21\x08\xb4\x03\x1b\x0b\x78\x70\xc2\x01\x03\x98\x81\xdb\x1d\x6d\xe0\xf0\x06\x05\x13\x28\x91\x04\x44\x08\x54\xd0\x83\x0d" - "\x6a\x54\x41\x07\x64\x02\xb9\xf1\x40\x02\xad\xad\x70\x80\x12\x11\x0c\x44\x00\x02\x12\x40\x01\x46\x00\x02\x19\xf5\x0f\x06\x0f\xa4\x20\x43\x66\x07\x8c\xa0\x07\x0b" - "\x0f\xfd\x90\xc1\x43\x10\xe9\xd0\xd6\x3f\x24\x18\x50\xc0\x02\x5c\xec\x70\x01\x00\x28\x74\x60\x43\x08\x38\xac\x71\xa4\x47\x29\x9c\x50\x45\x05\x87\x41\xc1\xc6\x01" - "\x2b\x14\x20\x00\x06\x37\x09\xf4\xc0\x0e\x1b\x5c\xc7\x83\x06\x0b\x7c\xe0\x41\x52\x65\x0e\x54\xd6\x08\x6d\x0c\xa0\xc4\x68\x71\x0e\x34\x86\x0f\x50\xc8\xe0\x42\x01" - "\x12\x2c\x80\x40\x19\x3f\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xa8\x83\xc0\x84\x20\x1b" - "\xe6\xac\x80\x40\xe7\xc4\xc0\x87\x10\x1f\x62\x08\xa0\x24\xcd\x8d\x0b\x12\x7a\x44\xdc\x08\xe2\x1f\x18\x1a\x27\x26\x0c\x59\xb0\x01\xc9\x9a\x8d\x0f\x75\xbc\xc8\x71" - "\xe3\x00\x9b\x29\x02\xf2\x9c\x50\x40\xe4\x24\xca\x7f\x26\x0c\x7c\x89\xc0\x63\xc7\x86\x11\x12\x9c\x08\x18\xe1\x03\x65\x0a\x38\x3b\x10\x98\x11\x68\x21\xcb\x92\x1b" - "\x1f\xca\x7c\x50\x43\x61\xa0\x03\x81\x51\x38\x2c\x59\xe0\x24\xc3\x1b\x81\x63\x04\xb4\x58\x01\x63\xc2\x84\x14\x29\x3a\x2e\x75\x82\x64\x45\x8c\x17\x13\x06\x68\x78" - "\xc8\x45\x50\x10\x03\x67\xbe\x80\x29\xf2\x0f\x8e\x0f\x41\x44\x1a\xf0\x20\xe9\xa2\xc1\xc0\x09\x09\x7a\x28\xe9\x58\xe7\x00\x02\x20\x3b\xe8\x1c\x88\x71\x87\xc1\x8d" - "\x12\x30\x44\x78\x10\x80\x02\x42\xd1\x81\x36\x98\x30\xc8\xd0\x06\x42\x89\x0c\x43\x01\x74\xf9\x27\x40\xcf\x12\x00\x23\x1c\x0a\x0c\xb0\xe0\xc2\x82\x06\x10\x88\x0c" - "\xb0\xa0\xa7\x04\x9d\x04\xff\xa2\x54\x01\x40\xbc\x8a\x40\x33\x0b\x14\xb4\x81\x31\xc0\xca\x06\x30\x47\x4a\x0c\x98\x20\x30\x84\x1a\xe2\x00\x14\x54\xf8\xd7\xe4\x02" - "\x80\x0f\x3c\x14\xc6\xc8\x40\xc1\x05\xc9\x85\x00\x0f\x9b\x28\x38\xf0\xa4\x42\x94\x3c\x2b\xb0\x14\x70\x52\xa1\xc4\x89\x1d\x11\x62\xdc\x30\xf1\x0f\x04\x9c\x07\x45" - "\x08\x10\xc5\x03\xff\x20\x20\xc1\x0d\x74\x6c\x21\xd6\x00\x68\x50\x17\xc2\x09\x63\xc4\x91\x42\x10\x0c\x78\xf0\x50\x07\x32\x08\x60\x83\x06\x2d\x28\x80\xc0\x3f\x54" - "\xfc\x13\xc7\x1a\x06\xf4\xc0\x83\x18\x07\x40\xe0\xc4\x52\x22\x66\x60\x01\x18\x23\x30\x31\xd7\x3f\x52\x08\x04\xc2\x0f\x3b\xb8\xf1\x82\x17\x58\xdc\xb0\x00\x7a\xff" - "\x14\xb1\xc5\x00\x3e\xd8\x80\x52\x07\x00\x4c\xd0\x03\x12\x00\x6c\x70\x42\x14\x14\x84\x11\x42\x88\x37\xf1\xc0\x84\x67\x4e\xec\xa0\xc0\x0d\x63\x9d\x70\xc7\x57\x37" - "\xfd\x83\x46\x67\x02\x3c\x30\x81\x1a\x05\x74\x91\x41\x21\x61\x0e\x04\x43\x1a\x07\x6c\x30\x40\x13\x49\xf0\xd5\xe6\x43\x2c\xd0\x81\x84\x0b\x6d\xa0\xb0\x03\x75\x3a" - "\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\xe8\x40\xc7\xbf\x05\x4c\xd8\xac\x40\x41\x68\xa0" - "\xc3\x87\x0f\x43\xd8\x00\x63\x05\x00\x11\x25\x09\x20\x6a\x14\xb1\x63\x01\x04\x25\x1e\x26\xc8\x28\xb1\x40\xe3\xc3\x04\x57\x04\x40\xb8\xa0\x20\x90\x06\x16\x0a\x36" - "\x20\x30\xf9\x4f\xce\xbf\x14\x45\x4c\x98\xe8\xa1\x02\xc0\x14\x16\x08\x38\x48\x30\xa1\x91\xc7\x13\x09\x12\x10\x50\x10\xd8\x60\x05\x80\x02\x2f\x04\x20\xc9\x70\x52" - "\xcd\x0a\x0e\x31\x32\x78\x08\x41\x42\xa0\x0d\x0e\x07\x06\xdc\x41\x91\x22\xe3\x3f\x23\xff\x62\x1c\x68\xf1\x20\x45\x90\x36\x39\x1c\x4e\x90\xc0\x81\xc7\x96\x1a\x01" - "\x44\xfc\x93\x92\x06\x02\x83\x3c\x5b\x0a\xdc\xd0\xd3\xe3\x1f\x95\x7f\x0d\x12\x3c\xe8\x10\xe5\x87\x89\x26\x1e\x04\x42\xb8\xc1\xc3\x49\x1b\x00\x2b\x72\x44\xb0\x90" - "\x03\x49\x0b\x16\x02\x41\xfc\x33\x53\x60\xc1\x99\x2e\x2b\xd2\xd8\x80\x32\x82\x0d\x97\x7f\x1d\x88\x2c\x01\x00\x60\x01\x51\x81\x3c\xfe\xa0\x08\xd1\x62\x05\x98\x0e" - "\x6c\x5c\x94\xfc\x97\x00\x02\x6d\x00\x10\x06\xfa\x60\x70\x60\x41\x03\x08\x2d\x92\x10\xb9\x61\x61\xa0\x9d\x1d\xc7\x15\x94\xcc\xd0\x62\x89\x84\x2b\x50\x5c\xbf\x1c" - "\x49\xd1\xb7\xce\x3f\xd1\x69\x37\x94\xa0\x71\x22\x8a\x0f\x0e\x00\xaa\xe4\x80\x71\x81\x8e\x40\x0d\x5a\x08\xe0\x49\xc1\xa2\x6c\x07\x3b\x6b\xfc\x63\x83\x15\x58\xb4" - "\x20\xc0\x20\x0c\x14\x70\x84\x40\x7b\xf0\x60\x07\x0f\x43\x14\x60\xc5\x04\x0e\x2d\x40\x04\x0a\x3c\xd8\x80\xc2\x12\x14\x92\x21\x50\x02\x63\x20\x61\x80\x04\x37\xa4" - "\x11\x82\x40\x66\x3c\xb0\xc5\x0b\x3e\x04\x72\x00\x07\x66\x38\x44\x02\x0f\x05\x68\xf0\x40\x0b\x16\xf9\x20\x10\x15\x57\x20\x21\x81\x0b\x02\x68\x34\x46\x01\x12\xac" - "\xa1\x05\x04\x23\xd0\x61\xc3\x1b\x04\x44\x51\xc4\x3f\xb7\x69\xc4\x42\x09\x12\x4c\x90\x83\x1e\x07\x28\x00\x05\x0b\x3c\x98\x45\xd3\x3f\x50\x5c\xf0\x84\x07\x16\x2c" - "\xb0\x82\x0b\x3e\xa4\xf0\xe5\x40\x45\x08\x40\xc4\x01\x0c\x34\x61\x03\x55\x6b\x3e\x44\xc7\x8f\x05\x40\x70\x02\x4d\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c" - "\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x89\x02\x05\x44\x20\x10\x5c\xc8\x70\x60\x94\x21\x0b\x4a\xb0\x41\xc2\xa2\xe1\x42\x32\x18\xb8" - "\xa4\x61\x50\xa0\xc1\x1d\x35\x07\x24\xc0\xb0\x48\xf0\x85\x87\x06\x28\x2e\xb4\x58\x00\x63\xc0\x01\x25\x54\x1a\xbe\x41\xc3\x62\x47\x12\x02\x04\x44\x08\xa8\xc2\xa4" - "\xc3\x83\x27\x0a\x26\x30\x9c\x50\x61\xc5\x8d\x05\x39\x6a\x50\x10\xf8\xe1\xc6\x0d\x37\x08\x2e\x34\x59\xd8\xc3\x05\x93\x1d\x1e\x92\x70\x81\x73\x46\xa0\x9d\x1d\x37" - "\x24\xf0\x08\x72\x42\x0a\x41\x28\x25\x3a\x60\x10\xa0\xe2\x6a\x83\x81\x1d\x24\x94\x08\xd0\x27\x4f\x8a\xae\xff\x50\xcc\xe9\xe0\x21\xc6\x8d\x25\x44\xee\xfc\x03\xf1" - "\xaf\x41\x88\x22\x0b\x34\x14\xc1\xc0\x23\x89\x40\x22\x2d\x12\x74\x99\xb3\x84\xce\x93\x28\x68\x4e\x48\x58\x51\xb1\x82\x01\x10\x40\x34\x54\x20\xf3\x4f\xc1\x89\x26" - "\x10\xd8\x08\x2a\xf2\xcf\x89\x82\x25\x00\x00\xec\x30\x31\xd0\x84\x0b\x06\x76\xdc\x40\xe0\x31\x65\x89\x80\x81\x06\xda\xc4\x06\xd0\x86\x20\x9c\x0b\x05\x32\x40\xc8" - "\xb1\xc6\x4a\x01\xda\x02\x13\xd0\x18\xae\x60\xc1\x3f\x33\x0b\x56\x54\x11\x00\x46\x21\x99\x1d\x1a\xe4\xbc\x50\x18\x03\xe7\x5f\x93\x12\x1b\x90\x74\xb0\xd1\x01\xec" - "\x9f\x1d\x6b\x5a\xc8\x10\x88\xe0\x8e\x09\x11\xa2\x4d\xbc\x70\xf2\x42\x70\x18\x3d\x17\x2c\xb1\x83\x0f\xd9\xd1\x21\x50\x11\x19\x04\x20\x06\x0f\x07\xe8\xf1\x96\x40" - "\x15\xa8\xb1\x04\x04\x0b\xbc\xd0\x41\x09\x7c\x0c\xe4\xc0\x1b\x6a\x54\xc0\x05\x07\x07\x9c\x60\x86\x40\x6b\xe4\xe0\x84\x05\x3c\xa8\x71\x01\x12\x0f\x2c\x74\xc2\x1f" - "\x01\x2c\x70\xc3\x05\xd6\xfd\x43\xc0\x1e\x3e\x54\x70\x00\x13\x14\x31\xd4\x04\x13\x27\x84\x90\xc5\x01\x2b\xc0\x81\x07\x08\x29\x0c\x11\x44\x0c\x4d\xa4\xd0\x90\x09" - "\x41\x28\x50\xc1\x04\x0c\xb0\xc1\x04\x03\x3d\xac\x61\x00\x49\x03\xb1\xe0\x02\x1b\x15\x64\xe0\x06\x11\x53\x64\x61\x41\x11\xa4\x71\xf9\x0f\x02\x69\xac\x30\x45\x0e" - "\x01\xd8\x40\x98\x9a\x0b\xa9\x80\x44\x01\x6f\x72\x19\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48" - "\xf0\x5f\x0e\x36\x0a\x20\x14\x5c\xc8\xf0\xdf\x97\x09\x0c\x6e\x10\xa1\xd1\xb0\xa0\x94\x28\x1a\x0a\x48\xa0\xe3\x81\x05\x11\x05\x13\x2a\x92\x20\x00\x23\x8c\x01\x1b" - "\x4d\x14\x1c\x28\xc0\x82\x05\x04\x08\x3e\x18\x8a\x61\x61\x45\x86\x15\x1e\x14\xcc\x84\xa0\xb1\x84\xc1\x83\x05\x58\x04\x80\x28\x88\xa0\xca\x12\x09\x02\x3c\xe4\xf9" - "\x21\x50\x0c\x91\x25\x34\x7a\x48\x80\x10\x81\x60\x90\x16\x2e\x04\x04\xc8\xe0\x46\x0d\x8f\x81\x4d\x0e\x28\xc0\x91\xc3\xca\x1a\x82\x2d\x20\x58\x48\x31\xa0\xca\x01" - "\x0e\x4d\x08\x06\xda\xd0\xc7\x82\x02\x02\x03\x21\x30\xe9\x31\xe1\x09\x00\x89\x29\x52\x0c\xfd\x17\x20\x4e\x1a\xaf\x6b\xed\x08\x9c\x98\xc7\xc5\x08\x05\x31\xfe\x21" - "\x40\x30\x80\x4e\x0b\x1f\x51\x1a\x4c\x00\x01\xc4\x8f\x8f\x19\xff\x88\x38\x91\x70\x40\x85\x12\x81\x2f\x56\x2c\x01\x00\x20\x90\x99\x81\x75\x06\x0d\xc0\xf3\x4f\xc0" - "\x9d\x36\x0a\x0c\x0c\xbc\x53\x80\x35\x00\x14\x04\xc7\xb4\x90\x90\x22\xee\x0f\x09\x3e\x80\x0c\x4c\xd0\x9b\xb5\x82\x81\x1a\x06\xdc\x60\xc0\xa3\xc5\xbf\x22\x31\x42" - "\xfc\xa0\x80\xc6\x43\x88\x26\x2b\x36\xb3\x4c\xe9\x00\xe3\x1f\x1c\x08\x23\x38\xf4\xd8\x01\xfc\x5f\x86\x14\x01\x92\xec\xa0\x61\xc2\x49\x06\x2e\x19\x92\x44\x40\x72" - "\x00\x80\x8b\x18\x3e\x28\x20\x81\x40\x78\xd4\x01\x81\x0d\x4a\xdc\x90\x06\x41\x3e\xd0\x71\x03\x1b\x12\x58\x30\x41\x0b\x48\x10\x84\xc6\x14\x3e\xd8\xc0\x06\x1b\xe5" - "\x09\xe4\x83\x0a\x03\x58\x80\x46\x1f\x05\xa0\xe0\x06\x41\x5f\x6c\x10\x44\x00\x12\x00\x00\x01\x1c\x02\x99\x81\x06\x0f\x2c\x0c\xb0\xc4\x01\x5f\x11\x64\xc2\x09\x07" - "\x34\x60\x01\x12\x00\x0c\x20\x02\x05\x04\x78\x00\x81\x0c\x1b\xec\xc0\x00\x43\x4a\x30\x21\x83\x05\x02\x10\x71\x81\x0b\x6b\x85\x20\x82\x18\x09\x14\x51\x91\x13\x69" - "\x69\xf0\x23\x11\x48\x65\x20\x45\x45\x56\xa1\xd0\xc2\x0e\x08\xd8\x20\x42\x18\x64\x32\x24\x81\x0b\x10\x08\xd0\x66\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00" - "\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x60\x97\x15\x44\x20\x14\x5c\x58\x10\x84\xc0\x14\x7d\x36\xb0\x29\xc0\x90\x61\x9c\x24\x1d\x0a\xb8" - "\x50\x12\x40\xc6\x01\x06\x68\x2a\x86\x18\x82\x40\xcd\x97\x10\x19\x4e\x5c\x50\xb0\xc0\x03\x83\x25\x2c\x16\xda\x68\xc0\xa0\x04\x93\x27\x0c\x52\xe0\x29\xa4\xe1\x00" - "\x04\x18\x5a\x6e\x30\x78\x51\x30\x0b\x80\x12\x1d\x3c\x04\x88\x12\x85\x82\xc0\x13\x00\x20\x78\x58\x70\x00\x01\xc1\x02\x07\xf8\x58\xc8\xd0\xe4\x89\x84\x0a\x06\x04" - "\xf2\x50\x70\x20\x46\x8f\x0b\x70\x06\x42\xd8\xf0\xe4\x01\x82\x36\x7f\x46\xb4\x69\x40\x70\x07\x13\x06\x3c\xa0\x34\x20\x23\x90\x48\x8b\x07\x27\x20\x00\x50\x80\x04" - "\x47\x04\x11\x29\x04\x16\x51\x21\x21\x8a\x8c\x28\x66\x04\x42\x10\x70\x62\xc3\x81\x34\x16\x04\xfa\x28\xf0\xa4\x8d\x96\x14\x08\x16\xec\xc9\x60\x20\x83\xc3\x0a\x5f" - "\x20\x60\x49\x2b\xb0\x50\x81\x11\x00\x00\x10\x49\x6c\x03\x04\x88\x14\x4a\x22\x08\xc4\x50\xa0\x42\x9c\x81\x38\x64\xc4\x06\x20\xe3\xce\x40\x13\x15\x18\x10\x78\xb8" - "\xa3\xc8\x1b\x0a\x19\xfe\xdd\x29\x31\xbc\x0a\xc1\x1e\x07\x5c\x24\xc8\xf1\xcf\x4c\x80\x10\x29\x6a\xbf\x54\x78\x90\x00\x0c\x04\x08\x07\x4e\x08\xb4\x71\x82\x49\x89" - "\x0a\x1a\xda\xb4\x36\x30\x20\x84\x0c\x24\x63\xfe\xd5\x41\xc3\x23\x43\x88\x01\x44\x60\x41\x84\x1a\x5c\x68\x24\x90\x03\x1d\xb4\x85\xc4\x05\x15\x5c\x87\xc4\x0d\x17" - "\xac\x50\x81\x05\x69\x4c\x11\xc8\x40\x02\x1c\x30\xc4\x02\x37\x40\x60\x83\x40\x68\x3c\x51\x00\x04\x0b\xa0\xa1\xc1\x00\x6c\x30\x40\x10\x0b\x07\x34\x11\x40\x0b\x58" - "\x2c\x20\x10\x01\x19\xdc\xc1\x83\x07\x39\x28\x00\x80\x00\x05\xf1\x50\xc0\x14\x62\xe4\xb0\x02\x1b\x16\xe8\x00\x42\x06\x03\x04\xf1\xc7\x05\x2d\x34\x11\xc2\x42\x31" - "\x00\xa0\x06\x0f\x03\x1c\xb0\x42\x03\x18\xbc\x60\x07\x1f\x3e\x68\x01\x43\x45\x36\x64\x31\x07\x0d\x49\x2c\xb0\x82\x0b\x7c\x24\x51\x47\x45\x0b\xa9\x50\x00\x07\x4d" - "\xdc\x11\x42\x14\x33\xb0\xc9\x90\x04\x32\xf4\x66\xa7\x40\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09" - "\x1c\x48\x70\xe0\x8e\x29\x10\x0a\x2a\x2c\x68\x04\x84\xc0\x33\x5e\x98\xb4\x58\x48\x90\x44\x02\x11\xff\xc2\xf0\xd8\x01\x85\xc6\x16\x25\x4b\xda\x04\x59\x98\x40\x40" - "\x03\x19\x4f\x76\xa4\x08\xf1\x40\xc6\x01\x0e\x08\x2a\x00\x60\x90\xa0\xe0\x91\x0f\x37\x6e\x20\x79\xd2\x41\x09\x01\x02\x67\xa0\x1c\x50\x33\x21\xcd\x81\x26\x05\xdb" - "\x00\xf8\x30\x61\x88\x09\x2e\x3d\x80\x08\x74\xd2\x42\x41\x0f\x37\x17\x04\x38\x14\x48\xe4\x40\x03\x0f\x01\xe8\x14\x58\x41\xa7\xc7\x40\x24\x00\xa0\x38\xb1\x42\xe4" - "\x8b\x40\x08\x2b\xdc\xf0\x50\xa3\x00\xc0\x01\x08\x3e\x08\x36\x51\x50\x20\xc1\x13\x1a\x11\x04\x16\x18\xe0\xc4\xc5\x01\xbe\x5d\x10\xd4\x09\x41\x40\xa0\x0d\x19\x44" - "\x02\x2c\xd8\x61\x44\xe0\x82\x08\x32\x6e\x08\x42\x2a\x50\xc9\x94\x27\x48\x04\x60\xe0\x41\x07\xcd\x89\x28\x45\x06\x26\x70\x21\x23\xb0\x40\x02\x32\x46\x00\x00\xa0" - "\x20\xc0\xbf\x26\x04\x0a\x45\xb1\xb1\x35\x05\xa1\x28\x5b\xff\x85\x40\x3b\x5b\x82\xeb\x7f\x54\x32\xec\xc0\x20\x30\x4e\x80\x14\x54\xa8\x6c\xf9\xe7\x81\xc9\x6c\x00" - "\x09\x07\x9a\x90\xc0\xc0\x84\xc0\x37\x63\xbe\xc6\xb0\x40\xf3\xa4\x0c\x86\x05\x28\x50\x5c\xf8\x30\xd0\x82\x97\x39\x34\xcc\x1c\x11\x88\x67\x80\x80\x00\x6c\xda\x08" - "\xac\x63\x03\x4e\x88\x21\x3e\xd0\x01\xc1\x5d\x57\x2c\x20\x81\x40\x5f\xb8\xf0\x41\x11\x2d\xac\x60\x01\x41\x1e\x14\xc0\x86\x5d\x34\x38\xe1\x06\x04\x81\x38\x36\x07" - "\x03\x01\x28\x45\xc7\x40\x02\x20\x71\xc3\x0a\x6d\xb0\xe0\x43\x05\x07\xc8\x30\x50\x21\x47\x28\x30\x01\x0b\x6c\x40\xf0\xe0\x3f\x18\x4c\xd0\x43\x14\x1e\x34\xa0\xc6" - "\x08\x82\x14\x74\xc2\x12\x59\xc0\x00\xc5\x0d\x4f\x80\x80\x87\x08\x0d\x08\xb0\xc3\x13\x07\x00\x50\x41\x5e\x04\x8d\xa1\xc6\x12\x4d\xc0\xd1\x02\x1b\x03\x8c\x11\x45" - "\x08\x4f\x30\xc0\x84\x17\x0b\x98\xb1\xd0\x02\x05\x6c\x00\xc6\x04\x2e\x14\x90\x46\x00\x63\xfc\x33\xc6\x03\x35\x51\x24\x10\x12\x6d\x2c\x90\x40\x06\x51\x98\x50\x99" - "\x9c\x0a\x49\x90\xc6\x02\x7c\x0e\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x90\x20\x03\x09" - "\x2e\x0a\x2a\x2c\x08\x02\x84\xc0\x0c\x55\x14\x40\x58\x48\xf0\x0c\x97\x00\xff\x32\x58\x90\xb0\xa0\x02\x8c\x15\x0a\x12\x2a\x6c\x20\xc0\x45\x8b\x16\x56\x76\x60\x08" - "\xa1\xe1\x82\x82\x3e\x5b\x0e\xb4\x59\x50\xd0\x05\x87\x03\x10\x16\x08\xd0\xc0\x82\x87\x0e\x13\x1a\x46\x14\xd0\x50\x61\x89\x1b\x82\x10\x36\xb0\xf1\x11\x40\x23\x9c" - "\x2b\x3c\x28\xfc\xb3\xb1\x63\x89\xc7\x15\x48\x06\xba\x20\x42\x24\x89\x93\x1c\x4c\x14\x94\x28\xe1\x26\x84\xc0\x05\x58\x0e\x58\x78\x52\xc5\x8e\x40\x3a\x10\xbe\xa2" - "\xc0\x32\xa2\x04\x91\x09\x0d\x06\xda\x00\xd9\x23\x87\x02\x04\x02\x83\x64\x38\x31\x67\x49\xa0\x01\x43\xfe\xd9\x49\xe1\x50\xa0\x04\x05\x2c\x7c\xb8\xb0\x31\xb0\x08" - "\x83\x1b\x4c\x07\x7a\x29\xc0\x80\x4e\x87\x04\x5c\x0e\xe4\x69\xc2\x40\xaa\x40\x11\x2e\x9c\x10\xa8\x2c\x01\x80\xeb\x15\x3c\x7a\x1c\xb1\x81\x26\x41\x8a\x81\x85\x2c" - "\x24\x20\x41\xe1\xc5\xbf\x04\x2e\x5c\x03\x90\x50\xe7\x5f\x92\x1f\x14\x0c\xf0\x68\x4c\x25\x43\x02\x1c\x49\x9a\x3c\xe0\xb1\x41\x78\x01\x82\x66\xb6\x30\x58\xfd\x4f" - "\xc7\x0f\x06\x13\xae\xc2\xcc\xb1\x91\xe2\x49\x01\x08\x25\x9e\x0c\x34\xe0\xa4\xc4\x09\x13\x03\x2d\xb4\x41\x13\xe3\x80\x0c\x81\x76\xd6\xc0\xc9\x90\xb1\xc3\x0e\x00" - "\x7f\x34\x91\x42\x10\x02\xf9\xc0\x84\x06\x62\x1c\xa0\x87\x59\x02\x21\x80\x06\x07\x44\x2c\xb1\x44\x01\x15\xc8\x97\xc5\x43\x6c\x74\xc0\xc5\x05\x37\x28\x21\x10\x0f" - "\x1f\x1c\x70\xc1\x01\x37\x7c\x10\x43\x0f\x05\x70\xa0\x9e\x40\x44\xa4\xf6\xc1\x08\x1f\x18\xf0\x4f\x1d\x16\x0c\x72\x42\x03\x68\x4c\x20\x80\x02\x05\x48\x40\x50\x05" - "\x37\x0c\xd2\x80\x02\x23\x58\xf0\x06\x08\x01\x0c\xe2\x01\x0b\x47\xb4\x71\x43\x1a\x04\x12\xc4\x02\x07\x1b\x58\xd0\x01\x13\x2d\xf0\xb0\x47\x79\x48\x94\x10\x16\x0b" - "\x79\x2c\x24\x41\x01\x05\x38\xb1\x80\x0b\x32\x78\x10\xc5\x3f\x79\xc0\x81\x11\x45\x8e\x21\x61\x45\x14\x06\xd8\x61\xc2\x0f\x70\x2e\xf4\x04\x1f\x2b\xe6\x29\x50\x40" - "\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x9a\x2e\x05\x13\x26\x24\x00\x42\x60\x83\x15\x10" - "\x14\x0a\x44\xe3\xa1\x09\x0b\x1f\x4d\xfe\x25\x71\x42\x87\x05\x1a\x06\x0a\x22\x26\x94\xc0\x00\x0b\x1b\x05\x6c\x02\x09\x10\x91\x01\x24\x92\x35\x05\x14\x48\x28\x08" - "\x61\x83\x82\x13\x0d\x78\x3c\xe0\xd1\x20\x02\x08\x11\x31\x4f\x78\x60\x63\x05\xc6\x40\x08\x2b\xa0\x3c\xb8\x12\xe0\x44\x85\x0e\x3e\x30\x08\x9c\x70\x83\xc1\x84\x27" - "\x07\x78\x08\xec\x02\xe1\xc9\x9d\x0a\x0c\x6e\x2c\x19\xbb\xc3\x82\xc0\x26\x2b\xb0\xf4\x58\xc0\x24\xe3\xbf\x05\x3e\xf2\x58\xd9\x30\xa2\x84\x8b\x02\x08\x7a\x0c\xb4" - "\x23\x63\xc9\x02\x27\x1b\xdc\x10\x54\x72\xa0\x00\x8b\x05\x09\xfe\x3d\xc0\x60\x66\xa0\x17\x2c\x15\x78\x1c\x10\x30\xd0\xc1\x8e\x27\x22\x06\x82\xa8\x80\x02\x4a\x10" - "\x25\x2f\x1e\x1c\x50\xc2\xc3\x85\x5e\x81\x75\x06\x25\xa0\x30\x30\x44\xa0\x11\x00\x46\x10\x79\xf0\xe0\x03\x9c\x06\x27\xf0\x0c\x34\x61\x63\x8c\x08\x13\x7a\xa3\x14" - "\x00\x40\xdc\x45\x91\x7f\x5a\x44\x14\xd9\x93\xa1\xf2\x8f\x1c\x3d\x7c\x28\x31\x60\x43\x01\xf1\x11\x48\x08\x52\x49\xb1\xa5\xa1\x40\x16\x48\xee\xbc\x2c\xb8\x90\x24" - "\x09\x67\x22\x0a\x9e\x10\x14\xe1\xa5\x82\x91\x81\x5d\xe6\xd4\x5e\x72\xe2\x1f\x88\x3b\x49\xb6\x68\x35\xd3\xc0\x82\x8b\x15\x3e\x10\x74\x42\x0b\x38\x78\xb1\x04\x1d" - "\x8d\x09\x94\xc4\x10\x4f\x48\xd0\xc2\x0d\x73\x58\xf1\xc0\x04\x0b\x08\x94\x85\x02\x0d\xb0\xb0\x04\x11\x0d\x9c\x35\x00\x16\x4b\xc4\x26\xc3\x09\x77\x7c\xd0\x46\x87" - "\xff\x58\x00\x80\x12\x70\x14\x70\xc3\x69\x76\x80\xb5\x03\x0d\x3e\xf4\x27\x41\x1b\x33\x09\xc4\x43\x1a\x0a\x24\xb1\xc3\x01\x12\xe0\x41\x81\x1d\x08\x94\x17\x40\x0e" - "\x27\xb0\x31\x85\x0a\x05\xa9\x00\x41\x1a\x38\x70\xb0\xc2\x02\x11\x44\x91\x03\x1d\x25\xb4\x70\xc0\x08\x59\x54\x38\x52\x01\x59\xe4\x41\xc3\x0e\x83\x3c\xf0\x8f\x1b" - "\x15\xec\x20\xc3\x10\xcd\x49\x24\x81\x0b\x01\xca\x61\x06\x01\x12\xd5\xa9\x85\x97\x75\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00" - "\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x04\x16\x3e\x0a\x2a\xfc\x97\xe1\x07\x88\x7f\x64\x08\x3c\xfc\x27\x08\x49\x81\x85\xff\xd4\xc4\x50\x41\x43\x42\x87" - "\x05\x22\x3c\xf8\xd8\x91\xa4\xc7\x01\x08\x0b\x21\x10\x01\x30\x05\x82\x8c\x29\x32\xae\xa4\xb0\x30\x02\x85\x80\x23\x27\x09\x16\x80\xa0\x00\xc9\x16\x0b\x18\x86\x44" - "\xb1\xd1\x80\x42\x9c\x26\x07\x90\xd8\x28\xd0\xe2\x89\x40\x1f\x2a\x4a\x9c\x88\xe2\xa3\x89\x0c\x24\x32\x2a\xe4\xa1\xf0\xcf\x00\x0a\x22\x4d\x9a\x00\xe8\x22\xb0\xc1" - "\x80\x1e\x4d\x24\xac\x1c\x71\xe3\x06\x0a\x2d\x67\x04\x7e\x00\xe0\x86\x05\x11\x06\x02\x27\xfc\xbb\xa2\xc0\xad\x84\x2c\x3b\xb4\xac\x21\xb8\x60\x04\x92\x32\x1b\x68" - "\x3c\x18\xe8\x64\x84\x16\x03\x04\xcf\x40\x16\x08\xe6\x82\x0c\x04\x12\x0a\xd4\x11\x68\xc6\x4d\x00\x2a\x04\xe1\x40\xe0\x70\xe2\xc4\xbf\x1e\x3d\xef\x40\x58\x60\x42" - "\x20\x06\x1e\x21\x28\x50\x18\xf3\x2f\x05\x03\x00\x00\xb0\xb4\x28\x93\xc0\x45\x85\x24\x28\x7a\x0c\x74\x40\xe0\x8a\x07\x91\xff\x3c\xac\xc0\x0d\x00\x82\x8d\x7f\x27" - "\xd0\x68\xd8\x42\x80\x20\x8b\x02\x6b\x94\x48\xc0\xf0\x60\x39\x6e\xbc\x5d\x41\xd0\x50\xf9\x72\x67\x60\x02\x2f\x48\xbe\xa0\x38\xe0\xe4\x9f\x86\x02\x25\x56\xd0\x21" - "\x68\x86\x87\x8f\x89\x09\x56\x0c\xf0\xd0\xe6\x00\x0c\x81\x0f\xc0\x61\x01\x41\x09\xf8\x70\x81\x07\x03\x59\x80\x84\x0b\x7b\xb4\x81\x05\x18\x04\xa5\x30\x81\x1b\x15" - "\xa8\xe1\xc2\x05\x7a\xf8\xf1\x8f\x5e\xff\x14\x50\xc0\x04\x73\xa9\x21\x50\x06\x27\xb8\x70\xc0\x05\xb8\x11\x51\x80\x0f\x01\x3c\xd1\x80\x40\x62\x39\x51\x01\x1b\x05" - "\x88\xf0\x8f\x19\x70\xa8\xa1\x00\x04\x28\x7c\x90\x83\x0d\x39\x28\xb0\x43\x7b\xff\x7c\xd0\x82\x0c\xc0\x31\xd1\x03\x05\x66\x20\x60\xc3\x03\x16\x7c\x01\x47\x03\x3b" - "\xc9\x40\x03\x41\x12\x40\x50\x81\x00\x1b\x28\xf0\xc0\x1a\x1e\x20\x61\xc5\x00\x10\x4c\x01\x80\x15\x84\x2c\x24\x81\x1e\x08\x4c\xe0\x83\x00\x3c\x10\xf0\x81\x1a\x2b" - "\x1c\x39\x81\x00\x18\xd1\xb0\xc3\x00\x02\xc5\x61\x02\x19\xff\x98\x60\x40\x42\x18\x31\xc6\x02\x87\x85\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00" - "\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x0e\x34\x36\x0a\x2a\xbc\x03\xe7\x41\x08\x10\xff\xc8\x50\x19\x38\x40\x89\x42\x81\x1c\x02\x4d\x39" - "\x40\x64\xca\x82\x0e\x09\x92\xc0\xf9\x97\x20\x08\x04\x08\x05\x4f\x2a\x38\xb0\xe3\x49\x87\x20\x0c\xa6\x8c\xc1\x71\x02\x49\x05\x1f\x17\x50\x0e\x54\xa2\x47\xc1\x82" - "\x17\x68\xc2\xf0\xa8\xc1\xc5\xc2\x9a\x1f\x21\x4a\x28\x98\xb0\xe3\x00\x07\x81\x36\x3e\x7c\xf0\xc1\x94\x41\x0b\x05\x10\x24\x08\xc0\xf0\x2f\x82\x92\x0b\x03\x78\x5c" - "\x40\x22\x30\x0f\xc9\x05\x2b\x6f\x8c\x38\xc0\xf1\x44\xc2\x7f\x4e\x4a\xd0\x98\x90\xa6\x45\x92\x81\x22\x50\x1c\xe8\xd0\xa4\x02\x02\x35\x45\x08\x0a\x58\x42\xe4\x8e" - "\x15\x26\x30\x06\x0a\x38\x61\x27\x02\xc1\x35\x0f\x20\xfe\x43\xa3\x94\xe9\x8a\xb7\x26\x6c\x84\xa0\x40\x90\x87\x82\x2a\x60\x04\x0a\x20\x02\x21\x8a\x97\x15\x0f\x04" - "\xea\xc0\x90\x22\x84\x89\x00\xff\xc6\xec\x58\x02\xe0\x02\x91\x24\x20\xda\x48\x18\x22\xe8\x83\x99\x81\x3d\x14\x24\x69\x12\x03\xee\x0d\x00\xc8\x0f\xf4\xf8\x77\x22" - "\x86\x85\x12\x3c\x06\x26\x60\x10\x84\x4b\x81\x36\x20\x3c\xb0\x19\x01\x60\xc9\x8e\xdf\x08\x4c\xd3\xf8\x71\x3d\x90\x47\x89\x13\x19\xaa\xac\xf0\xf1\xef\x0a\x14\x00" - "\x0a\x0a\x52\x79\xf0\x62\xe0\x16\x05\x02\x10\x30\x51\x90\x41\xe0\x9d\x26\x13\x10\x24\xc2\x1e\x4a\x6c\x31\x50\x03\x37\x7c\x70\xc5\x06\x07\xb0\x37\x90\x19\x6e\xd8" - "\xe0\x83\x05\x02\xac\x20\x01\x01\x11\xfd\x73\x07\x04\x41\x4c\xc0\xc1\x01\x16\x08\x04\xc3\x11\x10\x28\x30\xc7\x05\x25\x5c\x30\x47\x0e\x75\x4c\x26\x50\x20\x07\x3c" - "\x20\xc8\x05\x31\x40\xb4\xc7\x02\x44\xb0\xa1\x14\x12\x03\x68\x60\xc1\x02\x6a\xdc\xf5\x0f\x21\x10\x9c\x30\xc8\x1c\x53\xd4\x01\xc2\x1d\x3c\xf0\x90\xc4\x04\x1e\xf8" - "\xc0\xc3\x02\x55\x20\xe1\xa0\x40\x32\x40\xa0\x41\x10\x6d\x54\x90\xc1\x17\x2b\xec\x70\x42\x07\x5e\x3c\xf1\x47\x56\x12\x14\x24\x81\x04\x0b\xa4\x90\x42\x13\x49\x88" - "\xd0\xc1\x0e\x25\x30\x81\x45\x01\x2d\x5d\xf4\x0f\x0b\x1f\x0c\x54\x87\x14\xff\x98\x61\x41\x0c\x4d\xd8\xa1\xe7\x40\x36\xa0\x71\xe8\x45\x01\x01\x00\x21\xf9\x04\x09" - "\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x3f\x0a\x6b\xcc\x18\x24\x58\x41\xc3\x89\x21\x36\x40\xfc\x23\x33\xb0" - "\x81\x18\x38\x0b\x21\x10\x99\x73\xe0\x00\x00\x08\x47\xfe\xa5\x30\xc0\xe3\x9f\x85\x02\x41\x08\xc2\x09\x42\x44\x81\x8b\x18\x13\xc4\x68\x58\xe0\xe5\xc4\x99\x1e\x2e" - "\xdc\xbc\x90\xa0\x60\x60\x9c\x41\x32\xe8\xb0\xb8\x03\xa3\xc7\x04\x1f\x29\xbe\x08\x30\x21\x62\x81\x82\x27\x2c\x98\x40\x10\xb8\x86\x85\x85\x3b\x5e\x34\x7a\x2c\x41" - "\xe4\x83\x05\x89\x77\x96\xe8\x09\xd0\x86\x88\x40\x1d\x13\x2b\xcc\x59\x52\x00\x42\x95\x15\x73\x24\x34\xa0\xf0\xef\x81\x0b\x22\x0d\x3a\x94\x48\x29\xd0\x06\x91\x13" - "\x6b\xb8\xfc\x4b\xf0\x2f\x42\x00\x82\x2e\x0e\xc0\xa8\x70\xa1\xc1\xc0\x17\x49\x08\x14\x74\xb2\x46\xe2\x60\x08\x00\x1a\x28\x39\xd0\x45\x20\x09\x3b\x63\x44\x50\x00" - "\x22\xf0\xc1\x06\x05\x02\x06\xa2\x28\xd1\x44\x0b\x00\x0f\x03\xa3\x2c\x70\x92\x47\xcb\xbf\x22\x0b\x6e\x00\x38\x40\xc4\x02\x85\x29\x2d\x32\x7c\x50\x60\x41\x60\x02" - "\x06\x3b\x52\x7c\xf8\x10\x66\xc2\x12\x00\xd0\x2f\x6c\x79\xe1\x65\x41\x14\x06\x0b\x14\xfe\x83\x73\xa0\xc2\x9a\x39\x1b\x28\xda\xf8\xd8\x30\x02\xc0\x85\x13\x85\xfe" - "\x1d\xb9\x22\x20\x48\x98\x81\x1a\x00\x58\x00\x73\x00\x89\xc0\x00\x0c\x00\xf4\x14\x48\x00\x44\x91\x04\x45\x0c\xf4\x04\x1b\x3e\xe4\x80\x45\x01\xda\xdd\x21\x80\x6d" - "\x04\xc5\x61\xc1\x18\x03\x71\x07\x83\x1b\x37\xc8\x40\xd0\x1d\x92\x29\x14\x42\x14\x5d\x58\x11\xc5\x40\x6a\x09\x10\x43\x09\x32\x84\xf0\x0f\x06\x6a\xd0\xb0\xc1\x14" - "\x6d\x20\x81\xc4\x05\x2b\x88\x41\x11\x5d\xff\x70\x20\x01\x0f\x0a\x1c\x40\x98\x19\x1a\x30\x70\xc3\x05\xe6\xb5\xa0\x00\x1f\x35\x0c\xc1\xc2\x03\x02\x49\x80\x82\x0f" - "\x0c\xac\x20\x00\x08\x61\x38\x11\xc5\x10\x1d\x54\x90\x43\x0c\x43\x4c\xc0\x00\x14\x70\xd4\x31\x90\x15\x03\x94\x31\x40\x01\x49\xd4\xb0\xc0\x0e\x4a\x20\xd0\xc4\x20" - "\x4a\x14\xa0\x87\x0b\x15\x6c\xc1\x90\x04\x1e\x80\x10\x40\x06\x10\x2e\xe0\xd1\x05\x4c\x10\xe1\x42\x20\x0b\xf5\x00\x87\x63\x02\x51\x54\x87\x06\x15\x30\xd0\x83\x06" - "\x0b\x0d\x34\x83\x0d\x8d\x46\x1a\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\xd0\x0e\x41\x82\x20" - "\xc6\x1c\x24\x08\x01\xc9\x00\x2f\x03\xb6\x24\x01\x71\xd0\x43\x8a\x85\x12\x20\x6c\x38\xb0\x82\xc3\x81\x12\x10\x2a\xfc\x1b\x63\x46\xe0\x11\x37\x04\x53\xb8\x29\x40" - "\x64\x01\x8f\x07\x3c\xee\x68\xc8\x42\x07\x4d\x06\x0d\x41\x78\xe4\x21\x22\x41\xe0\x98\x2b\x47\x86\x04\x68\x72\xe2\x48\x07\x35\x3d\x02\x78\x70\x62\x26\xc9\x85\x20" - "\x01\x14\xb4\x10\x88\x47\x60\x06\x24\x25\x0e\x00\x00\x80\x65\x49\x01\x1f\x18\x74\x98\x90\xc0\xa4\xc1\x0e\x05\x10\x08\xb2\xc0\x12\xa8\x82\x1a\x28\x56\xd8\x14\x38" - "\x71\xf1\x5f\x8e\x03\x0b\x26\x60\x41\x32\x10\x83\x8f\x0c\x75\x0e\x1a\x20\x28\x00\xc0\x11\x0b\x0a\x54\x0c\x1c\x13\xa5\x90\x0e\x82\x15\x0c\x50\x19\x48\x03\xc0\x09" - "\x0d\x10\x9e\xd4\x10\x08\xc2\x82\x07\x20\x83\xff\x05\x40\x51\x42\xc0\xc0\x34\x37\x76\x20\xc0\xb2\x43\x60\x82\x20\x12\x92\xf8\x30\x9d\x82\xcf\x05\x00\x07\xa6\xf8" - "\xf8\x57\x60\x89\x93\x26\x6c\x26\x08\x14\xc3\xa4\xcb\x90\x16\x2a\x4c\x58\x58\xb2\x15\xc0\x05\x34\x11\x54\x14\x40\x73\xb6\x87\xc0\x18\x0a\x10\x34\x00\xa0\xe7\x5f" - "\x07\x22\xcc\x2f\xd3\x2c\x10\xf1\x6f\x81\x0f\x1e\x2e\xc0\x94\xfc\x87\x64\x45\x86\x27\x4b\x3e\x08\xf4\xc0\x00\x80\x82\x81\x6b\x08\x88\xd9\xf2\x46\x60\x18\x1a\x2e" - "\xc0\x30\xc0\x12\x41\x0c\xf4\x80\x0f\x5d\x20\x84\x41\x14\x75\xfd\x33\xc0\x0a\x49\xd0\x01\x80\x69\x8b\x1d\x64\xc6\x1d\x70\x4c\x26\x90\x04\x6c\x20\xf0\xc4\x01\x0d" - "\x08\x94\xc4\x0e\x19\xd1\x10\x44\x13\x0d\x30\x70\xc0\x16\x04\x05\x32\x97\x00\x07\x7c\xf0\xc6\x0f\x11\x54\xc0\x46\x73\xce\xb1\x11\x84\x41\xff\xfc\x20\x90\x0c\x56" - "\x70\x81\xc2\x0a\x29\x14\xd1\x03\x0f\x3d\x34\xf1\xc4\x13\x03\x64\xd1\x40\x06\x0f\x9c\xe0\x41\x14\x02\x7d\x80\x04\x0f\x3c\xc4\xa0\xc1\x17\x79\xa4\x71\xc2\x16\x5c" - "\x4c\x80\x00\x0c\x27\xe8\xe1\x82\x00\x21\x10\x14\x43\x82\xff\x44\x60\x50\x05\x25\x64\xc5\x81\x02\x4c\xa0\x80\x84\x1a\x0b\xa5\x60\xc1\x41\x26\xc0\xa1\x04\x0a\x3b" - "\x74\x10\x04\x21\x0b\x0d\x94\x01\x79\x85\x9a\x50\xe8\x3f\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09" - "\x1c\x28\xb0\x49\x0a\x82\x03\x49\xbc\x41\x38\xb0\x00\x84\x87\x0e\x9f\x6c\xc9\x80\x90\x8a\x01\x84\x6b\x3a\x14\x50\x30\x47\xc6\x0e\x28\x07\x88\xa8\x88\xf1\x8f\x00" - "\x08\x81\x1a\xd6\x0c\x34\x20\xe6\x83\x1b\x16\x19\x6c\xa0\xc9\x10\xa1\x81\x20\x17\x22\x78\xa0\x11\x38\x40\x89\x40\x1d\x27\xff\x0d\x41\x52\xa0\x8d\x04\x19\x03\x1e" - "\x24\xa9\x90\x21\xca\x02\x2f\x0f\x2a\x40\x28\xf0\x4f\x8a\x40\x2a\x41\x0e\x2c\x29\x71\x60\xc4\x88\x0d\x4a\x78\xfc\xa0\x32\x41\x81\x84\x26\x25\x20\x0c\x34\x33\x61" - "\x81\x93\x35\x5b\x76\x28\x99\x32\x25\x0d\x0c\x1d\xff\xee\x2c\x29\xb0\x06\x8b\x5a\x81\x26\x02\xa4\xf8\x81\xd0\x44\x83\x81\x68\x14\x14\xb0\xe0\x70\x20\x1e\x11\x2f" - "\x84\x04\xfd\xa7\xe5\xc1\x41\x81\x4a\x4a\x48\x98\x90\xa6\x85\x1a\x81\x0d\xaa\x34\x08\xe0\x44\xa0\x07\x2b\x25\x2a\x58\x10\x98\x63\x89\x0b\x34\x05\xa6\x1c\x44\x80" - "\x62\xc0\x9d\x05\x3b\x32\x04\xd8\x71\x01\xc0\x01\x2b\x87\x05\x01\x18\x90\xe4\x46\x10\x81\x02\x88\x4c\x40\xc3\x86\x03\x88\x2d\x00\xa2\x03\xb8\x60\x01\x84\x84\x15" - "\x01\x9a\x28\x80\x23\xd0\x45\x0b\x0c\x48\x00\xe3\xec\xf8\xd7\xa4\xc0\x08\x00\x4b\xb2\x3c\xf0\x40\x43\x49\x00\x42\x48\x78\xfc\x0b\xb3\x82\x81\x05\x14\x00\x7c\x08" - "\x44\x90\x66\x44\x0b\xfd\xff\xb0\xc0\x83\x12\x2b\xac\xf6\x4f\x0c\x05\x04\x31\x41\x01\x1b\xb8\x31\x90\x13\x0d\x2c\x30\x10\x08\x20\x3c\x20\x82\x03\x0d\xc9\xd0\x03" - "\x11\x0a\xd8\x30\x90\x07\x75\x54\x94\x41\x19\x04\xc9\x40\x44\x19\x2b\x1c\x60\xc7\x3f\x66\x08\xc0\x00\x07\x67\xb9\x61\x83\x01\x4e\x28\x81\xc6\x64\x12\xb4\xd1\x00" - "\x12\x44\x0c\x01\x02\x01\x08\x0c\xd0\xdb\x12\x0a\x6c\x70\xc3\x06\x1d\x50\x20\x10\x09\xff\xd0\x00\x85\x00\x16\x30\xa0\x44\x0a\x43\xb0\x10\xc0\x04\x56\x4c\x55\x40" - "\x7d\x14\xfd\x03\x04\x61\xe4\x7d\xf0\x8f\x08\x13\x24\x41\x40\x0b\x3b\xc0\x90\x42\x0f\x2c\xf4\xb0\xc6\x04\x4d\x64\x31\x48\x97\xff\xac\x31\x08\x60\x21\x0a\xe0\x02" - "\x11\x6c\x40\xf1\x84\x15\x0a\x40\x20\x41\x0c\x19\x10\x40\x90\x4a\x08\x21\xa0\x44\x0b\x2d\x48\xe0\x68\x20\x34\x30\x24\x10\x08\x4c\x32\x84\x81\x81\x0c\x05\x04\x00" - "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\x50\x42\x13\x3b\x04\x09\x92\x48\x68\x26\x80\x92\x02\x44\x56" - "\xb0\x61\x73\x23\x08\x8f\x31\x0a\x7f\x24\xfc\xe2\x43\x06\x0a\x09\x27\x04\xc4\x40\xb2\x01\x42\x85\x84\x45\xbe\x98\xf9\xe7\x80\x42\x84\x7f\x29\xd6\xf8\xf0\xa1\xe1" - "\x4a\x82\x24\x27\x64\x74\x49\x90\x41\x84\x40\x1f\x3c\x04\x92\x11\x98\x40\xd0\x1f\x05\x2d\x92\x82\xc9\x60\xe1\x44\x04\x04\x03\x60\xba\x50\x42\x70\xcc\x93\x0b\x32" - "\x18\x14\x00\x00\x60\x04\x87\x00\x36\xde\x24\xb8\x90\xe5\x4e\x15\x14\x03\x75\x3c\x08\x10\x67\x46\x86\x7f\x08\x18\x10\x21\xb2\x00\xc3\x3f\x13\x32\xe6\x88\x41\xb2" - "\x62\x20\x89\x33\x63\x28\x24\x34\x31\x84\x85\xc0\x28\x74\x56\xb0\xd8\xa1\x60\xa0\x0d\x25\x15\x42\xf8\x14\xc8\xc3\x82\x01\x82\x82\x88\x34\x51\xc2\x46\xc2\xbf\x24" - "\x03\xd2\x70\x71\xe8\xe4\x5f\x00\x19\x17\x3e\xbc\xfd\x67\x61\x49\x0b\x18\x47\x0e\xa8\xf9\xe7\x43\x41\x8e\x24\x44\x0a\x8c\xc9\x93\xe6\x06\x80\x0b\x9e\xff\x1d\x01" - "\x00\xe1\x01\x04\x26\x29\xfe\xc9\x28\xfe\x61\x84\x0b\x0a\x1a\xb8\x72\xc5\xd2\x03\x8f\x04\x00\x15\x9c\xb0\x09\xf2\x2f\x0c\x00\x2f\x7e\x56\xdb\x00\x68\xf2\x8f\x47" - "\x81\x11\x00\x96\x30\xe0\x91\x81\x03\x87\x07\x0b\x56\xf4\xf8\x17\xa3\x84\x80\xda\x17\x92\x08\x74\xe2\x02\x00\x8a\x00\xff\x08\x90\x05\x0f\x5b\x48\xb0\xc0\x5b\x81" - "\x6c\xe0\x46\x0e\x73\xa8\x40\x90\x06\x5a\x10\x24\x42\x06\x3b\x54\x70\x99\x40\x28\x84\x54\xc2\x00\x2f\xfd\xe3\x86\x1f\x04\x24\x44\x85\x1d\x26\x10\xe4\xc2\x13\x3e" - "\x6c\xa8\x03\x4c\x34\xa0\xd0\xc6\x09\x5c\xfc\x53\x84\x09\x85\xf4\x80\xd0\x40\x5a\xf9\x51\x40\x0b\x20\x10\x90\x81\x76\x5c\x1d\x40\xc7\x00\x74\x94\xd0\xc5\x64\x3f" - "\x49\x60\x40\x06\x4f\x0c\x11\x42\x05\x79\x78\x10\x84\x02\x0a\xac\x50\xc2\x1c\x3b\x94\xc8\x92\x40\x5c\xf8\x20\x50\x0a\x65\x60\x70\x02\x03\x60\x24\x61\x43\x03\x6e" - "\x68\x01\xc3\x18\x09\xfc\x93\x00\x01\x82\xb9\x95\xd0\x3f\x6a\x54\xa9\x02\x18\x4a\x2c\xa0\x95\x04\x2c\x44\x31\x58\x42\x0f\xc4\x00\x01\x00\x1b\xb4\x30\x05\x12\x74" - "\xf8\x10\xc0\x4a\x04\x09\x36\xe7\x5d\x16\xcc\xf6\x68\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xb8" - "\x00\x82\x41\x09\x4d\x42\x0c\x5c\xc8\x50\xe0\x18\x38\x34\x88\xac\x60\x73\x63\xc9\x85\x23\x29\x18\x92\x20\x31\xd0\x41\x9d\x24\x1d\x7c\xe4\x68\xe0\x61\x88\x8f\x29" - "\x4c\xda\xf0\x58\xa8\xa3\xd0\x40\x32\x64\x04\x26\x59\xe0\x65\x87\x80\x35\x67\x26\xc8\x80\x02\x03\x43\x1d\x81\x0f\xc6\x30\x8c\xf2\xa1\xc4\x8d\x03\x07\x2e\x20\x19" - "\x12\xe0\x48\x9e\x17\x79\x04\x2a\x11\xb3\xf0\x4c\x0f\x01\x1a\xe0\x74\x80\x30\x02\xc0\x0a\x92\x19\x8a\xb8\x61\x60\x43\x8b\x84\x05\x03\x31\x64\x10\xf1\x43\x20\x0f" - "\x31\x53\x14\xc8\x40\x43\x81\x80\x8f\x0d\x4a\x2a\x6c\x40\x21\x30\x42\x06\x0b\x21\x28\x0c\x6d\x10\x40\xe0\x84\x03\x41\x1a\x30\x81\x20\xd0\x07\x07\x25\x36\x78\x0c" - "\x11\x68\x87\x45\x82\x85\x02\x2e\xec\x70\x82\x85\x31\x97\x39\x69\xca\xc4\x90\xb0\x72\x8d\x84\x25\x74\xce\x08\x0c\xe0\xe2\x80\x1b\x18\x58\x24\xfc\xa3\xa3\x00\x8d" - "\x13\x26\x44\xcc\x70\x99\x82\x05\xc0\x92\x27\x02\x11\x2c\xb9\xc1\x43\xc9\x12\x35\x29\x46\x48\x48\xc1\x35\xc8\x3f\x37\x00\xa2\x03\x18\x31\xe1\x1f\x83\x11\x48\x1e" - "\x28\x60\x13\xa2\x09\x00\x1f\x13\x6e\xe3\xdc\x28\x6c\xa7\x40\xf4\x25\x05\x02\x88\x40\xb1\xc2\x83\x8f\x03\x68\x55\xdc\xf0\xa0\xe6\x86\x84\x35\x02\x3d\xac\x00\x60" - "\x25\xe3\x20\x24\x0d\xf0\x80\xc4\x0a\x19\xfc\x23\xc1\x0a\x5b\x30\xb0\x44\x03\x0b\x6d\x51\xc1\x40\x30\x78\xc0\x43\x10\x32\xf4\x20\x10\x21\x05\x68\x40\xc7\x01\x68" - "\x08\x04\x87\x18\x97\x2d\x04\x42\x06\x08\x44\x61\x86\x40\x50\x70\x20\xc0\x07\xed\xd5\x35\x41\x1b\x2d\x48\x80\x06\x7e\xff\x00\x91\x40\x14\x18\x0c\xd4\xc0\x0e\x3e" - "\xf0\x30\x00\x0b\x45\xdc\xe1\xc1\x09\x17\x00\x60\x5f\x03\x08\x68\x20\x40\x00\x3f\x0d\x04\x87\x12\xff\xdc\x61\xc1\x5f\x4a\x70\x01\x47\x0b\xc3\x5d\x70\x40\x0b\x15" - "\xd4\xc0\x50\x0d\x2b\xfd\x23\x82\x09\x4e\x40\x01\x85\x05\x51\x68\xb0\x40\x10\x0c\xe4\x60\x80\x40\x52\x70\x24\x90\x42\x0d\xb2\xc1\x44\x01\x2c\xc0\x80\xc0\x04\x0d" - "\x4c\xd0\x41\x12\x09\x08\x26\x10\x05\x72\x0e\xd4\x83\x79\xc3\x29\x80\x02\x0a\x3b\xc0\x21\x54\x43\x90\x46\x70\xc5\x07\x2a\x04\x22\x01\x83\x0b\x05\x04\x00\x3b\x00"; -static int data_length = sizeof(data); +#include "tobackgroundlabel.h" +#include "tomain.h" -static int Running = 0; -static QMovie *Animation; +int toBackground::Running = 0; -class toBackgroundLabel : public QLabel -{ - int TimerID; -public: - toBackgroundLabel(QWidget *parent) - : QLabel(parent) - { - QByteArray arr; - arr.assign(data, data_length); - Animation = new QMovie(arr); - setMovie(*Animation); - TimerID = startTimer(2000); - } - - virtual void timerEvent(QTimerEvent *time) - { - if (TimerID == time->timerId()) - { - killTimer(TimerID); - TimerID = -1; - if (Running == 0) - Animation->pause(); - } - } - - int timerID() - { - return TimerID; - } - - virtual void mouseReleaseEvent(QMouseEvent *e) - { - try - { - if (e->button() == LeftButton) - { - QString str = "Currently running SQL:\n\n"; - std::list<QString> conns = toMainWidget()->connections(); - for (std::list<QString>::iterator i = conns.begin();i != conns.end();i++) - { - toConnection &conn = toMainWidget()->connection(*i); - std::list<QString> running = conn.running(); - if (running.begin() != running.end()) - { - str += "On connection " + conn.description(false) + ":\n\n"; - } - int num = 1; - for (std::list<QString>::iterator j = running.begin();j != running.end();j++) - { - str += QString::number(num) + ". " + (*j) + "\n\n"; - num++; - } - } - toMainWidget()->displayMessage(str); -#if QT_VERSION >= 0x030000 - - e->accept(); -#endif - - } - else - QLabel::mouseReleaseEvent(e); - } - TOCATCH - } -}; - -static toBackgroundLabel *Label; - toBackground::toBackground(QObject* parent, const char* name) : toTimer(parent, name) -{ - if (!Label) - init(); +{ //createToBackgroundLabel() + main = toMainWidget(); } void toBackground::start(int msec) { - if (!Label) - init(); + main = toMainWidget(); + if (!isActive()) { Running++; - if (!Label) - return ; - Animation->unpause(); + main->getBackgroundLabel()->unpause(); } - Animation->setSpeed(std::min(Running, 1)*100); - if (Running > 1) - QToolTip::add - (Label, tr("%1 queries running in background.").arg(Running)); - else - QToolTip::add - (Label, tr("One query running in background.")); + main->getBackgroundLabel()->setSpeed(std::min(Running, 1)*100); + //Animation->setSpeed(std::min(Running, 1)*100); + if (Running > 1){ + main->getBackgroundLabel()->setTip(tr("%1 queries running in background.").arg(Running)); + //QToolTip::add(Label, tr("%1 queries running in background.").arg(Running)); + } + else{ + main->getBackgroundLabel()->setTip(tr("One query running in background.")); + // QToolTip::add(Label, tr("One query running in background.")); + } toTimer::start(msec); } void toBackground::stop(void) { - if (!Animation) - init(); + main = toMainWidget(); + + /*if (!Animation) + init(); */ if (isActive()) { Running--; - if (Animation) - { - if (Running == 0 && Label->timerID() < 0) - Animation->pause(); + if (Running == 0 ) + main->getBackgroundLabel()->pause(); else - Animation->setSpeed(Running*100); + main->getBackgroundLabel()->setSpeed(Running*100); if (Running > 1) - QToolTip::add - (Label, tr("%1 queries running in background.").arg(Running)); + main->getBackgroundLabel()->setTip(tr("%1 queries running in background.").arg(Running)); else if (Running == 1) - QToolTip::add - (Label, tr("One query running in background.")); + main->getBackgroundLabel()->setTip("One query running in background."); else - QToolTip::add - (Label, tr("No background queries.")); - } + main->getBackgroundLabel()->setTip(tr("No background queries.")); + } toTimer::stop(); } -void toBackground::init(void) +/*void toBackground::init(void) { toMain *main = toMainWidget(); if (!main || Label) return ; - Label = new toBackgroundLabel(main->statusBar()); + Label = theToBackgroundLabel(main->statusBar()); Label->show(); main->statusBar()->addWidget(Label, 0, true); QToolTip::add (Label, tr("No background queries.")); -} +}*/ toBackground::~toBackground() { Modified: trunk/tora/src/tobackground.h =================================================================== --- trunk/tora/src/tobackground.h 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/tobackground.h 2006-06-29 21:25:50 UTC (rev 2063) @@ -1,83 +1,18 @@ -/***** -* -* TOra - An Oracle Toolkit for DBA's and developers -* Copyright (C) 2003-2005 Quest Software, Inc -* Portions Copyright (C) 2005 Other Contributors -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; only version 2 of -* the License is valid for this program. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* -* As a special exception, you have permission to link this program -* with the Oracle Client libraries and distribute executables, as long -* as you follow the requirements of the GNU GPL in regard to all of the -* software in the executable aside from Oracle client libraries. -* -* Specifically you are not permitted to link this program with the -* Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech. -* And you are not permitted to distribute binaries compiled against -* these libraries without written consent from Quest Software, Inc. -* Observe that this does not disallow linking to the Qt Free Edition. -* -* You may link this product with any GPL'd Qt library such as Qt/Free -* -* All trademarks belong to their respective owners. -* -*****/ +// +// C++ Interface: toBackground +// +// Copyright: See COPYING file that comes with this distribution +// #ifndef TOBACKGROUND_H #define TOBACKGROUND_H #include "config.h" +#include "totimer.h" -#include <qtimer.h> +class toMain; -#include <algorithm> -class QLabel; -class QMovie; - -/** A timer descendant which also keep track of the last timer setting sent to it. - */ -class toTimer : public QTimer -{ - int LastTimer; -public: - /** Create timer. - * @param parent Parent object of timer. - * @param name Name of timer. - */ - toTimer(QObject *parent = 0, const char * name = 0) - : QTimer(parent, name) - { } - /** Start timer. - * @param msec Milliseconds to timeout. - * @param sshot Set to true if only timeout once. - */ - int start(int msec, bool sshot = false) - { - LastTimer = msec; - return QTimer::start(msec, sshot); - } - /** Get last timer start timeout. - * @return Last timeout in millisecond. - */ - int lastTimer(void) - { - return LastTimer; - } -}; - /** * A descendant of timer which will indicate in the statusbar of the * main window when any timer is running. Can not do singleshots, only @@ -102,6 +37,9 @@ void stop(void); static void init(void); +private: + static int Running; + toMain* main; }; #endif Modified: trunk/tora/src/tomain.cpp =================================================================== --- trunk/tora/src/tomain.cpp 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/tomain.cpp 2006-06-29 21:25:50 UTC (rev 2063) @@ -38,6 +38,7 @@ #include "utils.h" #include "toabout.h" +#include "tobackgroundlabel.h" #include "toconf.h" #include "toconnection.h" #include "toeditwidget.h" @@ -82,6 +83,7 @@ #include <qstatusbar.h> #include <qtoolbar.h> #include <qtoolbutton.h> +#include <qtooltip.h> #include <qvbox.h> #include <qworkspace.h> @@ -125,9 +127,10 @@ #define TO_ABOUT_ID_OFFSET (toMain::TO_TOOL_ABOUT_ID-TO_TOOLS) toMain::toMain() - : toMainWindow() + : toMainWindow(), BackgroundLabel(new toBackgroundLabel(statusBar())) { qApp->setMainWidget(this); + setDockMenuEnabled(true); Edit = NULL; @@ -456,8 +459,6 @@ else show(); - toBackground::init(); - if (Connections.empty() ) { try @@ -485,7 +486,10 @@ } TOCATCH } -} + statusBar()->addWidget(BackgroundLabel, 0, true); + BackgroundLabel->show(); + QToolTip::add(BackgroundLabel, tr("No background queries.")); + } void toMain::windowActivated(QWidget *widget) { @@ -1354,10 +1358,12 @@ if (!(*i)->cacheAvailable(true, false, false)) num++; } - if (num == 0) + if (num == 0){ Poll.stop(); - else + } + else{ Poll.start(100); + } } void toMain::exportData(std::map<QCString, QString> &data, const QCString &prefix) @@ -1718,3 +1724,9 @@ { emit removedToolWidget(tool); } + +toBackgroundLabel* toMain::getBackgroundLabel() +{ +return BackgroundLabel; +} + Modified: trunk/tora/src/tomain.h =================================================================== --- trunk/tora/src/tomain.h 2006-06-29 21:21:51 UTC (rev 2062) +++ trunk/tora/src/tomain.h 2006-06-29 21:25:50 UTC (rev 2063) @@ -68,6 +68,7 @@ class QToolBar; class QToolButton; class QWorkspace; +class toBackgroundLabel; class toConnection; class toEditWidget; class toLineChart; @@ -214,6 +215,8 @@ */ int DefaultTool; + toBackgroundLabel* BackgroundLabel; + QTimer KeepAlive; toEditWidget *Edit; @@ -396,6 +399,8 @@ { return HelpMenu; } + + toBackgroundLabel* getBackgroundLabel(); /* Update the keepalive from configuration */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-07-05 19:55:45
|
Revision: 2067 Author: knackeback Date: 2006-07-05 12:55:34 -0700 (Wed, 05 Jul 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2067&view=rev Log Message: ----------- separate file for class toBackupTool Added Paths: ----------- trunk/tora/src/tobackuptool.cpp trunk/tora/src/tobackuptool.h Added: trunk/tora/src/tobackuptool.cpp =================================================================== --- trunk/tora/src/tobackuptool.cpp (rev 0) +++ trunk/tora/src/tobackuptool.cpp 2006-07-05 19:55:34 UTC (rev 2067) @@ -0,0 +1,42 @@ +#include "tobackuptool.h" + +#include "icons/tobackup.xpm" +#include "tobackup.h" + +const char** toBackupTool::pictureXPM(void) + { + return const_cast<const char**>(tobackup_xpm); + } + +toBackupTool::toBackupTool() : toTool(240, "Backup Manager") +{ } + +const char* toBackupTool::menuItem() + { + return "Backup Manager"; + } + +QWidget* toBackupTool::toolWindow(QWidget *parent, toConnection &connection) + { + std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection); + if (i != Windows.end()) + { + (*i).second->setFocus(); + return NULL; + } + else + { + QWidget *window = new toBackup(this, parent, connection); + Windows[&connection] = window; + return window; + } + } + + void toBackupTool::closeWindow(toConnection &connection) + { + std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection); + if (i != Windows.end()) + Windows.erase(i); + } + + Added: trunk/tora/src/tobackuptool.h =================================================================== --- trunk/tora/src/tobackuptool.h (rev 0) +++ trunk/tora/src/tobackuptool.h 2006-07-05 19:55:34 UTC (rev 2067) @@ -0,0 +1,35 @@ +#ifndef TOBACKUPTOOL_H +#define TOBACKUPTOOL_H + +#include <map> + +#include "totool.h" + +class QWidget; +class toConnection; + +// +// C++ Interface: tobackuptool +// +// Description: +// +// +// Author: Thomas Porschberg, core <pberg@porschberg>, (C) 2006 +// +// Copyright: See COPYING file that comes with this distribution +// +// + +class toBackupTool : public toTool +{ +protected: + std::map<toConnection *, QWidget *> Windows; + virtual const char **pictureXPM(void); +public: + toBackupTool(); + virtual const char *menuItem(); + virtual QWidget *toolWindow(QWidget *parent, toConnection &connection); + void closeWindow(toConnection &connection); +}; + +#endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-07-05 20:32:04
|
Revision: 2068 Author: knackeback Date: 2006-07-05 13:30:47 -0700 (Wed, 05 Jul 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2068&view=rev Log Message: ----------- new method for toTool create toBackupTool on heap (and not static at translation unit scope) Modified Paths: -------------- trunk/tora/src/Makefile.am trunk/tora/src/toanalyze.cpp trunk/tora/src/tobackup.cpp trunk/tora/src/tobackup.h trunk/tora/src/tobrowser.h trunk/tora/src/tochartmanager.cpp trunk/tora/src/toeditextensions.cpp trunk/tora/src/tohelp.h trunk/tora/src/toinvalid.cpp trunk/tora/src/tomain.cpp trunk/tora/src/tomain.h trunk/tora/src/topassword.cpp trunk/tora/src/toprofiler.cpp trunk/tora/src/torollback.cpp trunk/tora/src/toscript.cpp trunk/tora/src/tosecurity.cpp trunk/tora/src/tosession.cpp trunk/tora/src/tosgatrace.cpp trunk/tora/src/tosqledit.cpp trunk/tora/src/tostorage.cpp trunk/tora/src/totemplate.cpp trunk/tora/src/totemporary.cpp trunk/tora/src/totool.h trunk/tora/src/totuning.cpp trunk/tora/src/toworksheet.cpp Modified: trunk/tora/src/Makefile.am =================================================================== --- trunk/tora/src/Makefile.am 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/Makefile.am 2006-07-05 20:30:47 UTC (rev 2068) @@ -54,6 +54,7 @@ EXTRA_tora_SOURCES = toalert.cpp toalert.h \ toanalyze.cpp toanalyze.h \ tobackup.cpp tobackup.h \ + tobackuptool.cpp tobackuptool.h \ tobrowser.cpp tobrowser.h \ tobarchart.cpp tobarchart.h \ tocurrent.cpp tocurrent.h \ @@ -557,7 +558,8 @@ toworksheetstatistic.cpp toworksheetstatistic.h libtobackup_la_LDFLAGS = $(PFLAGS) -libtobackup_la_SOURCES = tobackup.cpp tobackup.h +libtobackup_la_SOURCES = tobackup.cpp tobackup.h \ + tobackuptool.cpp tobackuptool.h libtobrowser_la_LDFLAGS = $(PFLAGS) libtobrowser_la_SOURCES = tobrowser.cpp tobrowser.h \ Modified: trunk/tora/src/toanalyze.cpp =================================================================== --- trunk/tora/src/toanalyze.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toanalyze.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -84,6 +84,9 @@ toAnalyzeTool() : toTool(320, "Statistics Manager") { } + + virtual void closeWindow(toConnection &connection){}; + virtual const char *menuItem() { return "Statistics Manager"; Modified: trunk/tora/src/tobackup.cpp =================================================================== --- trunk/tora/src/tobackup.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tobackup.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -57,53 +57,15 @@ #include <qtoolbutton.h> #include <qworkspace.h> +#include <loki/Singleton.h> + #include "tobackup.moc" #include "icons/refresh.xpm" -#include "icons/tobackup.xpm" -class toBackupTool : public toTool -{ -protected: - std::map<toConnection *, QWidget *> Windows; - virtual const char **pictureXPM(void) - { - return const_cast<const char**>(tobackup_xpm); - } -public: - toBackupTool() - : toTool(240, "Backup Manager") - { } - virtual const char *menuItem() - { - return "Backup Manager"; - } - virtual QWidget *toolWindow(QWidget *parent, toConnection &connection) - { - std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection); - if (i != Windows.end()) - { - (*i).second->setFocus(); - return NULL; - } - else - { - QWidget *window = new toBackup(parent, connection); - Windows[&connection] = window; - return window; - } - } - void closeWindow(toConnection &connection) - { - std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection); - if (i != Windows.end()) - Windows.erase(i); - } -}; +//static toBackupTool BackupTool; -static toBackupTool BackupTool; - static toSQL SQLLogSwitches("toBackup:LogSwitches", "SELECT trunc(first_time)\"Date\",\n" " nvl(to_char(SUM (decode(to_number(to_char(first_time,\n" @@ -355,8 +317,8 @@ "", "0703"); -toBackup::toBackup(QWidget *main, toConnection &connection) - : toToolWidget(BackupTool, "backup.html", main, connection) +toBackup::toBackup(toTool* tool, QWidget *main, toConnection &connection) + : toToolWidget(*tool, "backup.html", main, connection) , tool_(tool) { QToolBar *toolbar = toAllocBar(this, tr("Backup Manager")); @@ -422,7 +384,7 @@ { try { - BackupTool.closeWindow(connection()); + tool_->closeWindow(connection()); } TOCATCH } Modified: trunk/tora/src/tobackup.h =================================================================== --- trunk/tora/src/tobackup.h 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tobackup.h 2006-07-05 20:30:47 UTC (rev 2068) @@ -57,8 +57,9 @@ toResultLong *LastBackup; toResultLong *CurrentBackup; QPopupMenu *ToolMenu; + toTool* tool_; public: - toBackup(QWidget *parent, toConnection &connection); + toBackup(toTool* tool, QWidget *parent, toConnection &connection); virtual ~toBackup(); public slots: void refresh(void); Modified: trunk/tora/src/tobrowser.h =================================================================== --- trunk/tora/src/tobrowser.h 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tobrowser.h 2006-07-05 20:30:47 UTC (rev 2068) @@ -205,6 +205,7 @@ virtual QWidget *toolWindow(QWidget *parent, toConnection &connection); virtual bool canHandle(toConnection &conn); virtual void customSetup(int id); + virtual void closeWindow(toConnection &connection){}; public slots: void addTable(void); void addConstraint(void); Modified: trunk/tora/src/tochartmanager.cpp =================================================================== --- trunk/tora/src/tochartmanager.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tochartmanager.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -129,6 +129,7 @@ { return true; } + virtual void closeWindow(toConnection &connection){}; }; static toChartTool ChartTool; Modified: trunk/tora/src/toeditextensions.cpp =================================================================== --- trunk/tora/src/toeditextensions.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toeditextensions.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -486,6 +486,7 @@ { return NULL; // Has no tool window } + virtual void closeWindow(toConnection &connection){}; virtual void customSetup(int) { toMainWidget()->editMenu()->insertSeparator(); Modified: trunk/tora/src/tohelp.h =================================================================== --- trunk/tora/src/tohelp.h 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tohelp.h 2006-07-05 20:30:47 UTC (rev 2068) @@ -105,6 +105,7 @@ return NULL; } virtual QWidget *configurationTab(QWidget *parent); + virtual void closeWindow(toConnection &connection){}; public slots: void displayHelp(void); }; Modified: trunk/tora/src/toinvalid.cpp =================================================================== --- trunk/tora/src/toinvalid.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toinvalid.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -108,6 +108,7 @@ { return new toInvalid(parent, connection); } + virtual void closeWindow(toConnection &connection){}; }; static toInvalidTool InvalidTool; Modified: trunk/tora/src/tomain.cpp =================================================================== --- trunk/tora/src/tomain.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tomain.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -127,7 +127,7 @@ #define TO_ABOUT_ID_OFFSET (toMain::TO_TOOL_ABOUT_ID-TO_TOOLS) toMain::toMain() - : toMainWindow(), BackgroundLabel(new toBackgroundLabel(statusBar())) + : toMainWindow(), toBackupTool_(new toBackupTool), BackgroundLabel(new toBackgroundLabel(statusBar())) { qApp->setMainWidget(this); Modified: trunk/tora/src/tomain.h =================================================================== --- trunk/tora/src/tomain.h 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tomain.h 2006-07-05 20:30:47 UTC (rev 2068) @@ -40,6 +40,7 @@ #include "config.h" #include "tobackground.h" +#include "tobackuptool.h" #ifdef TO_KDE #include "tomainwindow.kde.h" @@ -85,6 +86,7 @@ { Q_OBJECT private: + std::auto_ptr<toBackupTool> toBackupTool_; /** * The connections that have been opened in TOra. */ Modified: trunk/tora/src/topassword.cpp =================================================================== --- trunk/tora/src/topassword.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/topassword.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -99,6 +99,7 @@ } return NULL; } + virtual void closeWindow(toConnection &connection){}; }; static toPasswordTool PasswordTool; Modified: trunk/tora/src/toprofiler.cpp =================================================================== --- trunk/tora/src/toprofiler.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toprofiler.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -242,6 +242,7 @@ { return new toProfiler(parent, connection); } + virtual void closeWindow(toConnection &connection){}; }; static toProfilerTool ProfilerTool; Modified: trunk/tora/src/torollback.cpp =================================================================== --- trunk/tora/src/torollback.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/torollback.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -197,6 +197,7 @@ { return new toRollbackPrefs(this, parent); } + virtual void closeWindow(toConnection &connection){}; }; static toRollbackTool RollbackTool; Modified: trunk/tora/src/toscript.cpp =================================================================== --- trunk/tora/src/toscript.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toscript.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -215,6 +215,7 @@ { return new toScript(main, connection); } + virtual void closeWindow(toConnection &connection){}; }; static toScriptTool ScriptTool; Modified: trunk/tora/src/tosecurity.cpp =================================================================== --- trunk/tora/src/tosecurity.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tosecurity.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -196,6 +196,7 @@ { return new toSecurity(parent, connection); } + virtual void closeWindow(toConnection &connection){}; }; static toSecurityTool SecurityTool; Modified: trunk/tora/src/tosession.cpp =================================================================== --- trunk/tora/src/tosession.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tosession.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -117,6 +117,7 @@ #endif ; } + virtual void closeWindow(toConnection &connection){}; }; static toSessionTool SessionTool; Modified: trunk/tora/src/tosgatrace.cpp =================================================================== --- trunk/tora/src/tosgatrace.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tosgatrace.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -127,6 +127,7 @@ { return new toSGATracePrefs(this, parent); } + virtual void closeWindow(toConnection &connection){}; }; static toSGATraceTool SGATraceTool; Modified: trunk/tora/src/tosqledit.cpp =================================================================== --- trunk/tora/src/tosqledit.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tosqledit.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -113,6 +113,7 @@ { return true; } + virtual void closeWindow(toConnection &connection){}; }; static toSQLEditTool SQLEditTool; Modified: trunk/tora/src/tostorage.cpp =================================================================== --- trunk/tora/src/tostorage.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/tostorage.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -154,6 +154,7 @@ { return new toStoragePrefs(this, parent); } + virtual void closeWindow(toConnection &connection){}; }; toDropTablespace::toDropTablespace(QWidget* parent, const char* name, WFlags fl) Modified: trunk/tora/src/totemplate.cpp =================================================================== --- trunk/tora/src/totemplate.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/totemplate.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -498,6 +498,7 @@ { return true; } + virtual void closeWindow(toConnection &connection){}; }; static toTemplateTool TemplateTool; Modified: trunk/tora/src/totemporary.cpp =================================================================== --- trunk/tora/src/totemporary.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/totemporary.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -134,6 +134,7 @@ return false; return true; } + virtual void closeWindow(toConnection &connection){}; }; static toTemporaryTool TemporaryTool; Modified: trunk/tora/src/totool.h =================================================================== --- trunk/tora/src/totool.h 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/totool.h 2006-07-05 20:30:47 UTC (rev 2068) @@ -251,6 +251,8 @@ */ void setConfig(const QCString &tag,const QString &value); + virtual void closeWindow(toConnection &connection) = 0; + public slots: /** * Create a window of the current tool. This function sets up a toolwindow for @@ -258,6 +260,8 @@ * up properly. */ void createWindow(void); + + }; #include "tohelp.h" Modified: trunk/tora/src/totuning.cpp =================================================================== --- trunk/tora/src/totuning.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/totuning.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -168,6 +168,7 @@ { return new toTuningSetup(this, parent); } + virtual void closeWindow(toConnection &connection){}; }; static toTuningTool TuningTool; Modified: trunk/tora/src/toworksheet.cpp =================================================================== --- trunk/tora/src/toworksheet.cpp 2006-07-05 19:55:34 UTC (rev 2067) +++ trunk/tora/src/toworksheet.cpp 2006-07-05 20:30:47 UTC (rev 2068) @@ -232,6 +232,7 @@ { return true; } + virtual void closeWindow(toConnection &connection){}; }; static toWorksheetTool WorksheetTool; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kna...@us...> - 2006-07-06 19:39:27
|
Revision: 2070 Author: knackeback Date: 2006-07-06 12:39:13 -0700 (Thu, 06 Jul 2006) ViewCVS: http://svn.sourceforge.net/tora/?rev=2070&view=rev Log Message: ----------- remove ambiguous variable usage which did not compile with Visual C++ 2005 Modified Paths: -------------- trunk/tora/src/tobrowser.cpp trunk/tora/src/tobrowserconstraint.cpp Modified: trunk/tora/src/tobrowser.cpp =================================================================== --- trunk/tora/src/tobrowser.cpp 2006-07-05 20:33:08 UTC (rev 2069) +++ trunk/tora/src/tobrowser.cpp 2006-07-06 19:39:13 UTC (rev 2070) @@ -2062,9 +2062,9 @@ statements.size(), this, "progress", true); prog.setCaption(tr("Performing %1 changes").arg(tr(type))); - for (std::list<toSQLParse::statement>::iterator i = statements.begin();i != statements.end();i++) + for (std::list<toSQLParse::statement>::iterator j = statements.begin();j != statements.end();j++) { - QString sql = toSQLParse::indentStatement(*i, connection()); + QString sql = toSQLParse::indentStatement(*j, connection()); int i = sql.length() - 1; while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace())) i--; Modified: trunk/tora/src/tobrowserconstraint.cpp =================================================================== --- trunk/tora/src/tobrowserconstraint.cpp 2006-07-05 20:33:08 UTC (rev 2069) +++ trunk/tora/src/tobrowserconstraint.cpp 2006-07-06 19:39:13 UTC (rev 2070) @@ -73,9 +73,9 @@ statements.size(), &dialog, "progress", true); prog.setCaption(tr("Performing constraint changes")); - for (std::list<toSQLParse::statement>::iterator i = statements.begin();i != statements.end();i++) + for (std::list<toSQLParse::statement>::iterator j = statements.begin();j != statements.end();j++) { - QString sql = toSQLParse::indentStatement(*i, conn); + QString sql = toSQLParse::indentStatement(*j, conn); int i = sql.length() - 1; while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace())) i--; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrj...@us...> - 2007-02-10 20:52:07
|
Revision: 2098 http://svn.sourceforge.net/tora/?rev=2098&view=rev Author: mrjohnson0 Date: 2007-02-10 12:52:03 -0800 (Sat, 10 Feb 2007) Log Message: ----------- insert shouldn't add newlines Modified Paths: -------------- trunk/tora/src/toeditextensions.cpp trunk/tora/src/tomarkedtext.cpp Modified: trunk/tora/src/toeditextensions.cpp =================================================================== --- trunk/tora/src/toeditextensions.cpp 2007-02-10 19:32:42 UTC (rev 2097) +++ trunk/tora/src/toeditextensions.cpp 2007-02-10 20:52:03 UTC (rev 2098) @@ -171,6 +171,11 @@ QString t = Current->text(i); int chars = 0; int level = toSQLParse::countIndent(t, chars); + + // trim newline, if present. we have to do this because + // qscintilla returns newlines, the old code didn't. + t.remove('\n'); + res += toSQLParse::indentString(std::max(0, level + delta)); if (i < line2) res += t.mid(chars) + "\n"; Modified: trunk/tora/src/tomarkedtext.cpp =================================================================== --- trunk/tora/src/tomarkedtext.cpp 2007-02-10 19:32:42 UTC (rev 2097) +++ trunk/tora/src/tomarkedtext.cpp 2007-02-10 20:52:03 UTC (rev 2098) @@ -622,9 +622,7 @@ // the inserted text. Now I'm not really sure what the heck that // means. - QextScintilla::insert(str); - // get new position and select if requested if(select) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrj...@us...> - 2007-02-10 22:13:33
|
Revision: 2101 http://svn.sourceforge.net/tora/?rev=2101&view=rev Author: mrjohnson0 Date: 2007-02-10 14:13:33 -0800 (Sat, 10 Feb 2007) Log Message: ----------- add countChars function Modified Paths: -------------- trunk/tora/src/utils.cpp trunk/tora/src/utils.h Modified: trunk/tora/src/utils.cpp =================================================================== --- trunk/tora/src/utils.cpp 2007-02-10 21:55:13 UTC (rev 2100) +++ trunk/tora/src/utils.cpp 2007-02-10 22:13:33 UTC (rev 2101) @@ -1530,3 +1530,15 @@ return (event->state() == state && event->key() == val); } + +int countChars(const QString &source, const char find) { + int found = 0; + int i; + + for(i = 0; i < source.length(); i++) { + if(source[i] == find) + found++; + } + + return found; +} Modified: trunk/tora/src/utils.h =================================================================== --- trunk/tora/src/utils.h 2007-02-10 21:55:13 UTC (rev 2100) +++ trunk/tora/src/utils.h 2007-02-10 22:13:33 UTC (rev 2101) @@ -468,6 +468,15 @@ */ QString toTranslateMayby(const QString &context, const QString &text); +/** + * Count occurrences of char in source. + * + * @param source The string to search. + * @param find The char to find in string + * @return Occurrences. + */ +int countChars(const QString &source, const char find); + /** Popup toolbutton that works like I think they should under Qt 3.0 as well. * this means they will pop up a tool menu when you click on the button as well. */ @@ -501,19 +510,19 @@ /* This can't be documented in KDoc, anyway it is an easy way to catch any exception that * might be sent by TOra or OTL and display the message in the statusbar of the main window. */ -#define TOCATCH \ - catch (const QString &str) {\ - toStatusMessage(str);\ +#define TOCATCH \ + catch (const QString &str) { \ + toStatusMessage(str); \ } /* This can't be documented in KDoc, anyway it is an easy way to catch any exception that * might be sent by TOra or OTL and display the message in the statusbar of the main window. */ -#define TOROLLBACK(x) \ - catch (const QString &str) { \ - toStatusMessage(str); \ - try { \ - x.rollback(); \ - } catch(...) { } \ +#define TOROLLBACK(x) \ + catch (const QString &str) { \ + toStatusMessage(str); \ + try { \ + x.rollback(); \ + } catch(...) { } \ } #define QTRANS(x,y) (qApp?qApp->translate(x,y):QString::fromLatin1(y)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nn...@us...> - 2007-02-22 16:26:10
|
Revision: 2116 http://svn.sourceforge.net/tora/?rev=2116&view=rev Author: nneul Date: 2007-02-22 08:26:09 -0800 (Thu, 22 Feb 2007) Log Message: ----------- Accept patch #1665065 from Petr - hilighting of null values Modified Paths: -------------- trunk/tora/src/toconf.h trunk/tora/src/todatabasesettingui.ui trunk/tora/src/toglobalsetting.cpp trunk/tora/src/toglobalsetting.h trunk/tora/src/toresultview.cpp Property Changed: ---------------- trunk/tora/src/ Property changes on: trunk/tora/src ___________________________________________________________________ Name: svn:ignore - .deps .libs Makefile Makefile.in *.moc qtlegacy toaboutui.cpp toaboutui.h tobrowserconstraintui.cpp tobrowserconstraintui.h tobrowserfilterui.cpp tobrowserfilterui.h tobrowserindexui.cpp tobrowserindexui.h tobrowsertableui.cpp tobrowsertableui.h tochartalarmui.cpp tochartalarmui.h tochartsetupui.cpp tochartsetupui.h todatabasesettingui.cpp todatabasesettingui.h todebugchangeui.cpp todebugchangeui.h todebugwatch.cpp todebugwatch.h toeditextensiongotoui.cpp toeditextensiongotoui.h toeditextensionsetupui.cpp toeditextensionsetupui.h toglobalsettingui.cpp toglobalsettingui.h tohelpaddfileui.cpp tohelpaddfileui.h tohelpsetupui.cpp tohelpsetupui.h tolinechartsetupui.cpp tolinechartsetupui.h tomessageui.cpp tomessageui.h tonewconnectionui.cpp tonewconnectionui.h tooraclesettingui.cpp tooraclesettingui.h topreferencesui.cpp topreferencesui.h tora tora_fr.qm tora_it.qm tora_se.qm tora_toad.h tora_toad.qm toresultcontentfilterui.cpp toresultcontentfilterui.h toresultlistformatui.cpp toresultlistformatui.h torollbackdialogui.cpp torollbackdialogui.h toscriptui.cpp toscriptui.h tosearchreplaceui.cpp tosearchreplaceui.h tosecurityquotaui.cpp tosecurityquotaui.h tosecurityroleui.cpp tosecurityroleui.h tosecurityuserui.cpp tosecurityuserui.h tostoragedatafileui.cpp tostoragedatafileui.h tostoragedefinitionui.cpp tostoragedefinitionui.h tostoragedialogui.cpp tostoragedialogui.h tostorageprefsui.cpp tostorageprefsui.h tostoragetablespaceui.cpp tostoragetablespaceui.h tosyntaxsetupui.cpp tosyntaxsetupui.h totemplateaddfileui.cpp totemplateaddfileui.h totemplateeditui.cpp totemplateeditui.h totemplatesetupui.cpp totemplatesetupui.h totoolsettingui.cpp totoolsettingui.h totuningoverviewui.cpp totuningoverviewui.h totuningsettingui.cpp totuningsettingui.h toworksheetsetupui.cpp toworksheetsetupui.h utils.moc + .deps .libs Makefile Makefile.in *.moc *.orig qtlegacy toaboutui.cpp toaboutui.h tobrowserconstraintui.cpp tobrowserconstraintui.h tobrowserfilterui.cpp tobrowserfilterui.h tobrowserindexui.cpp tobrowserindexui.h tobrowsertableui.cpp tobrowsertableui.h tochartalarmui.cpp tochartalarmui.h tochartsetupui.cpp tochartsetupui.h todatabasesettingui.cpp todatabasesettingui.h todebugchangeui.cpp todebugchangeui.h todebugwatch.cpp todebugwatch.h toeditextensiongotoui.cpp toeditextensiongotoui.h toeditextensionsetupui.cpp toeditextensionsetupui.h toglobalsettingui.cpp toglobalsettingui.h tohelpaddfileui.cpp tohelpaddfileui.h tohelpsetupui.cpp tohelpsetupui.h tolinechartsetupui.cpp tolinechartsetupui.h tomessageui.cpp tomessageui.h tonewconnectionui.cpp tonewconnectionui.h tooraclesettingui.cpp tooraclesettingui.h topreferencesui.cpp topreferencesui.h tora tora_fr.qm tora_it.qm tora_se.qm tora_toad.h tora_toad.qm toresultcontentfilterui.cpp toresultcontentfilterui.h toresultlistformatui.cpp toresultlistformatui.h torollbackdialogui.cpp torollbackdialogui.h toscriptui.cpp toscriptui.h tosearchreplaceui.cpp tosearchreplaceui.h tosecurityquotaui.cpp tosecurityquotaui.h tosecurityroleui.cpp tosecurityroleui.h tosecurityuserui.cpp tosecurityuserui.h tostoragedatafileui.cpp tostoragedatafileui.h tostoragedefinitionui.cpp tostoragedefinitionui.h tostoragedialogui.cpp tostoragedialogui.h tostorageprefsui.cpp tostorageprefsui.h tostoragetablespaceui.cpp tostoragetablespaceui.h tosyntaxsetupui.cpp tosyntaxsetupui.h totemplateaddfileui.cpp totemplateaddfileui.h totemplateeditui.cpp totemplateeditui.h totemplatesetupui.cpp totemplatesetupui.h totoolsettingui.cpp totoolsettingui.h totuningoverviewui.cpp totuningoverviewui.h totuningsettingui.cpp totuningsettingui.h toworksheetsetupui.cpp toworksheetsetupui.h utils.moc Modified: trunk/tora/src/toconf.h =================================================================== --- trunk/tora/src/toconf.h 2007-02-17 22:00:52 UTC (rev 2115) +++ trunk/tora/src/toconf.h 2007-02-22 16:26:09 UTC (rev 2116) @@ -127,6 +127,7 @@ #define DEFAULT_CSV_DELIMITER "\"" #define CONF_AUTO_INDENT_RO "AutoIndent" #define CONF_INDICATE_EMPTY "IndicateEmpty" +#define CONF_INDICATE_EMPTY_COLOR "IndicateEmptyColor" #define CONF_EXTENSIONS "Extensions" #define CONF_RECENT_FILES "RecentFiles" #define CONF_RECENT_MAX "RecentMax" Modified: trunk/tora/src/todatabasesettingui.ui =================================================================== --- trunk/tora/src/todatabasesettingui.ui 2007-02-17 22:00:52 UTC (rev 2115) +++ trunk/tora/src/todatabasesettingui.ui 2007-02-22 16:26:09 UTC (rev 2116) @@ -1,4 +1,4 @@ -<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> <class>toDatabaseSettingUI</class> <widget class="QWidget"> <property name="name"> @@ -8,8 +8,8 @@ <rect> <x>0</x> <y>0</y> - <width>547</width> - <height>501</height> + <width>792</width> + <height>515</height> </rect> </property> <property name="caption"> @@ -34,6 +34,9 @@ <property name="text"> <string>&Autocommit changes</string> </property> + <property name="accel"> + <string>Alt+A</string> + </property> <property name="toolTip" stdset="0"> <string>Specify if changes should be automatically commited.</string> </property> @@ -126,6 +129,9 @@ <property name="text"> <string>&All</string> </property> + <property name="accel"> + <string>Alt+A</string> + </property> </widget> <widget class="QLabel" row="0" column="0"> <property name="name"> @@ -303,19 +309,8 @@ <string>The way numbers should be presented.</string> </property> </widget> - <widget class="QLabel" row="1" column="4"> + <widget class="QSpinBox" row="1" column="3"> <property name="name"> - <cstring>TextLabel3</cstring> - </property> - <property name="text"> - <string>Decimals</string> - </property> - <property name="toolTip" stdset="0"> - <string>Number of decimals for fixed decimal format.</string> - </property> - </widget> - <widget class="QSpinBox" row="1" column="5"> - <property name="name"> <cstring>Decimals</cstring> </property> <property name="enabled"> @@ -328,6 +323,14 @@ <number>2</number> </property> </widget> + <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>IndicateEmpty</cstring> + </property> + <property name="text"> + <string>Indicate empty values as '' instead of NULL as {null}.</string> + </property> + </widget> <widget class="QComboBox" row="1" column="1"> <item> <property name="text"> @@ -348,14 +351,25 @@ <cstring>NumberFormat</cstring> </property> </widget> - <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="6"> + <widget class="QPushButton" row="0" column="2" rowspan="1" colspan="2"> <property name="name"> - <cstring>IndicateEmpty</cstring> + <cstring>IndicateEmptyColor</cstring> </property> <property name="text"> - <string>Indicate empty values as '' instead of NULL as {null}.</string> + <string>NULL background color</string> </property> </widget> + <widget class="QLabel" row="1" column="2"> + <property name="name"> + <cstring>TextLabel3</cstring> + </property> + <property name="text"> + <string>Decimals</string> + </property> + <property name="toolTip" stdset="0"> + <string>Number of decimals for fixed decimal format.</string> + </property> + </widget> </grid> </widget> </grid> @@ -385,6 +399,12 @@ <receiver>toDatabaseSettingUI</receiver> <slot>numberFormatChange()</slot> </connection> + <connection> + <sender>IndicateEmptyColor</sender> + <signal>clicked()</signal> + <receiver>toDatabaseSettingUI</receiver> + <slot>IndicateEmptyColor_clicked()</slot> + </connection> </connections> <tabstops> <tabstop>AutoCommit</tabstop> @@ -403,8 +423,13 @@ <tabstop>MoveAfter</tabstop> <tabstop>KeepAlive</tabstop> </tabstops> +<includes> + <include location="local" impldecl="in implementation">todatabasesettingui.ui.h</include> +</includes> <slots> <slot>numberFormatChange()</slot> + <slot>IndicateEmpty_toggled( bool )</slot> + <slot>IndicateEmptyColor_clicked()</slot> </slots> <layoutdefaults spacing="6" margin="11"/> </UI> Modified: trunk/tora/src/toglobalsetting.cpp =================================================================== --- trunk/tora/src/toglobalsetting.cpp 2007-02-17 22:00:52 UTC (rev 2115) +++ trunk/tora/src/toglobalsetting.cpp 2007-02-22 16:26:09 UTC (rev 2116) @@ -66,6 +66,7 @@ #include <qvalidator.h> #include <qvariant.h> #include <qwhatsthis.h> +#include <qcolordialog.h> #include "todatabasesettingui.moc" #include "toglobalsettingui.moc" @@ -268,6 +269,13 @@ Decimals->setEnabled(NumberFormat->currentItem() == 2); } +void toDatabaseSetting::IndicateEmptyColor_clicked() +{ + QColor c = QColorDialog::getColor(IndicateEmptyColor->paletteBackgroundColor(), this, "IndicateEmptyColorDialog"); + if (c.isValid()) + IndicateEmptyColor->setPaletteBackgroundColor(c); +} + toDatabaseSetting::toDatabaseSetting(QWidget *parent, const char *name, WFlags fl) : toDatabaseSettingUI(parent, name, fl), toSettingTab("database.html") { @@ -302,6 +310,11 @@ ObjectCache->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt()); BkgndConnect->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_BKGND_CONNECT, "").isEmpty()); IndicateEmpty->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty()); + + QColor nullColor; + nullColor.setNamedColor(toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY_COLOR, "#f2ffbc")); + IndicateEmptyColor->setPaletteBackgroundColor(nullColor); + int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt(); AutoLong->setChecked(val); MoveAfter->setValue(val); @@ -341,6 +354,7 @@ toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_LONG, AutoLong->isChecked() ? MoveAfter->cleanText() : QString::fromLatin1("0")); toConfigurationSingle::Instance().globalSetConfig(CONF_INDICATE_EMPTY, IndicateEmpty->isChecked() ? "Yes" : ""); + toConfigurationSingle::Instance().globalSetConfig(CONF_INDICATE_EMPTY_COLOR, IndicateEmptyColor->paletteBackgroundColor().name()); toConfigurationSingle::Instance().globalSetConfig(CONF_KEEP_ALIVE, KeepAlive->isChecked() ? DEFAULT_KEEP_ALIVE : ""); toConfigurationSingle::Instance().globalSetConfig(CONF_NUMBER_FORMAT, QString::number(NumberFormat->currentItem())); Modified: trunk/tora/src/toglobalsetting.h =================================================================== --- trunk/tora/src/toglobalsetting.h 2007-02-17 22:00:52 UTC (rev 2115) +++ trunk/tora/src/toglobalsetting.h 2007-02-22 16:26:09 UTC (rev 2116) @@ -65,6 +65,7 @@ virtual void saveSetting(void); virtual void numberFormatChange(); + virtual void IndicateEmptyColor_clicked(); }; class toToolSetting : public toToolSettingUI, public toSettingTab Modified: trunk/tora/src/toresultview.cpp =================================================================== --- trunk/tora/src/toresultview.cpp 2007-02-17 22:00:52 UTC (rev 2115) +++ trunk/tora/src/toresultview.cpp 2007-02-22 16:26:09 UTC (rev 2116) @@ -192,7 +192,17 @@ void toResultViewItem::paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align) { - QListViewItem::paintCell(p, cg, column, width, align); + // null related background handling + QColorGroup colNull(cg); + if ((toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty() && text(column) == "{null}") + || text(column).isNull()) + { + QColor nullColor; + nullColor.setNamedColor(toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY_COLOR, "#f2ffbc")); + colNull.setColor(QColorGroup::Base, nullColor); + } + + QListViewItem::paintCell(p, colNull, column, width, align); toResultView *view = dynamic_cast<toResultView *>(listView()); if (view && (itemBelow() == NULL || itemBelow()->itemBelow() == NULL)) view->addItem(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <su...@us...> - 2007-03-01 15:06:54
|
Revision: 2117 http://svn.sourceforge.net/tora/?rev=2117&view=rev Author: subik Date: 2007-03-01 07:06:52 -0800 (Thu, 01 Mar 2007) Log Message: ----------- #1180847: Error when creating referential constraint. toTableSelect widget now displays right table names for given schema. Affected: Create Index and Constraint dialogs. Modified Paths: -------------- trunk/tora/src/tobrowser.cpp trunk/tora/src/totableselect.cpp Modified: trunk/tora/src/tobrowser.cpp =================================================================== --- trunk/tora/src/tobrowser.cpp 2007-02-22 16:26:09 UTC (rev 2116) +++ trunk/tora/src/tobrowser.cpp 2007-03-01 15:06:52 UTC (rev 2117) @@ -605,6 +605,13 @@ " ORDER BY Table_Name", "", "0800"); +// petr vanek 03/01/07 bug #1180847 Error when creating referential constraint +static toSQL SQLListTableNames("toBrowser:ListTableNames", + "SELECT Table_Name\n" + " FROM SYS.ALL_ALL_TABLES WHERE OWNER = :f1<char[101]> AND IOT_Name IS NULL\n" + " ORDER BY Table_Name", + "simplified version of the toBrowser:ListTables", + "0800"); static toSQL SQLListTables7("toBrowser:ListTables", "SELECT Table_Name,NULL \" Ignore\",NULL \" Ignore2\",Tablespace_name \" Ignore2\"\n" " FROM SYS.ALL_TABLES WHERE OWNER = :f1<char[101]>\n" Modified: trunk/tora/src/totableselect.cpp =================================================================== --- trunk/tora/src/totableselect.cpp 2007-02-22 16:26:09 UTC (rev 2116) +++ trunk/tora/src/totableselect.cpp 2007-03-01 15:06:52 UTC (rev 2117) @@ -33,7 +33,8 @@ Schema->additionalItem(mysql ? tr("Select database") : tr("Select schema")); Schema->query(toSQL::sql(toSQL::TOSQL_USERLIST)); Table->additionalItem(tr("Select table")); - Table->setSQL(toSQL::sql("toBrowser:ListTables")); + // petr vanek 03/01/07 bug #1180847 Error when creating referential constraint + Table->setSQL(toSQL::sql("toBrowser:ListTableNames")); Schema->refresh(); if (!SelectedTable.isNull()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nn...@us...> - 2007-09-15 22:23:06
|
Revision: 2123 http://tora.svn.sourceforge.net/tora/?rev=2123&view=rev Author: nneul Date: 2007-09-15 15:22:55 -0700 (Sat, 15 Sep 2007) Log Message: ----------- add handling of more data types and failure to describe Modified Paths: -------------- trunk/tora/src/tooracleconnection.cpp trunk/tora/src/toresultcols.cpp Modified: trunk/tora/src/tooracleconnection.cpp =================================================================== --- trunk/tora/src/tooracleconnection.cpp 2007-09-15 22:19:54 UTC (rev 2122) +++ trunk/tora/src/tooracleconnection.cpp 2007-09-15 22:22:55 UTC (rev 2123) @@ -444,7 +444,6 @@ * http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10758/sqlqr06.htm * include ocidfn.h */ -#warning "Add more datatypes" switch (description[i].dbtype) { case 1: /* VARCHAR2, NVARCHAR2 */ @@ -507,7 +506,7 @@ } #endif break; - +#ifdef OTL_ORA_NATIVE_TYPES case 100: /* BINARY_FLOAT */ desc.Datatype = QString::fromLatin1("BINARY_FLOAT"); break; @@ -515,7 +514,7 @@ case 101: /* BINARY_DOUBLE */ desc.Datatype = QString::fromLatin1("BINARY_DOUBLE"); break; - +#endif case 112: /* CLOB, NCLOB */ desc.Datatype = QString::fromLatin1("CLOB"); #ifdef OTL_ORA_UNICODE @@ -529,11 +528,7 @@ case 113: /* BLOB */ desc.Datatype = QString::fromLatin1("BLOB"); break; - - case 114: /* BFILE */ - desc.Datatype = QString::fromLatin1("BFILE"); - break; - +#ifdef OTL_ORA_TIMESTAMP case 187: /* TIMESTAMP, docu: 180, ocidfn.h: 187 */ desc.Datatype = QString::fromLatin1("TIMESTAMP(%i)"); datatypearg1 = description[i].scale; @@ -559,7 +554,7 @@ desc.Datatype = QString::fromLatin1("TIMESTAMP(%i) WITH LOCAL TIME ZONE"); datatypearg1 = description[i].scale; break; - +#endif default: desc.Datatype = QString::fromLatin1("UNKNOWN"); @@ -787,8 +782,10 @@ return desc; } - catch (...) - {} + catch ( ... ) + { + throw; + } toQDescList ret; return ret; Modified: trunk/tora/src/toresultcols.cpp =================================================================== --- trunk/tora/src/toresultcols.cpp 2007-09-15 22:19:54 UTC (rev 2122) +++ trunk/tora/src/toresultcols.cpp 2007-09-15 22:22:55 UTC (rev 2123) @@ -567,10 +567,7 @@ describe(desc); Edit->describe(desc, table, false); } - catch (...) - { - toStatusMessage(tr("Failed to describe %1").arg(object)); - } + TOCATCH } void toResultCols::resultCols::query(const toConnection::objectName &name, bool nocache) @@ -593,10 +590,7 @@ describe(desc); Edit->describe(desc, wholename, true); } - catch (...) - { - toStatusMessage(tr("Failed to describe %1").arg(name.Owner + QString::fromLatin1(".") + name.Name)); - } + TOCATCH } void toResultCols::editComment(bool val) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nn...@us...> - 2007-09-19 15:42:20
|
Revision: 2140 http://tora.svn.sourceforge.net/tora/?rev=2140&view=rev Author: nneul Date: 2007-09-19 08:42:16 -0700 (Wed, 19 Sep 2007) Log Message: ----------- stripped lots of old code and kde support for moving forward with qt4 Modified Paths: -------------- trunk/tora/src/main.cpp trunk/tora/src/toabout.cpp trunk/tora/src/toalert.cpp trunk/tora/src/toanalyze.cpp trunk/tora/src/tobackground.cpp trunk/tora/src/tobackgroundlabel.cpp trunk/tora/src/tobackup.cpp trunk/tora/src/tobarchart.cpp trunk/tora/src/tobrowser.cpp trunk/tora/src/tochartmanager.cpp trunk/tora/src/toconf.h trunk/tora/src/toconnection.cpp trunk/tora/src/tocurrent.cpp trunk/tora/src/todebug.cpp trunk/tora/src/toeditextensions.cpp trunk/tora/src/toglobalsetting.cpp trunk/tora/src/tohelp.cpp trunk/tora/src/tohelp.h trunk/tora/src/toinvalid.cpp trunk/tora/src/tolinechart.cpp trunk/tora/src/tolistviewformatterhtml.cpp trunk/tora/src/tomain.cpp trunk/tora/src/tomain.h trunk/tora/src/tomemoeditor.cpp trunk/tora/src/tonewconnection.cpp trunk/tora/src/tonoblockquery.cpp trunk/tora/src/tooutput.cpp trunk/tora/src/topiechart.cpp trunk/tora/src/toprofiler.cpp trunk/tora/src/toproject.cpp trunk/tora/src/toqsqlconnection.cpp trunk/tora/src/toresultcontent.cpp trunk/tora/src/toresultparam.cpp trunk/tora/src/toresultview.cpp trunk/tora/src/torollback.cpp trunk/tora/src/toscript.cpp trunk/tora/src/tosecurity.cpp trunk/tora/src/tosession.cpp trunk/tora/src/tosgatrace.cpp trunk/tora/src/tosqledit.cpp trunk/tora/src/tostorage.cpp trunk/tora/src/tosyntaxsetup.cpp trunk/tora/src/totemplate.cpp trunk/tora/src/totemporary.cpp trunk/tora/src/totool.cpp trunk/tora/src/totuning.cpp trunk/tora/src/tovisualize.cpp trunk/tora/src/towaitevents.cpp trunk/tora/src/toworksheet.cpp trunk/tora/src/toworksheetstatistic.cpp trunk/tora/src/utils.cpp trunk/tora/src/utils.h Modified: trunk/tora/src/main.cpp =================================================================== --- trunk/tora/src/main.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/main.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -58,11 +58,6 @@ #include <memory> -#ifdef TO_KDE -#include <kcmdlineargs.h> -#include <kapplication.h> -#endif - #include <qapplication.h> #include <qmessagebox.h> #include <qtextcodec.h> @@ -95,11 +90,6 @@ toSetEnv("QT_XFT", toConfigurationSingle::Instance().globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT).latin1()); #endif -#ifdef TO_KDE - - KCmdLineArgs::init(argc, argv, "tora", "tora", "Toolkit for Oracle", TOVERSION); - new KApplication; -#else # ifndef WIN32 if (toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()) @@ -107,7 +97,6 @@ # endif new QApplication(argc, argv); -#endif try { Modified: trunk/tora/src/toabout.cpp =================================================================== --- trunk/tora/src/toabout.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toabout.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -53,9 +53,9 @@ static const char *AboutText = "<IMG SRC=largelogo.xpm><BR>\n" "Version %1 (<A HREF=http://tora.sourceforge.net>http://tora.sourceforge.net</A>)\n" "<P>\n" - "© 2003-2005 Quest Software, Inc. " + "© 2003-2007 Quest Software, Inc. " "(<A HREF=http://www.quest.com>http://www.quest.com/</a>).<P>\n" - "Portions © 2005 other contributors<P>\n" + "Portions © 2007 other contributors<P>\n" "Written by Henrik Johnson with contributions by the Open Source community.<P>\n" "SourceForge project administered by Nathan Neulinger <A HREF=\"mailto:nn...@um...\">nn...@um...</A><P>\n" "This program is available\n" Modified: trunk/tora/src/toalert.cpp =================================================================== --- trunk/tora/src/toalert.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toalert.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -61,10 +61,6 @@ #include <qtoolbutton.h> #include <qworkspace.h> -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include "toalert.moc" #include "icons/commit.xpm" @@ -141,8 +137,8 @@ {} def += connection.user(); - new QLabel(tr("Registered") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - Registered = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Registered") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + Registered = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Registered->insertItem(def); Registered->setEditable(true); Registered->setDuplicatesEnabled(false); @@ -168,12 +164,12 @@ toolbar->addSeparator(); - new QLabel(tr("Name") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - Name = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Name") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + Name = new QLineEdit(toolbar, TO_TOOLBAR_WIDGET_NAME); Name->setText(def); connect(Name, SIGNAL(returnPressed()), this, SLOT(send())); - new QLabel(tr("Message") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - Message = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Message") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + Message = new QLineEdit(toolbar, TO_TOOLBAR_WIDGET_NAME); connect(Message, SIGNAL(returnPressed()), this, SLOT(send())); new QToolButton(QPixmap(const_cast<const char**>(toworksheet_xpm)), tr("Edit message in memo"), Modified: trunk/tora/src/toanalyze.cpp =================================================================== --- trunk/tora/src/toanalyze.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toanalyze.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -50,10 +50,6 @@ #include "totool.h" #include "toworksheetstatistic.h" -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qcombobox.h> #include <qlabel.h> #include <qmenubar.h> @@ -185,7 +181,7 @@ toolbar->addSeparator(); if (toIsOracle(connection)) { - Analyzed = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Analyzed = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Analyzed->insertItem(tr("All")); Analyzed->insertItem(tr("Not analyzed")); Analyzed->insertItem(tr("Analyzed")); @@ -193,7 +189,7 @@ else Analyzed = NULL; - Schema = new toResultCombo(toolbar, TO_KDE_TOOLBAR_WIDGET); + Schema = new toResultCombo(toolbar, TO_TOOLBAR_WIDGET_NAME); Schema->setSelected(tr("All")); Schema->additionalItem(tr("All")); try @@ -205,13 +201,13 @@ if (toIsOracle(connection)) { - Type = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Type = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Type->insertItem(tr("Tables")); Type->insertItem(tr("Indexes")); toolbar->addSeparator(); - Operation = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Operation = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Operation->insertItem(tr("Compute statistics")); Operation->insertItem(tr("Estimate statistics")); Operation->insertItem(tr("Delete statistics")); @@ -219,22 +215,22 @@ connect(Operation, SIGNAL(activated(int)), this, SLOT(changeOperation(int))); - new QLabel(" " + tr("for") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - For = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(" " + tr("for") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + For = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); For->insertItem(tr("All")); For->insertItem(tr("Table")); For->insertItem(tr("Indexed columns")); For->insertItem(tr("Local indexes")); toolbar->addSeparator(); - new QLabel(tr("Sample") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - Sample = new QSpinBox(1, 100, 1, toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Sample") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + Sample = new QSpinBox(1, 100, 1, toolbar, TO_TOOLBAR_WIDGET_NAME); Sample->setValue(100); Sample->setSuffix(" " + tr("%")); Sample->setEnabled(false); } else { - Operation = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Operation = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Operation->insertItem(tr("Analyze table")); Operation->insertItem(tr("Optimize table")); connect(Operation, SIGNAL(activated(int)), @@ -246,8 +242,8 @@ } toolbar->addSeparator(); - new QLabel(tr("Parallel") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); - Parallel = new QSpinBox(1, 100, 1, toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Parallel") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); + Parallel = new QSpinBox(1, 100, 1, toolbar, TO_TOOLBAR_WIDGET_NAME); toolbar->addSeparator(); new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)), @@ -261,7 +257,7 @@ this, SLOT(displaySQL()), toolbar); - Current = new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET); + Current = new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME); Current->setAlignment(AlignRight | AlignVCenter | ExpandTabs); toolbar->setStretchableWidget(Current); @@ -314,7 +310,7 @@ tr("Refresh"), Plans, SLOT(refresh()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); CurrentPlan = new toResultPlan(splitter); Modified: trunk/tora/src/tobackground.cpp =================================================================== --- trunk/tora/src/tobackground.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tobackground.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -9,11 +9,6 @@ #include "tobackground.h" #include "toconnection.h" - -#ifdef TO_KDE -#include <kstatusbar.h> -#endif - #include <qlabel.h> #include <qstatusbar.h> #include <qtooltip.h> Modified: trunk/tora/src/tobackgroundlabel.cpp =================================================================== --- trunk/tora/src/tobackgroundlabel.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tobackgroundlabel.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -7,10 +7,6 @@ #include "utils.h" -#ifdef TO_KDE -#include <kstatusbar.h> -#endif - #include <qtooltip.h> #include "tomain.h" @@ -307,11 +303,7 @@ } } toMainWidget()->displayMessage(str); -#if QT_VERSION >= 0x030000 - e->accept(); -#endif - } else QLabel::mouseReleaseEvent(e); Modified: trunk/tora/src/tobackup.cpp =================================================================== --- trunk/tora/src/tobackup.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tobackup.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -45,10 +45,6 @@ #include "tosql.h" #include "totool.h" -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qlabel.h> #include <qmenubar.h> #include <qpopupmenu.h> @@ -327,8 +323,8 @@ tr("Update"), this, SLOT(refresh(void)), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); - new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); + new toChangeConnection(toolbar, TO_TOOLBAR_WIDGET_NAME); Tabs = new QTabWidget(this); Modified: trunk/tora/src/tobarchart.cpp =================================================================== --- trunk/tora/src/tobarchart.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tobarchart.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -243,38 +243,6 @@ newWin->setFocus(); toMainWidget()->windowsMenu(); - -#if QT_VERSION < 0x030100 - // This is a really ugly workaround for a Qt layout bug - QWidget *tmp = NULL; - QWidget *tmp2 = NULL; - -#if QT_VERSION < 0x030200 - - for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList().count();i++) - { - QWidget *widget = toMainWidget()->workspace()->windowList().at(i); -#else - - for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++) - { - QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i); -#endif - - if (newWin != widget) - tmp2 = widget; - else - tmp = newWin; - if (tmp2 && tmp) - break; - } - if (tmp2 && tmp) - { - tmp2->setFocus(); - tmp->setFocus(); - } -#endif - } return newWin; } Modified: trunk/tora/src/tobrowser.cpp =================================================================== --- trunk/tora/src/tobrowser.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tobrowser.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -69,10 +69,6 @@ # include "tomysqluser.h" #endif -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qbuttongroup.h> #include <qcheckbox.h> #include <qcombobox.h> @@ -121,19 +117,12 @@ #include "icons/new.xpm" #endif -// shutup compiler -#ifdef TO_DEBUGOUT -# undef TO_DEBUGOUT -#endif -#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x); - #define CONF_FILTER_IGNORE_CASE "FilterIgnoreCase" #define CONF_FILTER_INVERT "FilterInvert" #define CONF_FILTER_TYPE "FilterType" #define CONF_FILTER_TABLESPACE_TYPE "FilterTablespaceType" #define CONF_FILTER_TEXT "FilterText" - const char **toBrowserTool::pictureXPM(void) { return const_cast<const char**>(tobrowser_xpm); @@ -1144,7 +1133,7 @@ tr("Remove any object filter"), this, SLOT(clearFilter(void)), toolbar); - Schema = new toResultCombo(toolbar, TO_KDE_TOOLBAR_WIDGET); + Schema = new toResultCombo(toolbar, TO_TOOLBAR_WIDGET_NAME); connect(Schema, SIGNAL(activated(int)), this, SLOT(changeSchema(int))); Schema->setSQL(toSQL::sql(toSQL::TOSQL_USERLIST)); @@ -1154,8 +1143,8 @@ Schema->setSelected(connection.user().upper()); else Schema->setSelected(connection.user()); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); - new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); + new toChangeConnection(toolbar, TO_TOOLBAR_WIDGET_NAME); TopTab = new toTabWidget(this); QSplitter *splitter = new QSplitter(Horizontal, TopTab, TAB_TABLES); @@ -1207,7 +1196,7 @@ toolbar); #endif - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); toResultView *resultView = new toResultLong(true, false, toQuery::Background, box); resultView->setReadAll(true); @@ -1357,7 +1346,7 @@ tr("Drop index"), this, SLOT(dropIndex()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); resultView = new toResultLong(true, false, toQuery::Background, box); resultView->setReadAll(true); @@ -1572,7 +1561,7 @@ this, SLOT(testDBLink()), toolbar); toolbar->addSeparator(); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); resultView = new toResultLong(true, false, toQuery::Background, box); resultView->setReadAll(true); @@ -1620,7 +1609,7 @@ tr("Drop user"), this, SLOT(dropUser()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); resultView = new toResultLong(true, false, toQuery::Background, box); #else Modified: trunk/tora/src/tochartmanager.cpp =================================================================== --- trunk/tora/src/tochartmanager.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tochartmanager.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -48,10 +48,6 @@ #include <ctype.h> -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qcheckbox.h> #include <qcombobox.h> #include <qlabel.h> @@ -297,7 +293,7 @@ this, SLOT(setupChart()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); List = new toListView(this); List->addColumn(tr("Connection")); Modified: trunk/tora/src/toconf.h =================================================================== --- trunk/tora/src/toconf.h 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toconf.h 2007-09-19 15:42:16 UTC (rev 2140) @@ -148,38 +148,27 @@ #define DEFAULT_TOAD_BINDINGS "" #define CONF_DISPLAY_GRIDLINES "Gridlines" #define DEFAULT_DISPLAY_GRIDLINES "Yes" - -#ifdef TO_KDE -#define DEFAULT_EXTENSIONS "*.sql *.pkg *.pkb|SQL files\n*.txt|Text files\n*|All files" -#else #define DEFAULT_EXTENSIONS "SQL (*.sql *.pkg *.pkb), Text (*.txt), All (*)" -#endif -#ifndef TO_KDE # ifndef WIN32 // Undefining this will leave out the style selection option stuff from the program # define ENABLE_STYLE // Undefining this will enable choosing Qt_Xft support # define ENABLE_QT_XFT # endif -#endif + #define CONF_STYLE "Style" -#define DEFAULT_STYLE "Windows" #ifdef WIN32 -// Wether to build monolithic TOra or not (Without plugin support +// Whether to build monolithic TOra or not (Without plugin support # define TOMONOLITHIC # define DEFAULT_PLUGIN_DIR "" #endif + // Version of TOra, must also change rpm files #ifndef TOAPPNAME # define TOAPPNAME "TOra" #endif -#define TOHOMEPAGE "http://tora.sourceforge.net" +#define TO_TOOLBAR_WIDGET_NAME "kde toolbar widget" -// Stable or development version of TOra -#define TOTYPE "DEVELOP" - -#define TO_KDE_TOOLBAR_WIDGET "kde toolbar widget" - #endif Modified: trunk/tora/src/toconnection.cpp =================================================================== --- trunk/tora/src/toconnection.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toconnection.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -58,13 +58,6 @@ #undef QT_TRANSLATE_NOOP #define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y) -// also defined in utils.h -#ifdef TO_DEBUGOUT -# undef TO_DEBUGOUT -#endif - -#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x); - // Connection provider implementation std::map<QCString, toConnectionProvider *> *toConnectionProvider::Providers; Modified: trunk/tora/src/tocurrent.cpp =================================================================== --- trunk/tora/src/tocurrent.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tocurrent.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -50,10 +50,6 @@ #include "tosql.h" #include "totool.h" -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qlabel.h> #include <qmenubar.h> #include <qpopupmenu.h> @@ -128,8 +124,8 @@ tr("Update"), this, SLOT(refresh(void)), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); - new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); + new toChangeConnection(toolbar, TO_TOOLBAR_WIDGET_NAME); Tabs = new QTabWidget(this); Modified: trunk/tora/src/todebug.cpp =================================================================== --- trunk/tora/src/todebug.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/todebug.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -52,10 +52,6 @@ #include "tosqlparse.h" #include "totool.h" -#ifdef TO_KDE -#include <kmenubar.h> -#endif - #include <stack> #include <qbuttongroup.h> @@ -1767,7 +1763,7 @@ this, SLOT(refresh(void)), toolbar); toolbar->addSeparator(); - Schema = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Schema = new QComboBox(toolbar, TO_TOOLBAR_WIDGET_NAME); connect(Schema, SIGNAL(activated(int)), this, SLOT(changeSchema(int))); @@ -1871,7 +1867,7 @@ DelWatchButton->setEnabled(false); ChangeWatchButton->setEnabled(false); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); QSplitter *splitter = new QSplitter(Vertical, this); QSplitter *hsplitter = new QSplitter(Horizontal, splitter); @@ -1970,29 +1966,16 @@ Editors = new QTabWidget(hsplitter); Editors->setTabPosition(QTabWidget::Bottom); -#if QT_VERSION >= 0x030200 - QToolButton *closeButton = new toPopupButton(Editors); closeButton->setIconSet(QPixmap(const_cast<const char**>(close_xpm))); closeButton->setFixedSize(20, 18); connect(closeButton, SIGNAL(clicked()), this, SLOT(closeEditor())); Editors->setCornerWidget(closeButton); -#endif setFocusProxy(Editors); newSheet(); -#if 0 - - { - QValueList<int> sizes = hsplitter->sizes(); - sizes[0] = 200; - hsplitter->setSizes(sizes); - hsplitter->setResizeMode(objSplitter, QSplitter::KeepSize); - } -#endif - ToolMenu = NULL; connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)), this, SLOT(windowActivated(QWidget *))); Modified: trunk/tora/src/toeditextensions.cpp =================================================================== --- trunk/tora/src/toeditextensions.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toeditextensions.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -46,10 +46,6 @@ #include "tosqlparse.h" #include "totool.h" -#ifdef TO_KDE -#include <kmenubar.h> -#endif - #include <qcheckbox.h> #include <qmenubar.h> #include <qspinbox.h> @@ -123,9 +119,6 @@ toHighlightedText *cur=dynamic_cast<toHighlightedText *>(Current); if(cur) cur->autoCompleteFromAPIs(); - else{ - TO_DEBUGOUT("cur null"); - } } void toEditExtensions::lostFocus(toEditWidget *widget) Modified: trunk/tora/src/toglobalsetting.cpp =================================================================== --- trunk/tora/src/toglobalsetting.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toglobalsetting.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -45,10 +45,6 @@ #include "tosql.h" #include "totool.h" -#ifdef TO_KDE -#include <kfiledialog.h> -#endif - #include <qcheckbox.h> #include <qcombobox.h> #include <qfiledialog.h> @@ -78,7 +74,7 @@ SavePassword->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, "").isEmpty()); DesktopAware->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty()); ToolsLeft->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_TOOLS_LEFT, "").isEmpty()); - toRefreshCreate(OptionGroup, TO_KDE_TOOLBAR_WIDGET, QString::null, Refresh); + toRefreshCreate(OptionGroup, TO_TOOLBAR_WIDGET_NAME, QString::null, Refresh); DefaultSession->setText(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION)); Status->setValue(toConfigurationSingle::Instance().globalConfig(CONF_STATUS_MESSAGE, DEFAULT_STATUS_MESSAGE).toInt()); @@ -142,22 +138,11 @@ StyleLabel->hide(); #endif -#ifdef TO_KDE - - DockToolbar->hide(); - DesktopAware->hide(); -#endif #ifdef WIN32 - DesktopAware->hide(); #endif -#if QT_VERSION < 0x030000 - DockToolbar->setChecked(toConfigurationSingle::Instance().globalConfig(CONF_DOCK_TOOLBAR, "Yes")); -#else - DockToolbar->hide(); -#endif if (toMonolithic()) { @@ -233,11 +218,6 @@ QString::number(DefaultFormat->currentItem())); toConfigurationSingle::Instance().globalSetConfig(CONF_TOAD_BINDINGS, ToadBindings->isChecked() ? "Yes" : ""); toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_GRIDLINES, DisplayGrid->isChecked() ? "Yes" : ""); -#if QT_VERSION < 0x030000 - - toConfigurationSingle::Instance().globalSetConfig(CONF_DOCK_TOOLBAR, DockToolbar->isChecked() ? "Yes" : ""); -#endif - toConfigurationSingle::Instance().globalSetConfig(CONF_CHANGE_CONNECTION, ChangeConnection->isChecked() ? "Yes" : ""); toConfigurationSingle::Instance().globalSetConfig(CONF_DB_TITLE, IncludeDB->isChecked() ? "Yes" : ""); toConfigurationSingle::Instance().globalSetConfig(CONF_SIZE_UNIT, SizeUnit->currentText()); Modified: trunk/tora/src/tohelp.cpp =================================================================== --- trunk/tora/src/tohelp.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tohelp.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -44,11 +44,6 @@ #include "toresultview.h" #include "totool.h" -#ifdef TO_KDE -#include <kfiledialog.h> -#include <khtml_part.h> -#endif - #include <qaccel.h> #include <qcombobox.h> #include <qdir.h> @@ -75,73 +70,6 @@ #include "tohelpaddfileui.moc" #include "tohelpsetupui.moc" -#ifdef TO_KDE -#include "tohelpbrowser.h" -#include "tohelpbrowser.moc" - -toHelpBrowser::toHelpBrowser(QWidget *parent, const char *name) - : KHTMLPart(parent, name) -{ - connect(browserExtension(), - SIGNAL(openURLRequest(const KURL &, const KParts::URLArgs &)), - this, - SLOT(openURLRequest(const KURL &, const KParts::URLArgs &))); -} - -void toHelpBrowser::openURLRequest(const KURL &url, const KParts::URLArgs &) -{ - emit textChanged(); - openURL(url); -} - -bool toHelpBrowser::openURL(const KURL &url) -{ - if (Forward.size() > 0) - { - emit forwardAvailable(false); - Forward.clear(); - } - if (Backward.size() == 1) - emit backwardAvailable(true); - toPush(Backward, url.url()); - bool ret = KHTMLPart::openURL(url); - emit textChanged(); - return ret; -} - -void toHelpBrowser::backward(void) -{ - toPush(Forward, toPop(Backward)); - QString url = (*Backward.rbegin()); - if (Forward.size() == 1) - emit forwardAvailable(true); - if (Backward.size() == 1) - emit backwardAvailable(false); - KHTMLPart::openURL(url); - emit textChanged(); -} - -void toHelpBrowser::forward(void) -{ - QString url = toPop(Forward); - if (Forward.empty()) - emit forwardAvailable(false); - if (Backward.size() == 1) - emit backwardAvailable(true); - toPush(Backward, url); - KHTMLPart::openURL(url); - emit textChanged(); -} - -QString toHelpBrowser::source(void) -{ - if ( Backward.empty() ) - return QString::null; - return (*Backward.rbegin()); -} - -#endif - toHelp *toHelp::Window; class toHelpAddFile : public toHelpAddFileUI @@ -320,15 +248,9 @@ connect(Result, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(changeContent(QListViewItem *))); -#ifdef TO_KDE - - Help = new toHelpBrowser(splitter); -#else - Help = new QTextBrowser(splitter); Help->mimeSourceFactory()->addFilePath(path()); -#endif - // Help->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred)); + setCaption(tr("Help Browser")); connect(Help, SIGNAL(textChanged(void)), @@ -353,7 +275,7 @@ QToolTip::add (button, tr("Forward one help page")); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); std::map<QString, QString> Dsc; Dsc[tr(TOAPPNAME " manual")] = toHelpPath(); @@ -496,22 +418,13 @@ QString file = path(); file += context; -#ifdef TO_KDE - window->Help->openURL(file); -#else - if (context.find("htm") >= 0) window->Help->setTextFormat(RichText); else window->Help->setTextFormat(AutoText); window->Help->setSource(file); -# if 0 // Necessary? - window->removeSelection(); -# endif -#endif - if (parent) { window->exec(); @@ -547,10 +460,6 @@ void toHelp::changeContent(QListViewItem *item) { -#ifdef TO_KDE - Help->openURL(item->text(2)); -#else - disconnect(Help, SIGNAL(textChanged(void)), this, SLOT(removeSelection(void))); @@ -563,7 +472,6 @@ connect(Help, SIGNAL(textChanged(void)), this, SLOT(removeSelection(void))); -#endif } void toHelp::search(void) Modified: trunk/tora/src/tohelp.h =================================================================== --- trunk/tora/src/tohelp.h 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tohelp.h 2007-09-19 15:42:16 UTC (rev 2140) @@ -181,15 +181,7 @@ * Manuals to include in search. */ QComboBox *Manuals; -#ifdef TO_KDE - /** - * Displays the actual help window. - */ - toHelpBrowser *Help; -#else - QTextBrowser *Help; -#endif /** * Display progress of current search. */ Modified: trunk/tora/src/toinvalid.cpp =================================================================== --- trunk/tora/src/toinvalid.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toinvalid.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -50,11 +50,6 @@ #include "tosql.h" #include "totool.h" - -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qlabel.h> #include <qlineedit.h> #include <qmenubar.h> @@ -130,8 +125,8 @@ this, SLOT(recompileSelected()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); - new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); + new toChangeConnection(toolbar, TO_TOOLBAR_WIDGET_NAME); QSplitter *splitter = new QSplitter(Horizontal, this); @@ -146,16 +141,6 @@ connect(Source, SIGNAL(executed()), this, SLOT(refresh())); -#if 0 - - { - QValueList<int> sizes = splitter->sizes(); - sizes[0] = 300; - splitter->setSizes(sizes); - splitter->setResizeMode(Objects, QSplitter::KeepSize); - } -#endif - ToolMenu = NULL; connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)), this, SLOT(windowActivated(QWidget *))); Modified: trunk/tora/src/tolinechart.cpp =================================================================== --- trunk/tora/src/tolinechart.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tolinechart.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -832,28 +832,6 @@ newWin->raise(); newWin->setFocus(); toMainWidget()->windowsMenu(); - -#if QT_VERSION < 0x030100 - // This is a really ugly workaround for a Qt layout bug - QWidget *tmp = NULL; - QWidget *tmp2 = NULL; - for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++) - { - QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i); - if (newWin != widget) - tmp2 = widget; - else - tmp = newWin; - if (tmp2 && tmp) - break; - } - if (tmp2 && tmp) - { - tmp2->setFocus(); - tmp->setFocus(); - } -#endif - } return newWin; } Modified: trunk/tora/src/tolistviewformatterhtml.cpp =================================================================== --- trunk/tora/src/tolistviewformatterhtml.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tolistviewformatterhtml.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -134,17 +134,11 @@ line += QString::fromLatin1("<TD%1>").arg(bgcolor); if (i == 0) line += indent; -#if QT_VERSION >= 0x030100 text.replace('&', "&"); text.replace('<', "<"); text.replace('>', ">"); -#else - text.replace(QRegExp("&"), "&"); - text.replace(QRegExp("<"), "<"); - text.replace(QRegExp(">"), ">"); -#endif line += QString::fromLatin1("<PRE>"); line += text; line += QString::fromLatin1("</PRE>"); Modified: trunk/tora/src/tomain.cpp =================================================================== --- trunk/tora/src/tomain.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tomain.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -53,16 +53,6 @@ #include "totemplate.h" #include "totool.h" -#ifdef TO_KDE -#include <kfiledialog.h> -#include <kmenubar.h> -#include <kstatusbar.h> -#endif - -#ifdef TO_KDE_KACCELMANAGER -#include <kaccelmanager.h> -#endif - #include <qaccel.h> #include <qapplication.h> #include <qcheckbox.h> @@ -87,22 +77,13 @@ #include <qvbox.h> #include <qworkspace.h> -#if QT_VERSION >= 0x030000 #include <qurloperator.h> #include <qnetwork.h> #include <qstyle.h> -#endif #include "tomain.moc" #include "tomessageui.moc" -#ifdef TO_KDE -#include "tomainwindow.kde.moc" - -#include "icons/toramini.xpm" - -#else #include "tomainwindow.moc" -#endif #include "icons/connect.xpm" #include "icons/copy.xpm" @@ -298,7 +279,7 @@ this, SLOT(stopButton()), ConnectionToolbar)] = true; ConnectionToolbar->addSeparator(); - ConnectionSelection = new QComboBox(ConnectionToolbar, TO_KDE_TOOLBAR_WIDGET); + ConnectionSelection = new QComboBox(ConnectionToolbar, TO_TOOLBAR_WIDGET_NAME); ConnectionSelection->setMinimumWidth(300); ConnectionSelection->setFocusPolicy(NoFocus); connect(ConnectionSelection, SIGNAL(activated(int)), this, SLOT(changeConnection())); @@ -382,19 +363,8 @@ sprintf(buffer, DEFAULT_TITLE, TOVERSION); setCaption(tr(buffer)); -#ifdef TO_KDE - - KDockWidget *mainDock = createDockWidget(tr(buffer), QPixmap(const_cast<const char**>(toramini_xpm))); - Workspace = new QWorkspace(mainDock); - mainDock->setWidget(Workspace); - setView(mainDock); - setMainDockWidget(mainDock); - mainDock->setEnableDocking(KDockWidget::DockNone); -#else - Workspace = new QWorkspace(this); setCentralWidget(Workspace); -#endif setIcon(QPixmap(const_cast<const char**>(tora_xpm))); @@ -592,17 +562,10 @@ QRegExp strip(QString::fromLatin1(" <[0-9]+>$")); int id = 0; unsigned int i; -#if QT_VERSION < 0x030200 - for (i = 0;i < workspace()->windowList().count();i++) - { - QWidget *widget = workspace()->windowList().at(i); -#else - for (i = 0;i < workspace()->windowList(QWorkspace::CreationOrder).count();i++) { QWidget *widget = workspace()->windowList(QWorkspace::CreationOrder).at(i); -#endif if (widget && !widget->isHidden()) { @@ -614,15 +577,9 @@ WindowsMenu->insertItem(caption, TO_WINDOWS_WINDOWS + i); else WindowsMenu->changeItem(TO_WINDOWS_WINDOWS + i, caption); -#if QT_VERSION < 0x030200 WindowsMenu->setItemChecked(TO_WINDOWS_WINDOWS + i, - workspace()->activeWindow() == workspace()->windowList().at(i)); -#else - - WindowsMenu->setItemChecked(TO_WINDOWS_WINDOWS + i, workspace()->activeWindow() == workspace()->windowList(QWorkspace::CreationOrder).at(i)); -#endif if (i < 9) { @@ -668,16 +625,9 @@ } else if (cmd >= TO_WINDOWS_WINDOWS && cmd <= TO_WINDOWS_END) { -#if QT_VERSION < 0x030200 - if (cmd - TO_WINDOWS_WINDOWS < int(workspace()->windowList().count())) - { - QWidget *widget = workspace()->windowList().at(cmd - TO_WINDOWS_WINDOWS); -#else - if (cmd - TO_WINDOWS_WINDOWS < int(workspace()->windowList(QWorkspace::CreationOrder).count())) { QWidget *widget = workspace()->windowList(QWorkspace::CreationOrder).at(cmd - TO_WINDOWS_WINDOWS); -#endif widget->raise(); widget->setFocus(); @@ -826,17 +776,9 @@ toPreferences::displayPreferences(this); break; case TO_WINDOWS_CLOSE_ALL: -#if QT_VERSION < 0x030200 - - while (workspace()->windowList().count() > 0 && workspace()->windowList().at(0)) - if (workspace()->windowList().at(0) && - !workspace()->windowList().at(0)->close(true)) -#else - while (workspace()->windowList(QWorkspace::CreationOrder).count() > 0 && workspace()->windowList(QWorkspace::CreationOrder).at(0)) if (workspace()->windowList(QWorkspace::CreationOrder).at(0) && !workspace()->windowList(QWorkspace::CreationOrder).at(0)->close(true)) -#endif return ; break; @@ -1130,12 +1072,10 @@ edit->selectAllEnabled(), edit->readAllEnabled()); -#if QT_VERSION >= 0x030000 // Set Selection Mode on X11 QClipboard *clip = qApp->clipboard(); if (clip->supportsSelection()) clip->setSelectionMode(true); -#endif } void toMain::editDisable(toEditWidget *edit) @@ -1328,10 +1268,6 @@ if (menuName) { -#ifdef TODEBUG_TRANSLATION - printf("QT_TRANSLATE_NOOP(\"toTool\",\"%s\"),\n", (const char *)menuName); -#endif - if (pixmap) ToolsMenu->insertItem(*pixmap, qApp->translate("toTool", menuName), toolID); else @@ -1403,17 +1339,9 @@ } id = 1; -#if QT_VERSION < 0x030200 - - for (unsigned int i = 0;i < workspace()->windowList().count();i++) - { - toToolWidget *tool = dynamic_cast<toToolWidget *>(workspace()->windowList().at(i)); -#else - for (unsigned int i = 0;i < workspace()->windowList(QWorkspace::CreationOrder).count();i++) { toToolWidget *tool = dynamic_cast<toToolWidget *>(workspace()->windowList(QWorkspace::CreationOrder).at(i)); -#endif if (tool) { @@ -1576,19 +1504,10 @@ } TOCATCH - // Workaround in bug in Qt 3.0.0 -#if QT_VERSION < 0x030200 - while (workspace()->windowList().count() > 0 && workspace()->windowList().at(0)) - if (workspace()->windowList().at(0) && - !workspace()->windowList().at(0)->close(true)) - return ; -#else - while (workspace()->windowList(QWorkspace::CreationOrder).count() > 0 && workspace()->windowList(QWorkspace::CreationOrder).at(0)) if (workspace()->windowList(QWorkspace::CreationOrder).at(0) && !workspace()->windowList(QWorkspace::CreationOrder).at(0)->close(true)) return ; -#endif while (Connections.end() != Connections.begin()) { @@ -1640,15 +1559,7 @@ toMessageUI dialog(toMainWidget(), NULL, true); dialog.Message->setReadOnly(true); -#ifdef TO_KDE_KACCELMANAGER - - KAcceleratorManager::setNoAccel( dialog.Message ); -#endif - -#if QT_VERSION >= 0x030000 - dialog.Icon->setPixmap(QApplication::style().stylePixmap(QStyle::SP_MessageBoxWarning)); -#endif dialog.Message->setText(str); dialog.exec(); Modified: trunk/tora/src/tomain.h =================================================================== --- trunk/tora/src/tomain.h 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tomain.h 2007-09-19 15:42:16 UTC (rev 2140) @@ -42,11 +42,7 @@ #include "tobackground.h" #include "tobackuptool.h" -#ifdef TO_KDE -#include "tomainwindow.kde.h" -#else #include "tomainwindow.h" -#endif #include <list> #include <map> @@ -54,9 +50,7 @@ #include <qtimer.h> -#if QT_VERSION >= 0x030000 class QUrlOperator; -#endif #define TOMessageBox QMessageBox Modified: trunk/tora/src/tomemoeditor.cpp =================================================================== --- trunk/tora/src/tomemoeditor.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tomemoeditor.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -208,14 +208,14 @@ this, SLOT(lastColumn()), Toolbar); } Toolbar->addSeparator(); - Null = new QCheckBox(tr("NULL"), Toolbar, TO_KDE_TOOLBAR_WIDGET); + Null = new QCheckBox(tr("NULL"), Toolbar, TO_TOOLBAR_WIDGET_NAME); connect(Null, SIGNAL(toggled(bool)), this, SLOT(null(bool))); Null->setEnabled(!Editor->isReadOnly()); Null->setFocusPolicy(StrongFocus); setText(str); - Label = new QLabel(Toolbar, TO_KDE_TOOLBAR_WIDGET); + Label = new QLabel(Toolbar, TO_TOOLBAR_WIDGET_NAME); Label->setAlignment(AlignRight | AlignVCenter); Toolbar->setStretchableWidget(Label); Modified: trunk/tora/src/tonewconnection.cpp =================================================================== --- trunk/tora/src/tonewconnection.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tonewconnection.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -66,10 +66,6 @@ # include "windows/cregistry.h" #endif -#ifdef TO_KDE_KACCELMANAGER -# include <kaccelmanager.h> -#endif - #include "tonewconnection.moc" #include "tonewconnectionui.moc" @@ -84,9 +80,6 @@ OptionGroup->layout()->setMargin( 11 ); OptionGroupLayout = new QVBoxLayout( OptionGroup->layout() ); OptionGroupLayout->setAlignment( Qt::AlignTop ); -#ifdef TO_KDE_KACCELMANAGER - KAcceleratorManager::setNoAccel( OptionGroup ); -#endif QPopupMenu *menu = new QPopupMenu(Previous); Database->insertItem(toConfigurationSingle::Instance().globalConfig(CONF_DATABASE, DEFAULT_DATABASE)); Modified: trunk/tora/src/tonoblockquery.cpp =================================================================== --- trunk/tora/src/tonoblockquery.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tonoblockquery.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -51,29 +51,18 @@ #endif #include <stdio.h> -#undef TO_DEBUG -#ifdef TO_DEBUG -#include <stdio.h> -#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x); -#else -#define TO_DEBUGOUT(x) -#endif - #define PREFETCH_SIZE 5000 void toNoBlockQuery::queryTask::run(void) { - TO_DEBUGOUT("Thread started\n"); int Length = 0; try { - TO_DEBUGOUT("Open query\n"); if (Parent.Query) Parent.Query->execute(Parent.SQL, Parent.Param); bool eof = true; { - TO_DEBUGOUT("Locking description\n"); toLocker lock (Parent.Lock) ; if (Parent.Query) @@ -91,10 +80,8 @@ { for (int i = 0;i < Length && Parent.Query;i++) { - TO_DEBUGOUT("Reading value\n"); toQValue value(Parent.Query->readValueNull()); { - TO_DEBUGOUT("Locking parent\n"); toLocker lock (Parent.Lock) ; Parent.ReadingValues.insert(Parent.ReadingValues.end(), value); @@ -103,17 +90,14 @@ if (signaled) { Parent.Lock.unlock(); - TO_DEBUGOUT("Pulling down continue\n"); Parent.Continue.down(); Parent.Lock.lock(); } - TO_DEBUGOUT("Running up\n"); Parent.Running.up(); signaled = true; } } } - TO_DEBUGOUT("Locking to check size\n"); toLocker lock (Parent.Lock) ; if (!Parent.Query || Parent.Query->eof()) @@ -123,9 +107,7 @@ if (Parent.ReadingValues.size() > PREFETCH_SIZE) { Parent.Lock.unlock(); - TO_DEBUGOUT("Waiting for next\n"); Parent.Continue.down(); - TO_DEBUGOUT("Done waiting\n"); signaled = false; Parent.Lock.lock(); } @@ -134,7 +116,6 @@ break; } } - TO_DEBUGOUT("EOQ\n"); if (Parent.Query) Parent.Processed = Parent.Query->rowsProcessed(); else @@ -142,30 +123,25 @@ } catch (const toConnection::exception &str) { - TO_DEBUGOUT("Locking exception string\n"); toLocker lock (Parent.Lock) ; Parent.Error = str; } catch (const QString &str) { - TO_DEBUGOUT("Locking exception string\n"); toLocker lock (Parent.Lock) ; Parent.Error = str; } catch (...) { - TO_DEBUGOUT("Unknown exception\n"); toLocker lock (Parent.Lock) ; Parent.Error = qApp->translate("toNoBlockQuery", "Unknown exception"); } - TO_DEBUGOUT("Locking EOQ\n"); toLocker lock (Parent.Lock) ; - TO_DEBUGOUT("Deleting query\n"); if (!Parent.Error && !Parent.Query->eof()) try { @@ -175,29 +151,24 @@ {} delete Parent.Query; Parent.Query = NULL; - TO_DEBUGOUT("Running up\n"); Parent.Running.up(); Parent.EOQ = true; - TO_DEBUGOUT("Done\n"); } toQValue toNoBlockQuery::readValueNull() { if (CurrentValue == Values.end()) { - TO_DEBUGOUT("Waiting for running\n"); Lock.lock(); bool eoq = EOQ; Lock.unlock(); if (!eoq) Running.down(); - TO_DEBUGOUT("Locking reading\n"); toLocker lock (Lock) ; Values = ReadingValues; CurrentValue = Values.begin(); ReadingValues.clear(); - TO_DEBUGOUT("Continue running\n"); Continue.up(); if (CurrentValue == Values.end()) throw qApp->translate("toNoBlockQuery", "Reading past end of query"); @@ -236,7 +207,6 @@ Error = qApp->translate("toNoBlockQuery", "Couldn't open query"); return ; } - TO_DEBUGOUT("Created no block query\n"); try { @@ -256,13 +226,10 @@ toLocker lock (Lock) ; - TO_DEBUGOUT("Creating thread\n"); try { toThread *thread = new toThread(new queryTask(*this)); - TO_DEBUGOUT("Created thread\n"); thread->start(); - TO_DEBUGOUT("Started thread\n"); } catch (...) { @@ -294,7 +261,6 @@ Error = qApp->translate("toNoBlockQuery", "Couldn't open query"); return ; } - TO_DEBUGOUT("Created no block query\n"); CurrentValue = Values.end(); Quit = EOQ = false; Processed = 0; @@ -317,13 +283,10 @@ toLocker lock (Lock) ; - TO_DEBUGOUT("Creating thread\n"); try { toThread *thread = new toThread(new queryTask(*this)); - TO_DEBUGOUT("Created thread\n"); thread->start(); - TO_DEBUGOUT("Started thread\n"); } catch (...) { @@ -338,7 +301,6 @@ toQDescList &toNoBlockQuery::describe(void) { - TO_DEBUGOUT("Locking describe\n"); toLocker lock (Lock) ; checkError(); @@ -347,7 +309,6 @@ bool toNoBlockQuery::eof(void) { - TO_DEBUGOUT("Locking eof\n"); toLocker lock (Lock) ; checkError(); @@ -356,7 +317,6 @@ int toNoBlockQuery::rowsProcessed(void) { - TO_DEBUGOUT("Locking processed\n"); toLocker lock (Lock) ; checkError(); @@ -369,7 +329,6 @@ int sleep = 100; while (!EOQ) { - TO_DEBUGOUT("Locking clear values\n"); Quit = true; ReadingValues.clear(); Continue.up(); @@ -380,7 +339,6 @@ Lock.lock(); if (Running.getValue() == 0) { - TO_DEBUGOUT("Query cancel\n"); if (Query) { Query->cancel(); @@ -392,7 +350,6 @@ if (Statistics) { - TO_DEBUGOUT("Get statistics\n"); Statistics->refreshStats(false); } while (Query) @@ -400,7 +357,6 @@ fprintf(stderr, "Internal error, query not deleted after stopping it.\n"); toThread::msleep(100); } - TO_DEBUGOUT("Done deleting\n"); } toNoBlockQuery::~toNoBlockQuery() @@ -437,7 +393,6 @@ toStatusMessage(qApp->translate("toNoBlockQuery", "Restarting query in own connection"), false, false); toConnection &conn = Query->connection(); Lock.unlock(); - TO_DEBUGOUT("Stopping normal query\n"); stop(); toLocker lock (Lock) ; @@ -452,7 +407,6 @@ Quit = EOQ = false; Processed = 0; - TO_DEBUGOUT("Creating new long query\n"); Query = new toQuery(conn, toQuery::Long); try @@ -466,9 +420,7 @@ } toThread *thread = new toThread(new queryTask(*this)); - TO_DEBUGOUT("Created thread\n"); thread->start(); - TO_DEBUGOUT("Started thread\n"); } catch (...) { @@ -493,7 +445,6 @@ { if (!Error.isNull()) { - TO_DEBUGOUT("Throwing exception\n"); throw Error; } } Modified: trunk/tora/src/tooutput.cpp =================================================================== --- trunk/tora/src/tooutput.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/tooutput.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -47,10 +47,6 @@ #include <map> -#ifdef TO_KDE -# include <kmenubar.h> -#endif - #include <qcombobox.h> #include <qgroupbox.h> #include <qlabel.h> @@ -99,7 +95,7 @@ QToolTip::add (label, qApp->translate("toOutputPrefs", "Time between trying to poll for output.")); - AutoPolling = toRefreshCreate(this, TO_KDE_TOOLBAR_WIDGET, Tool->config(CONF_POLLING, DEFAULT_POLLING)); + AutoPolling = toRefreshCreate(this, TO_TOOLBAR_WIDGET_NAME, Tool->config(CONF_POLLING, DEFAULT_POLLING)); label->setBuddy(AutoPolling); label = new QLabel(qApp->translate("toOutputPrefs", "Default &source"), this); @@ -181,18 +177,12 @@ ToolBar->addSeparator(); DisableButton = new QToolButton(ToolBar); DisableButton->setToggleButton(true); -#if QT_VERSION >= 0x030000 QIconSet iconset; iconset.setPixmap(QPixmap(const_cast<const char**>(online_xpm)), QIconSet::Automatic, QIconSet::Normal, QIconSet::Off); iconset.setPixmap(QPixmap(const_cast<const char**>(offline_xpm)), QIconSet::Automatic, QIconSet::Normal, QIconSet::On); DisableButton->setIconSet(iconset); -#else - DisableButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(online_xpm))), false); - DisableButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(offline_xpm))), true); -#endif - DisableButton->setOn(!enabled); connect(DisableButton, SIGNAL(toggled(bool)), this, SLOT(disable(bool))); QToolTip::add @@ -204,10 +194,10 @@ this, SLOT(clear()), ToolBar); ToolBar->addSeparator(); - new QLabel(tr("Refresh") + " ", ToolBar, TO_KDE_TOOLBAR_WIDGET); - connect(Refresh = toRefreshCreate(ToolBar, TO_KDE_TOOLBAR_WIDGET, OutputTool.config(CONF_POLLING, DEFAULT_POLLING)), + new QLabel(tr("Refresh") + " ", ToolBar, TO_TOOLBAR_WIDGET_NAME); + connect(Refresh = toRefreshCreate(ToolBar, TO_TOOLBAR_WIDGET_NAME, OutputTool.config(CONF_POLLING, DEFAULT_POLLING)), SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &))); - ToolBar->setStretchableWidget(new QLabel(ToolBar, TO_KDE_TOOLBAR_WIDGET)); + ToolBar->setStretchableWidget(new QLabel(ToolBar, TO_TOOLBAR_WIDGET_NAME)); Output = new toMarkedText(this); @@ -386,7 +376,7 @@ toLogOutput::toLogOutput(QWidget *parent, toConnection &connection) : toOutput(parent, connection) { - Type = new QComboBox(toolBar(), TO_KDE_TOOLBAR_WIDGET); + Type = new QComboBox(toolBar(), TO_TOOLBAR_WIDGET_NAME); Type->insertItem(tr("SQL Output")); Type->insertItem(tr("Log4PL/SQL")); Type->setCurrentItem(OutputTool.config(CONF_LOG_TYPE, DEFAULT_LOG_TYPE).toInt()); Modified: trunk/tora/src/topiechart.cpp =================================================================== --- trunk/tora/src/topiechart.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/topiechart.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -128,27 +128,6 @@ newWin->raise(); newWin->setFocus(); toMainWidget()->windowsMenu(); - -#if QT_VERSION < 0x030100 - // This is a really ugly workaround for a Qt layout bug - QWidget *tmp = NULL; - QWidget *tmp2 = NULL; - for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++) - { - QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i); - if (newWin != widget) - tmp2 = widget; - else - tmp = newWin; - if (tmp2 && tmp) - break; - } - if (tmp2 && tmp) - { - tmp2->setFocus(); - tmp->setFocus(); - } -#endif } void toPieChart::setValues(std::list<double> &values, std::list<QString> &labels) Modified: trunk/tora/src/toprofiler.cpp =================================================================== --- trunk/tora/src/toprofiler.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toprofiler.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -475,40 +475,29 @@ toolbar->addSeparator(); - new QLabel(tr("Repeat run") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET); + new QLabel(tr("Repeat run") + " ", toolbar, TO_TOOLBAR_WIDGET_NAME); - Repeat = new QSpinBox(toolbar, TO_KDE_TOOLBAR_WIDGET); + Repeat = new QSpinBox(toolbar, TO_TOOLBAR_WIDGET_NAME); Repeat->setValue(5); Repeat->setMaxValue(1000); toolbar->addSeparator(); new QLabel(tr("Comment") + " ", toolbar); - Comment = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET); + Comment = new QLineEdit(toolbar, TO_TOOLBAR_WIDGET_NAME); Comment->setText(tr("Unknown")); toolbar->addSeparator(); -#if 0 - - Background = new QToolButton(toolbar); - Background->setToggleButton(true); - Background->setIconSet(QIconSet(QPixmap(const_cast<const char**>(background_xpm)))); - QToolTip::add - (Background, tr("Run profiling in background")); - - toolbar->addSeparator(); -#endif - new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)), tr("Execute current profiling"), tr("Execute current profiling"), this, SLOT(execute()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); - new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET); + new toChangeConnection(toolbar, TO_TOOLBAR_WIDGET_NAME); Tabs = new QTabWidget(this); Script = new toWorksheet(Tabs, NULL, connection); Modified: trunk/tora/src/toproject.cpp =================================================================== --- trunk/tora/src/toproject.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toproject.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -65,11 +65,7 @@ static toProjectTemplate ProjectTemplate; -#ifdef TO_KDE -#define PROJECT_EXTENSIONS "*.sql *.pkg *.pkb|SQL files\n*.tpr|Project files\n*.txt|Text files\n*|All files" -#else #define PROJECT_EXTENSIONS "SQL (*.sql *.pkg *.pkb),Project files (*.tpr) ,Text (*.txt), All (*)" -#endif bool toProjectTemplateItem::project(void) { @@ -435,7 +431,7 @@ tr("Move down in project"), this, SLOT(moveDown()), toolbar); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); Project = new toListView(this); Project->addColumn(tr("File")); Project->addColumn(tr("Size")); Modified: trunk/tora/src/toqsqlconnection.cpp =================================================================== --- trunk/tora/src/toqsqlconnection.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toqsqlconnection.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -1700,8 +1700,6 @@ virtual std::list<QString> providedOptions(const QCString &provider) { std::list<QString> ret; -#if QT_VERSION >= 0x030200 - if (provider == "MySQL") { ret.insert(ret.end(), "*SSL"); @@ -1710,7 +1708,6 @@ ret.insert(ret.end(), "Ignore Space"); ret.insert(ret.end(), "No Schema"); } -#endif return ret; } virtual std::list<QString> providedDatabases(const QCString &, const QString &, const QString &, const QString &) @@ -1848,7 +1845,6 @@ db->setPort(host.mid(pos + 1).toInt()); } -#if QT_VERSION >= 0x030200 QString opt; std::set @@ -1864,7 +1860,6 @@ if (!opt.isEmpty()) db->setConnectOptions(opt.mid(1)); // Strip first ; character -#endif db->open(conn.user(), conn.password()); if (!db->isOpen()) Modified: trunk/tora/src/toresultcontent.cpp =================================================================== --- trunk/tora/src/toresultcontent.cpp 2007-09-19 14:23:23 UTC (rev 2139) +++ trunk/tora/src/toresultcontent.cpp 2007-09-19 15:42:16 UTC (rev 2140) @@ -516,10 +516,7 @@ setUpdatesEnabled(false); setNumRows(rows); -#if QT_VERSION >= 0x030000 - int origRow = Row; -#endif while (dataSize > 0) { @@ -531,7 +528,6 @@ } Row++; } -#if QT_VERSION >= 0x030000 if (numRows() < STOP_RESIZE_ROW) for (int j = 0;j < numCols();j++) { @@ -546,7 +542,6 @@ if (width != columnWidth(j)) setColumnWidth(j, width); } -#endif setUpdatesEnabled(true); } if (first && SingleEdit) @@ -1415,12 +1410,9 @@ { setCurrentCell(row, col); -#if QT_VERSION >= 0x030000 - editCell(row, col); if (CurrentEditor) CurrentEditor->setSelection(pos, endPos - pos); -#endif SearchEnd = endPos; SearchStart = pos; @@ -1528,7 +1520,7 @@ QToolTip::add (btn, tr("Toggle between table or single record editing")); - toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET)); + toolbar->setStretchableWidget(new QLabel(toolbar, TO_TOOLBAR_WIDGET_NAME)); connect(toMainWidget(), SIGNAL(willCommit(toConnection &, bool)), this, SLOT(saveUnsaved(toConnection &, bool))); connect(Editor, SIGNAL(changesSaved()), this, SIGNAL(changesSaved())); Modified: trunk/tora/src/toresultparam.cpp ===================================... [truncated message content] |
From: <mrj...@us...> - 2008-02-02 23:07:34
|
Revision: 2502 http://tora.svn.sourceforge.net/tora/?rev=2502&view=rev Author: mrjohnson0 Date: 2008-02-02 15:07:37 -0800 (Sat, 02 Feb 2008) Log Message: ----------- last q3 classes Modified Paths: -------------- trunk/tora/src/toresultline.cpp trunk/tora/src/toresultline.h Modified: trunk/tora/src/toresultline.cpp =================================================================== --- trunk/tora/src/toresultline.cpp 2008-02-02 23:04:04 UTC (rev 2501) +++ trunk/tora/src/toresultline.cpp 2008-02-02 23:07:37 UTC (rev 2502) @@ -45,7 +45,7 @@ #include "tosql.h" #include "totool.h" -#include <q3popupmenu.h> +#include <QMenu> toResultLine::toResultLine(QWidget *parent, const char *name) @@ -203,13 +203,14 @@ clear(); } -void toResultLine::addMenues(Q3PopupMenu *popup) +void toResultLine::addMenues(QMenu *popup) { if (sqlName().length()) { - popup->insertSeparator(); - popup->insertItem(tr("Edit SQL..."), - this, SLOT(editSQL())); + popup->addSeparator(); + popup->addAction(tr("Edit SQL..."), + this, + SLOT(editSQL())); } } Modified: trunk/tora/src/toresultline.h =================================================================== --- trunk/tora/src/toresultline.h 2008-02-02 23:04:04 UTC (rev 2501) +++ trunk/tora/src/toresultline.h 2008-02-02 23:07:37 UTC (rev 2502) @@ -46,12 +46,12 @@ #include <time.h> #include <list> -//Added by qt3to4: -#include <Q3PopupMenu> +class QMenu; class toNoBlockQuery; class toSQL; + /** Display the result of a query in a piechart. The first column of the query should * contain the x value and the rest of the columns should be values of the diagram. The * legend is the column name. Connects to the tool timer for updates automatically. @@ -207,7 +207,7 @@ virtual void connectionChanged(void); /** Reimplemented for internal reasons. */ - virtual void addMenues(Q3PopupMenu *); + virtual void addMenues(QMenu *); private slots: void poll(void); void editSQL(void); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mrj...@us...> - 2008-02-02 23:53:24
|
Revision: 2507 http://tora.svn.sourceforge.net/tora/?rev=2507&view=rev Author: mrjohnson0 Date: 2008-02-02 15:53:27 -0800 (Sat, 02 Feb 2008) Log Message: ----------- q3popupmenu ported Modified Paths: -------------- trunk/tora/src/tosecurity.cpp trunk/tora/src/tosecurity.h Modified: trunk/tora/src/tosecurity.cpp =================================================================== --- trunk/tora/src/tosecurity.cpp 2008-02-02 23:37:15 UTC (rev 2506) +++ trunk/tora/src/tosecurity.cpp 2008-02-02 23:53:27 UTC (rev 2507) @@ -54,7 +54,7 @@ #include <qlineedit.h> #include <qmenubar.h> #include <qmessagebox.h> -#include <q3popupmenu.h> +#include <QMenu> #include <qradiobutton.h> #include <qsplitter.h> #include <qstringlist.h> @@ -1518,6 +1518,7 @@ UpdateListAct = new QAction(QPixmap(const_cast<const char**>(refresh_xpm)), tr("Update user and role list"), this); connect(UpdateListAct, SIGNAL(triggered()), this, SLOT(refresh(void))); + UpdateListAct->setShortcut(QKeySequence::Refresh); toolbar->addAction(UpdateListAct); toolbar->addSeparator(); @@ -1525,6 +1526,7 @@ SaveAct = new QAction(QPixmap(const_cast<const char**>(commit_xpm)), tr("Save changes"), this); connect(SaveAct, SIGNAL(triggered()), this, SLOT(saveChanges(void))); + SaveAct->setShortcut(Qt::CTRL | Qt::Key_Return); toolbar->addAction(SaveAct); DropAct = new QAction(QPixmap(const_cast<const char**>(trash_xpm)), @@ -1538,16 +1540,19 @@ AddUserAct = new QAction(QPixmap(const_cast<const char**>(adduser_xpm)), tr("Add new user"), this); connect(AddUserAct, SIGNAL(triggered()), this, SLOT(addUser(void))); + AddUserAct->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_U); toolbar->addAction(AddUserAct); AddRoleAct = new QAction(QPixmap(const_cast<const char**>(addrole_xpm)), tr("Add new role"), this); connect(AddRoleAct, SIGNAL(triggered()), this, SLOT(addRole(void))); + AddRoleAct->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_R); toolbar->addAction(AddRoleAct); CopyAct = new QAction(QPixmap(const_cast<const char**>(copyuser_xpm)), tr("Copy current user or role"), this); connect(CopyAct, SIGNAL(triggered()), this, SLOT(copy(void))); + CopyAct->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_O); toolbar->addAction(CopyAct); CopyAct->setEnabled(false); @@ -1556,6 +1561,7 @@ DisplaySQLAct = new QAction(QPixmap(const_cast<const char**>(sql_xpm)), tr("Display SQL needed to make current changes"), this); connect(DisplaySQLAct, SIGNAL(triggered()), this, SLOT(displaySQL(void))); + DisplaySQLAct->setShortcut(Qt::Key_F4); toolbar->addAction(DisplaySQLAct); toolbar->addWidget(new toSpacer()); @@ -1592,50 +1598,32 @@ setFocusProxy(Tabs); } -#if 0 -#define TO_ID_COPY (toMain::TO_TOOL_MENU_ID+ 0) -#define TO_ID_DROP (toMain::TO_TOOL_MENU_ID+ 1) -#endif +void toSecurity::windowActivated(QWidget *widget) { + if(widget == this) { + if(!ToolMenu) { + ToolMenu = new QMenu(tr("&Security"), this); -void toSecurity::windowActivated(QWidget *widget) -{ - if (widget == this) - { - if (!ToolMenu) - { -#if 0 // todo - ToolMenu = new Q3PopupMenu(this); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"), - this, SLOT(refresh(void)), - toKeySequence(tr("F5", "Security|Refresh"))); - ToolMenu->insertSeparator(); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(commit_xpm)), tr("&Save changes"), - this, SLOT(saveChanges()), - toKeySequence(tr("Ctrl+Return", "Security|Save changes"))); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("&Remove user/role"), - this, SLOT(drop()), 0, TO_ID_DROP); - ToolMenu->insertSeparator(); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(adduser_xpm)), tr("Add &user"), - this, SLOT(addUser()), - toKeySequence(tr("Ctrl+Shift+U", "Security|Add user"))); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(addrole_xpm)), tr("Add &role"), - this, SLOT(addRole()), - toKeySequence(tr("Ctrl+Shift+R", "Security|Add role"))); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(copyuser_xpm)), tr("&Copy current"), - this, SLOT(copy()), - toKeySequence(tr("Ctrl+Shift+O", "Security|Copy current")), TO_ID_COPY); - ToolMenu->insertSeparator(); - ToolMenu->insertItem(QPixmap(const_cast<const char**>(sql_xpm)), tr("Display SQL..."), - this, SLOT(displaySQL()), - toKeySequence(tr("F4", "Security|Display SQL"))); - toMainWidget()->menuBar()->insertItem(tr("&Security"), ToolMenu, -1, toToolMenuIndex()); - ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled()); - ToolMenu->setItemEnabled(TO_ID_COPY, CopyButton->isEnabled()); -#endif + ToolMenu->addAction(UpdateListAct); + + ToolMenu->addSeparator(); + + ToolMenu->addAction(SaveAct); + ToolMenu->addAction(DropAct); + + ToolMenu->addSeparator(); + + ToolMenu->addAction(AddUserAct); + ToolMenu->addAction(AddRoleAct); + ToolMenu->addAction(CopyAct); + + ToolMenu->addSeparator(); + + ToolMenu->addAction(DisplaySQLAct); + + toMainWidget()->addCustomMenu(ToolMenu); } } - else - { + else { delete ToolMenu; ToolMenu = NULL; } @@ -1723,13 +1711,6 @@ UserID = item->text(1); DropAct->setEnabled(item->parent()); CopyAct->setEnabled(item->parent()); - if (ToolMenu) - { -#if 0 // todo - ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled()); - ToolMenu->setItemEnabled(TO_ID_COPY, CopyButton->isEnabled()); -#endif - } if (UserID[4].latin1() != ':') throw tr("Invalid security ID"); Modified: trunk/tora/src/tosecurity.h =================================================================== --- trunk/tora/src/tosecurity.h 2008-02-02 23:37:15 UTC (rev 2506) +++ trunk/tora/src/tosecurity.h 2008-02-02 23:53:27 UTC (rev 2507) @@ -45,10 +45,8 @@ #include "ui_tosecurityquotaui.h" #include <list> -//Added by qt3to4: -#include <Q3PopupMenu> -class Q3PopupMenu; +class QMenu; class QTabWidget; class QToolButton; class toConnection; @@ -115,26 +113,25 @@ const QString &value, bool admin) : Owner(owner), Object(object), Access(access), Value(value), Admin(admin) { } - } - ; + }; QString UserID; - Q3PopupMenu *ToolMenu; - toListView *UserList; - toSecuritySystem *SystemGrant; + QMenu *ToolMenu; + toListView *UserList; + toSecuritySystem *SystemGrant; toSecurityRoleGrant *RoleGrant; - toSecurityObject *ObjectGrant; - toSecurityPage *General; - toSecurityQuota *Quota; + toSecurityObject *ObjectGrant; + toSecurityPage *General; + toSecurityQuota *Quota; - QAction * DropAct; - QAction * CopyAct; - QAction * UpdateListAct; - QAction * SaveAct; - QAction * AddUserAct; - QAction * AddRoleAct; - QAction * DisplaySQLAct; + QAction *DropAct; + QAction *CopyAct; + QAction *UpdateListAct; + QAction *SaveAct; + QAction *AddUserAct; + QAction *AddRoleAct; + QAction *DisplaySQLAct; QTabWidget *Tabs; std::list<QString> sql(void); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |