Skip to content
Commits on Source (5)
grass (7.4.2~rc2-1~exp1~xenial1) xenial; urgency=medium
* Rebuild for xenial.
-- Martin Landa <landa.martin@gmail.com> Tue, 16 Oct 2018 15:46:09 +0200
grass (7.4.2~rc2-1~exp1) experimental; urgency=medium
* New upstream release candidate.
-- Bas Couwenberg <sebastic@debian.org> Mon, 15 Oct 2018 07:21:11 +0200
grass (7.4.2~rc1-1~exp1~xenial1) xenial; urgency=medium
* Rebuild for xenial.
......
How to release GRASS GIS binaries and source code
$Date: 2018-08-31 15:35:23 +0200 (Fri, 31 Aug 2018) $
$Date: 2018-10-14 14:46:28 +0200 (Sun, 14 Oct 2018) $
Note: This text contains *some* rules only applicable to the
development coordinator (currently Markus Neteler, PSC Chair).
......@@ -30,9 +30,11 @@ sh ~/software/grass-addons/tools/transifex_merge.sh
make
make verify
# ... then fix .po files as needed.
# after that push fixes to transifex:
cd locale/transifex/
tx --debug push -t
#
# requires https://trac.osgeo.org/grass/ticket/3539
## after that push fixes to transifex:
#cd locale/transifex/
#tx --debug push -t
#### end of i18N
......
......@@ -2070,7 +2070,7 @@ class SymbolDialog(wx.Dialog):
mainPanel = wx.Panel(self, id=wx.ID_ANY)
mainSizer = wx.BoxSizer(wx.VERTICAL)
vSizer = wx.BoxSizer(wx.VERTICAL)
fgSizer = wx.FlexGridSizer(rows=2, vgap=5, hgap=5)
fgSizer = wx.FlexGridSizer(rows=2, cols=2, vgap=5, hgap=5)
self.folderChoice = wx.Choice(
mainPanel,
id=wx.ID_ANY,
......
......@@ -47,10 +47,12 @@ from core import globalvar
from core.gcmd import RunCommand, GError
from core.utils import ListOfMapsets, GetColorTables, ReadEpsgCodes, _
from core.settings import UserSettings
from core.globalvar import wxPythonPhoenix
from gui_core.dialogs import SymbolDialog, DefaultFontDialog
from gui_core.widgets import IntegerValidator, ColorTablesComboBox
from core.debug import Debug
from gui_core.wrap import SpinCtrl, Button
from gui_core.wrap import SpinCtrl, Button, BitmapButton, StaticText, \
StaticBox, TextCtrl, ListCtrl
class PreferencesBaseDialog(wx.Dialog):
......@@ -2184,13 +2186,13 @@ class MapsetAccess(wx.Dialog):
class CheckListMapset(
wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin):
ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.CheckListCtrlMixin):
"""List of mapset/owner/group"""
def __init__(self, parent, log=None):
self.parent = parent
wx.ListCtrl.__init__(self, parent, wx.ID_ANY,
ListCtrl.__init__(self, parent, wx.ID_ANY,
style=wx.LC_REPORT)
listmix.CheckListCtrlMixin.__init__(self)
self.log = log
......@@ -2209,6 +2211,11 @@ class CheckListMapset(
gisenv['LOCATION_NAME'])
for mapset in self.parent.all_mapsets_ordered:
# unclear why this is needed,
# wrap.ListrCtrl should do the job but it doesn't in this case
if wxPythonPhoenix:
index = self.InsertItem(self.GetItemCount(), mapset)
else:
index = self.InsertStringItem(self.GetItemCount(), mapset)
mapsetPath = os.path.join(locationPath,
mapset)
......
......@@ -89,7 +89,8 @@ from core import globalvar
from core.utils import _
from core.gcmd import GMessage, GError
from core.debug import Debug
from gui_core.wrap import Button, SearchCtrl
from gui_core.wrap import Button, SearchCtrl, StaticText, StaticBox, \
TextCtrl, Menu, Rect, EmptyBitmap, ListCtrl
class NotebookController:
......@@ -933,7 +934,7 @@ class SingleSymbolPanel(wx.Panel):
self.Refresh()
class GListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin,
class GListCtrl(ListCtrl, listmix.ListCtrlAutoWidthMixin,
listmix.CheckListCtrlMixin):
"""Generic ListCtrl with popup menu to select/deselect all
items"""
......@@ -941,7 +942,7 @@ class GListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin,
def __init__(self, parent):
self.parent = parent
wx.ListCtrl.__init__(self, parent, id=wx.ID_ANY,
ListCtrl.__init__(self, parent, id=wx.ID_ANY,
style=wx.LC_REPORT)
listmix.CheckListCtrlMixin.__init__(self)
......@@ -1033,6 +1034,9 @@ class GListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin,
idx = 0
for item in data:
if wxPythonPhoenix:
index = self.InsertItem(idx, str(item[0]))
else:
index = self.InsertStringItem(idx, str(item[0]))
for i in range(1, self.GetColumnCount()):
self.SetStringItem(index, i, item[i])
......
......@@ -17,6 +17,10 @@ This program is free software under the GNU General Public License
import wx
import wx.lib.buttons as buttons
try:
import wx.lib.agw.customtreectrl as CT
except ImportError:
import wx.lib.customtreectrl as CT
from core.globalvar import gtk3, wxPythonPhoenix
if wxPythonPhoenix:
......@@ -99,6 +103,32 @@ class Button(wx.Button):
wx.Button.SetToolTipString(self, tip)
class RadioButton(wx.RadioButton):
"""Wrapper around wx.RadioButton to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
wx.RadioButton.__init__(self, *args, **kwargs)
def SetToolTip(self, tip):
if wxPythonPhoenix:
wx.RadioButton.SetToolTip(self, tipString=tip)
else:
wx.RadioButton.SetToolTipString(self, tip)
class BitmapButton(wx.BitmapButton):
"""Wrapper around wx.BitmapButton to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
wx.BitmapButton.__init__(self, *args, **kwargs)
def SetToolTip(self, tip):
if wxPythonPhoenix:
wx.BitmapButton.SetToolTip(self, tipString=tip)
else:
wx.BitmapButton.SetToolTipString(self, tip)
class GenBitmapButton(buttons.GenBitmapButton):
"""Wrapper around GenBitmapButton to have more control
over the widget on different platforms/wxpython versions"""
......@@ -151,6 +181,19 @@ class StaticBox(wx.StaticBox):
wx.StaticBox.SetToolTipString(self, tip)
class CheckListBox(wx.CheckListBox):
"""Wrapper around wx.CheckListBox to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
wx.CheckListBox.__init__(self, *args, **kwargs)
def SetToolTip(self, tip):
if wxPythonPhoenix:
wx.CheckListBox.SetToolTip(self, tipString=tip)
else:
wx.CheckListBox.SetToolTipString(self, tip)
class TextCtrl(wx.TextCtrl):
"""Wrapper around wx.TextCtrl to have more control
over the widget on different platforms/wxpython versions"""
......@@ -215,6 +258,19 @@ class TreeCtrl(wx.TreeCtrl):
return wx.TreeCtrl.GetPyData(self, item)
class CustomTreeCtrl(CT.CustomTreeCtrl):
"""Wrapper around wx.lib.agw.customtreectrl to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
CT.CustomTreeCtrl.__init__(self, *args, **kwargs)
def SetToolTip(self, tip):
if wxPythonPhoenix:
CT.CustomTreeCtrl.SetToolTip(self, tipString=tip)
else:
CT.CustomTreeCtrl.SetToolTipString(self, tip)
class ToolBar(wx.ToolBar):
"""Wrapper around wx.ToolBar to have more control
over the widget on different platforms/wxpython versions"""
......@@ -274,6 +330,12 @@ class PseudoDC(wx.adv.PseudoDC if wxPythonPhoenix else wx.PseudoDC):
def __init__(self, *args, **kwargs):
super(PseudoDC, self).__init__(*args, **kwargs)
def DrawLinePoint(self, pt1, pt2):
if wxPythonPhoenix:
super(PseudoDC, self).DrawLine(pt1, pt2)
else:
super(PseudoDC, self).DrawLinePoint(pt1, pt2)
def DrawRectangleRect(self, rect):
if wxPythonPhoenix:
super(PseudoDC, self).DrawRectangle(rect=rect)
......@@ -289,6 +351,19 @@ class PseudoDC(wx.adv.PseudoDC if wxPythonPhoenix else wx.PseudoDC):
super(PseudoDC, self).EndDrawing()
class ClientDC(wx.ClientDC):
"""Wrapper around wx.ClientDC to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
super(ClientDC, self).__init__(*args, **kwargs)
def GetFullMultiLineTextExtent(self, string, font=None):
if wxPythonPhoenix:
return super(ClientDC, self).GetFullMultiLineTextExtent(string, font)
else:
return super(ClientDC, self).GetMultiLineTextExtent(string, font)
class Rect(wx.Rect):
"""Wrapper around wx.Rect to have more control
over the widget on different platforms/wxpython versions"""
......@@ -307,6 +382,12 @@ class Rect(wx.Rect):
else:
return wx.Rect.ContainsRect(self, rect)
def OffsetXY(self, dx, dy):
if wxPythonPhoenix:
return wx.Rect.Offset(self, dx, dy)
else:
return wx.Rect.OffsetXY(self, dx, dy)
class CheckBox(wx.CheckBox):
"""Wrapper around wx.CheckBox to have more control
......@@ -319,3 +400,16 @@ class CheckBox(wx.CheckBox):
wx.CheckBox.SetToolTip(self, tipString=tip)
else:
wx.CheckBox.SetToolTipString(self, tip)
class Choice(wx.Choice):
"""Wrapper around wx.Choice to have more control
over the widget on different platforms/wxpython versions"""
def __init__(self, *args, **kwargs):
wx.Choice.__init__(self, *args, **kwargs)
def SetToolTip(self, tip):
if wxPythonPhoenix:
wx.Choice.SetToolTip(self, tipString=tip)
else:
wx.Choice.SetToolTipString(self, tip)
......@@ -696,7 +696,7 @@ class BufferedMapWindow(MapWindowBase, Window):
self._fileType = FileType
self._saveToFileCallback = callback
self._busy = wx.BusyInfo(message=_("Please wait, exporting image..."),
self._busy = wx.BusyInfo(_("Please wait, exporting image..."),
parent=self)
wx.Yield()
......@@ -756,7 +756,6 @@ class BufferedMapWindow(MapWindowBase, Window):
self.pdcVector.DrawToDC(dc)
ibuffer.SaveFile(self._fileName, self._fileType)
self._busy.Destroy()
del self._busy
del self._fileName
del self._fileType
......
......@@ -53,10 +53,12 @@ from core import globalvar
if globalvar.wxPythonPhoenix:
import wx.adv
from wx.adv import OwnerDrawnComboBox
from wx.adv import OwnerDrawnComboBox, ODCB_PAINTING_CONTROL, ODCB_PAINTING_SELECTED
from wx.adv import BitmapComboBox
else:
import wx.combo
from wx.combo import OwnerDrawnComboBox
from wx.combo import OwnerDrawnComboBox, ODCB_PAINTING_CONTROL, ODCB_PAINTING_SELECTED
from wx.combo import BitmapComboBox
if globalvar.wxPythonPhoenix:
from wx import Validator as Validator
......@@ -175,9 +177,9 @@ class PenStyleComboBox(OwnerDrawnComboBox):
background area of each item."""
# If the item is selected, or its item # iseven, or we are painting the
# combo control itself, then use the default rendering.
if (item & 1 == 0 or flags & (wx.combo.ODCB_PAINTING_CONTROL |
wx.combo.ODCB_PAINTING_SELECTED)):
wx.combo.OwnerDrawnComboBox.OnDrawBackground(
if (item & 1 == 0 or flags & (ODCB_PAINTING_CONTROL |
ODCB_PAINTING_SELECTED)):
OwnerDrawnComboBox.OnDrawBackground(
self, dc, rect, item, flags)
return
......@@ -4944,7 +4946,7 @@ class ScalebarDialog(PsmapDialog):
gridBagSizer = wx.GridBagSizer(hgap=5, vgap=5)
sbTypeText = wx.StaticText(panel, id=wx.ID_ANY, label=_("Type:"))
self.sbCombo = wx.combo.BitmapComboBox(panel, style=wx.CB_READONLY)
self.sbCombo = BitmapComboBox(panel, style=wx.CB_READONLY)
# only temporary, images must be moved away
imagePath = os.path.join(
globalvar.IMGDIR, "scalebar-fancy.png"), os.path.join(
......
......@@ -39,7 +39,7 @@ from core.utils import _, PilImageToWxImage
from gui_core.forms import GUI
from gui_core.dialogs import HyperlinkDialog
from gui_core.ghelp import ShowAboutDialog
from gui_core.wrap import PseudoDC
from gui_core.wrap import ClientDC, PseudoDC, Rect, StockCursor, EmptyBitmap
from psmap.menudata import PsMapMenuData
from gui_core.toolbars import ToolSwitcher
......@@ -103,10 +103,10 @@ class PsMapFrame(wx.Frame):
}
# available cursors
self.cursors = {
"default": wx.StockCursor(wx.CURSOR_ARROW),
"cross": wx.StockCursor(wx.CURSOR_CROSS),
"hand": wx.StockCursor(wx.CURSOR_HAND),
"sizenwse": wx.StockCursor(wx.CURSOR_SIZENWSE)
"default": StockCursor(wx.CURSOR_ARROW),
"cross": StockCursor(wx.CURSOR_CROSS),
"hand": StockCursor(wx.CURSOR_HAND),
"sizenwse": StockCursor(wx.CURSOR_SIZENWSE)
}
# pen and brush
self.pen = {
......@@ -385,7 +385,7 @@ class PsMapFrame(wx.Frame):
'cols'], rows=event.userData['regionOld']['rows'])
# wx.BusyInfo does not display the message
busy = wx.BusyInfo(
message=_("Generating preview, wait please"),
_("Generating preview, wait please"),
parent=self)
wx.Yield()
try:
......@@ -855,9 +855,9 @@ class PsMapFrame(wx.Frame):
if 0 < rotation < pi:
Y = y - H
if rotation == 0:
return wx.Rect(x, y, *textExtent)
return Rect(x, y, *textExtent)
else:
return wx.Rect(X, Y, abs(W), abs(H)).Inflate(h, h)
return Rect(X, Y, abs(W), abs(H)).Inflate(h, h)
def makePSFont(self, textDict):
"""creates a wx.Font object from selected postscript font. To be
......@@ -911,13 +911,13 @@ class PsMapFrame(wx.Frame):
"""Estimates bounding rectangle of text"""
#fontsize = str(fontsize if fontsize >= 4 else 4)
# dc created because of method GetTextExtent, which pseudoDC lacks
dc = wx.ClientDC(self)
dc = ClientDC(self)
fn = self.makePSFont(textDict)
try:
dc.SetFont(fn)
w, h, lh = dc.GetMultiLineTextExtent(textDict['text'])
w, h, lh = dc.GetFullMultiLineTextExtent(textDict['text'])
return (w, h)
except:
return (0, 0)
......@@ -1255,7 +1255,7 @@ class PsMapBufferedWindow(wx.Window):
self.pdcImage = PseudoDC()
self.SetClientSize((700, 510)) # ?
self._buffer = wx.EmptyBitmap(*self.GetClientSize())
self._buffer = EmptyBitmap(*self.GetClientSize())
self.idBoxTmp = wx.NewId()
self.idZoomBoxTmp = wx.NewId()
......@@ -1362,7 +1362,7 @@ class PsMapBufferedWindow(wx.Window):
x = cW / 2 - pW / 2
y = cH / 2 - pH / 2
self.DrawPaper(wx.Rect(x, y, pW, pH))
self.DrawPaper(Rect(x, y, pW, pH))
def modifyRectangle(self, r):
"""Recalculates rectangle not to have negative size"""
......@@ -1501,7 +1501,7 @@ class PsMapBufferedWindow(wx.Window):
else:
self.mouse['use'] = 'zoomout'
zoomFactor, view = self.ComputeZoom(wx.Rect(0, 0, 0, 0))
zoomFactor, view = self.ComputeZoom(Rect(0, 0, 0, 0))
self.Zoom(zoomFactor, view)
self.mouse['use'] = oldUse
......@@ -1694,7 +1694,7 @@ class PsMapBufferedWindow(wx.Window):
self.dragId].type].updateDialog()
elif self.mouse['use'] in ('addPoint', 'addLine', 'addRectangle'):
endCoordinates = self.CanvasPaperCoordinates(rect=wx.Rect(
endCoordinates = self.CanvasPaperCoordinates(rect=Rect(
event.GetX(), event.GetY(), 0, 0), canvasToPaper=True)[:2]
diffX = event.GetX() - self.mouse['begin'][0]
......@@ -1710,7 +1710,7 @@ class PsMapBufferedWindow(wx.Window):
return
beginCoordinates = self.CanvasPaperCoordinates(
rect=wx.Rect(
rect=Rect(
self.mouse['begin'][0],
self.mouse['begin'][1],
0, 0),
......@@ -1772,7 +1772,7 @@ class PsMapBufferedWindow(wx.Window):
if self.mouse['use'] in (
'zoomin', 'zoomout', 'addMap', 'addLine', 'addRectangle'):
self.mouse['end'] = event.GetPosition()
r = wx.Rect(
r = Rect(
self.mouse['begin'][0],
self.mouse['begin'][1],
self.mouse['end'][0] -
......@@ -1847,7 +1847,7 @@ class PsMapBufferedWindow(wx.Window):
if newWidth < 10 or newHeight < 10:
return
bounds = wx.Rect(x, y, newWidth, newHeight)
bounds = Rect(x, y, newWidth, newHeight)
self.Draw(
pen=self.pen['map'],
brush=self.brush['map'],
......@@ -1897,7 +1897,7 @@ class PsMapBufferedWindow(wx.Window):
# update paper coordinates
points[self.currentLinePoint] = self.CanvasPaperCoordinates(
rect=wx.RectPS(pos, (0, 0)), canvasToPaper=True)[:2]
rect=Rect(pos[0], pos[1], 0, 0), canvasToPaper=True)[:2]
self.RedrawSelectBox(self.dragId)
......@@ -2134,6 +2134,9 @@ class PsMapBufferedWindow(wx.Window):
# redraw preview
else: # preview mode
imageRect = self.pdcImage.GetIdBounds(self.imageId)
if globalvar.wxPythonPhoenix:
imageRect.Offset(-view[0], -view[1])
else:
imageRect.OffsetXY(-view[0], -view[1])
imageRect = self.ScaleRect(rect=imageRect, scale=zoomFactor)
self.DrawImage(imageRect)
......@@ -2149,7 +2152,7 @@ class PsMapBufferedWindow(wx.Window):
self.Zoom(zoomFactor, view)
def Draw(self, pen, brush, pdc, drawid=None, pdctype='rect',
bb=wx.Rect(0, 0, 0, 0), lineCoords=None):
bb=Rect(0, 0, 0, 0), lineCoords=None):
"""Draw object with given pen and brush.
:param pdc: PseudoDC
......@@ -2183,7 +2186,7 @@ class PsMapBufferedWindow(wx.Window):
if pdctype == 'rectText':
# dc created because of method GetTextExtent, which pseudoDC lacks
dc = wx.ClientDC(self)
dc = ClientDC(self)
font = dc.GetFont()
size = 10
font.SetPointSize(size)
......@@ -2191,17 +2194,17 @@ class PsMapBufferedWindow(wx.Window):
dc.SetFont(font)
pdc.SetFont(font)
text = '\n'.join(self.itemLabels[drawid])
w, h, lh = dc.GetMultiLineTextExtent(text)
w, h, lh = dc.GetFullMultiLineTextExtent(text)
textExtent = (w, h)
textRect = wx.Rect(0, 0, *textExtent).CenterIn(bb)
textRect = Rect(0, 0, *textExtent).CenterIn(bb)
r = map(int, bb)
while not wx.Rect(*r).ContainsRect(textRect) and size >= 8:
while not Rect(*r).ContainsRect(textRect) and size >= 8:
size -= 2
font.SetPointSize(size)
dc.SetFont(font)
pdc.SetFont(font)
textExtent = dc.GetTextExtent(text)
textRect = wx.Rect(0, 0, *textExtent).CenterIn(bb)
textRect = Rect(0, 0, *textExtent).CenterIn(bb)
pdc.SetTextForeground(wx.Colour(100, 100, 100, 200))
pdc.SetBackgroundMode(wx.TRANSPARENT)
pdc.DrawLabel(text=text, rect=textRect)
......@@ -2327,7 +2330,7 @@ class PsMapBufferedWindow(wx.Window):
else:
pdc.DrawRotatedText(textDict['text'], coords[0], coords[1], rot)
pdc.SetIdBounds(drawId, wx.Rect(*bounds))
pdc.SetIdBounds(drawId, Rect(*bounds))
self.Refresh()
pdc.EndDrawing()
......@@ -2382,7 +2385,7 @@ class PsMapBufferedWindow(wx.Window):
iH = iH * self.currScale
x = cW / 2 - iW / 2
y = cH / 2 - iH / 2
imageRect = wx.Rect(x, y, iW, iH)
imageRect = Rect(x, y, iW, iH)
return imageRect
......@@ -2404,7 +2407,7 @@ class PsMapBufferedWindow(wx.Window):
# draw small marks signalizing resizing
if self.instruction[id].type in ('map', 'rectangle'):
controlP = self.pdcObj.GetIdBounds(id).GetBottomRight()
rect = wx.RectPS(controlP, self.resizeBoxSize)
rect = Rect(controlP[0], controlP[1], self.resizeBoxSize[0], self.resizeBoxSize[1])
self.Draw(
pen=self.pen['resize'],
brush=self.brush['resize'],
......@@ -2421,9 +2424,9 @@ class PsMapBufferedWindow(wx.Window):
p2Canvas = self.CanvasPaperCoordinates(
rect=Rect2DPS(p2Paper, (0, 0)), canvasToPaper=False)[:2]
rect = []
box = wx.RectS(self.resizeBoxSize)
rect.append(box.CenterIn(wx.RectPS(p1Canvas, wx.Size())))
rect.append(box.CenterIn(wx.RectPS(p2Canvas, wx.Size())))
box = Rect(0, 0, self.resizeBoxSize[0], self.resizeBoxSize[1])
rect.append(box.CenterIn(Rect(p1Canvas[0], p1Canvas[1], 0, 0)))
rect.append(box.CenterIn(Rect(p2Canvas[0], p2Canvas[1], 0, 0)))
for i, point in enumerate((p1Canvas, p2Canvas)):
self.Draw(
pen=self.pen['resize'],
......@@ -2495,11 +2498,11 @@ class PsMapBufferedWindow(wx.Window):
# Make new off screen bitmap: this bitmap will always have the
# current drawing in it, so it can be used to save the image
# to a file, or whatever.
self._buffer = wx.EmptyBitmap(width, height)
self._buffer = EmptyBitmap(width, height)
# re-render image on idle
self.resize = True
def ScaleRect(self, rect, scale):
"""Scale rectangle"""
return wx.Rect(rect.GetLeft() * scale, rect.GetTop() * scale,
return Rect(rect.GetLeft() * scale, rect.GetTop() * scale,
rect.GetSize()[0] * scale, rect.GetSize()[1] * scale)
......@@ -113,17 +113,7 @@ int create_isegs(struct globals *globals)
globals->max_rid = max_id;
G_debug(1, "Largest renumbered ID: %d", globals->max_rid);
for (row = 0; row < globals->nrows; row++) {
for (col = 0; col < globals->ncols; col++) {
Segment_get(&globals->rid_seg, &rid, row, col);
if (!Rast_is_c_null_value(&rid)) {
rid = new_id[rid];
Segment_put(&globals->rid_seg, &rid, row, col);
}
}
}
G_free(new_id);
globals->new_id = new_id;
}
return successflag;
......
......@@ -80,6 +80,7 @@ struct globals
/* region growing */
int min_segment_size; /* smallest number of pixels/cells allowed in a final segment */
int *new_id;
/* inactive options for region growing */
double radio_weight; /* weighing factor radiometric - shape */
......
......@@ -34,7 +34,8 @@ int write_ids(struct globals *globals)
Segment_get(&globals->rid_seg, (void *) &rid, row, col);
if (rid > 0) {
outbuf[col] = rid;
if (globals->method == ORM_RG)
rid = globals->new_id[rid];
if (maxid < rid)
maxid = rid;
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -21741,7 +21741,7 @@ msgstr "Erreur à la lecture des données binaires"
#: ../raster3d/r3.in.bin/main.c:154
#, c-format
msgid "Loading %s data with %i bytes ... (%dx%dx%d)"
msgstr "Chargement des données %s avec %i octets ... (%dx%dx%dx)"
msgstr "Chargement des données %d avec %i octets ... (%dx%dx%dx)"
 
#: ../raster3d/r3.in.bin/main.c:256
msgid "Imports a binary raster file into a GRASS 3D raster map."
......@@ -23739,7 +23739,7 @@ msgstr "La carte raster <%s@%s> est une carte de base. Supprimez d'abord la cart
#: ../general/g.remove/check_reclass.c:54
#, c-format
msgid "Removing information about reclassed map from <%s@%s> failed"
msgstr "La suppression d'information sur la carte reclassée depuis <%s@%s> a échoué"
msgstr "La suppression d'information sur la carte reclassée depuis <%s> a échoué"
 
#: ../general/g.remove/main.c:73
msgid "Removes data base element files from the user's current mapset using the search pattern."
This diff is collapsed.
......@@ -740,8 +740,12 @@ int write_raster(int mv_fd, int random_access, struct g_area *g)
Rast_set_d_null_value(cell_buf, Rast_window_cols() + 1);
for (i = 0; i < Rast_window_rows() - g->sf_y - g->rows; i++)
for (i = 0; i < Rast_window_rows() - g->sf_y - ((int)g->rl / 2) - g->rows; i++) {
Rast_put_row(mv_fd, cell_buf, DCELL_TYPE);
}
G_free(file_buf);
G_free(cell_buf);
return 1;
}