Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gmsh
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Larry Price
gmsh
Commits
44ab0b9e
Commit
44ab0b9e
authored
12 years ago
by
Christophe Geuzaine
Browse files
Options
Downloads
Patches
Plain Diff
simpler
parent
50ce7e6b
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
Common/GmshSocket.h
+1
-0
1 addition, 0 deletions
Common/GmshSocket.h
Common/onelabUtils.cpp
+10
-18
10 additions, 18 deletions
Common/onelabUtils.cpp
Fltk/onelabGroup.cpp
+38
-69
38 additions, 69 deletions
Fltk/onelabGroup.cpp
with
49 additions
and
87 deletions
Common/GmshSocket.h
+
1
−
0
View file @
44ab0b9e
...
@@ -83,6 +83,7 @@ class GmshSocket{
...
@@ -83,6 +83,7 @@ class GmshSocket{
GMSH_PARAMETER_NOT_FOUND
=
29
,
GMSH_PARAMETER_NOT_FOUND
=
29
,
GMSH_SPEED_TEST
=
30
,
GMSH_SPEED_TEST
=
30
,
GMSH_PARAMETER_CLEAR
=
31
,
GMSH_PARAMETER_CLEAR
=
31
,
GMSH_PARAMETER_UPDATE
=
32
,
GMSH_OPTION_1
=
100
,
GMSH_OPTION_1
=
100
,
GMSH_OPTION_2
=
101
,
GMSH_OPTION_2
=
101
,
GMSH_OPTION_3
=
102
,
GMSH_OPTION_3
=
102
,
...
...
This diff is collapsed.
Click to expand it.
Common/onelabUtils.cpp
+
10
−
18
View file @
44ab0b9e
...
@@ -352,23 +352,16 @@ namespace onelabUtils {
...
@@ -352,23 +352,16 @@ namespace onelabUtils {
return
redraw
;
return
redraw
;
}
}
// x is the parameter as on server
// update x using y, giving priority to any settings in x that can be set in
// y is the argument of set
// the GUI. The value of x is only changed if y is read-only.
// The routine updates x on basis of y.
// If the parameter is not yet defined, set(y) as is
// If the parameter is already defined, priority must be given to the server state
// for all items editable from the GUI, i.e. value, range, Loop, Graph, Closed.
// If y.getReadOnly() is true, the value of y overrides that of x
double
updateNumber
(
onelab
::
number
&
x
,
onelab
::
number
&
y
,
const
bool
readOnlyRange
)
double
updateNumber
(
onelab
::
number
&
x
,
onelab
::
number
&
y
,
const
bool
readOnlyRange
)
{
{
bool
noRange
=
true
,
noChoices
=
true
,
noLoop
=
true
;
bool
noRange
=
true
,
noChoices
=
true
,
noLoop
=
true
;
bool
noGraph
=
true
,
noClosed
=
true
;
bool
noGraph
=
true
,
noClosed
=
true
;
if
(
y
.
getReadOnly
()){
if
(
y
.
getReadOnly
()){
x
.
setValue
(
y
.
getValue
());
// use set value
x
.
setValue
(
y
.
getValue
());
x
.
setReadOnly
(
1
);
// makes the field "value" non-editable in the GUI
x
.
setReadOnly
(
true
);
}
}
double
val
=
x
.
getValue
();
double
val
=
x
.
getValue
();
...
@@ -385,7 +378,6 @@ namespace onelabUtils {
...
@@ -385,7 +378,6 @@ namespace onelabUtils {
if
(
x
.
getAttribute
(
"Graph"
).
size
())
noGraph
=
false
;
if
(
x
.
getAttribute
(
"Graph"
).
size
())
noGraph
=
false
;
if
(
x
.
getAttribute
(
"Closed"
).
size
())
noClosed
=
false
;
if
(
x
.
getAttribute
(
"Closed"
).
size
())
noClosed
=
false
;
// send updated parameter to server
if
(
noRange
){
if
(
noRange
){
bool
noRangeEither
=
true
;
bool
noRangeEither
=
true
;
if
(
y
.
getMin
()
!=
-
onelab
::
parameter
::
maxNumber
()
||
if
(
y
.
getMin
()
!=
-
onelab
::
parameter
::
maxNumber
()
||
...
@@ -397,7 +389,7 @@ namespace onelabUtils {
...
@@ -397,7 +389,7 @@ namespace onelabUtils {
}
}
else
{
else
{
// if no range/min/max/step info is provided, try to compute a reasonnable
// if no range/min/max/step info is provided, try to compute a reasonnable
// range and step (this makes the
gui
much nicer to use)
// range and step (this makes the
GUI
much nicer to use)
bool
isInteger
=
(
floor
(
val
)
==
val
);
bool
isInteger
=
(
floor
(
val
)
==
val
);
double
fact
=
isInteger
?
5.
:
20.
;
double
fact
=
isInteger
?
5.
:
20.
;
if
(
val
>
0
){
if
(
val
>
0
){
...
@@ -424,18 +416,18 @@ namespace onelabUtils {
...
@@ -424,18 +416,18 @@ namespace onelabUtils {
if
(
noLoop
)
x
.
setAttribute
(
"Loop"
,
y
.
getAttribute
(
"Loop"
));
if
(
noLoop
)
x
.
setAttribute
(
"Loop"
,
y
.
getAttribute
(
"Loop"
));
if
(
noGraph
)
x
.
setAttribute
(
"Graph"
,
y
.
getAttribute
(
"Graph"
));
if
(
noGraph
)
x
.
setAttribute
(
"Graph"
,
y
.
getAttribute
(
"Graph"
));
if
(
noClosed
)
x
.
setAttribute
(
"Closed"
,
y
.
getAttribute
(
"Closed"
));
if
(
noClosed
)
x
.
setAttribute
(
"Closed"
,
y
.
getAttribute
(
"Closed"
));
return
val
;
return
val
;
}
}
// update x using y, giving priority to any settings in x that can be set in
// the GUI. The value of x is only changed if y is read-only.
std
::
string
updateString
(
onelab
::
string
&
x
,
onelab
::
string
&
y
)
std
::
string
updateString
(
onelab
::
string
&
x
,
onelab
::
string
&
y
)
{
{
bool
noChoices
=
true
,
noClosed
=
true
,
noMultipleSelection
=
true
;
bool
noChoices
=
true
,
noClosed
=
true
,
noMultipleSelection
=
true
;
if
(
y
.
getReadOnly
()){
if
(
y
.
getReadOnly
()){
x
.
setValue
(
y
.
getValue
());
// use set value
x
.
setValue
(
y
.
getValue
());
x
.
setReadOnly
(
1
);
// makes the field "value" non-editable in the GUI
x
.
setReadOnly
(
true
);
}
}
std
::
string
val
=
x
.
getValue
();
std
::
string
val
=
x
.
getValue
();
...
...
This diff is collapsed.
Click to expand it.
Fltk/onelabGroup.cpp
+
38
−
69
View file @
44ab0b9e
...
@@ -193,105 +193,74 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
...
@@ -193,105 +193,74 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
}
}
break
;
break
;
case
GmshSocket
::
GMSH_PARAMETER
:
case
GmshSocket
::
GMSH_PARAMETER
:
case
GmshSocket
::
GMSH_PARAMETER_UPDATE
:
{
{
std
::
string
version
,
type
,
name
;
std
::
string
version
,
p
type
,
name
;
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
type
,
name
);
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
p
type
,
name
);
if
(
onelab
::
parameter
::
version
()
!=
version
){
if
(
onelab
::
parameter
::
version
()
!=
version
){
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
}
}
else
if
(
type
==
"number"
){
else
if
(
ptype
==
"number"
){
onelab
::
number
p
;
p
.
fromChar
(
message
);
set
(
p
);
onelab
::
number
p
;
p
.
fromChar
(
message
);
if
(
p
.
getName
()
==
getName
()
+
"/Progress"
)
if
(
type
==
GmshSocket
::
GMSH_PARAMETER_UPDATE
){
if
(
FlGui
::
available
())
FlGui
::
instance
()
->
setProgress
(
p
.
getLabel
().
c_str
(),
p
.
getValue
(),
p
.
getMin
(),
p
.
getMax
());
}
else
if
(
type
==
"string"
){
onelab
::
string
p
;
p
.
fromChar
(
message
);
set
(
p
);
}
else
if
(
type
==
"region"
){
onelab
::
region
p
;
p
.
fromChar
(
message
);
set
(
p
);
}
else
if
(
type
==
"function"
){
onelab
::
function
p
;
p
.
fromChar
(
message
);
set
(
p
);
}
else
Msg
::
Error
(
"Unknown OneLab parameter type: %s"
,
type
.
c_str
());
}
break
;
case
32
:
//case GmshSocket::GMSH_PARAMETER_UPDATE:
{
std
::
string
version
,
type
,
name
;
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
type
,
name
);
if
(
onelab
::
parameter
::
version
()
!=
version
){
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
}
else
if
(
type
==
"number"
){
onelab
::
number
p
;
std
::
vector
<
onelab
::
number
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
number
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
)
{
if
(
par
.
size
())
{
p
=
par
[
0
];
onelab
::
number
y
=
p
;
p
=
par
[
0
];
onelabUtils
::
updateNumber
(
p
,
y
);
onelab
::
number
y
;
y
.
fromChar
(
message
);
}
onelabUtils
::
updateNumber
(
p
,
y
);
}
}
else
p
.
fromChar
(
message
);
set
(
p
);
set
(
p
);
if
(
p
.
getName
()
==
getName
()
+
"/Progress"
)
if
(
p
.
getName
()
==
getName
()
+
"/Progress"
)
if
(
FlGui
::
available
())
if
(
FlGui
::
available
())
FlGui
::
instance
()
->
setProgress
(
p
.
getLabel
().
c_str
(),
p
.
getValue
(),
FlGui
::
instance
()
->
setProgress
(
p
.
getLabel
().
c_str
(),
p
.
getValue
(),
p
.
getMin
(),
p
.
getMax
());
p
.
getMin
(),
p
.
getMax
());
}
}
else
if
(
type
==
"string"
){
else
if
(
ptype
==
"string"
){
onelab
::
string
p
;
onelab
::
string
p
;
p
.
fromChar
(
message
);
if
(
type
==
GmshSocket
::
GMSH_PARAMETER_UPDATE
){
std
::
vector
<
onelab
::
string
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
string
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
){
if
(
par
.
size
()){
p
=
par
[
0
];
onelab
::
string
y
=
p
;
p
=
par
[
0
];
onelabUtils
::
updateString
(
p
,
y
);
onelab
::
string
y
;
y
.
fromChar
(
message
);
}
onelabUtils
::
updateString
(
p
,
y
);
}
}
else
p
.
fromChar
(
message
);
set
(
p
);
set
(
p
);
}
}
else
if
(
type
==
"region"
){
else
if
(
p
type
==
"region"
){
onelab
::
region
p
;
p
.
fromChar
(
message
);
set
(
p
);
onelab
::
region
p
;
p
.
fromChar
(
message
);
set
(
p
);
}
}
else
if
(
type
==
"function"
){
else
if
(
p
type
==
"function"
){
onelab
::
function
p
;
p
.
fromChar
(
message
);
set
(
p
);
onelab
::
function
p
;
p
.
fromChar
(
message
);
set
(
p
);
}
}
else
else
Msg
::
Error
(
"Unknown OneLab parameter type: %s"
,
type
.
c_str
());
Msg
::
Error
(
"Unknown OneLab parameter type: %s"
,
p
type
.
c_str
());
}
}
break
;
break
;
case
GmshSocket
::
GMSH_PARAMETER_QUERY
:
case
GmshSocket
::
GMSH_PARAMETER_QUERY
:
{
{
std
::
string
version
,
type
,
name
,
reply
;
std
::
string
version
,
p
type
,
name
,
reply
;
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
type
,
name
);
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
p
type
,
name
);
if
(
onelab
::
parameter
::
version
()
!=
version
){
if
(
onelab
::
parameter
::
version
()
!=
version
){
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
}
}
else
if
(
type
==
"number"
){
else
if
(
p
type
==
"number"
){
std
::
vector
<
onelab
::
number
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
number
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
}
}
else
if
(
type
==
"string"
){
else
if
(
p
type
==
"string"
){
std
::
vector
<
onelab
::
string
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
string
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
}
}
else
if
(
type
==
"region"
){
else
if
(
p
type
==
"region"
){
std
::
vector
<
onelab
::
region
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
region
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
}
}
else
if
(
type
==
"function"
){
else
if
(
p
type
==
"function"
){
std
::
vector
<
onelab
::
function
>
par
;
get
(
par
,
name
);
std
::
vector
<
onelab
::
function
>
par
;
get
(
par
,
name
);
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
if
(
par
.
size
()
==
1
)
reply
=
par
[
0
].
toChar
();
}
}
else
else
Msg
::
Error
(
"Unknown OneLab parameter type in query: %s"
,
type
.
c_str
());
Msg
::
Error
(
"Unknown OneLab parameter type in query: %s"
,
p
type
.
c_str
());
if
(
reply
.
size
()){
if
(
reply
.
size
()){
getGmshServer
()
->
SendMessage
getGmshServer
()
->
SendMessage
...
@@ -306,40 +275,40 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
...
@@ -306,40 +275,40 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
break
;
break
;
case
GmshSocket
::
GMSH_PARAMETER_QUERY_ALL
:
case
GmshSocket
::
GMSH_PARAMETER_QUERY_ALL
:
{
{
std
::
string
version
,
type
,
name
,
reply
;
std
::
string
version
,
p
type
,
name
,
reply
;
std
::
vector
<
std
::
string
>
replies
;
std
::
vector
<
std
::
string
>
replies
;
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
type
,
name
);
onelab
::
parameter
::
getInfoFromChar
(
message
,
version
,
p
type
,
name
);
if
(
onelab
::
parameter
::
version
()
!=
version
){
if
(
onelab
::
parameter
::
version
()
!=
version
){
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
Msg
::
Error
(
"OneLab version mismatch (server: %s / client: %s)"
,
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
onelab
::
parameter
::
version
().
c_str
(),
version
.
c_str
());
}
}
else
if
(
type
==
"number"
){
else
if
(
p
type
==
"number"
){
std
::
vector
<
onelab
::
number
>
numbers
;
get
(
numbers
);
std
::
vector
<
onelab
::
number
>
numbers
;
get
(
numbers
);
for
(
std
::
vector
<
onelab
::
number
>::
iterator
it
=
numbers
.
begin
();
for
(
std
::
vector
<
onelab
::
number
>::
iterator
it
=
numbers
.
begin
();
it
!=
numbers
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
it
!=
numbers
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
}
}
else
if
(
type
==
"string"
){
else
if
(
p
type
==
"string"
){
std
::
vector
<
onelab
::
string
>
strings
;
get
(
strings
);
std
::
vector
<
onelab
::
string
>
strings
;
get
(
strings
);
for
(
std
::
vector
<
onelab
::
string
>::
iterator
it
=
strings
.
begin
();
for
(
std
::
vector
<
onelab
::
string
>::
iterator
it
=
strings
.
begin
();
it
!=
strings
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
it
!=
strings
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
}
}
else
if
(
type
==
"region"
){
else
if
(
p
type
==
"region"
){
std
::
vector
<
onelab
::
region
>
regions
;
get
(
regions
);
std
::
vector
<
onelab
::
region
>
regions
;
get
(
regions
);
for
(
std
::
vector
<
onelab
::
region
>::
iterator
it
=
regions
.
begin
();
for
(
std
::
vector
<
onelab
::
region
>::
iterator
it
=
regions
.
begin
();
it
!=
regions
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
it
!=
regions
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
}
}
else
if
(
type
==
"function"
){
else
if
(
p
type
==
"function"
){
std
::
vector
<
onelab
::
function
>
functions
;
get
(
functions
);
std
::
vector
<
onelab
::
function
>
functions
;
get
(
functions
);
for
(
std
::
vector
<
onelab
::
function
>::
iterator
it
=
functions
.
begin
();
for
(
std
::
vector
<
onelab
::
function
>::
iterator
it
=
functions
.
begin
();
it
!=
functions
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
it
!=
functions
.
end
();
it
++
)
replies
.
push_back
((
*
it
).
toChar
());
}
}
else
else
Msg
::
Error
(
"Unknown OneLab parameter type in query: %s"
,
type
.
c_str
());
Msg
::
Error
(
"Unknown OneLab parameter type in query: %s"
,
p
type
.
c_str
());
for
(
unsigned
int
i
=
0
;
i
<
replies
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
replies
.
size
();
i
++
)
getGmshServer
()
->
SendMessage
getGmshServer
()
->
SendMessage
(
GmshSocket
::
GMSH_PARAMETER_QUERY_ALL
,
replies
[
i
].
size
(),
&
replies
[
i
][
0
]);
(
GmshSocket
::
GMSH_PARAMETER_QUERY_ALL
,
replies
[
i
].
size
(),
&
replies
[
i
][
0
]);
reply
=
"Sent all OneLab "
+
type
+
"s"
;
reply
=
"Sent all OneLab "
+
p
type
+
"s"
;
getGmshServer
()
->
SendMessage
getGmshServer
()
->
SendMessage
(
GmshSocket
::
GMSH_PARAMETER_QUERY_END
,
reply
.
size
(),
&
reply
[
0
]);
(
GmshSocket
::
GMSH_PARAMETER_QUERY_END
,
reply
.
size
(),
&
reply
[
0
]);
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment